编程语言
首页 > 编程语言> > 我的应用程序安装后,如何检查第二个dex是否已加载完成?

我的应用程序安装后,如何检查第二个dex是否已加载完成?

作者:互联网

我们的应用程序在apk中有3个dexes,它们是由gradle具有multidex功能构建的.

安装应用程序后,

>主dex和第二dex是否由同一类加载器加载?
>如何检查第二个(classes2.dex)和第三个是否已完成加载?我可以动态检查代码吗?
>或者你们可以介绍有关Android中的class(或dex)加载过程的任何相关文档吗?我对此并不熟悉.

谢谢.

解决方法:

我尚未深入研究ART代码,但您可以阅读Multidex支持库对Dalvik here所做的工作:

>是的.所有敏捷中的类均由相同的ClassLoader加载.当您的应用程序加载时,MultiDex工具:

>从.apk中提取多余的dex文件,并将它们放在数据目录中自己的.zip文件中(以便它们与APK和ClassLoader不能区分开),
>从您的应用程序的上下文中获取ClassLoader,并将这些新的.zip文件添加到ClassLoader所了解的列表中.

相同的ClassLoader不仅加载了单独的dexes,还使用了不带MultiDex的相同的ClassLoader来加载它们.

>当您的应用程序加载时,应该自动设置额外的dexes.检查此代码并不容易,但是您可以通过检查设备的日志在本地进行验证.
>有一些Android docs about the architecture of ART and Dalvik.但是,没有什么比阅读源代码更好的了:)

> ART
> Dalvik

标签:multidex,android,dexclassloader
来源: https://codeday.me/bug/20191119/2038037.html