打包问题 Warning:Exception while processing task java.io.IOException: The same input jar

应用场景:最近做支付,微信支付,和支付包支付,支付宝官方文档提供了混淆代码,微信开放平台却没有提供混淆代码,怕代码混淆后微信支付不能用,上网搜了下,一堆代码混淆后微信支付不能用,麻溜的搜了下微信的混淆代码,微信平台官网没有提供但是万能的百度总是给你答案!

答案如下

Android 微信支付 代码混淆后打包,导致不能支付的原因

代码混淆

-libraryjars libs/libammsdk.jar

-keepclasscom.tencent.** { *;}

如果您的项目中也引用了dom4j.jar,那么就添加上下面的代码:

-libraryjars libs/dom4j-1.6.1.jar

-keepclassorg.dom4j.** {*;}

按照上述在混淆文件proguard-rules.pro中加入了上述两行代码,但是问题来了!

问题来了

加号混淆后打正式包时出现问题

Error:Execution failed for task ‘:app:proguardRelease’. 
java.io.IOException: The same input jar [xx:\xx\app\libs\XX.jar] is specified twice. 

也就是说混淆规则文件中,我们指定了2次,有点蒙圈,全局搜了下没写过,纳闷的给删了,再次打包,好了!得弄清楚,不能记吃不记打,麻溜又进入了百度的大数据库中。

原因

jar包大部分发布时就已经做了混淆处理,sdk 通过 proguard 混淆代码时默认已经将 lib目录中的 jar 都已经添加到打包脚本中,所以不需要再次手动添加,如果再次混淆必然会报错。

思考

我们自己做的jar包可以在发布是做混淆处理吗?
答案是可以滴,点击即可

总结

自己杞人忧天,白忙活了半天,但是也同时也了解到了打包可能会出现的The same input jar is specified twice问题,去混淆文件删除提示的jar包,重新编译打包就可以了,虽然是个小问题,但是也值得总结,希望自己以后不会犯同样的错误。

你可能感兴趣的:(打包问题 Warning:Exception while processing task java.io.IOException: The same input jar)