產生問題的原因:引用的第三方庫已經混淆過,再在本地進行編譯混淆的時候就會報出這個錯誤。
解決的辦法:若無法修改第三方庫,則修改混淆器,重新進行編譯,將新的混淆器覆蓋原來的混淆器,則可以解決。
1.查看AndroidStudio所使用的proguard的版本,
路徑為D:\Program Files\Android\Android Studio\gradle\m2repository\net\sf\proguard\proguard-base;
根據AndroidStudio所使用的proguard版本去官網上下載源碼,
地址為:https://sourceforge.net/projects/proguard/files/proguard/
2.找到源碼的ClassConstant.java類,在src\proguard\classfile文件當中,
然后將ATTR_StackMapTable 的值修改成 "dummy"(原值為StackMapTable),
兩個版本均修改。
3.下載的proguard源碼里面沒有ant文件、proguard-android.txt、proguard-android-optimize.txt、proguard-project.txt文件,到sdk文件夾里面復制過來,
sdk的路徑為D:\AndroidSDK\tools\proguard
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