應用場景:最近做支付,微信支付嘉抒,和支付包支付,支付寶官方文檔提供了混淆代碼袍暴,微信開放平臺卻沒有提供混淆代碼些侍,怕代碼混淆后微信支付不能用,上網搜了下政模,一堆代碼混淆后微信支付不能用岗宣,麻溜的搜了下微信的混淆代碼,微信平臺官網沒有提供但是萬能的百度總是給你答案淋样!
答案如下
Android 微信支付 代碼混淆后打包耗式,導致不能支付的原因
代碼混淆
-libraryjars libs/libammsdk.jar
-keepclasscom.tencent.** { *;}
如果您的項目中也引用了dom4j.jar,那么就添加上下面的代碼:
-libraryjars libs/dom4j-1.6.1.jar
-keepclassorg.dom4j.** {*;}
按照上述在混淆文件proguard-rules.pro中加入了上述兩行代碼,但是問題來了刊咳!
問題來了
加號混淆后打正式包時出現(xiàn)問題
Error:Execution failed for task ‘:app:proguardRelease’.
java.io.IOException: The same input jar [xx:\xx\app\libs\XX.jar] is specified twice.
也就是說混淆規(guī)則文件中彪见,我們指定了2次,有點蒙圈,全局搜了下沒寫過娱挨,納悶的給刪了余指,再次打包,好了跷坝!得弄清楚酵镜,不能記吃不記打,麻溜又進入了百度的大數(shù)據(jù)庫中柴钻。
原因
jar包大部分發(fā)布時就已經做了混淆處理笋婿,sdk 通過 proguard 混淆代碼時默認已經將 lib目錄中的 jar 都已經添加到打包腳本中,所以不需要再次手動添加顿颅,如果再次混淆必然會報錯。
思考
我們自己做的jar包可以在發(fā)布是做混淆處理嗎足丢?
答案是可以滴粱腻,點擊即可
總結
自己杞人憂天,白忙活了半天斩跌,但是也同時也了解到了打包可能會出現(xiàn)的The same input jar is specified twice問題绍些,去混淆文件刪除提示的jar包,重新編譯打包就可以了耀鸦,雖然是個小問題柬批,但是也值得總結,希望自己以后不會犯同樣的錯誤袖订。