Android在安装apk文件时会验证dex,并优化生成odex。
在优化的过程中会把每一个类的方法id检索出来并放在一个链表中。但是这个链表的长度是用一个short类型来保存的。导致方法数不能超过65536个。
在Android系统中,对于一个应用来说,其实有两个ClassLoader,一个是SystemClassLoader,这个ClassLoader里面除了Java标准的类库之外,还有一个android.jar,所有Android Framework层的类都在这里。而另外一个重要的ClassLoader就是基于AndroidContext的ClassLoader。所有属于当前应用的类都是用这个ClassLoader来加载的,我们可以在Android源码中看到,所有的Activity,Service,View都是使用这个ClassLoader来反射并创建的。这个ClassLoader叫做PathClassLoader。
65536问题
最新推荐文章于 2021-10-26 17:09:17 发布