Cree un módulo de Android y un módulo de AndroidLibrary y
escriba la tarea de importación del paquete Jar correspondiente y la tarea de ofuscación en el archivo gradle en jardemo
1. Tarea de importación del paquete Jar
task makeJar(type: Jar, dependsOn: ['compileReleaseJavaWithJavac']) {
appendix = 'demo'
baseName = 'AndroidJar'
version = '1.0.0'
classifier = 'release'
//后缀名
extension = 'jar'
//最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension]
//archiveName = 'Demo.jar'
//需打包的资源所在的路径集
def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"]
//初始化资源路径集
from srcClassDir
//去除路径集下部分的资源
exclude 'com/scott/jardemo/BuildConfig.class'
exclude '**/R.class'
exclude '**/R\$*.class'
//只导入资源路径集下的部分资源
include 'com/scott/jardemo/**/*.class'
}
En Teminal, cd jardemo para ingresar al directorio jardemo, escriba el comando gradle makeJar. Después de la ejecución, el Jar se exportará.
Utilice jd-gui.exe para abrirlo en build/lib de la siguiente manera.
Si desea agregar otra información a MANIFEST.MF, el próximo artículo El artículo continúa.
Hablemos brevemente aquí. El tipo es Jar. No hace falta decir que depende de significa de qué tarea depende. Antes de ejecutar esta tarea, la tarea dependiente se ejecutará primero.
2. Confundir el paquete del frasco
task proguardJar(dependsOn: ['makeJar'], type: proguard.gradle.ProGuardTask) {
//Android 默认的 proguard 文件
configuration android.getDefaultProguardFile('proguard-android.txt')
//manifest 注册的组件对应的 proguard 文件
configuration 'proguard-rules.pro'
String inJar = makeJar.archivePath.getAbsolutePath()
//输入 jar
injars inJar
//输出 jar
outjars inJar.substring(0, inJar.lastIndexOf(File.separator)) + "/proguard-${makeJar.archiveName}"
//设置不删除未引用的资源(类,方法等)
dontshrink
Plugin plugin = getPlugins().hasPlugin("AppPlugin") ?
getPlugins().findPlugin("AppPlugin") :
getPlugins().findPlugin("LibraryPlugin")
if (plugin != null) {
List<String> runtimeJarList
if (plugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
runtimeJarList = plugin.getRuntimeJarList()
} else if (android.getMetaClass().getMetaMethod("getBootClasspath")) {
runtimeJarList = android.getBootClasspath()
} else {
runtimeJarList = plugin.getBootClasspath()
}
for (String runtimeJar : runtimeJarList) {
//给 proguard 添加 runtime
libraryjars(runtimeJar)
}
}
Archivo proguard-rules.pro
Aquí no hice ningún código para filtrar y ofuscar, solo escribí una oración
#忽略警告
-ignorewarnings
Ejecute gradle proguardJar. Una vez completada la ejecución, se generará el paquete de ofuscación
. Este artículo termina aquí.