Короткий практический пример как разобрать apk приложение, что-то в нем изменить и собрать обратно в среде windows без использования android studio. Статья подойдет для новичков, сложного ничего не будет. Будем изменять (русифицировать) не полностью русифицированное приложение для видеокамеры ordro pro ep8.
На написание статьи подтолкнула другая статья на Хабр — habr.com/ru/articles/780694
Однако там описано, на мой взгляд, недостаточно подробно, новичкам будет тяжело. Кроме того, в приведенной статье использовались средства сборки-разборки под Linux, здесь будет windows-вариант.
В качестве цели для исследования будет выступать мобильное приложение в формате apk для камеры ordro pro ep8.
При эксплуатации это приложение демонстрирует вполне разумную локализацию, но в некоторых моментах все-таки «проглядывает оригинал» на иностранном языке:
Разбираем apk.
Самое простое, что можно сделать на старте — просто переименовать apk в zip и посмотреть на получившийся архив приложения:
Такой трюк позволяет сформировать общее представление о приложении, но не более. В своем содержимом файлы все равно будут иметь нечитаемый код:
Поэтому понадобится утилита apktool.
Устанавливать (инсталлировать) ее не нужно, только положить рядом с apk. Может также потребоваться java.
Проверить, установлена ли java можно так:
Далее команда apktool d com-ordro.apk полностью разберет приложение:
После этого можно наблюдать в том числе smali, о которых говорилось в уже упомянутой статье:
Файлов много, найти текст, который хотелось русифицировать, непросто. Поэтому пойдем по пути наименьшего сопротивления. Возьмем скриншот иероглифа из картинки приложения, переведем в текст и поищем этот текст по всем файлам в папках:
Как не сложно догадаться для каждого языка имеются соответствующие папки, в одной из которых и нашелся иероглиф. Нас интересует «папка для русского языка» (values-ru):
В файле находим частично непереведенные названия вкладок, кнопок и т.д. Изменяем текст на правильный:
Не лишним будет заглянуть в иные, рядом расположенные файлы:
Собираем обратно в apk.
После того, как все необходимые изменения внесены, можно приступить к сборке нового apk.
Сборка apk осуществляется также apktool командой apktool b com-ordro, где в качестве аргумента — папка с файлами, в которых происходили изменения.
Готовый файл apk будет в папке dist:
Однако, если данный файл перенести на мобильный и попытаться установить — попытка завершится неудачей. Необходимы дополнительные манипуляции с файлом apk перед переносом.
Необходимо выполнить выравнивание содержимого apk (aligning) и его подпись (sign).
Здесь частично будут использованы сведения из статьи medium.com/@sandeepcirusanagunla/decompile-and-recompile-an-android-apk-using-apktool-3d84c2055a82
Но так как, сведения из статьи немного устарели, как например, в части алгоритма шифрования, будут использоваться немного иные команды.
Алгоритм следующий.
1.Создаем ключ-пару, который «подпишем» наш apk:
keytool -genkeypair -keyalg DSA -keysize 2048 -keystore my-release-key.keystore -alias alias_name -validity 10000
Пароль можно задать любой как и данные, ввод которых можно пропускать, нажимая enter.
На выходе рядом с apk появится файл — ключ-пара:
2. Подпишем файл(signing), используя нашу ключ-пару.
jarsigner -verbose -sigalg SHA256withDSA -digestalg SHA256 -keystore my-release-key.keystore com-ordro.apk alias_name
В терминале увидим при успешном выполнении примерно следующий вывод:
Однако, если проверить подписанное приложение jarsigner -verify -verbose -certs com-ordro.apk может выскочить ошибка, которая в дальнейшем не позволит установиться приложению на мобильном:
Можно пойти по длинному пути и исправить ошибку с ключ-парой и сертификатами, но мы поступим проще. Подпишем и выровняем apk с помощью uber-apk-signer.
Скачав uber-apk-signer.jar в папку с готовым apk, выполним команду:
java -jar uber-apk-signer.jar -a com-ordro.apk
*Данная команда заменяет собой 2 предыдущих шага с выравниванием и подписанием.
Она использует все тот же zipalign.exe и создает ключ-пару. Если zipalign нет, то его нужно скачать и добавить его в PATH.
На выходе получим готовый apk, который уже можно устанавливать на мобильном:
Результат:
Спасибо за внимание.
Приложение до и после, а также файлы для работы можно скачать — здесь.
ps. для тех кого интересует вопрос (как и меня) собственно по камере — можно ли с нее получать поток, в обход мобильного приложения — да, возможно rtsp:\\192.168.1.1:554
mr_kani
Используйте просто ApkLab, которая автоматизирует все перечисленные выше шаги