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