Я пишу ассемблер для файлов Android / Dalvik .dex. официальные документы для Android , кажется, описывают только новейшую версию формата .dex (очевидно, 038
по состоянию на май 2019 г.), с несколькими короткими заметками, описывающими различия назаддо версии 035
. быстрый взгляд на источники Android , по-видимому, предполагает, что версия 035
формата соответствует Android уровень API 13 , что означает Android 3.2.x (Honeycomb).У меня есть устройство с Android 2.1 (Eclair), которое , по-видимому, означает уровень API 7 .Я хотел бы узнать, как создавать правильные файлы .dex и .apk для этого устройства, и надеюсь добавить поддержку этих файлов в мой ассемблер.
Где я могу найти информацию, которая может мне помочьиспускать правильные файлы .dex для Android 2.1 (Eclair), то есть уровень API 7? Я даже не знаю, что такое строка версии формата .dex для этого уровня API!
Для "бонусных баллов",Мне бы очень хотелось найти хороший справочник, объясняющий различия в формате .dex между всеми уровнями API (по крайней мере, до уровня API 7).Мне также было бы интересно узнать, существуют ли какие-либо существенные различия в формате двоичных файлов .xml и файлов ресурсов (в виде инструмента aapt
) между уровнями API Android.Я предполагаю, что есть большая вероятность, что сам формат .apk, а также алгоритм подписи, мы надеемся, не изменили вообще , учитывая, что это тот же формат, который используется для подписи файлов .jar Java (т.е.обычный .zip с несколькими простыми специальными файлами в подкаталоге META-INF/
).Но спецификация формата .dex (включая байт-коды), вероятно, является наиболее важной частью или, по крайней мере, хорошей отправной точкой.