随着项目规模的逐渐扩大,我们迟早会遇到单个方法数65535的问题。解决方法最常见的就是使用MultiDex,即分包的方法来解决问题。但是我们也有必要了解一下引起65535问题的原因。
根据大佬在StackOverflow上的说法,你是可以在DEX文件中定义很多方法的,超过65535个也没有问题,但是虚拟机的方法调用指令(invoke-kind)只有16bits的可用空间,所以你只能调用2^16-1个方法,即65535个方法。
其实变量和类在单个DEX中的限制也是65535个,只不过它们通常都没有方法数多,所以方法数65535成了最常见的问题。