我们的应用程序在 apk 中有三个 dex,它们是由 gradle 构建的,具有 multidex 功能。
安装应用程序后,
主 dex 和第二个 dex 是否由同一个类加载器加载?
如何检查第二个( classes2.dex )和第三个是否已加载完成?我可以在代码中动态检查它吗?
或者你们能介绍一下关于Android中类(或dex)加载过程的任何相关文档吗?我不熟悉这个。
谢谢你。
我们的应用程序在 apk 中有三个 dex,它们是由 gradle 构建的,具有 multidex 功能。
安装应用程序后,
主 dex 和第二个 dex 是否由同一个类加载器加载?
如何检查第二个( classes2.dex )和第三个是否已加载完成?我可以在代码中动态检查它吗?
或者你们能介绍一下关于Android中类(或dex)加载过程的任何相关文档吗?我不熟悉这个。
谢谢你。
我还没有深入研究 ART 代码,但您可以在此处阅读 Multidex 支持库为 Dalvik 所做的工作:
ClassLoader
. 当您的应用程序加载时,MultiDex
仪器:
ClassLoader
),ClassLoader
,并将这些新的 .zip 文件添加到ClassLoader
反射性知道的列表中。不同的 dex 不仅由同一个 ClassLoader 加载,它们还由同一个 ClassLoader 加载,无需 MultiDex 即可使用。
当您的应用程序加载时,应自动设置额外的 dex。检查此代码并不容易,但您可以通过检查设备的日志在本地进行验证。
有一些关于 ART 和 Dalvik 架构的 Android 文档。但是,没有什么比阅读源代码更好的了 :)