记录一个遇到很久的问题
项目本身是Unity3d的类型,打包的时候一直报错
“(Unknown verification type [*] in stack map frame)”
问题定位到 unity-class.jar;
百度后解决方案都是很统一,都指明出是proguard的一个bug,解决方案也清楚,是重新编译一个proguard。
首先肯定的是这个解决方案是正确的,也帮我解决了一时的问题。
最近Android Studio 3.0稳定版本发布后,这个问题又冒了出来。经过研究还是找到解决方案。
旧版本的gradle版本对应proguard版本 2.2.3 =》5.2.1
新版本的gradle版本对应proguard版本 3.0.0 ==》5.3.3
不清楚这个配对关系是哪里配置的。
我的解决方案是
把5.2.1.jar改名替换成5.3.3.jar
替换的路径也是很讲究
1.优先替换 【AS_path\gradle\m2repository\net\sf\proguard\proguard-base】 对于AS,【AS_path\gradle\m2repository】也是一个代码仓库,会检测该路径下是否包含所需文件。
2.如果【AS_path\gradle\m2repository\net\sf\proguard\proguard-base】没有找到对应的文件,会联网去代码仓库获取,缓存路径大概为
【系统盘:\Users\登录用户名\.gradle\caches\modules-2\files-2.1\net.sf.proguard\proguard-base\5.3.3\】
总结突破点
1.版本对应关系, 不清楚对应关系,还是替换5.2.1.没有生效。后全部删掉proguard,看到as在下载5.3.3版本。
替换的路径。如果替换到【AS_path\gradle\m2repository\net\sf\proguard\proguard-base】需要把【系统盘:\Users\登录用户名\.gradle\caches\modules-2\files-2.1\net.sf.proguard\proguard-base\5.3.3\】
有类似问题无法解决可以联系我qq197716976
2018-01-16更新
如果是用gradle打包的需要替换
G:\Users\xxx\.gradle\caches\modules-2\files-2.1\net.sf.proguard\proguard-base\5.3.3
对应的版本。