美文网首页
Jar包及混淆

Jar包及混淆

作者: zhi5ai | 来源:发表于2019-04-10 10:56 被阅读0次

    几年前自学android的时候就比葫芦画瓢的整过aar,当时好像是为了学自定义 view,最后还把aar发布到了Jcenter上。然后就出现了断层,如今需要给别人提供SDK,才有印象自己曾经是做过的,但是笔记什么的也不知道记到哪儿了,两眼一抹黑,写个笔记吧!

    注:关于打包,有两种格式:*.jar 和 *.aar,
    区别:前者只包含代码文件;而后者包含(图片、布局等)资源文件。
    这次需要提供的SDK只包含代码,所以就选Jar包!

    makeJar

    首先是makeJar,了解下。需要先在你的android library中的build.gradle中添加如下:

    task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
        injars 'build/intermediates/intermediate-jars/release/classes.jar' // 未混淆的jar路径
        outjars 'build/outputs/mylibrary-1.0.0.jar' // 混淆后的jar输出路径
        configuration 'proguard-rules.pro' // 混淆协议
    }
    

    在Gradle中选yourlibrary->Tasks->other->makeJar
    或者

    // Mac 系统
    ./gradlew makeJar
    // Windows 系统
    gradlew makeJar
    

    injars 指明的路径写其他的时候,makeJar 会出现以下类似问题。(就算你所写路径下确实存在classes.jar,也会问题)


    148881554865651_.pic_hd.jpg

    Pro guard打包混淆Build Failed,报错:


    148901554868373_.pic_hd.jpg

    方法:

    #忽略警告
    -ignorewarnings
    

    最后记得在proguard-rules.pro中keep 你对外提供的

    完成!

    参考链接

    附:

    重新设计了结构之后的SDK,在打包后,出现了AbstractMethodError错误


    149511555056905_.pic_hd.jpg

    问题解决:抽象类里的抽象方法被混淆了,在proguard-rules.pro中加入对该方法的keep就好了

    相关文章

      网友评论

          本文标题:Jar包及混淆

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