If anyone interested, we're eventually removed all the activities (and their reference hierarchy) from the main dex. I've posted a short summary here <http://blog.osom.info/2014/12/too-many-methods-in-main-dex.html>.
On Sunday, November 30, 2014 1:15:15 PM UTC+2, Alex Lipov wrote: > > Indeed our main-dex classes list is too big (amount of methods is greater > than 65k). > I'm currently checking what are the options in this situation. The simple > one will be to revert to our pre-multidex solution, even though it is very > painful. > > I have one more question regarding multidex. Why Activities are configured > as roots for main dex file? > I can understand why Application (and all its direct reference hierarchy) > class has to be there, since it is loaded and verified before the > ClassLoader patching. But why Activities? > > Just to test that, I created a test app > <https://github.com/alipov/multidex-test> that uses --minimal-main-dex > flag, and its main-dex list includes only the android.support.multidex > classes. > This app has a main activity, which is (according to configuration) > packaged into a second dex. Everything works well, which makes me wonder > why in android-gradle-plugin activities are configured as main-dex roots.. > > Could you please elaborate on this? > > -Alex > > > On Sunday, November 16, 2014 8:33:18 PM UTC+2, Xavier Ducrohet wrote: >> >> Can you look in D:\x\y\build\intermediates\multi-dex\debug\maindexlist.txt >> and count the number of classes? >> >> We added --set-max-idx-number=60000 to work around some problem on much >> older platforms (Gingerbread), but this is independent from the computation >> of the main dex list (and one is methods and the other classes) >> >> You could get into a situation where the required list of classes for the >> main dex list is too big for one dex, in which case it just won't work. >> >> On Sun, Nov 16, 2014 at 9:34 AM, Alex Lipov <tech....@gmail.com> wrote: >> >>> After upgrading to version 0.14.2 of Gradle plugin, I'm receiving the >>> following error during the dx task: >>> >>> > com.android.ide.common.internal.LoggedErrorException: Failed to run >>> command: >>> C:\bin\sdk\build-tools\21.1.0\dx.bat -JXmx4g --dex --force-jumbo >>> --multi-dex --main-dex-list >>> D:\x\y\build\intermediates\multi-dex\debug\maindexlist.txt >>> --set-max-idx-number=60000 --output D:\x\y\build\intermediates\dex\debug >>> --input-list=D:\x\y\build\intermediates\tmp\dex\debug\libraryList.txt >>> Error Code: >>> 2 >>> Output: >>> UNEXPECTED TOP-LEVEL EXCEPTION: >>> com.android.dex.DexException: Too many classes in --main-dex-list, main >>> dex capacity exceeded >>> at com.android.dx.command.dexer.Main.processAllFiles(Main.java:494) >>> at com.android.dx.command.dexer.Main.runMultiDex(Main.java:332) >>> at com.android.dx.command.dexer.Main.run(Main.java:243) >>> at com.android.dx.command.dexer.Main.main(Main.java:214) >>> at com.android.dx.command.Main.main(Main.java:106) >>> >>> Attaching some dex statistics as well: >>> annotation: 2853 items; 52698 bytes total >>> 4..406 bytes/item; average 18 >>> annotation set: 2652 items; 28340 bytes total >>> 4..28 bytes/item; average 10 >>> annotation set ref list: 23 items; 268 bytes total >>> 8..20 bytes/item; average 11 >>> annotations directory: 1911 items; 55808 bytes total >>> 16..784 bytes/item; average 29 >>> class data: 2606 items; 267584 bytes total >>> 9..6687 bytes/item; average 102 >>> class def: 2686 items; 85952 bytes total >>> 32 bytes/item >>> code: 21150 items; 2589324 bytes total >>> 20..27328 bytes/item; average 122 >>> debug info: 21127 items; 561607 bytes total >>> 5..2189 bytes/item; average 26 >>> encoded array: 601 items; 169167 bytes total >>> 2..16682 bytes/item; average 281 >>> field id: 55438 items; 443504 bytes total >>> 8 bytes/item >>> header: 1 item; 112 bytes total >>> 112 bytes/item >>> map list: 1 item; 220 bytes total >>> 220 bytes/item >>> method id: 33015 items; 264120 bytes total >>> 8 bytes/item >>> proto id: 7015 items; 84180 bytes total >>> 12 bytes/item >>> string data: 62775 items; 1537311 bytes total >>> 2..1599 bytes/item; average 24 >>> string id: 62775 items; 251100 bytes total >>> 4 bytes/item >>> type id: 5637 items; 22548 bytes total >>> 4 bytes/item >>> type list: 4202 items; 38558 bytes total >>> 6..68 bytes/item; average 9 >>> >>> Everything works well on v.0.14.0. Any suggestions for what could go >>> wrong? >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "adt-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to adt-dev+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Xavier Ducrohet >> Android SDK Tech Lead >> Google Inc. >> http://developer.android.com | http://tools.android.com >> >> Please do not send me questions directly. Thanks! >> > -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to adt-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.