【发布时间】:2019-09-29 16:56:58
【问题描述】:
对于 Android/Dalvik .dex 文件,我是 writing an assembler。 official Android docs 似乎只描述了 .dex 格式的最新版本(显然是 038,截至 2019 年 5 月),还有一些简短的说明描述了差异回到版本 035 。 quick glimpse into Android sources 似乎暗示,该格式的版本035 对应于Android API 级别13,意思是Android 3.2.x(蜂窝)。我拥有一台装有 Android 2.1 (Eclair) 的 device,apparently 表示 API 级别 7。我希望能够学习如何为该设备发出正确的 .dex 和 .apk 文件,以希望为我的汇编程序添加对这些文件的支持。
我在哪里可以找到可以帮助我为 Android 2.1 (Eclair)(即 API 级别 7)生成正确 .dex 文件的信息?我什至不知道 .dex 格式版本字符串是什么那个 API 级别!
对于“奖励积分”,我真的很想找到一些很好的参考资料来解释所有 API 级别(至少回到 API 级别 7)之间 .dex 格式的差异。如果 Android API 级别之间的二进制 .xml 和资源文件(由aapt 工具发出)的格式有任何实质性差异,我也会感兴趣。我认为 .apk 格式本身以及签名算法很有可能不会改变根本,因为它与用于签署 Java .jar 文件的格式相同(即META-INF/ 子目录中包含一些简单特殊文件的常规 .zip)。但是 .dex 格式规范(包括字节码)可能是最重要的部分,或者至少是一个很好的起点。
【问题讨论】:
-
除了教育目的之外,这纯粹是浪费时间。参见操作系统版本分布图developer.android.com/about/dashboards
-
二进制资源/xml 格式没有记录,也没有很好地指定。您几乎必须通读 aapt 和/或 android-framework 代码才能确定格式。随着时间的推移发生了变化,虽然我认为大部分是肤浅的东西——结构没有显着变化。
-
查看这里了解不同的 apk 签名方案:source.android.com/security/apksigning
-
@MarcinOrlowski 请注意,我明确写了我实际上拥有(并且很高兴使用!)一个 2.1(API lvl 7)设备,所以它也可能至少有一些个人用途! :)
-
我可能错过了。仍然 - 你的时间,不是我的:) 我只是想指出,虽然这样做可能很有趣,但没有人会抱怨缺乏对中世纪设备的支持 :)