【问题标题】:Android Studio - ProGuard IOException Duplicate Zip EntryAndroid Studio - ProGuard IOException Duplicate Zip Entry
【发布时间】:2015-08-05 17:49:33
【问题描述】:

所以我尝试在 Gradle 中为我的 Android Studio 项目设置 ProGuard,但在构建项目时出现以下错误:

错误:任务 ':app:proguardDebug' 执行失败。 java.io.IOException: 无法写入 [C:\Users\Rich\Desktop\WebProjects\AndroidStudioProjects\Roomie\app\build\intermediates\classes-proguard\debug\classes.jar] (无法读取 C:\ Users\Rich\Desktop\WebProjects\AndroidStudioProjects\Roomie\app\libs\bolts-android-1.1.4.jar(;;;;;;!META-INF/MANIFEST.MF)](重复的 zip 条目 [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>;
}

【问题讨论】:

    标签: java android android-studio gradle proguard


    【解决方案1】:

    未来参考:

    我偶然发现了同样的问题,SO 上的这个 post 帮助我解决了它。

    基本上,当您在项目中包含库时,其中一些包含公共依赖项,这就是 proguard 失败并出现 IOException 的原因。

    我的问题是我使用了 ParseFacebook SDK,并且它们都导入了 bolts 库作为依赖项。
    在导入其中一个冲突的 SDK 时,只需添加一些 exclude 指令即可解决问题:

    compile ('com.facebook.android:facebook-android-sdk:4.4.0') {
        exclude module: 'bolts-android'
        exclude module: 'support-v4'
    }
    

    【讨论】:

    • 是的,你指出了问题所在。简单来说,造成的问题是:你有两个依赖A和B,但是库A也依赖B,所以,你的项目包含两个相同的库:B。它会导致冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    相关资源
    最近更新 更多