(Дублирующая запись 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
...
}
Даже если он устарел, он все еще работает.