Dies ist meine Gradle-Datei auf App-Ebene:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '27.0.0'
useLibrary 'org.apache.http.legacy'
defaultConfig {
multiDexEnabled true
applicationId 'com.example.test'
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
productFlavors {
}
dexOptions {
incremental true
}
}
dependencies {
compile 'com.google.android.gms:play-services:10.0.1'
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
compile 'commons-io:commons-io:1.3.2'
compile 'com.mcxiaoke.volley:library:1.0.19'
compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
}
Der vollständige Fehler, den ich beim Kompilieren des Projekts erhalte, ist:
Fehler: Ausführung für Task ': app: transformDexArchiveWithExternalLibsDexMergerForDebug' fehlgeschlagen.
java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Dex kann nicht zusammengeführt werden
Der vollständige Fehler lautet wie folgt:
Executing tasks: [:app:assembleDebug]
AGPBI: {"kind":"warning","text":"The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.","sources":[{},{}]}
Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.
:app:buildInfoDebugLoader
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:checkDebugManifest UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:prepareLintJar UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:createDebugCompatibleScreenManifests UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:splitsDiscoveryTaskDebug UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources
:app:javaPreCompileDebug UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:mergeDebugShaders UP-TO-DATE
:app:compileDebugShaders UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:packageInstantRunResourcesDebug UP-TO-DATE
:app:checkManifestChangesDebug
:app:extractTryWithResourcesSupportJarDebug UP-TO-DATE
:app:transformClassesWithStackFramesFixerForDebug UP-TO-DATE
:app:transformClassesWithDesugarForDebug UP-TO-DATE
:app:transformClassesWithExtractJarsForDebug UP-TO-DATE
:app:transformClassesWithInstantRunVerifierForDebug UP-TO-DATE
:app:transformClassesWithDependencyCheckerForDebug UP-TO-DATE
:app:compileDebugNdk NO-SOURCE
:app:mergeDebugJniLibFolders UP-TO-DATE
:app:transformNativeLibsWithMergeJniLibsForDebug UP-TO-DATE
:app:processDebugJavaRes NO-SOURCE
:app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE
:app:transformNativeLibsAndResourcesWithJavaResourcesVerifierForDebug UP-TO-DATE
:app:transformClassesWithInstantRunForDebug UP-TO-DATE
:app:transformClassesEnhancedWithInstantReloadDexForDebug UP-TO-DATE
:app:incrementalDebugTasks UP-TO-DATE
:app:preColdswapDebug
:app:fastDeployDebugExtractor UP-TO-DATE
:app:generateDebugInstantRunAppInfo UP-TO-DATE
:app:transformClassesWithInstantRunSlicerForDebug UP-TO-DATE
:app:transformClassesWithDexBuilderForDebug UP-TO-DATE
:app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED
:app:buildInfoGeneratorDebug
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
39 actionable tasks: 5 executed, 34 up-to-date
minSdkVersion 21
und über installiert werden .:app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED
über doppelte Klassen oder ähnliche Probleme beschwert. Ich weiß nicht wirklich, was ich Ihnen mit dieser Ausgabe sagen soll. Ich weiß, dass Sie das Projekt mehrmals bereinigt haben, aber ich empfehle, dass Sie es noch einmal bereinigen, den Build ausprobieren und prüfen, ob die Gradle Console-Ausgabe dieses Builds Ihnen mehr Details darüber liefert, was Gradle nicht mag.Antworten:
Aktivieren
build.gradle
Sie Multidex über Ihr App-ModulmultiDexEnabled true
Gleich wie unten -
android { compileSdkVersion 27 defaultConfig { applicationId "com.xx.xxx" minSdkVersion 15 targetSdkVersion 27 versionCode 1 versionName "1.0" multiDexEnabled true //Add this testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Folgen Sie dann den folgenden Schritten -
Build
Menü ->Clean Project
Taste drücken.Rebuild Project
Taste imBuild
Menü.File -> Invalidate cashes / Restart
compile
ist jetzt veraltet, daher ist es besser,implementation
oder zu verwendenapi
quelle
configurations.all { resolutionStrategy.dependencySubstitution { substitute module('org.apache.commons:commons-io:1.3.2') with module('commons-io:commons-io:1.3.2') } }
.dex
Datei kann 65.536 Methoden (Referenzen) haben. Wenn die Anzahl der Referenzen 65.536 überschreitet, müssen Sie sich für Multidex entscheiden. Weitere Informationen finden Sie auf der offiziellen Website.Ich verwende Android Studio 3.0 und hatte das gleiche Problem. Ich füge dies meinem Gradle hinzu:
multiDexEnabled true
Und es hat funktioniert!
Beispiel
android { compileSdkVersion 27 buildToolsVersion '27.0.1' defaultConfig { applicationId "com.xx.xxx" minSdkVersion 15 targetSdkVersion 27 versionCode 1 versionName "1.0" multiDexEnabled true //Add this testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Und säubere das Projekt.
quelle
multiDexEnabled true
, aber nicht gelöst haben, versuchen Sie es einfachClean Project