DexException: Cannot merge new index 65536 into a non-jumbo instruction
Solution 1:
Set the jumboMode property in build.gradle:
android {
...
dexOptions {
jumboMode true
}
}
I also found this useful: Showing dex method count by package.
Solution 2:
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
Solution 3:
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.
Solution 4:
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.