1 打包jar
1.1 在library的build.gradle的根目录中配置:
task makeJar(type: Copy) { delete 'build/libs/XYSDK-2018-12-27.jar' //删除已经存在的jar包 from('build/intermediates/packaged-classes/release/')//从该目录下加载要打包的文件 into('build/libs/')//jar包的保存目录 include('classes.jar')//设置过滤,只打包classes文件 rename('classes.jar', 'XYSDK-2018-12-27.jar')//重命名 } makeJar.dependsOn(build)
1.2 添加混淆规则
1.2.1 在library的build.gradle的android目录配置:
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
1.2.2 proguard-rules.pro文件配置:根据自己需求配置混淆规则
-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } #保留该包下的类名不会被混淆 -keep class 完整包名.* -keep class 完整包名.* -keep class 完整包名.* #指定包名下的所有类及子包中所有的类不被混淆 -keep class 完整包名.**{*;} #保持指定类里面public修饰的成员变量和public修饰的方法。 -keep class 完整包名{ public <fields>; public <methods>; } #忽略警告 -ignorewarnings #保证是独立的jar,没有任何项目引用,如果不写就会认为我们所有的代码是无用的,从而把所有的代码压缩掉,导出一个空的jar -dontshrink #保护泛型 -keepattributes Signature -keepattributes Exceptions
1.3 在terminal输入 gradlew makeJar 命令 或 在点击studio右侧的gradle,点击你的library->tasks->other,双击makejar
如果不需要混淆,1.2可以跳过
如果在运行 gradlew makeJar 命令时出现如下错误:
Execution failed for task ':mylibrary:lint'. > Lint found errors in the project; aborting build.
可在library的build.gradle的android目录配置:
lintOptions {
abortOnError false
}
然后重新执行命令即可