(Дублирующая запись zip [coolLib.jar:{pkg}/BuildConfig.class]))

У меня есть Android-проект в Android Studio 2.3.0 beta4, который зависит от библиотечного проекта CoolLib.

CoolLib имеет свой источник в jar-файле coolLib.jar в папке libs. coolLib.jar содержит файл {pkg} /BuildConfig.class.

Когда я пытаюсь собрать и запустить проект в устройстве / эмуляторе на Android API-22+, он работает отлично, но когда я пытаюсь сделать то же самое на устройстве / эмуляторе на API VERSION < 22, Android Studio не удается собрать с помощью Exception--

Предупреждение: Исключительная ситуация при обработке задачи. Java.io.IOException: Не могу записать [D:\AndroidStudioProjects\CoolProject\app\build\ промежуточные звенья \transforms\proguard\debug\jars\3\1f\main.jar] (не могу прочитайте [D:\AndroidStudioProjects\CoolProject\CoolLib\build\ промежуточные \ \bundles\default\libs\coolLib.jar(;;;;;;**.class)] (Дублирующая запись zip [coolLib.jar:{pkg}/BuildConfig.class])):app:transformClassesAndResourcesWithProguardForDebug FAILED

Build.gradle проекта содержит следующие версии поддержки 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'
}

2 ответа

Решение

Хорошо, я получил решение.

Почему-

Я сравнил шаги сборки в консоли Gradle в API22(сборка в порядке) и API16(сборка не удалась). На API22 консоль сказала:

+ Мгновенный запуск: Proguard не совместим с мгновенным бегом. Это было отключено для отладки

+ Мгновенный запуск: средство отладки ресурсов автоматически отключается для отладки

..и сборка прошла успешно. Когда я отключил InstantRun, он также не работал на API22.

Причина-

Проблема была в конфигурации proguard. BuildConfig.class файла coolLib.jar был определен для хранения в proguard-project.txt, поэтому он сохранял все файлы.class в этом пакете, но BuildConfig.class должен быть изменен во время сборки в соответствии с основным проектом.

Решение-

Я удалил это -keep заявление, и оно работает как шарм.

Я была такая же проблема.

Исправление для меня было поставить packageBuildConfig = false в android { ... } раздел файлов build.gradle для проекта библиотеки:

android {
    packageBuildConfig = false
    ...
}

Даже если он устарел, он все еще работает.

Другие вопросы по тегам