您的位置:首页 > 移动开发 > Android开发

Android 混淆打包时第三方jar包报错Unknown verification type [*] in stack map frame

2016-04-20 12:46 411 查看
    小菜鸟表示项目快上线了,赶着出个包的时候遇到这个问题,简直是要了命。然而在国内的搜索结果99%都是在说proguard的源码中的ClassConstants.java中ATTR_StackMap属性改为dummy,然后还得ANT打包回去。看了顿时表示这么大工程量如果最后改了还是不行我是不是可以召唤草泥马神兽把作者给轮了。另外还有一种说法就是proguard的版本太低,看了下sdk/tools/proguard下的proguard版本是4.3的,我赶紧去下了个新的,没任何区别还是报这个错,后来发现好像AS的proguard不是用这个路径下的,是用gradle下的proguard,那个版本是最新的,所以也不是这个原因导致的。

    然后国内的找不到我就去stackoverflow找,看了前几个回答也是说proguard源码的问题,因为stackoverflow访问速度实在太慢了,我就放弃继续细找了。其实在国内的搜索结果中出现了两篇文章,一开始我看得一头雾水,故无视之。但是后来越来越觉得是这个问题,又找出来仔细看了几遍,貌似情况跟我是一致的,这两篇文章传送门:

http://blog.csdn.net/dianyueneo/article/details/43058691

http://blog.csdn.net/wen243624708/article/details/38777671

     其实导致这个问题原因在于第三方的jar包自己有做了混淆,同时其代码中存在类似这种的代码


个人总结来说就是if的判断条件是写死的,这样的代码是在做无用功,在混淆之后会出现某种不知名的问题(小菜鸟表示找不到根本导致的原因,只能做到这了。)

    于是找了提供第三方jar包的同事,让他改了之后就打包成功了。

    OK, problem solved.

    本人太懒,懒得结尾,码农和狗友们再贱。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 混淆