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.
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.Set the jumboMode property in build.gradle:
I also found this useful: Showing dex method count by package.
This works for me. I was getting
com.android.dex.DexIndexOverflowException: Cannot merge new index 66636 into a non-jumbo instruction!
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.
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 :
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
With latest Android Studio and flag "force jumbo" checked on Android Studio compiler settings, this problem disappear.