日前在打包混淆包含第三方jar包的Android studio項目時 報出了各種錯誤,但是debug版本卻能正常運行,於是懷疑android studio 打包的時候把第三方jar包給混淆了,第三方jar包有些已經混淆過,再混淆一次,那肯定會出現蛋疼的問題。
遇到這個問題是本能的想到直接在app目錄下的proguard-rules.pro(或者proguard-rules.txt)混淆規則文件直接-libraryjars libs/xx.jar避免混淆。但是卻引出了另一個錯誤:
Error:Execution failed for task ‘:app:proguardRelease’.
Java.io.IOException: The same input jar [E:\myproject\app\libs\XX.jar] is specified twice.
也就是說混淆規則文件中,我們指定了2次
解決方法
打開app目錄下的lib文件夾,將各第三方jar下的包名在proguard-rules.pro 文件中過濾。
代碼如下:-keep class org\achartengine.** { *; }
上面的代碼為例,意思是不混淆org\achartengine包下的各個類及類里面的所以域和方法。把上面的包名換成自己想要忽略的jar下面暴露的包名即可。