0
votes

After updating my Android Studio to the current Version I got following error after cleaning and rebuilding my Project:

java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex ... Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) Caused by: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:72) at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36) at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) ... 4 more Caused by: com.android.dex.DexException: Multiple dex files define Landroid/support/design/widget/CoordinatorLayout$Behavior; 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) ... 6 more

The application / build worked previously.

The app gradle file Looks like following:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 26
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        multiDexEnabled true
        applicationId 'com.foo.bar'
        minSdkVersion 22
        targetSdkVersion 23
        versionCode 7
        versionName "2.1.2"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }

    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    implementation "android.arch.lifecycle:extensions:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

    implementation 'com.github.GrenderG:Toasty:1.2.5' 
    implementation 'com.jakewharton:butterknife:8.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.1.0'
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.squareup.retrofit2:converter-moshi:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.basgeekball:awesome-validation:2.0' 
    implementation 'com.github.apl-devs:appintro:v4.2.2'
    implementation 'com.github.KyleBanks:animated-line-graph-view:v1.0.1'

    // constraint layout
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'

    // country code picker phone numbers
    implementation 'com.hbb20:ccp:2.2.2'

    // firebase
    implementation "com.google.android.gms:play-services-base:15.0.1"
    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-messaging:17.3.0'

    implementation group: 'com.pubnub', name: 'pubnub-gson', version: '4.18.0'
    implementation 'io.pristine:libjingle:9694@aar'
    implementation project(':pnwebrtc')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

apply plugin: 'com.google.gms.google-services'

repositories {
    mavenCentral()
}
2

2 Answers

0
votes

what about your application class? if you don't have one, you need to create one and put the name of it inside manifest file there for your code should be like this

AndroidManifest.xml

<application
        android:name="ApplicationName"
...
>

and your application class will be :

public class ApplicationName extends MultiDexApplication{
.....

 @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}
0
votes

it complains, that:

Multiple dex files define Landroid/support/design/widget/CoordinatorLayout$Behavior

therefore, replace this:

implemention "com.basgeekball:awesome-validation:2.0"

with this:

implemention ("com.basgeekball:awesome-validation:2.0") {
    exclude group: "com.android.support.constraint", module: "constraint-layout"
}

have seen on GitHub, that it uses the ConstraintLayout, too.