Модификация исходного кода android-приложения с использованием apk-файла / Хабр

Что такое APK файл?

Аббревиатура APK раскрывается как Android Package Kit – исполняемый пакет файлов для Android-приложений. Это архив, содержащий скомпилированные и готовые к исполнению коды и другие ресурсы. apk-файлы хранятся на сайтах Интернета, вроде Google Play, откуда их можно скачать и установить в свой гаджет. Они не подвергаются шифровке.

Его структура подготовлена разработчиком для запуска в среде виртуальной машины Dalvik или ART. Эти машины встроены в ОС Андроид, они-то и запускают все приложения, которые есть на вашем устройстве.

Сам файл apk является обычным архивом, который вы

Сам файл apk является обычным архивом, который вы можете открыть любым архиватором в среде Windows. Например, WinRAR, или файловым менеджером, который открывает ZIP-архивы. Давайте посмотрим, что же там внутри находится.

  • Исполняемый файл с расширением dex (имя может быть любое), который как раз и является кодом программы.
  • Рядом с ним лежит resources.arsc, это реестр ресурсов, которые должна использовать программа. Это структура в формате XML.
  • AndroidManifest.xml – это обязательный файл любой программы, манифест, содержащий главные сведения о ней. Здесь могут быть записаны, например, версия программы, требуемая версия Андроида, данные о разработчике, необходимые разрешения экрана, и так далее.
  • Каталог res содержит внутренние ресурсы, которые нужны программе для работы. Здесь могут быть все картинки, значки, иконки, карты, и так далее.
  • Каталог lib – нативные библиотеки для работы программы, например, код на C++. Этот каталог может отсутствовать, если библиотеки не используются.
  • Каталог assets – дополнительные ресурсы для приложения, также иногда может отсутствовать. Какие именно ресурсы должны использоваться, описано в файле resources.arsc.
  • Каталог META-INF – метаданные программы. Например, файл MANIFEST.MF, в котором могут быть пути к данным и их контрольные суммы. Здесь могут храниться файлы сертификатов RSA, сведения о версии Manifest-Version и тому подобная служебная информация.

Устройство APK-пакетов и их получение

Пакет приложения Android, по сути, является обычным ZIP-файлом, для просмотра содержимого и распаковки которого никаких специальных инструментов не требуется. Достаточно иметь архиватор — 7zip для Windows или консольный unzip в Linux. Но это что касается обертки. А что внутри? Внутри же у нас в общем случае такая структура:

  • META-INF/ — содержит цифровой сертификат приложения, удостоверяющий его создателя, и контрольные суммы файлов пакета;
  • res/ — различные ресурсы, которые приложение использует в своей работе, например изображения, декларативное описание интерфейса, а также другие данные;
  • AndroidManifest.xml — описание приложения. Сюда входит, например, список требуемых разрешений, требуемая версия Android и необходимое разрешение экрана;
  • x — компилированный байт-код приложения для виртуальной машины Dalvik;
  • resources.arsc — тоже ресурсы, но другого рода — в частности, строки (да-да, этот файл можно использовать для русификации!).

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

  • assets — аналог ресурсов. Основное отличие — для доступа к ресурсу необходимо знать его идентификатор, список asset’ов же можно получать динамически, используя метод AssetManager.list() в коде приложения;
  • lib — нативные Linux-библиотеки, написанные с помощью NDK (Native Development Kit).

Этот каталог используют производители игр, помещая туда движок игры, написанный на C/C++, а также создатели высокопроизводительных приложений (например, Google Chrome). С устройством разобрались. Но как же получить сам файл пакета интересующего приложения? Поскольку без рута с устройства забрать файлы APK не представляется возможным (они лежат в каталоге /data/app), а рутить не всегда целесообразно, имеется как минимум три способа получить файл приложения на компьютер:

Какой из них использовать — дело вкуса; мы предпочитаем использовать отдельные приложения, поэтому опишем использование Real APK Leecher, тем более что написан он на Java и, соответственно, работать будет хоть в винде, хоть в никсах.

После запуска программы необходимо заполнить три поля: Email, Password и Device ID — и выбрать язык. Первые два — e-mail и пароль твоего гуглоаккаунта, который ты используешь на устройстве. Третий же является идентификатором устройства, и его можно получить, набрав на номеронабирателе код ##8255## и затем найдя строку Device ID. При заполнении надо ввести только ID без префикса android-.

Настройка Real APK Leecher
Настройка Real APK Leecher
Другие статьи в выпуске:

После заполнения и сохранения нередко выскакивает сообщение «Error while connecting to server». Оно не имеет отношения к Google Play, поэтому смело его игнорируй и ищи интересующие тебя пакеты.

Как изменить версию приложения Android

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

Теги