Устраняем ошибки в Building resources при сборке android-приложения с помощью Apktool

imageКаждая операционная система имеет собственные типы файлов, которые являются исполняемыми программами. Так, на Windows они имеют расширение «.exe», на MacOS их функция более-менее повешена на файлы-контейнеры «.pkg», а на Android – «.apk».

Расшифровывается это расширение как Android Package и означает, что внутри файла находятся все нужные для запуска приложения компоненты. Распространяются они через Play Маркет или его свободные аналоги вроде F-droid.

Кроме того, на различных сайтах, посвящённых мобильным устройствам, например, 4PDA или XDA, такие файлы можно скачать самостоятельно. Установка последних может потребовать от пользователя дополнительных действий, вроде активации в настройках телефона права на развёртывание на устройстве программных компонентов, полученных из неизвестных источников.

Декомпиляция приложений и её функции

Один из языков программирования, который используется при написании программ для ОС Android – Java. На нём, как правило, пишут программы новички и люди, которые привыкли к его инструментарию. Крупные разработчики используют другие языки, которые дают больше свободы в использовании сторонних библиотек или программных компонентов.

Для того, чтобы написанный код превратился работающее приложение, его нужно скомпилировать встроенным в SDK (Software Development Kit) компилятором. Обратный же процесс, когда из готового APK-файла получается программный код, называется декомпиляцией.

Для чего может понадобиться декомпилировать такие файлы? Есть несколько ситуаций, в которых это пригодится:

  1. Пользователю недостаточно предоставленного функционала и он обладает достаточными знаниями и опытом, чтобы вносить изменения в готовый код.
  2. Посмотреть, как работает определённый компонент программы и приобрести нужный опыт в его реализации при создании собственного продукта.
  3. Определить, используются ли в приложении какие-либо части вредоносного кода.

Как видно, все эти задачи требуют некоторого опыта работы с языками программирования и Android SDK. Но при этом, на просторах интернета есть множество инструкций, которые под силу и новичкам, что делает процесс обратной компиляции полезным и для них. Нужно просто следовать инструкциям.

Декомпиляторы APK-файлов

Существует три разновидности такого типа программ – устанавливаемые на компьютер, на телефон пользователя и облачные. Первые и вторые имеют более широкий спектр функций. Последние привлекательны тем, что не используют производительности железа и работают прямо из браузера. Недостаток облачных сервисов – ограниченность поддержки сторонних модулей и надстроек, пользователь остаётся с тем набором функций, которые предоставляет владелец сервиса.

Стоит отметить, что разработчики встраивают защиту от таких действий. Это называется обфускацией и производится через специальные сервисы. При этом структура и функциональность полностью собранной программы не нарушается, но после декомпиляции пользователь получает бессвязные куски машинного кода, которые делают невозможным детальный анализ.

Лучшая программа для ПК

Это одна из самых многофункциональных утилит – APKEasyTool. Она работает с несколькими типами файлов и способна распаковывать файлы, находящиеся на любой стадии разработки. Главное окно содержит несколько вкладок, на которых располагаются все возможности утилиты:

  • Main – отправная точка в работе с программами. Здесь можно задать папку для получения всех исходных файлов обратной инженерией, декомпилировать и компилировать их, подписывать и модифицировать подписи после внесения изменений. Внизу вкладки при всех процессах отображается вся служебная информация о версиях инструментария. image
  • Framework – вкладка для подключения дополнительных модулей и фреймворков, способных помочь в процессе распаковки или упаковки готового продукта. Поддерживается установка фреймворка в APK-формате и назначение отдельной папки для каждой версии или разновидности. 
  • Smali/backsmali – соответственно, компилятор и декомпилятор файлов, которые записаны в десятеричном формате. На момент написания статьи функция находится в состоянии беты, но работает без серьёзных ошибок. Функционал довольно примитивный, в наличии всего две кнопки – «Компилировать» и «Декомпилировать». Можно выбирать папки для исходного кода или целевого места назначения хранения результата повторной компиляции. 
  • Log output – полезная для отладки процессов вкладка, содержит все логи каждого из запускаемых процессов. 
  • Options – позволяет гибко настроить программу для выполнения всех задач. Есть опции подключения разных версий Apktool и утилиты APK Signer для обеспечения максимальной совместимости с более ранними версиями Android. Присутствует 4 собственных вкладки с различными параметрами. 
  • FAQ – часто задаваемые вопросы, встроенная инструкция, помогающая пользователям преодолевать самые распространённые ошибки в работе. 
  • About – сведения о версии и контакты разработчика с реквизитами для добровольной поддержки. 

Приложение работает на версиях Windows, начиная с Vista и не поддерживает русского интерфейса. По функционалу вполне подходит как новичку, который разберётся с ней с помощью инструкций и видео-мануалов, так и опытному разработчику приложений.

Декомпиляция на мобильном устройстве

Когда нет возможности отладить приложение на компьютере, а сделать это нужно обязательно, на помощь приходят программы для телефона. Это тоже APK-файлы, которые представляют собой не слишком богатые в настройках, но надёжные Java-декомпиляторы. Самой простой, но в то же время полезной из таких утилит является ShowJava AJavaDecompiler.

Принцип работы очень прост:

  1. Начальное окно вполне минималистично – приветствие и кнопка «+», с которой начинается работа. 
  2. Нажав на «+», пользователь должен выбрать, откуда загрузить программу для декомпиляции – из внутренней памяти или выбрать из уже установленных. 
  3. Если выбран первый пункт, следующий шаг – навигация в папку с APK-файлами и выбор одного из них. Потом нужно подтвердить это действие, нажав на Select. 
  4. После этого выбирается декомпилятор, который будет использоваться в процессе. 
  5. А далее выводится окно с прогрессом операции. Если она завершается успешно, пользователь видит все файлы, нужные для функционирования приложения, и его исходный код. Если же нет, выводится окно с ошибкой. 

Из недостатков – плохое декодирование файлов, которые были подвержены обфускации. В остальном же, набор возможностей здесь практически неотличим от десктопных аналогов.

Облачный сервис

Сайт javadecompilers.com предоставляет все возможности по разбору APK-файлов на составные части. Здесь есть, кроме хорошего онлайн-декомпилятора, и сетевая версия APKTools, что бывает полезно, если нет под рукой нужных устройств или пользователь не желает тратить время на инсталляцию приложений.

Принцип работы прост:

  1. Нужно открыть браузер и перейти по адресу javadecompilers.com/apk. 
  2. Выбрать файл из Проводника и нажать кнопку «Upload and Decompile».
  3. Процесс декомпиляции здесь выглядит так (красная строка – прогресс, с указанием конкретного процесса, дублируется внизу экрана в области с заголовком Decompilation Results). 
  4. После окончания процесса статус сменяется на окно такого вида, в котором присутствует возможность скачать полученные файлы. 
  5. Предпросмотр файлов находится внизу страницы и позволяет оценить степень успеха после окончания. Файловая структура сохранена в том виде, в котором будет скачиваться архив, со всем древом каталогов и подкаталогов. Если содержимое хотя бы одного из них прочесть трудно, значит обфускацию обойти не удалось. 
  6. Все файлы запакованы в архив и выглядят так. 

После распаковки с ними можно делать что угодно. Облачный сервис предоставляет доступ без ограничений, хоть и показывает много рекламы в процессе своей работы. Для функционирования используется декомпилятор JaDX, который может не удовлетворять требований некоторых проектов. Ссылку на проект можно опубликовать на одной из соцсетей. Импорта на github нет, что тоже не очень удобно для конечного разработчика, у которого нет под рукой нужных инструментов.

APK – это формат, который используется в операционной системе Android для архивных исполняемых файлов-приложений. Аналогом, например, в Windows, является .msi, в Symbian — .sis, в Linux — .rpm или .deb.

В данной статье мы максимально детально разберемся во всех вопросах касаемо данного файлового формата.

Процесс разборки, редактирования и сборки по «правильному» называется reverse-engineering («реверс-инжиниринг»). Что для этого нужно? Необходимы следующие инструменты:

Java JDK

Android SDK

Apktool. Удобнее использовать с оболочкой SmartApktool, можно также использовать уже готовые batch-файлы, например ApktoolBAT.

Notepad++ — не обязательно, но настоятельно рекмоендуется.

7zip или WinRar, либо же любая другая программа-архиватор, но рекомендуется именно одна из этих.

Деодексированная прошивка.

Устанавливать приложения в операционной системе Android можно несколькими способами. Первый, он же основной – это напрямую через Google Play (Android Market), то есть с официального источника, для чего потребуется учетная запись Google. Многие приложения платные, если вы не хотите искать взломанную версию на пиратских сайтах, то придется оплатить покупку. Но о том, как это сделать, мы поговорим в другом материале. Второй – из неофициальных источников, отличных от Google Play, для чего придется включить параметр «Разрешить установку приложений из неофициальных источников» в настройках смартфона или планшета, после чего установочный файл APK нужно записать на карту памяти.

Возможно также массово устанавливать приложения APK. Для этого потребуется Astro File Manager – специальный файловый менеджер. После его установки перемещаем приложения:

Со смартфона/планшета: в mntsdcard/backupsapp (иными словами, карта памяти, далее папака backups, папка app)

С персонального компьютера (не забываем включить подключение Adroid-устройства в режиме простого USB-накопителя): sdcardbackupsapp

            После чего открываем нужное приложение, в контекстном меню выбираем «Менеджер приложений» и переходим во вкладку «Резервные копии», где выбираем «Сделайте долгий клик или проверьте приложение, чтобы проинсталлировать». Нажимаем кнопку «Инсталлировать» — все приложения будут установлены на ваше устройство.

Что из себя представляет структура APK-файла, посмотреть достаточно легко. Открываем нужный APK при помощи программы-архиватора, например, WinRar. Вот что мы видим внутри:

AndroidManifest.xml – это своеобразный «паспорт», который описывает, что находится в приложении, в том числе: системные требования к приложению, его структура и версия.

META-INF – папка, содержащая файл MANIFEST.MF (его можно открыть практически любым текстовым редактором, рекомендуется использоваться Notepad++), открыв который видно контрольные суммы SHA-1 и пути к данным, версию стандарта Manifest-Version, файлы сертификата RSA или DSA, файл SF содержит пути к различным ресурсам и их контрольные суммы. Вообще, META-INF – это файлы метаданных, то есть данные о данных.

res – папка, которая содержит все ресурсы «программной начинки», рассортированные по подпапкам. Например, в папке ~drawable~ находятся графические элементы приложений (разные статусы, иконки и такое прочее), в директории layout – XML-файлы, в которых указано размещение элементов графического пользовательского интерфейса (GUI).

classes.dex – программный код, выполняемый виртуальной машиной Dalvik VM. Напомним, что операционная система Android – это смесь ядра Linux с виртуальной машиной Java.

resources.arsc – скомпилированный файл XML. Он содержит данные о всех ресурсах, которые используются программой.

assets – папка, также содержащая различные ресурсы, её может не быть вовсе в APK.

lib – папка, которая содержит «либы» или, проще говоря, нативные библиотеки, если программа написана с использованием NDK, например с элементами когда С++. Данной директории может не быть в APK.

com – может отсутствовать в APK.

org – может отсутствовать в APK.

udk – может отсутствовать в APK.

С содержимым APK-приложения мы разобрались, теперь приступим к детальной его разборке. Для декомпиляции понадобятся Apktool и Java, а также собственно сам APK-файл. Apktool рекомендуется распаковывать в директорию C:WINDOWS (это не обязательно, но так будет удобнее. Почему – читайте немного ниже).

Для запуска Apktool необходимо войти в меню «Выполнить» компьютера. На Windows XP нажимаем Пуск -> Выполнить, на Windows 7: Диспетчер задач (Ctrl+Alt+Del), сверху в выпадающем меню Файл -> Новая задача (Выполнить…), или просто вызываем его сочетанием клавиш Win+R.

Вызываем командную строку – пишем cmd, после чего запускаем Apktool – пишем apktool (для этого и нужно было поместить его в папку WINDOWS). Далее всё управление происходит через командную строку с использованием параметров.

Если нет желания заморачиваться с постоянным вводом текстовых команд, можно использовать графический интерфейс – например, упомянутый SmartApkTool. Запускаем SmartApkTool.exe, после чего во вкладке Распаковать/Запаковать выбираем нужное приложение APK (важно, чтобы имя файла не содержало пробелов, кириллицы, спецсимволов и знаков препинания).

После распаковки программа создаст папку с таким же названием, как файл APK. Внутри неё будет находиться всё содержимое приложения.

APK также можно локализировать. Прежде чем начать это делать, запускаем предварительно установленный Notepad++, и настраиваем его следующим образом. Открываем Настройки -> Конфигурация -> Новый документ.

После проделанных действий открываем распакованное (декомпилированное) приложение, папку res/values.

Все локализации зачастую находятся в файле strings.xml, но иногда часть из них может содержаться в arrays.xml. Копируем данные файлы, создаем в папке res папку values-ru и вставляем их в неё.

Теперь можно открыть strings.xml при помощи Notepad++, произвести перевод, и сохранить измененный файл.

В файле AndroidManifest.xml можно указать, куда устанавливать APK-приложения. Внимание, это актуально только для версии Android 2.2 и более новых. Итак, открываем указанный файл при помощи Notepad++. Почти в самом начале видно параметр:

android:installLocation=

Здесь можно указать следующие варианты (после символа «=»):

internalOnly – приложение будет устанавливаться только во внутренней памяти устройства

auto – предоставляет пользователю выбор, устанавливать приложение во внутреннюю память или на карту памяти

preferExternal – программа будет устанавливаться на карту памяти. Нужно учитывать, что не все приложения будут корректно работать, если установлены на внешнем накопителе, или же вообще окажутся не работоспособными. К ним относятся:

Services – то есть, сервисы

Alarm Services – сервисы, которые используют время, например будильники

Input Method Engines – приложения для ввода, в том числе разные клавиатуры

Live Wallpapers – «живые» анимированные обои

Live Folders – соответственно, анимированные директории

App Widgets – различные «виджеты»

Account Managers – менеджеры разных учетных записей, в том числе ICQ-клиенты, клиенты для социальных сетей и так далее

Sync Adapters – программы, которые требуют постоянной синхронизации

Device Administrators – приложения, которые используются для администрирования

Copy Protection – приложения, которые защищены от копирования.

В приложении можно редактировать и заменять на свои различные иконки и графические элементы пользовательского интерфейса. Для этого открываем папку res в папке с декомпилированным приложением APK, здесь можно увидеть папки:

drawable-hdpi

drawable-ldpi

drawable-mdpi

В данных папках находятся все иконки и другие графические элементы программы. Буква перед «dpi» означает размер графических элементов, соответственно:

hdpi – высокая плотность точек на дюйм, размер 72х72 пикселя

mdpi – средняя плотность точек на дюйм, размер 48х48 пикселя

ldpi – низкая плотность точек на дюйм, размер 36х36 пикселя

Для того, чтобы изменить, например, иконку приложения, открываем файл AndroidManifest.xml при помощи программы Notepad++, ищем строчку, в которой указана иконка, смотрим точное её название (обратите внимание, расширение файла не прописывается, только имя файла).

Открываем соответствующую папку drawable-*dpi, вставляем отредактированную или новую иконку, не забываем перепроверить исходное название в AndroidManifest.xml. Картинка обязательно должна быть в формате .png и иметь точно такую же плотность точек, как исходный файл, например для hdpi это 72х72 пикселя.

Если есть желание заменить название иконки на своё, то сохраняем картинку с желаемым именем файла в drawable-*dpi, после чего указываем точно такое же имя в AndroidManifest.xml (например android:icon=»@drawable/test»). Таким же образом можно изменить любые другие графические элементы, но требования те же – обязательно расширение .png и плотность точек на дюйм, как у исходного файла.

В распакованном приложении можно перепроверить, какие права есть у него. Это полезно, если APK было установлено с неизвестного источника, и чтобы не произошло ситуации, что фонарик или красивый календарь вдруг начнет рассылать платные SMS-сообщения на неизвестный номер. Открываем AndroidManifest.xml программой Notepad++ и ищем соответствующие строки. За отправку текстовых сообщений, например, отвечает параметр SEND_SMS. Подробнее обо всех правах, которые могут быть доступны приложению, вы можете почитать в другом материале.

Установленные APK приложения можно извлечь из системы. Это можно сделать несколькими способами. Во-первых, можно установить Astro File Manager. Открываем приложение, после чего в контекстном меню выбираем пункт «Менеджер приложений». Ищем необходимое приложение, помечаем его галочкой и делаем резервную копию. После проведенной обработки выбранное приложение будет находится по пути:

mntsdcard/backupsapp (при просмотре напрямую с Android-устройства)

sdcard/backupsapp (при просмотре через компьютер, при этом Android-девайс подключен как USB-накопитель).

Далее, можно использовать программу Root Uninstaller. После запуска приложение самостоятельно определит все установленные APK и автоматически сделает резервную копию всех их. Соответственно, можно, при желании, скопировать для дальнейшей декомпиляции эти резервные копии, они находятся по пути:

mntsdcardRootUnistallerautobackups (при просмотре напрямую с Android-устройства)

sdcardRootUnistallerautobackups (при просмотре через компьютер, при этом Android-девайс подключен как USB-накопитель).

Еще один способ заключается в использовании Root Browser Lite, естественно для этого понадобятся Root-права. Открываем данное приложение, проходим по пути:

dataapp

или

systemapp (если интересуют системные приложения).

Нужные приложения копируем на карту памяти, после чего с ними можно производить любые манипуляции.

Также можно скачать интересующие вас приложения APK с Google Play (Android Market) напрямую на персональный компьютер. Для этого понадобится браузер Google Chrome (версия не ниже 17-й), и плагин для него – APK Downloader. После скачивания и установки указанного плагина, создаем копию ярлыка браузера Google Chrome, где прописываем следующую строчку после пробела:

—ignore-certificate-errors

При стандартном установочном пути браузера, в строчке должно получиться вот что:

«C:Program FilesGoogleChromeApplicationchrome.exe» —ignore-certificate-errors

После этого, в номеронабирателе смартфона вводим:

*#*#8255#*#*

Переписываем Device ID, который состоит из 16 знаков. Открываем Google Chrome при помощи созданного ярлыка с указанным параметром —ignore-certificate-errors, заходим в Инструменты -> Расширения (можно также ввести в адресную строку «chrome://settings/extensions»), открываем настройки плагина APK Downloader. В опциях вводим адрес почты и пароль вашей учетной записи Google, а также полученный Device ID. Теперь заходим на Google Play (Android Market), открываем страницу с нужным приложением, ждем полной её загрузки. Появится значок APK Downloader – после его нажатия приложение будет скачано на компьютер.

Второй способ – при помощи Real APK Leecher. В окне опций также нужно ввести основные данные учетной записи Google – почтовый адрес, пароль и Device ID. После чего можно найти и скачать любое приложение, доступное в Google Play (Android Market).

Из APK-приложений также можно удалить назойливую рекламу – об этом читайте в другом материале.

Чтобы получить исходный код любого Android приложения APK, нужно открыть SmartApkTool, где переходим на вкладку «dex2jar».

Выбираем нужный APK-файл

и нажимаем «Декомпилировать dex в jar»

в итоге получаем jar-файл.

Его можно открыть и редактировать, например, при помощи программы JD-GUI.

Как произвести упаковку приложения и его подпись? Для этого запускаем SmartApkTool, открываем вкладку Распаковать/Запаковать, выбираем опцию «Запаковать», ставим галку напротив «Подписать приложение», выбираем (путем нажатия на «Обзор») директорию с распакованным приложением и выбираем файл apktool.yml. Наконец, кликаем на «Запаковать и подписать».

После выполненной подписи приложение будет размещено в папке sign директории с программой SmartApkTool, с названием sign_name.apk. Или же можно просто нажать «Запаковать», тогда приложение будет упаковано. В папке с декомпилированным приложением будут созданы директории build и dist, в последней будет находится собранный APK, то есть готовое приложение, а в build – содержимое данного APK.

Если изначально вы не подписывали приложение, но после решили это сделать, то APK-файл закидываем в папку sign, после чего подписываем программой SmartApkTool на вкладке «Подписать».

4 года назад

С офсайта https://developer.android.com/studio/index.html забираем Android SDK Tools (ссылка внизу страницы). На данный момент там выложена версия 3859397.

Распаковываем и устанавливаем platform-tools и build-tools для последнего релиза Android. Соответствие имени релиза, версии Android и значению Android API можно посмотреть на https://source.android.com/source/build-numbers

> toolsbinsdkmanager.bat –list

build-tools;25.0.2 | 25.0.2 | Android SDK Build-Tools 25.0.2

build-tools;25.0.3 | 25.0.3 | Android SDK Build-Tools 25.0.3

cmake;3.6.3155560 | 3.6.3155560 | CMake 3.6.3155560

> toolsbinsdkmanager.bat “build-tools;25.0.3” “platform-tools”

Далее получаем на руки apk-шку, которую будем препарировать. Название пакета можно взять из адресной строки браузера, открыв страницу с программой на Play Market. Далее ищем и вытаскиваем архив через adb (root не требуется).

Пусть например, для программы “Sample Foobar” имя пакета будет com.example.foobar

> adb devices

List of devices attached

1234567890abcdef device

> adb shell “pm list packages -f -3 | grep com.example.foobar”

package:/data/app/com.example.foobar-1.apk=com.example.foobar

> adb pull /data/app/com.example.foobar-1.apk

/data/app/com.example.foobar-1.apk: 1 file pulled. 3.0 MB/s (39955506 bytes in 12.719s)

С сайта https://ibotpeaches.github.io/Apktool/ забираем и устанавливаем apktool, который умеет декомпилировать архив apk в набор файлов и обратно.

> java -jar apktool_2.2.2.jar d -o foobar_src com.example.foobar-1.apk

Декомпилированный код будет в формате smali – синтаксис и краткая справка на офсайте https://github.com/JesusFreke/smali/wiki. Описание команд можно посмотреть на http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html или на официальном сайте Android https://source.android.com/devices/tech/dalvik/dalvik-bytecode

Уже можно изучать исходный код. В Notepad++ можно добавить подсветку синтаксиса smali с https://forum.xda-developers.com/showthread.php?t=2760141, а для IntelliJ Idea недавно вышел плагин https://github.com/JesusFreke/smali/wiki/smalidea, который, по заявлению автора, даже позволяет отлаживать приложение на телефоне через ddms (проверять это я, конечно, не буду.)

Можно облегчить себе изучение кода, попробовав декомпилировать apk в исходный код на Java, но надо иметь в виду, что с вероятностью в 99.5% код получится нерабочий и его невозможно будет скомпилировать обратно в apk. В зависимости от фазы Луны и погоды на Марсе, в таком коде будут присутствовать совершенно дикие конструкции типа for (;;) {return; /* и дальше код */ } и тому подобное. Но общую структуру кода можно посмотреть, посравнивать с тем, что есть в файлах smali. Для этого нам потребуется dex2jar отсюда: https://sourceforge.net/projects/dex2jar/ и jd-gui отсюда: http://jd.benow.ca/

> dex2jar-2.0d2j-dex2jar -os -ts -r com.example.foobar-1.apk

На выходе имеем com.example.foobar-1-dex2jar.jar. Запускаем jd-gui и открываем в нем этот jar:

> java -jar jd-gui-1.4.0.jar

Можно изучать код прямо в jd-gui, а можно экспортировать весь Java-код через меню File -> Save all sources.

После того, как поизучали, добавили нужное и удалили ненужное, собираем обратно smali в apk:

> java -jar apktool_2.2.2.jar b -o foobar_unaligned.apk foobar_src

Выравниваем запакованные файлы по 4-байтовой границе:

> build-tools25.0.3zipalign 4 foobar_unaligned.apk foobar_fixed.apk

Если ещё нет своего keystore, то его можно сделать с помощью программы keytool.exe, которая входит в состав JRE:

> keytool -keystore android_keystore.jks -genkey -alias recompile

Далее подписываем apk, используя сертификат из своего keystore. Указываем такое же значение min-sdk-version, как указано в исходнике foobar_srcapktool.yml, в параметре minSdkVersion:

> build-tools25.0.3apksigner sign –ks android_keystore.jks –min-sdk-version 14 foobar_fixed.apk

Перед тем, как ставить обновленную apk, надо вручную удалить оригинальную программу, если она установлена, так как оригинал и переделанная версия подписаны разными ключами.

В статье про изготовление копий приложений для Android я упоминал о приложении SmartAPKTool. Оно может распаковывать, запаковывать и подписывать изменённые apk-файлы. Её достоинством является наличие графического интерфейса. Однако есть и серьёзный недостаток. SmartAPKTool давно не обновлялся, и программа некорректно распаковывает и запаковывает приложения для свежих версий Android. Поэтому здесь я попытаюсь объяснить, как пользоваться для этих целей приложением apktool.

Замечание 1. Программу SmartAPKTool по-прежнему удобно использовать для подписи собранных apk-файлов.Замечание 2. Ссылки на упомянутые в статье программы находятся внизу ↓

Программа apktool не имеет графического интерфейса. Это является минусом для тех, кто не привык работать с командной строкой. Но есть и плюс: в отличие от SmartAPKTool, мы будем видеть все ошибки, а значит будем знать, что исправить.

Скачаем два архива: один общий для всех систем, другой для нашей системы (в примере — Windows):

Распакуем оба архива в одну и ту же пустую папку (в нашем примере C:apktool). Её содержимое должно получиться таким:

С этого момента мы можем использовать программу apktool.

Замечание 3. Пользователям 64-битных версий Linux нужно будет установить пакет ia32-libs:

sudoapt-get install ia32-libs

В эту же папку мы кладём тот файл, который нам нужно распаковать. Например, пусть он назвыается orig.apk Нажав клавишу Shift и удерживая её, щёлкаем правой кнопкой мыши на любом пустом пространстве папки (щёлкать не по файлам!). После этого выбираем пункт „Открыть окно команд“. В появившейся консоли набираем[важно!]:

apktool decode orig.apk

Файл распакуется:

Теперь у нас в директории C:apktool есть папка с распакованным приложением. Называется она так же, как и исходный файл, за вычетом расширения: C:apktoolorig. Мы можем менять исходные файлы так, как описано в статье Android: как установить два одинаковых приложения на один телефон. После того, как мы сделали изменения, соберём копию приложения, запаковав исходные файлы в apk:

apktool build orig result.apk

Здесь result.apk — имя файла, которое мы придумали для билда копии. Если ошибок нет, то файл соберётся:

Остальное выходит за рамки темы статьи:

  1. Если при сборке будут ошибки, нужно найти их причину и исправить.
  2. Осталось подписать получившийся файл result.apk. Это можно сделать с помощью SmartAPKTool, как говорилось выше; в нём всё интуитивно понятно. Есть также прочие способы подписать apk-файл.
  3. При установке копии, при её запуске или работе также могут возникать ошибки. Их нужно отлавливать с помощью утилиты adb, входящей в состав Android SDK.

Подписывать приложение надо обязательно, иначе оно не установится. Ошибки же встречаются не так часто, и самые распространённые вызывающие их проблемы описаны в статье Android: как установить два одинаковых приложения на один телефон.

Ссылки на упомянутые программы:

Важное замечание по apktool версий 2.x

В версии 2.0.0-Beta7 нужно применять ключ --output, чтобы указать директорию при декомпиляции и результирующий файл при сборке:

apktool decode orig.apk output orig apktool build orig output result.apk

Назад в текст ↑

1 imageКатегория:Работа с Android-устройствами Система:Windows 7, 8.1, 10 Статус программы:Бесплатная Смотрели файл: 6 743

Описание

Android Tools – это программа с набором инструментов для обработки команд и опций на мобильном аппарате с OS Android, который подключен к компьютеру. Этот софт распространяется на бесплатной основе. В программе есть множество полезных инструментов, которые подходят для работы в OS Android.Android Tools обеспечивает работу в графической среде смартфона или планшета. Софт работает после подключения к сети Wi-Fi или по USB. Некоторые функции доступны только при подключенном кабеле. 

Что умеет программа

Программа позволяет работать с ADB-командами. Используя эти команды, вы найдёте неполадки в работе мобильного аппарата и сделаете его отладку. В утилите есть краткая справка (руководство) по эксплуатации Android Debug Bridge, но она не переведена на русский язык, как и графическая оболочка.Если вы плохо знаете английский язык, то поищите справочные данные о выполнении команд на форумах об этом софте. Все компоненты управления, которые обеспечивают работу с ADB, находятся в специальном разделе. Ещё один раздел программы Android Tools создан для работы с инструментами, которые обеспечивают инсталляцию прошивки в быстром режиме. Там же находятся клавиши, которые позволяют указывать путь к файлам обновлений и окно для запуска консоли. Программа не сложная в освоении, но, если вы не опытный пользователь или не уверены в своих силах, то отнесите мобильное устройство в сервисный центр. Работая с утилитой, вы просматриваете окно лога ADB и Fastboot в обоих разделах. В логе AndroidTools сохраняет все команды и ошибки, которые появляются в работе с устройством. 

Прочий функционал

Кроме основной функции софта – обновления программного обеспечения смартфона, в нём есть дополнительные возможности и функции, например, установка сторонних приложений. В Android Tools вы запускаете инсталлированные приложения и делаете резервную копию данных на жёстком диске компьютера. Функция для работы с «архивацией данных» предназначена для различной информации, которая находится на смартфоне или планшете. Воспользовавшись этой утилитой, вы сохраните музыку, документы, контакты и прочиеданные. Последняя версия софта позволяет создавать снимки экрана и записывать видео на мобильном устройстве.

Ключевые особенности

  • обработка и запуск ADB-команд на смартфоне или планшете, которые подключены к компьютеру;
  • функция для обновления ПО, используя режим Fastboot;
  • вспомогательные модули, которые обеспечивают установку, запуск и создание архивных копий мобильных приложений;
  • программа записывает видео с дисплея и делает снимки экрана;
  • в софте есть интегрированный редактор APK-файлов;
  • в графической оболочке программы находится информация о технических параметрах мобильного аппарата.

Скачать бесплатно[20.66 Mb](cкачиваний: 3746)

Смотрите также:

imageСловари ABBYY Lingvo ABBYY Lingvo Dictionaries – наиболее известный среди пользователей словарь, способный работать в… imageFRY TV FRY TV – утилита, основное назначение которой просмотр TV-каналов в режиме реал-тайм, посредством… imageКарта России В данном приложении пользователю предоставляется максимально подробная и интерактивная карта… imageHirens BootCD Универсальный загрузочный диск, на котором хранится невероятное количество полностью бесплатных… imageМой МТС Официальное приложение для жителей России от оператора МТС…… imageVideoMix VideoMix это мобильное приложение для просмотра любимых фильмов и сериалов в режиме онлайн…. imageOLX kz Приложение от сервиса бесплатных объявлений OLX.kz (Казахстан)…. Камера Переводчик Камера Переводчик – это приложение, способное распознать любые надписи, попавшие под прицел… Комментарии (3)

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Citilink-kabinet.ru
Добавить комментарий