3

这两种方式是否相等且正确?

方法一:

  1. 将 APK 转换为 a.apk和 a.odex
  2. .apk对步骤 1 中生成的文件进行签名

方法二:

  1. 签署 APK
  2. 将 APK 转换为 a.apk和 a.odex
4

1 回答 1

4

首先,您需要了解 .apk 和 .odex 文件的工作原理。

.Odex 文件:
Odex文件是提取和优化的DEX文件(classes.dex) from APK or JAR files
ODEX 文件依赖于生成时加载的 BOOTCLASSPATH 中的每个文件。
odex 文件仅在与这些确切的 BOOTCLASSPATH 文件一起使用时才有效。
Android 应用程序包含扩展名为.apk. 这些应用程序包或 APK 包含某些.odex files其假定功能是节省空间。
这些“odex”文件实际上是启动前优化的应用程序部分的集合。
这也使得破解这些应用程序变得困难,因为部分编码在执行之前已经被提取到另一个位置。

工作原理:-
Android 操作系统使用基于 Java 的虚拟机来运行应用程序,称为 Dalvik 虚拟机。A deodexed, or .dex文件包含此虚拟机(referred to as Dalvik-cache)用于程序的缓存,并且它存储在APK.An.odex文件中,另一方面,它是同一.dex文件的优化版本,存储在它旁边APK而不是在它内部。
Android 默认将此技术应用于所有系统应用程序。

现在,当基于 Android 的系统启动时,Davlik VM 的 davlik 缓存是使用这些 .odex 文件构建的,允许操作系统提前了解将加载哪些应用程序,从而加快启动过程。

通过deodexing这些 APK,开发人员实际上将.odex文件放回各自的APK包中。由于现在所有代码都包含在其APK自身中,因此可以修改任何应用程序包而不会与操作系统的执行环境发生冲突。

你可以在这里找到一些信息 ,这里
有一个 StackOverFlow 问题可能对你有帮助

于 2012-09-14T09:12:56.920 回答