因此,我尝试在 Gradle 中为我的 Android Studio 项目设置 ProGuard,但在构建项目时出现以下错误:
Error:Execution failed for task ':app:proguardDebug'. java.io.IOException: Can't write [C:\Users\Rich\Desktop\WebProjects\AndroidStudioProjects\Roomie\app\build\intermediates\classes-proguard\debug\classes.jar] (Can't read C:\Users\Rich\Desktop\WebProjects\AndroidStudioProjects\Roomie\app\libs\bolts-android-1.1.4.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [a/a.class == bolts-android-1.1.4.jar:bolts/AggregateException.class]))
这是我的 proguard-rules.pro
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-dontwarn org.apache.http.annotation.**
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
最佳答案
供以后引用:
我偶然发现了同样的问题,这个 post SO 上帮我解决了。
基本上,当您在项目中包含库时,其中一些包含公共(public)依赖项,这就是 proguard 因 IOException 而失败的原因。
我的问题是我使用了 Parse 和 Facebook SDK,并且它们都导入了 bolt 库作为依赖项。
在导入其中一个冲突的 SDK 时,只需添加一些 exclude 指令即可解决问题:
compile ('com.facebook.android:facebook-android-sdk:4.4.0') {
exclude module: 'bolts-android'
exclude module: 'support-v4'
}
关于java - Android Studio - ProGuard IOException 重复 Zip 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30418150/