几年前自学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就好了
网友评论