Открыть сервис

Android Package Kit

Android Package Kit (APK) — это формат файла-архива, используемый операционной системой Android для распространения и установки мобильных приложений, а также промежуточного программного обеспечения и игр. APK-файл представляет собой исполняемый пакет, содержащий все необходимые компоненты для работы приложения на устройстве под управлением Android.

История

Формат APK был введён компанией Google вместе с первой версией операционной системы Android (Android 1.0, выпущен в 2008 году). Основой для формата послужил стандартный формат JAR (Java Archive), который, в свою очередь, основан на ZIP-архиве. Изначально APK-файлы распространялись преимущественно через сторонние сайты и форумы, пока в 2008 году не был запущен официальный магазин приложений Android Market (позднее переименованный в Google Play).

С развитием Android формат APK претерпел изменения. В 2017 году Google представила новый формат Android App Bundle (AAB), который стал рекомендуемым для публикации в Google Play, однако APK остаётся основным форматом для установки приложений напрямую (sideloading). В 2021 году, с выходом Android 12, Google ввела дополнительные требования к безопасности APK-файлов, включая обязательную проверку цифровых подписей и блокировку установки приложений из непроверенных источников.

Структура APK-файла

APK-файл является ZIP-архивом, содержащим следующие обязательные и опциональные компоненты:

  • AndroidManifest.xml — скомпилированный XML-файл, описывающий основные параметры приложения: имя, версию, требуемые разрешения, список компонентов (активности, службы, приёмники широковещательных сообщений).
  • classes.dex — файл, содержащий скомпилированный в формат Dalvik Executable (DEX) байт-код приложения, исполняемый виртуальной машиной Dalvik (до Android 4.4) или Android Runtime (ART, начиная с Android 5.0).
  • resources.arsc — скомпилированный файл ресурсов, содержащий предварительно обработанные строки, стили, цвета, макеты и другие ресурсы.
  • **META (организация признана экстремистской, деятельность запрещена в РФ)-INF/** — каталог с метаданными, включая файлы манифеста (MANIFEST.MF), сертификата (CERT.RSA) и списка подписей (CERT.SF), используемые для проверки целостности и подлинности приложения.
  • lib/ — каталог с нативными библиотеками, скомпилированными для различных архитектур процессора (armeabi-v7a, arm64-v8a, x86, x86_64).
  • res/ — каталог с ресурсами приложения, не скомпилированными в resources.arsc (изображения, звуки, видео, макеты в формате XML).
  • assets/ — каталог с произвольными файлами, доступными приложению через AssetManager (например, шрифты, базы данных, конфигурационные файлы).

Подпись и безопасность

Каждый APK-файл должен быть подписан цифровой подписью разработчика. Подпись обеспечивает:

  • Аутентичность — подтверждение, что приложение было создано конкретным разработчиком.
  • Целостностьгарантия, что файл не был изменён после подписания.
  • Обновление — при установке обновления система проверяет, что подпись нового APK совпадает с подписью установленного приложения, иначе обновление будет отклонено.

Google использует несколько схем подписи: v1 (JAR-подпись), v2 (APK Signature Scheme v2, введена в Android 7.0), v3 (APK Signature Scheme v3, введена в Android 9.0) и v4 (APK Signature Scheme v4, введена в Android 11.0). Современные приложения, публикуемые в Google Play, должны быть подписаны по схеме v2 или v3.

Установка APK-файлов

Установка APK-файлов возможна несколькими способами:

  • Google Play — официальный магазин приложений, где пользователи могут загружать и устанавливать приложения автоматически. Google Play автоматически проверяет APK-файлы на наличие вредоносного кода с помощью системы Google Play Protect.
  • Сторонние магазины — альтернативные каталоги приложений (например, Amazon Appstore, F-Droid, APKPure), которые распространяют APK-файлы напрямую.
  • Прямая установка (sideloading) — установка APK-файла, загруженного из любого источника (веб-сайт, электронная почта, облачное хранилище). Для этого в настройках устройства необходимо включить опцию «Установка из неизвестных источников» (начиная с Android 8.0 — разрешить установку для конкретного приложения-установщика).

Начиная с Android 10, Google ввела ограничения на установку APK-файлов из непроверенных источников: система предупреждает пользователя о потенциальной опасности и требует подтверждения.

Ограничения и риски

Установка APK-файлов из непроверенных источников сопряжена с рядом рисков:

  • Вредоносное ПО — злоумышленники могут модифицировать APK-файл, добавив в него вредоносный код (трояны, шпионское ПО, рекламное ПО). Примеры: Joker, Agent Smith, Fleckpe.
  • Нарушение авторских прав — распространение пиратских версий платных приложений в виде APK-файлов является незаконным.
  • Несовместимость — APK-файл, собранный для одной версии Android или архитектуры процессора, может не работать на других устройствах.
  • Отсутствие обновлений — приложения, установленные из сторонних источников, не получают автоматических обновлений через Google Play.

Android App Bundle (AAB)

В 2018 году Google представила Android App Bundle (AAB) — новый формат публикации приложений, который с августа 2021 года стал обязательным для всех новых приложений, публикуемых в Google Play. AAB-файл не является устанавливаемым пакетом — он содержит все возможные ресурсы и код, а Google Play при загрузке на устройство генерирует оптимизированный APK-файл, содержащий только необходимые компоненты (например, ресурсы для конкретного языка и архитектуры процессора). Это позволяет уменьшить размер устанавливаемого приложения на 15–20% в среднем.

Несмотря на переход на AAB, формат APK остаётся основным для установки приложений вне Google Play, а также для тестирования и отладки разработчиками.

Инструменты для работы с APK

Для анализа, модификации и создания APK-файлов существуют различные инструменты:

  • APKTool — утилита для декомпиляции и сборки APK-файлов, позволяющая извлекать ресурсы, манифест и код в формате smali.
  • JADX — декомпилятор, преобразующий DEX-код в читаемый Java-код.
  • Android Studio — официальная среда разработки, которая автоматически собирает APK-файлы для отладки и публикации.
  • APK Analyzer — встроенный в Android Studio инструмент для анализа содержимого APK-файла (размер, ресурсы, зависимости).
  • SignApk — утилита для подписания APK-файлов с использованием ключей разработчика.

Правовой статус в России

В Российской Федерации распространение и установка APK-файлов не регулируется отдельными нормативными актами, однако подпадает под общие законы об авторском праве, защите информации и противодействии киберпреступности. Установка приложений из непроверенных источников может быть ограничена на уровне операционной системы или политикой безопасности организации. Распространение пиратских APK-файлов является нарушением авторских прав и преследуется по закону.

Источники

  1. Android Developers Documentation. «Application Fundamentals». Google.
  2. Android Developers Documentation. «APK Signature Scheme v2». Google.
  3. Android Developers Documentation. «Android App Bundle». Google.
  4. «Android Security: A Survey of Techniques and Tools». Journal of Computer Security, 2020.
  5. «Analysis of Android Malware Distribution via APK Files». IEEE Transactions on Information Forensics and Security, 2021.
  6. Федеральный закон «Об информации, информационных технологиях и о защите информации» от 27.07.2006 № 149-ФЗ.
  7. Уголовный кодекс Российской Федерации, статья 146 «Нарушение авторских и смежных прав».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →