2

我试图了解有关 dex 文件如何由 android 处理的一些事情。

我所知道的是 APK 提供了一个 dex 文件,系统获取它,在安装时对其进行优化,并将生成的 ODEX 文件(优化的 dex)存储在 /data/dalvik-cache/myOdexfile 中,然后从那里运行应用程序.

真的是这样吗?

当 dex 文件从 Internet 下载并打开新的 dex 文件时会发生什么?那也优化了吗?

另外 - 系统,afaik,保留原始 APK,对吗?我认为它保存在 /data/app/myAPK-1.apk 中。系统是否以任何方式使用它?什么时候?

您能否在安装后以某种方式手动强制从存储的 APK 文件中重新生成 odex 文件?

4

2 回答 2

3

是的,Android 在安装时从 DEX 创建 ODEX。

是的,APK 已保存。DEX 和 ODEX 只包含代码。APK 是您所有资源和资产的来源——您的标签、图标、布局等。

据我了解,DEX 优化纯粹是一个安装时过程,不会在任何不属于已安装 APK 的 DEX 上执行。并且由于作为 APK 一部分的 DEX 在不安装新 APK 的情况下无法更改,因此无需在正常安装过程之外重新生成 ODEX。

于 2013-04-10T12:16:58.983 回答
0

动态加载 dex 文件时,dalvik 会在第一次加载时对其进行优化。您必须传递应用程序可以写入的目录,以便将缓存的 odex 放置在其中,通常在应用程序的数据目录中。

于 2013-04-10T21:13:27.690 回答