【问题标题】:(Duplicate zip entry [coolLib.jar:{pkg}/BuildConfig.class]))(重复的 zip 条目 [coolLib.jar:{pkg}/BuildConfig.class]))
【发布时间】:2017-06-28 20:13:56
【问题描述】:

我在 Android Studio 2.3.0 beta4 中有一个 android 项目,它依赖于库项目 CoolLib

CoolLib 的源代码位于其 libs 文件夹中的 jar 文件 coolLib.jar 中。 coolLib.jar 包含文件 {pkg}/BuildConfig.class

当我尝试在 Android API-22+ 的设备/模拟器中构建和运行项目时,它运行完美,但是当我尝试在 API VERSION 失败构建异常--

警告:处理任务 java.io.IOException 时出现异常:无法写入 [D:\AndroidStudioProjects\CoolProject\app\build\intermediates\transforms\proguard\debug\jars\3\1f\main.jar](无法读取 [D:\AndroidStudioProjects\CoolProject\CoolLib\build\intermediates\bundles\default\libs\coolLib.jar(;;;;;;**.class)] (重复的 zip 条目 [coolLib.jar:{ pkg}/BuildConfig.class])) :app:transformClassesAndResourcesWithProguardForDebug 失败

项目的build.gradle包含以下版本的support lib等--

ext {
supportLibVer = '25.1.1'
playServiceVer = '10.0.1'

buildToolsVer = "25.0.2"

compileSdkVer = 25
targetSdkVer = 25
minSdkVer = 16
}


dependencies {
compile files('libs/FLurry_3.2.2.jar')
compile files('libs/jxl-2.6.12.jar')

compile project(':CoolLib')

compile files('libs/gcm.jar')
compile "com.google.android.gms:play-services-ads:$playServiceVer"
compile "com.android.support:appcompat-v7:$supportLibVer"
compile "com.android.support:design:$supportLibVer"
compile "com.android.support:cardview-v7:$supportLibVer"
compile "com.android.support:support-v13:$supportLibVer"
compile 'com.github.bumptech.glide:glide:3.7.0'
}

【问题讨论】:

  • 上面写着 Duplicate zip entry [coolLib.jar:{pkg}/BuildConfig.class] 发布你的完整成绩文件
  • 您希望我显示文件的哪一部分。
  • app:gradle 主要是依赖项
  • @Charuක 我已经用依赖部分更新了问题。
  • 使用同版本的支持库可以尝试编译"com.android.support:support-v13:$supportLibVer" --> to > "com.android.support:support-v7:$supportLibVer"

标签: android android-studio build.gradle android-proguard


【解决方案1】:

好的,我知道了。

原因-

我比较了 API22(构建正常)和 API16(构建失败)的 gradle 控制台中的构建步骤。在 API22 上,控制台说-

+Instant Run:Proguard 与 Instant Run 不兼容。已禁用调试

+Instant Run:自动禁用资源收缩器进行调试

..构建成功。当我禁用 InstantRun 时,它在 API22 上也失败了。

原因-

问题出在 proguard 配置中。 coolLib.jarBuildConfig.class 被定义为保存在 proguard-project.txt 中,因此它保留了所有 该包中的 .class 文件,但 BuildConfig.class 必须在构建时根据主项目进行修改。

解决方案-

我删除了那个 -keep 声明,它就像一个魅力。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。

    对我来说,解决方法是将 packageBuildConfig = false 放入库项目的 build.gradle 文件的 android { ... } 部分:

    android {
        packageBuildConfig = false
        ...
    }
    

    即使它已被弃用,它仍然可以工作。

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      相关资源
      最近更新 更多