Обновление Android Studio до 1.0 повреждает MultiDex
Привет Есть похожая ошибка, как повторяющаяся запись.
FAILURE: сборка не удалась, исключение.
Что пошло не так: выполнение задачи не выполнено ': eBooks: packageAllDebugClassesForMultiDex'.
java.util.zip.ZipException: повторяющаяся запись: android/support/annotation/AttrRes.class
Попробуйте: Запустите с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше вывода журнала.
СТРОИТЬ НЕУДАЧИ
Общее время: 1 мин. 46,13 с.
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':ui-reader')
compile "com.android.support:support-v4:23.1.1"
compile "com.android.support:support-v13:20.0.0"
compile files('libs/Flurry_3.2.1.jar')
}
android {
compileSdkVersion 21
buildToolsVersion "20.0.0"
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
lintOptions {
abortOnError false
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
Может кто-нибудь сказать мне, как найти, где дубликат файла класса доступен в файле JAR и как получить вывод, как показано ниже
com.squareup.okhttp:okhttp:1.6.0 | | | +--- com.intellij: аннотации:+ -> 12,0
1 ответ
Я смог воспроизвести это в тестовом проекте, просто включив библиотеку aviary-sdk. Мне не понадобился мультидекс, и я не исследовал разные версии SDK, что мне кажется немного загадочным.
Если у вас нет multi-dex, вы получаете классическую ошибку "определение нескольких файлов dex...", которая означает, что вы включали один и тот же символ более одного раза в вашу сборку, что вам запрещено делать.
Эти проблемы могут занять некоторое время; вот где gradle dependencies
Задача может быть очень удобной. Если вы зайдете в каталог вашего модуля (не в каталог верхнего уровня) и запустите эту задачу:
../gradlew dependencies
ты получаешь:
compile - Classpath for compiling the main sources.
+--- com.aviary.android.feather.sdk:aviary-sdk:3.4.3.351
| \--- com.aviary.android.feather.sdk:sdk-library:3.5.1
| +--- it.sephiroth.android.library.hlistviewanimations:hlistviewanimations-library:1.0.1
| | +--- it.sephiroth.android.library.horizontallistview:hlistview:1.2.2
| | | \--- com.android.support:support-v4:19.1.+ -> 21.0.3
| | | \--- com.android.support:support-annotations:21.0.3
| | \--- com.nineoldandroids:library:2.4.0
| +--- com.nineoldandroids:library:2.4.0
| +--- it.sephiroth.android.library.disklruimagecache:DiskLruImageCache:1.0.2
| | +--- org.apache.commons:commons-io:1.3.2
| | \--- com.jakewharton:disklrucache:2.0.2
| +--- com.aviary.android.feather.sdk:cds-library:3.2.4
| | +--- com.aviary.android.feather.sdk:common-library:3.1.2 -> 3.1.8.1
| | | +--- org.apache.commons:commons-lang3:3.3.2
| | | +--- com.squareup.okhttp:okhttp-urlconnection:1.6.0
| | | | \--- com.squareup.okhttp:okhttp:1.6.0
| | | +--- com.squareup.okhttp:okhttp:1.6.0
| | | +--- com.intellij:annotations:+ -> 12.0
| | | \--- commons-io:commons-io:2.4
| | \--- com.android.support:support-v4:19.+ -> 21.0.3 (*)
| +--- it.sephiroth.android.library.disklrumulticache:disklrumulticache:1.0.2
| | +--- org.apache.commons:commons-io:1.3.2
| | \--- com.jakewharton:disklrucache:2.0.2
| +--- it.sephiroth.android.library.picasso:picasso:2.3.3.2
| | +--- com.squareup.okhttp:okhttp-urlconnection:1.6.0 (*)
| | +--- com.squareup.okhttp:okhttp:1.6.0
| | \--- com.intellij:annotations:12.0
| +--- com.android.support:support-v4:19.+ -> 21.0.3 (*)
| +--- it.sephiroth.android.exif:android-exif-extended:1.0.2
| | +--- org.apache.commons:commons-lang3:3.3.2
| | \--- org.apache.commons:commons-io:1.3.2
| +--- it.sephiroth.android.library.imagezoom:imagezoom:1.0.5
| | \--- it.sephiroth.android.library.easing:android-easing:1.0.3
| +--- com.aviary.android.feather.sdk:receipt-library:2.0.2
| | +--- com.aviary.android.feather.sdk:common-library:3.1.2 -> 3.1.8.1 (*)
| | +--- it.sephiroth.android.library.ab:ab-test:2.0.3
| | \--- com.android.support:support-v4:19.+ -> 21.0.3 (*)
| +--- com.aviary.android.feather.sdk:common-library:3.1.2 -> 3.1.8.1 (*)
| +--- it.sephiroth.android.library.horizontallistview:hlistview:1.2.2 (*)
| +--- it.sephiroth.android.library.fork.listviewanimations:listviewanimations-library-core:2.6.1
| | \--- com.nineoldandroids:library:2.4.0
| +--- com.aviary.android.feather.sdk:tracking-library:3.0.1
| | \--- com.aviary.android.feather.sdk:common-library:3.1.8.1 (*)
| \--- com.aviary.android.feather.sdk:headless-library:3.4.002000000
| \--- com.aviary.android.feather.sdk:common-library:3.1.2 -> 3.1.8.1 (*)
Если вы посмотрите внимательно, вы увидите оба:
Обще--й: Обще--й:2,4
а также
org.apache.commons: Обще-ю:1.3.2
там, что я не подтвердил, но я предполагаю, что это разные упаковки одного и того же класса, которые включают в себя org/apache/commons/io/CopyUtils.class
,
Если вы исключите commons-io
с помощью:
compile ('com.aviary.android.feather.sdk:aviary-sdk:3.4.3.351') {
exclude group: 'commons-io'
}
это будет строить. Я не пытался запустить его, поэтому я не знаю, будут ли отсутствующие символы во время выполнения; если есть, вы можете попытаться более осторожно относиться к тому, что вы исключаете из зависимости, или, возможно, вы можете переупаковать зависимость, чтобы исправить ошибки, или связаться с ее автором.