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
}
然后重新执行命令即可
本文详细介绍使用Gradle进行jar包打包的过程,包括配置任务、指定文件路径、重命名及混淆规则设定。同时,提供了在终端执行打包命令的步骤及解决常见错误的方法。
665

被折叠的 条评论
为什么被折叠?



