Android Studios RuntimeException: Unexpected exception in dex writer thread

11,590

Solution 1

After googling for a while, I found the problem was that not enough heap was allocated to the dex writer.

I fixed it by putting in the following in my app gradle.build:

android {
    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }
}

This option also managed to speed up my gradle build significantly.

Extremely long build with Gradle (Android Studio)

Solution 2

Adding this to my Project level gradle.properties helped -

org.gradle.jvmargs=-Xmx1536m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Solution 3

change your manifist to this

defaultConfig 
{
    applicationId "com.example.simon"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    /*Enabling multidex*/
    multiDexEnabled true
}
android {
    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }
}

dependencies {
    /*    Enabling multidex*/
       compile 'com.android.support:multidex:1.0.1'
}

and this problem shows when you add the :

/*Enabling multidex*/
    multiDexEnabled true

most of the times. and for more information please tell me the exact thing you didnt undestand

Share:
11,590
Simon
Author by

Simon

I started as a really novice android developer. Like as in I just started reading a book. But I have learnt a lot now and what an experience it has been. Lately, I have already been really interested in using Zipline for Algorithmic Trading. So I started a blog on this topic, you can find it here: https://financialzipline.wordpress.com I have also developed a fully-fledged android app: https://play.google.com/store/apps/details?id=com.bekwaai&hl=en

Updated on June 14, 2022

Comments

  • Simon
    Simon about 2 years

    I have been getting this strange error the whole of today - anyone know what is going wrong here?

    As far as I know, I have been using the multidex library correctly (the below is from the app.gradle file):

    defaultConfig {
        applicationId "com.example.simon"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        /*Enabling multidex*/
        multiDexEnabled true
    }
    
    dependencies {
        /*    Enabling multidex*/
        compile 'com.android.support:multidex:1.0.1'
    }
    

    My top level gradle file is very basic:

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.3.0'
            classpath 'com.google.gms:google-services:1.3.1'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            jcenter()
        }
    }
    

    Error:

        Executing tasks: [:app:generateDebugSources,
    :app:generateDebugAndroidTestSources]
    
    Parallel execution with configuration on demand is an incubating
    feature.
    :app:preBuild UP-TO-DATE
    :app:preDebugBuild UP-TO-DATE
    :app:checkDebugManifest
    :app:preReleaseBuild UP-TO-DATE
    :app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportDesign2301Library UP-TO-DATE
    :app:prepareComAndroidSupportMultidex101Library UP-TO-DATE
    :app:prepareComAndroidSupportPaletteV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
    :app:prepareComDigitsSdkAndroidDigits162Library UP-TO-DATE
    :app:prepareComFacebookAndroidFacebookAndroidSdk440Library UP-TO-DATE
    :app:prepareComFacebookConcealConceal101Library UP-TO-DATE
    :app:prepareComGithubCurioustechizenAndroidAgoLibrary130Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesAppinvite780Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesBase780Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesGcm780Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesLocation780Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesMaps780Library UP-TO-DATE
    :app:prepareComTheartofdevEdmodoAndroidImageCropper104Library UP-TO-DATE
    :app:prepareComTwitterSdkAndroidTweetComposer080Library UP-TO-DATE
    :app:prepareComTwitterSdkAndroidTweetUi131Library UP-TO-DATE
    :app:prepareComTwitterSdkAndroidTwitter161Library UP-TO-DATE
    :app:prepareComTwitterSdkAndroidTwitterCore141Library UP-TO-DATE
    :app:prepareIoFabricSdkAndroidFabric134Library UP-TO-DATE
    :app:prepareDebugDependencies
    :app:compileDebugAidl UP-TO-DATE
    :app:compileDebugRenderscript UP-TO-DATE
    :app:generateDebugBuildConfig UP-TO-DATE
    :app:generateDebugAssets UP-TO-DATE
    :app:mergeDebugAssets UP-TO-DATE
    :app:generateDebugResValues UP-TO-DATE
    :app:processDebugGoogleServices
    :app:generateDebugResources
    :app:mergeDebugResources UP-TO-DATE
    :app:processDebugManifest UP-TO-DATE
    :app:fabricGenerateResourcesDebug
    :app:processDebugResources
    :app:generateDebugSources
    :app:preDebugAndroidTestBuild UP-TO-DATE
    :app:prepareDebugAndroidTestDependencies
    :app:compileDebugAndroidTestAidl UP-TO-DATE
    :app:processDebugAndroidTestManifest UP-TO-DATE
    :app:compileDebugAndroidTestRenderscript UP-TO-DATE
    :app:generateDebugAndroidTestBuildConfig UP-TO-DATE
    :app:generateDebugAndroidTestAssets UP-TO-DATE
    :app:mergeDebugAndroidTestAssets UP-TO-DATE
    :app:generateDebugAndroidTestResValues UP-TO-DATE
    :app:generateDebugAndroidTestResources UP-TO-DATE
    :app:mergeDebugAndroidTestResources UP-TO-DATE
    :app:processDebugAndroidTestResources UP-TO-DATE
    :app:generateDebugAndroidTestSources UP-TO-DATE
    
    BUILD SUCCESSFUL
    
    Total time: 3.913 secs Executing tasks: [:app:assembleDebug]
    
    Parallel execution with configuration on demand is an incubating
    feature.
    :app:preBuild UP-TO-DATE
    :app:preDebugBuild UP-TO-DATE
    :app:checkDebugManifest
    :app:preReleaseBuild UP-TO-DATE
    :app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportDesign2301Library UP-TO-DATE
    :app:prepareComAndroidSupportMultidex101Library UP-TO-DATE
    :app:prepareComAndroidSupportPaletteV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
    :app:prepareComDigitsSdkAndroidDigits162Library UP-TO-DATE
    :app:prepareComFacebookAndroidFacebookAndroidSdk440Library UP-TO-DATE
    :app:prepareComGithubCurioustechizenAndroidAgoLibrary130Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesAppinvite780Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesBase780Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesGcm780Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesLocation780Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesMaps780Library UP-TO-DATE
    :app:prepareComTheartofdevEdmodoAndroidImageCropper104Library
    :app:prepareDebugDependencies
    :app:compileDebugAidl UP-TO-DATE
    :app:compileDebugRenderscript UP-TO-DATE
    :app:generateDebugBuildConfig UP-TO-DATE
    :app:generateDebugAssets UP-TO-DATE
    :app:mergeDebugAssets UP-TO-DATE
    :app:generateDebugResValues UP-TO-DATE
    :app:processDebugGoogleServices
    :app:generateDebugResources
    :app:mergeDebugResources UP-TO-DATE
    :app:processDebugManifest UP-TO-DATE
    :app:fabricGenerateResourcesDebug
    :app:processDebugResources
    :app:generateDebugSources
    :app:processDebugJavaRes UP-TO-DATE
    :app:compileDebugJavaWithJavac UP-TO-DATE
    :app:compileDebugNdk UP-TO-DATE
    :app:compileDebugSources UP-TO-DATE
    :app:collectDebugMultiDexComponents UP-TO-DATE
    :app:packageAllDebugClassesForMultiDex UP-TO-DATE
    :app:shrinkDebugMultiDexComponents UP-TO-DATE
    :app:createDebugMainDexClassList UP-TO-DATE
    :app:dexDebugExecuting
    tasks: [:app:assembleDebug]
    
    Parallel execution with configuration on demand is an incubating
    feature.
    :app:preBuild UP-TO-DATE
    :app:preDebugBuild UP-TO-DATE
    :app:checkDebugManifest
    :app:preReleaseBuild UP-TO-DATE
    :app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportDesign2301Library UP-TO-DATE
    :app:prepareComAndroidSupportMultidex101Library UP-TO-DATE
    :app:prepareComAndroidSupportPaletteV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE
    :app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
    :app:prepareComDigitsSdkAndroidDigits162Library UP-TO-DATE
    :app:prepareDebugDependencies
    :app:compileDebugAidl UP-TO-DATE
    :app:compileDebugRenderscript UP-TO-DATE
    :app:generateDebugBuildConfig UP-TO-DATE
    :app:generateDebugAssets UP-TO-DATE
    :app:mergeDebugAssets UP-TO-DATE
    :app:generateDebugResValues UP-TO-DATE
    :app:processDebugGoogleServices
    :app:generateDebugResources
    :app:mergeDebugResources UP-TO-DATE
    :app:processDebugManifest UP-TO-DATE
    :app:fabricGenerateResourcesDebug
    :app:processDebugResources
    :app:generateDebugSources
    :app:processDebugJavaRes UP-TO-DATE
    :app:compileDebugJavaWithJavac UP-TO-DATE
    :app:compileDebugNdk UP-TO-DATE
    :app:compileDebugSources UP-TO-DATE
    :app:collectDebugMultiDexComponents UP-TO-DATE
    :app:packageAllDebugClassesForMultiDex UP-TO-DATE
    :app:shrinkDebugMultiDexComponents UP-TO-DATE
    :app:createDebugMainDexClassList UP-TO-DATE
    :app:dexDebug AGPBI:
    {"kind":"simple","text":"UNEXPECTED TOP-LEVEL
    EXCEPTION:","sources":[{}]} AGPBI:
    {"kind":"simple","text":"java.lang.RuntimeException: Unexpected
    exception in dex writer thread","sources":[{}]} AGPBI:
    {"kind":"simple","text":"\tat
    com.android.dx.command.dexer.Main.runMultiDex(Main.java:397)","sources":[{}]}
    AGPBI: {"kind":"simple","text":"\tat
    com.android.dx.command.dexer.Main.run(Main.java:275)","sources":[{}]}
    AGPBI: {"kind":"simple","text":"\tat
    com.android.dx.command.dexer.Main.main(Main.java:245)","sources":[{}]}
    AGPBI: {"kind":"simple","text":"\tat
    com.android.dx.command.Main.main(Main.java:106)","sources":[{}]}
    
    
     FAILED
    
    FAILURE: Build failed with an exception.
    
    * What went wrong: Execution failed for task ':app:dexDebug'.
    com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command
    'C:\Program Files\Java\jdk1.7.0_76\bin\java.exe'' finished with
    non-zero exit value 2
    
    * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    
    BUILD FAILED
    
    Total time: 1 mins 5.426 secs