美文网首页Android技术知识Android开发Android开发经验谈
混淆后的AAR发布到Jcenter最靠谱的的方式

混淆后的AAR发布到Jcenter最靠谱的的方式

作者: 夏季凉茶 | 来源:发表于2019-11-15 13:00 被阅读0次

    前言

    公司因为某些业务员需要做SDK给到合作方接入,但是却不希望源代码泄露(其实没啥源代码),需要我们做混淆。。。WDNMD,噩梦开始了。然并卵,代码还是得撸起来。


    方案一:生成AAR

    缺点:AAR不能包含所依赖的项目。接入体验:低。

    方案二:生成带有依赖包的AAR

    Gradle编译编译生成带有依赖Jar的AAR包,参照:
    https://github.com/kezong/fat-aar-android
    优点:完美解决方案一的缺点。
    缺点:如果接入项目的依赖与AAR包中的依赖包有冲突,编译会不成功,各种排除冲突都会失效。接入体验:中

    方案三:将AAR发布到Jcenter后进行远程依赖

    接入体验:高
    优点:完美解决以上两个方案的缺点。
    缺点:提交到Jcenter的项目代码是不会被混淆的,也就不符合我期望的核心要求-“代码混淆”。


    最终方案:将AAR打成Jar包,新建一个空壳库,导入Jar包,添加Jar包需要的依赖,发布空壳库到Jcenter。

    下面来开始技术总结

    • 一、注册bintray账号,不会的交由其他热心开发处理
    • 二、在需要打成AAR的库的build.gradle文件下添加编译Jar包的代码

    如果你需要混淆,请提前打开 minifyEnabled true 并编写好混淆代码

    def SDK_BASENAME = "custom_sdk";
    def SDK_VERSION = "_v1.0.0";
    def sdkDestinationPath = "build/outputs/jar/";
    def zipFile = file('build/intermediates/packaged-classes/release/classes.jar')
    task deleteBuild(type: Delete) {
        delete sdkDestinationPath + SDK_BASENAME + SDK_VERSION + ".jar"
    }
    task makeJar(type: Jar) {
        from zipTree(zipFile)
        from fileTree(dir: 'src/main', includes: ['assets/**']) // 打包assets目录下的所有文件
    
        baseName = SDK_BASENAME + SDK_VERSION
        destinationDir = file(sdkDestinationPath)
    }
    makeJar.dependsOn(deleteBuild, build)
    
    • 三、Terminal 执行代码
    ./gradlew makeJar
    

    然后会在库的build/outputs下生成Jar包

    • 四、新建一个项目,再新建一个moudle,导入这个Jar包


    顺便把Jar包的混淆代码也复制一份到这个库里面来然后在这个库的build.gradle下添加一份这样子的代码

    android {
        ...
        defaultConfig {
            ...
            consumerProguardFiles 'proguard-rules.pro'
        }
    }
    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        //导入Jar包需要的依赖
        implementation 'com.squareup.retrofit2:retrofit:2.3.0'
        ...
        api files('libs/xxxxxxxxx.jar')
    }
    
    • 五、导入 bintray-release 将新建的moudle发布到Jcenter
    • 六、依赖使用

    相关文章

      网友评论

        本文标题:混淆后的AAR发布到Jcenter最靠谱的的方式

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