В статье про изготовление копий приложений для Android я упоминал о приложении SmartAPKTool. Оно может распаковывать, запаковывать и подписывать изменённые apk-файлы. Её достоинством является наличие графического интерфейса. Однако есть и серьёзный недостаток. SmartAPKTool давно не обновлялся, и программа некорректно распаковывает и запаковывает приложения для свежих версий Android. Поэтому здесь я попытаюсь объяснить, как пользоваться для этих целей приложением apktool.
Замечание 1.
Программу SmartAPKTool по-прежнему удобно использовать для подписи собранных apk-файлов.
Замечание 2.
Ссылки на упомянутые в статье программы находятся внизу ↓
Программа apktool не имеет графического интерфейса. Это является минусом для тех, кто не привык работать с командной строкой. Но есть и плюс: в отличие от SmartAPKTool, мы будем видеть все ошибки, а значит будем знать, что исправить.
Скачаем два архива: один общий для всех систем, другой для нашей системы (в примере — Windows):
Распакуем оба архива в одну и ту же пустую папку (в нашем примере C:\apktool\
). Её содержимое должно получиться таким:
С этого момента мы можем использовать программу apktool.
Замечание 3.
Пользователям 64-битных версий Linux нужно будет установить пакет ia32-libs:sudo apt-get install ia32-libs
В эту же папку мы кладём тот файл, который нам нужно распаковать. Например, пусть он назвыается orig.apk
Нажав клавишу Shift и удерживая её, щёлкаем правой кнопкой мыши на любом пустом пространстве папки (щёлкать не по файлам!). После этого выбираем пункт „Открыть окно команд“. В появившейся консоли набираем[важно!]:
Файл распакуется:
Теперь у нас в директории C:\apktool\
есть папка с распакованным приложением. Называется она так же, как и исходный файл, за вычетом расширения: C:\apktool\orig\
. Мы можем менять исходные файлы так, как описано в статье Android: как установить два одинаковых приложения на один телефон. После того, как мы сделали изменения, соберём копию приложения, запаковав исходные файлы в apk:
Здесь result.apk
— имя файла, которое мы придумали для билда копии. Если ошибок нет, то файл соберётся:
Остальное выходит за рамки темы статьи:
- Если при сборке будут ошибки, нужно найти их причину и исправить.
- Осталось подписать получившийся файл
result.apk
. Это можно сделать с помощью SmartAPKTool, как говорилось выше; в нём всё интуитивно понятно. Есть также прочие способы подписать apk-файл. - При установке копии, при её запуске или работе также могут возникать ошибки. Их нужно отлавливать с помощью утилиты
adb
, входящей в состав Android SDK.
Подписывать приложение надо обязательно, иначе оно не установится. Ошибки же встречаются не так часто, и самые распространённые вызывающие их проблемы описаны в статье Android: как установить два одинаковых приложения на один телефон.
Ссылки на упомянутые программы:
Важное замечание по apktool версий 2.x
В версии 2.0.0-Beta7 нужно применять ключ --output
, чтобы указать директорию при декомпиляции и результирующий файл при сборке:
apktool build orig --output result.apk