AndroidStudio出现 Unknown verification type [95] in stack map frame 问题的解决办法

产生问题的原因:引用的第三方库已经混淆过,再在本地进行编译混淆的时候就会报出这个错误。

解决的办法:若无法修改第三方库,则修改混淆器,重新进行编译,将新的混淆器覆盖原来的混淆器,则可以解决。

1.查看AndroidStudio所使用的proguard的版本,

   路径为D:\Program Files\Android\Android Studio\gradle\m2repository\net\sf\proguard\proguard-base;

clip_image002

根据AndroidStudio所使用的proguard版本去官网上下载源码,

地址为:https://sourceforge.net/projects/proguard/files/proguard/

2.找到源码的ClassConstant.java类,在src\proguard\classfile文件当中,

然后将ATTR_StackMapTable 的值修改成 "dummy"(原值为StackMapTable),

clip_image004

两个版本均修改。

3.下载的proguard源码里面没有ant文件、proguard-android.txt、proguard-android-optimize.txt、proguard-project.txt文件,到sdk文件夹里面复制过来,

     sdk的路径为D:\AndroidSDK\tools\proguard

clip_image006

4.使用ant将所源码进行编译打包,具体的教程可以参考博客

    http://glblong.blog.51cto.com/3058613/1536516

5.将打包好的文件覆盖掉原来的文件,注意还要在覆盖缓存当中的文件,路径为

    C:\Users\A\.gradle\caches\modules-2\files-2.1\net.sf.proguard\proguard-base\4.11\76730af417bb42da22b16e49f49e67863382b9bd

     如果有多个版本,则多个版本均覆盖。

6.重启AndroidStudio,发现问题已经没有了。

参考博客:http://blog.csdn.net/jiguangcanhen/article/details/41806599

                  http://glblong.blog.51cto.com/3058613/1536516

posted @ 2016-11-24 14:47  黄大仙爱编程  阅读(1959)  评论(1编辑  收藏  举报