Odex文件与dex文件

时间:2011-09-09 17:54:56

标签: android

我很想知道odex文件和dex文件之间的区别。我在网上搜索但没有找到足够的信息。这是我的问题

  1. odex文件的目的是什么?
  2. 如何为我的应用程序创建odex文件?
  3. 如果我创建odex,它是否会在所有API级别上受支持?
  4. 谢谢, 马南

4 个答案:

答案 0 :(得分:2)

不确定如何重新创建odex文件,但这是一个描述。

http://www.addictivetips.com/mobile/what-is-odex-and-deodex-in-android-complete-guide/

答案 1 :(得分:1)

  1. 这是应用优化代码
  2. 您可以在设备上执行此操作,您需要命令行dexopt-wrapper并运行dexopt-wrapper
  3. 之类的命令行
  4. 是的,但您不必创建系统自行完成的odex文件。那么,取决于你想要实现的目标。

答案 2 :(得分:1)

这是我对问题二的回答:

如何为我的应用程序创建odex文件?

" classes.dex"文件自动优化为odex文件。如果" xxx.apk"商店在/data/app/xxx/xxx.apk,然后是" xxx.odex"将存储在/data/app/xxx/oat/arm/xxx.odex

我在Android 6.0上测试过。

enter image description here

答案 3 :(得分:-1)

Android操作系统创建了ODEX 文件,以提高Android应用程序(.APK文件)的启动速度。它位于APK文件旁边,并包含优化的代码,可加快应用程序的加载过程。 ODEX文件是 .DEX文件的优化版本,其中包含Android应用的可执行代码。虽然 DEX文件通常在所有Android设备上运行,但 ODEX文件已针对它们所在的特定设备进行了优化。它们不仅有助于提高加载速度,还减少了应用程序所需的空间量。

所以,让我告诉您如何对odex文件进行除氧化

下载deodex工具https://kotlinlang.org/docs/reference/java-interop.html

1。将下载的.7z文件提取到您的计算机中。

2。打开文件夹,按住shift键,单击鼠标右键,然后在此处选择“打开命令窗口”。这将打开命令提示符窗口。

3。将两个文件都移到该文件夹​​中,然后键入“ 7za x * .odex.xz”,然后按Enter。这将解压缩.xz文件。结果将是一个odex文件。

4。现在键入“ oat2dex.bat * .odex,然后按Enter。这样,您将确认DEX文件OAT文件头存在。如果您在此过程中收到错误消息,则该应用将不会转换。

5。键入“ oat2dex.bat * .odex temp.dex”。然后按Enter。这将创建一个.temp.dex。该文件是具有旧结构的odex文件。

6。输入“ java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o deodex”,然后按Enter。这将反编译该文件,并创建一个deodex文件夹输出。

7。现在键入“ java -jar smali-2.0.3,jar -a 21 deodex -o classes.dex”重新编译输出。

8。现在,要将classes.dex放入APK文件中,请使用命令7za u -tzip * .apk classes.dex。