Whever Я пытаюсь отлаживать и развертывать приложение для Android (в Android Studio 0.9). Я получаю следующую ошибку:
Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
java.util.zip.ZipException: duplicate entry: android/support/multidex/BuildConfig.class
Чтобы прояснить ситуацию, приведена краткая история моих действий:
- Сегодня утром проект работал нормально
- Добавлены дополнительные классы и методы
- Сломал предел и получил эту ошибку:
Unable to execute dex: method ID not in [0, 0xffff]: 65536
- Решено добавить поддержку multiDex моему проекту, поскольку сокращение зависимостей не было вариантом
С тех пор я продолжаю получать описанную ошибку сразу после добавления multiDex в свой проект, следуя этому сообщению SO Используя Gradle для разделения внешних библиотек в разделенных файлах dex для решения Android Dalvik 64k предел методов.
Вот мой файл build.gradle:
apply plugin: 'com.android.application'
repositories {
jcenter()
}
android {
compileSdkVersion 21
buildToolsVersion '21.1.0'
defaultConfig {
applicationId "com.stackoverflow.application"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
multiDexEnabled = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
preDexLibraries = false
}
}
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += "--main-dex-list=$projectDir/<filename>".toString() // enable the main-dex-list
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':viewPagerIndicatorLibrary')
compile 'com.google.android:multidex:0.1'
compile 'com.j256.ormlite:ormlite-android:4.48'
compile 'com.j256.ormlite:ormlite-core:4.48'
compile 'de.greenrobot:eventbus:2.2.1'
compile 'se.emilsjolander:stickylistheaders:2.5.1'
compile 'joda-time:joda-time:2.5'
compile 'com.makeramen:roundedimageview:1.4.0'
compile 'javax.inject:javax.inject:1'
compile 'com.squareup.picasso:picasso:2.3.4'
compile 'com.googlecode.libphonenumber:libphonenumber:6.3.1'
compile('com.google.api-client:google-api-client-gson:1.18.0-rc') {
exclude module: 'httpclient'
}
compile 'com.google.android.gms:play-services:6.1.71'
compile('com.google.api-client:google-api-client:1.17.0-rc') {
exclude(group: 'xpp3', module: 'xpp3')
exclude(group: 'org.apache.httpcomponents', module: 'httpclient')
exclude(group: 'junit', module: 'junit')
exclude(group: 'com.google.android', module: 'android')
}
compile('com.google.api-client:google-api-client-android:1.17.0-rc') {
exclude(group: 'com.google.android.google-play-services', module: 'google-play-services')
}
compile('com.google.http-client:google-http-client-android:1.17.0-rc') {
exclude(group: 'com.google.android', module: 'android')
}
compile 'com.google.guava:guava:18.0'
}
У меня также есть другие зависимости проекта от использования библиотеки viewPagerIndicator, а также нескольких банок в папке /libs:
- Android-асинхронный HTTP-1.4.6.jar
- Guice-3,0-no_aop.jar
- jsr305-1.3.9.jar
- roboguice-2.0.jar
Приветствуются любые советы о том, как я могу решить эту проблему, не удаляя какие-либо из моих необходимых зависимостей!