Search code examples
androidbuild.gradleandroidxandroid-multidex

Getting Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' error even when multiDex is enabled


I'm trying to run the app on my device but am getting this error every time:

Error:Execution failed for task':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

Here's build.gradle (Module: app):

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.abc.xyz"
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2') {
        // Necessary if your app targets Marshmallow (since Espresso
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    androidTestImplementation('com.android.support.test:runner:0.3') {
        // Necessary if your app targets Marshmallow (since the test runner
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    implementation('com.kc.androidunsplash:androidunsplash:1.0.3') {
        exclude group: 'com.android.support'
        exclude module: 'appcompat-v7'
        exclude module: 'support-v4'
    }
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
}

I've searched a lot for the solution but haven't found any yet.


Solution

  • As i can see that you are migrating to android to androidx

    Here is official documentation for the migration from androidX

    For the above issue you need to change your gradle file like below

        apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 28
        defaultConfig {
            applicationId "com.backpaper.backpapers"
            minSdkVersion 23
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
           // multiDexEnabled true
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    
    }
    
    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        //implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.google.android.material:material:1.1.0-alpha02'
        implementation('com.kc.androidunsplash:androidunsplash:1.0.3') {
            exclude group: 'com.android.support'
            exclude module: 'appcompat-v7'
            exclude module: 'support-v4'
        }
        implementation 'com.squareup.picasso:picasso:2.71828'
        implementation 'androidx.appcompat:appcompat:1.0.2'
        implementation 'androidx.recyclerview:recyclerview:1.0.0'
        //implementation 'androidx.multidex:multidex:2.0.1'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
        androidTestImplementation 'androidx.test:runner:1.1.1'
    
    }
    

    Inside activity_main layout file change it to

    <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/fab_download"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/stat_sys_download"
            android:layout_alignParentEnd="true"
            android:layout_alignParentBottom="true"
            android:layout_margin="12dp"
            app:elevation="6dp"
            app:pressedTranslationZ="12dp"/>
    

    Inside MainActivity import

       import com.google.android.material.floatingactionbutton.FloatingActionButton;
    import androidx.appcompat.app.AppCompatActivity;