я решил его несколько подпилить под свои нужды. После 'apktool d' получил набор папок, но вместо java файлов там лежали smali. Выглядит как ассемблер, в общем, практически нечитабельно в больших объёмах.
Я сделал из classes.dex jar файл утилитой 'dex2jar' и смог открыть этот файл декомпайлером (JD-GUI). Сохранил всё и начал пытать подсунуть вместо папки со smali файлами эти java файлы.
Но при сборке выдаёт ворнинг -
' apktool b appFolder
I: Using Apktool 2.2.0
W: Could not find sources
I: Checking whether resources has changed...
I: Building apk file...
I: Copying unknown files/dir...'
После подписи файла я решил сравнить новую версию со старой с помощью MD5 -
0268903ab1e20bcf3082962783d65880 (4,133,068) против c553a98dc2e2269c9508084a5a38a0cd (4,133,178)
Подозрительные лишние 100 байт.. Ну да ладно.
Загружаю на девайс и вижу, что apktool собрал из .smali файлов, которых даже физически не было в директории.
(Я заранее поставил маркер в новом java файле).
Ни в файле манифеста, ни в прочих конфигах я не увидел явного указания на использование smali. Да и повторю, что их там и рядом не лежалою
Как компилировать APK из новых файлов и почему и откуда (classes.dex?) apktool взял старые smali файлы? 😨
Разобрался. Получилось выковырять класс из dex файла, переписать java-код, затем с помощью backsmali порезал его на ассемблерные инструкции и подменил старые smali-файлы новыми. Потому что apktool работает только с несобранным dex или smali https://github.com/iBotPeaches/Apktool/issues/199 оставлю здесь, мало ли кому пригодится)
Обсуждают сегодня