Android Studio usa gradle para exportar paquetes jar y ofuscar el registro de código uno

Cree un módulo de Android y un módulo de AndroidLibrary y
Escribe aquí la descripción de la imagen.
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á.
Escribe aquí la descripción de la imagen.
Utilice jd-gui.exe para abrirlo en build/lib de la siguiente manera.
Escribe aquí la descripción de la imagen.
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
Escribe aquí la descripción de la imagen.
Escribe aquí la descripción de la imagen.
. Este artículo termina aquí.

Supongo que te gusta

Origin blog.csdn.net/q919233914/article/details/72466585
Recomendado
Clasificación