Ich versuche, meine Anwendung auf meinem Telefon auszuführen, schlägt jedoch während der build
-Zeit mit dem folgenden Fehler fehl:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
Java.lang.RuntimeException: Java.lang.RuntimeException: com.Android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Was ich bisher ausprobiert habe, aber ohne Erfolg: -> Bereinigen und Wiederherstellen (schlägt beim Neuaufbau fehl.) -> Entfernen Sie die ./gradle
-Datei und alle Projekterstellungs- und Cache-Dateien und anschließend die Ungültigkeitsspeicherung
Meine Projekt-Gradle-Datei:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.1.51'
repositories {
jcenter()
google()
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.0.0-beta6'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
jcenter()
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Meine App-Gradle-Datei:
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-Android-extensions'
def daggerVersion = '2.11'
Android {
compileSdkVersion 25
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.connectus.connectus"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/INDEX.LIST'
}
}
kapt {
generateStubs = true
}
dependencies {
/**
* Kotlin
*/
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'org.jetbrains.anko:anko-support-v4:0.10.1'
/**
* Unit testing
*/
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'org.powermock:powermock-module-junit4:1.6.2'
testCompile 'org.powermock:powermock-api-mockito:1.6.2'
/**
* Android views and widgets
*/
compile 'com.Android.support:appcompat-v7:25.3.1'
compile 'com.Android.support:recyclerview-v7:25.3.1'
compile 'com.Android.support:cardview-v7:25.3.1'
/**
* Retrofit
*/
compile 'com.squareup.retrofit2:retrofit:2.+'
compile 'com.squareup.retrofit2:converter-gson:2.+'
compile 'com.squareup.retrofit2:adapter-rxjava:2.+'
compile 'io.reactivex:rxjava:1.0.4'
compile 'io.reactivex:rxandroid:0.24.0'
/**
* Glide
*/
compile 'com.github.bumptech.glide:glide:3.7.0'
/**
* Dagger 2
*/
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
compile "com.google.dagger:dagger:$daggerVersion"
provided 'org.glassfish:javax.annotation:10.0-b28'
/**
* Butterknife for view injection
*/
compile 'com.jakewharton:butterknife:8.8.1'
kapt 'com.jakewharton:butterknife-compiler:8.8.1'
/**
* GSON
*/
compile 'com.google.code.gson:gson:2.6.2'
compile 'org.powermock:powermock-api-mockito:1.6.2'
/**
* Facebook SDK
*/
compile 'com.facebook.Android:facebook-login:[4,5)'
/**
* UI Testing
*/
androidTestCompile 'com.Android.support:support-annotations:25.3.1'
androidTestCompile 'junit:junit:4.12'
testCompile 'com.google.dexmaker:dexmaker:1.2'
testCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2') {
exclude module: 'support-annotations'
}
androidTestCompile('com.Android.support.test.espresso:espresso-contrib:2.2.2') {
exclude module: 'support-annotations'
exclude module: 'appcompat-v7'
exclude module: 'support-v4'
exclude module: 'support-v13'
exclude module: 'recyclerview-v7'
exclude module: 'design'
}
androidTestCompile('com.Android.support.test:runner:0.3') {
exclude module: 'support-annotations'
}
androidTestCompile('com.Android.support.test:rules:0.3') {
exclude module: 'support-annotations'
}
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
}
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
repositories {
mavenCentral()
}
Ich verwende Kotlin und Android Studio 3.0.0 Beta 6. Was ist das Problem?
Obwohl ich nicht ganz sicher bin, was die Ursache dafür ist, scheint es nach dem Ausführen von einiges Graben , dass zwischen den Anmerkungsbibliotheken, die von Jetbrains im Kotlin-Plugin enthalten sind, und anderen Quellen ein Konflikt besteht. Sie können dies durch Ausführen überprüfen
gradle :app:assembleDebug --stacktrace
was gibt am Ende
Caused by: com.Android.dex.DexException: Multiple dex files define Lorg/intellij/lang/annotations/JdkConstants$PatternFlags;
at com.Android.dx.merge.DexMerger.readSortableTypes(DexMerger.Java:661)
at com.Android.dx.merge.DexMerger.getSortedTypes(DexMerger.Java:616)
at com.Android.dx.merge.DexMerger.mergeClassDefs(DexMerger.Java:598)
at com.Android.dx.merge.DexMerger.mergeDexes(DexMerger.Java:171)
at com.Android.dx.merge.DexMerger.merge(DexMerger.Java:198)
at com.Android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.Java:61)
... 1 more
Ich löste dies, indem ich die Annotationsbibliothek von der Kotlin-Abhängigkeit ausschloss. (Nach dem Reinigen und Wiederherstellen kann es erforderlich sein)
implementation ("org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version") {
exclude group: 'org.jetbrains', module: 'annotations'
}
Das funktioniert für mich, aber ich bin nicht sicher, wie gut diese Lösung ist.
füge das hinzu
defaultConfig {
multiDexEnabled true
}
so was:
Android {
compileSdkVersion 25
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.connectus.connectus"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
defaultConfig {
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/INDEX.LIST'
}
}
Ich habe es geschafft, das Problem zu beheben, indem ich nur die Basis-Spieledienste einbezieht und nicht die vollen:
- compile 'com.google.Android.gms:play-services:11.6.0'
+ compile 'com.google.Android.gms:play-services-base:11.6.0'
und entfernte die Appindexing-Abhängigkeiten in meiner Aktivität:
-import com.google.Android.gms.appindexing.AppIndex;
-import com.google.Android.gms.common.api.GoogleApiClient;
(obwohl dies ohnehin ein Überbleibsel von meinem Upgrade auf API 27 gewesen sein könnte).