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

随着项目规模扩大,Android开发会遇到单个方法数65535的问题,常见解决方法是使用MultiDex分包。同时介绍了引发该问题的原因,即虚拟机方法调用指令可用空间限制,且变量和类在单个DEX中也有65535个的限制,只是方法数问题更常见。

1589

被折叠的 条评论
为什么被折叠?



