java.util.zip.ZipException: doppelter Eintrag :wie überwinden
Habe ich mehrere Android-Bibliotheken und-Module in meinem Projekt. Jeder hat seine eigene v4.Unterstützung lib. Ich bin immer java.util.zip.ZipException: doppelter Eintrag .
Wenn ich Suche für den doppelten class-Datei in das Projekt, es sind mehrere Dateien von diesen Klassen, weil von mehreren v4.Unterstützung lib in den einzelnen Bibliotheken. Ich weiß, diese Frage wurde gebeten, viele Male hier, aber nichts funktioniert für mich .
Meine Frage ist : wie entfernen Sie diese mehrere v4.support-Dateien ? Ich will das v4.Unterstützung lib nur einmal und alle anderen Modul-Referenz sollte es von dort. Wie kann ich das erreichen?
Folgende ist meine bauen.gradle-Skript
//Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
//classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
classpath 'io.fabric.tools:gradle:1.15.2'
}
}
apply plugin: 'android'
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile('com.crashlytics.sdk.android:crashlytics:2.2.3@aar') {
transitive = true
}
compile('com.android.support:multidex:1.0.0')
//compile ('com.android.support:appcompat-v7:22.1.0')
compile project(':..:..:..:..:..:..:android_libraries:appcompat')
compile project(':..:..:..:..:..:..:android_libraries:facebook')
compile project(':..:..:..:..:..:..:android_libraries:google_play_services:libproject:google-play-services_lib')
compile project(':..:..:..:..:..:..:android_libraries:SlidingMenu')
compile project(':..:..:..:..:..:..:android_libraries:StickingGridViewLibrary')
compile project(':..:..:..:..:..:..:android_libraries:view_pager_library')
compile project(':..:..:..:..:..:..:android_libraries:ZXing2.3')
compile project(':..:..:..:..:..:..:android_libraries:xyz')
compile project(':..:..:..:..:..:..:android_libraries:apptentive')
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
versionCode 1
versionName "1.0"
minSdkVersion 15
targetSdkVersion 21
//Enabling multidex support.
multiDexEnabled true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
ant.importBuild './../../../../../../buildscripts/wlbuild.xml'
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
//if you have multiple outputs (when using splits), you may want to have other index than 0
resourcePackageName 'com.kohls.mcommerce.opal'
//If you're using Android NBS flavors you should use the following line instead of hard-coded packageName
//resourcePackageName android.defaultConfig.applicationId
//You can set optional annotation processing options here, like these commented options:
//logLevel 'INFO'
//logFile '/var/log/aa.log'
}
}
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')
}
buildDir = './../../../../../../build/native'
lintOptions {
abortOnError false
}
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
}
}
Und ich bin immer Fehler wie diese. Jedes mal, wenn ich zum reinigen das Projekt erfüllt es erfolgreich. Aber wenn ich versuche, den Befehl Ausführen, es zeigt die folgenden Typen von Fehlern.
Execution failed for task ':packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/media/TransportMediatorCallback.class
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als ich Problemumgehung mein problem von oben, und einen Weg finden, Sie zu überwinden. Hauptgrund für packageAllDebugClassesForMultiDex Fehler ist der gleiche, die Sie finden, in allen anderen Beiträgen in Stackoverflow d.h. Sie müssen einige class-Dateien, die mehr als einmal im Projekt. In meinem Fall habe ich so viele Module im oben genannten Projekt wie Facebook , google pay Dienste und Schiebe-Menü etc.. . Alle diese module haben eine eigene Kopie der v4.Unterstützung der jar-Datei.
Was ich Tat, war alle löschen v4.support-Dateien aus all diesen Bibliotheken libs-Ordner.
Dann Fügen Sie die Abhängigkeit zu v4.support-lib von meinem sdks also com.android.support-libs von Android Studio Projekt-Struktur. Für Diese..
2* Wählen Sie jeweils eines dieser Module eins nach dem anderen.
3* In den letzten tab mit dem Namen Abhängigkeit , Entfernen kompilieren Dateibaum(dir: 'libs', sind: '*.jar') wenn Sie nur v4.Unterstützung lib (oder der probleomatic)in libs-Ordner des Moduls.
4* Hinzufügen v4.support-lib, indem Sie auf + dann fügen Sie Bibliotheken und wählen Sie
v4.support-libs aus Ihrer sdks.
Fertig. Reinigen Sie das Projekt und erstellen Sie Sie erneut.packageAllDebugClassesForMultiDex problem ist verschwunden.
Als für die transitive Abhängigkeit , wenn Sie wissen, die genaue Abhängigkeit die Ursache der Doppelte Datei in dex Fehler beim erstellen des Projekts können Sie es ausschließen, wie belo
Wenn Sie wollen, dass jede transitive Abhängigkeit in jedem Modul, zB.