美文网首页
jar包混淆

jar包混淆

作者: Leero丶 | 来源:发表于2019-06-05 17:21 被阅读0次

    生成混淆的jar包需要在module的build.gradle文件中添加以下两个脚本函数,最后运行对应的gradle指令即可。

    task buildJar(dependsOn: ['assembleRelease'], type: Jar) {
        build_type = 1
        //后缀名
        extension = "jar"
        //最终的 Jar 包名
        archiveName = "${project.getName()}-release.jar"
        //需打包的资源所在的路径集
        def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"]
        def srcKotlinClassDir = [project.buildDir.absolutePath + "/tmp/kotlin-classes/release"]
        //初始化资源路径集
        from srcClassDir
        from srcKotlinClassDir
    //    from fileTree(dir: 'src/main', includes: ['assets/**'])
        //去掉不要的类
        exclude('io/reactivex/android/R.class')
        //需要打包的类
        include('com/smartahc/android/smartble/*.class')
        include('com/smartahc/android/smartble/**/*.class')
    //    include('assets/**')
    }
    
    task buildProguardJar(dependsOn: ['buildJar'], type: ProGuardTask) {
    //    Android 默认的 proguard 文件
    //    configuration android.getDefaultProguardFile('proguard-android.txt')
        //会根据该文件对 Jar 进行混淆,注意:需要在 manifest 注册的组件也要加入该文件中
        configuration 'proguard-rules.pro'
        String inJar = buildJar.archivePath.getAbsolutePath()
        //输入 jar
        injars inJar
        //输出 jar
        outjars inJar.substring(0, inJar.indexOf(".")) + "_proguard.jar"
        //设置不删除未引用的资源(类,方法等)
        dontshrink
        AppPlugin appPlugin = getPlugins().findPlugin(AppPlugin)
        if (appPlugin != null) {
            List<String> runtimeJarList
            if (appPlugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
                runtimeJarList = appPlugin.getRuntimeJarList()
            } else if (android.getMetaClass().getMetaMethod("getBootClasspath")) {
                runtimeJarList = android.getBootClasspath()
            } else {
                runtimeJarList = appPlugin.getBootClasspath()
            }
    
            for (String runtimeJar : runtimeJarList) {
                //给 proguard 添加 runtime
                libraryjars(runtimeJar)
            }
            build_type = 2
        }
    }
    
    image.png

    相关文章

      网友评论

          本文标题:jar包混淆

          本文链接:https://www.haomeiwen.com/subject/ruysxctx.html