方法数超过65535

1.compile'com.android.support:multidex:1.0.1'  引入

2.增加配置

dexOptions {

incremental true

javaMaxHeapSize "4g"//specify the heap size for the dex process

preDexLibraries=true//delete the already predexed libraries

}

3.ApplicationextendsMultiDexApplication


//MemberIdsSection.java

if(items().size() > DexFormat.MAX_MEMBER_IDX +1) {

thrownewDexIndexOverflowException(getTooManyMembersMessage());

}

/*

Maximum addressable field or method index.

The largest addressable member is 0xffff, in the "instruction formats" spec as field@CCCC or meth@CCCC.

*/

publicstaticfinalintMAX_MEMBER_IDX =0xFFFF;

通过查阅dalvik-bytecode可知,@CCCC 的范围必须在 0~65535 之间。

所以归根结底,65k 问题是因为 dalvik bytecode 中的指令格式使用了 16 位来放 @CCCC 导致的;所以,不仅 Method 数目不能超过 65k, Field 和 Class 数目也不能超过 65k。

你可能感兴趣的:(方法数超过65535)