Reputation: 9301
For some unknown reason my app suddenly won't build from Android Studio.
I'm keep getting
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/home/martynas/android-sdk/build-tools/19.1.0/dx --dex --num-threads=4 --output
...
...
...
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Cannot merge new index 65536 into a non-jumbo instruction!
While the same application is built successfully from command line. I've checked method references count and it's way below the dreaded 64k.
I'm using AS 0.8.11 now.
Upvotes: 85
Views: 57152
Reputation: 24848
Try to add this line on your project.properties
dex.force.jumbo=true
Which increment the limit for strings in a dex files. And your project will probably compile.
Note : Also with jumbo set, the is another limit of 64K only for methods in an single dex. If you get this limit in the future , you will need to remove some dependencies.
Update - Google Play Services 6.5 (12-08-14)
With version 6.5 Google finally unbundled the Google Play Services. So from now on it'll be possible to selectively compile the APIs into your executable.
Example :
compile 'com.google.android.gms:play-services-maps:6.5.+'
compile 'com.google.android.gms:play-services-ads:6.5.+'
For all the other individual Google Play Services APIs check this page on d.android.com.
Update (21-04-2015) : https://developer.android.com/tools/building/multidex.html
Upvotes: 57
Reputation: 587
This works for me. I was getting com.android.dex.DexIndexOverflowException: Cannot merge new index 66636 into a non-jumbo instruction!
android {
...
dexOptions {
jumboMode true
}
}
If this isn't working, you might have reached method reference limit in dex which is a different issue. You need to use either multidex or proGuard.
Upvotes: 54
Reputation: 241
With latest Android Studio and flag "force jumbo" checked on Android Studio compiler settings, this problem disappear.
Upvotes: -1
Reputation: 2650
Set the jumboMode property in build.gradle:
android {
...
dexOptions {
jumboMode true
}
}
I also found this useful: Showing dex method count by package.
Upvotes: 245
Reputation: 11316
This is a bug in the merger when the dex files that are being merged have more than 65536 strings. The new index can't fit in a const-string instruction, and the dex merger doesn't support changing instructions if they are different sizes, so it can't be widened to a const-string/jumbo instruction.This was fixed in jb-mr1 by adding a new option: --force-jumbo.This bug can be fixed by adding "dex.force.jumbo=true"
to the project.properties.
Upvotes: 13