APK
| APK | |
|---|---|
|   | |
|   | |
|  | |
| Расширение | .apk, .apks, .aab, .xapk, .apkm, .akp | 
| MIME-тип | application/vnd.android.package-archive | 
| Разработчик | |
| Тип формата | система управления пакетами, архив | 
| Содержится в | Android | 
| Расширен из | JAR | 
| Развит в | .aab | 
APK (англ. Android Package Kit, рус. Пакет Инструментов Android)[1] — формат архивных исполняемых файлов-приложений для Android. Каждое приложение Android скомпилировано и упаковано в один файл, который включает в себя весь код приложения (.DEX-файлы), ресурсы, активы (assets), файл манифеста AndroidManifest.xml и нативные библиотеки (jniLibs). Файл приложения может иметь любое имя, но расширение должно быть .APK, например myAppFile.apk.
Файлы с данным расширением хранятся в магазинах приложений (например, Google Play, Huawei AppGallery, F-Droid, Amazon Appstore и тд.) и загружаются с его помощью в устройство для их использования или устанавливаются пользователем вручную.
Файлы этого формата не шифруются, являются подмножеством формата архива ZIP.
Каждый .APK‑файл — это сжатый архив для исполнения в виртуальной машине Dalvik (до Android 4.4-5) или ART (от Android 4.4-5) который может быть установлен только на операционной системе Android.
Установка APK-файлов[2] из «сторонних» источников может представлять определённый риск - множество сайтов бесплатно распространяют изменённые версии популярных приложений и игр, в некоторые из них могут быть добавлены вредоносные функции, такие как: отправка платных SMS, воровство данных, шифрование устройства, слежка и т.д.[3][4]
Создание
[править | править код]APK аналогичен другим пакетам приложений, таким как APPX в Microsoft Windows или Deb в Debian. Чтобы создать APK файл, программа для Android сперва компилируется с помощью инструментов, таких как Android Studio[5] или Visual Studio, а затем все её части упаковываются в один контейнерный файл. APK содержит весь скомпонованный программный код (например, файлы .dex), а также ресурсы, активы, сертификаты и файл манифеста[6]. Как и в случае со многими файловыми форматами, файлы APK могут иметь любое выбранное имя, но, для распознавания файла как приложения для андроид, может понадобиться указание внутреннего названия этого приложения, такого как, например, в папке sdcard/android/data[7][8]. По этому пути хранятся не сильно важные для приложения данные, основные же лежат в /data/app/~~abrakadabraPrilozhenia==/имя_файла-novayaAbrakadabra==
Содержание файла
[править | править код]APK файл — ZIP-архив, который обычно содержит следующие файлы и директории:
- Директория META-INF:- MANIFEST.MF: файл манифеста
- Сертификат приложения.
- CERT.SF: Список ресурсов и подпись SHA-1 соответствующих строк в MANIFEST.MF, например:- Signature-Version: 1.0 Created-By: 1.0 (Android) SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE= ... Name: res/layout/exchange_component_back_bottom.xml SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w= Name: res/drawable-hdpi/icon.png SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA= 
 
- lib: директория, содержащая скомпилированный код, зависимый от платформы, и разделена на несколько поддиректорий[9]:- arm64-v8a: скомпилированный код для процессоров на архитектуре ARMv8
- armeabi-v7a: скомпилированный код для процессоров на архитектуре ARMv7
- x86_64: скомпилированный код для процессоров на архитектуре x86-64/amd64
- x86: скомпилированный код для процессоров на архитектуре x86/i386
- armeabi: скомпилированный код для процессоров на архитектуре ARMv5 (устарел с NDK r17[10][11])
- mips: скомпилированный код для процессоров на архитектуре MIPS (устарел с NDK r17)
 
- res: директория, содержащая ресурсы, не скомпилированные в resources.arsc (см. ниже).
- assets: директория, содержащая активы приложений, которые могут быть извлечены с помощью- AssetManager.
- AndroidManifest.xml: дополнительный файл манифеста Android, описывающий имя, версию, права доступа и библиотеки приложения. Этот файл может быть в двоичном формате XML Android, который может быть преобразован в удобочитаемый текст XML с помощью таких инструментов как AXMLPrinter2, APKtool или Androguard.
- classes.dex: классы, скомпилированные в формате файла dalvik executable, понятном виртуальной машине Dalvik и среде выполнения Android .
- resources.arsc: файл, содержащий предварительно скомпилированные ресурсы, например двоичный XML.
AAB
[править | править код]| Android App Bundle | |
|---|---|
|   | |
|   | |
|  | |
| Расширение | . | 
| MIME-тип | application/vnd.android.package-archive[12] | 
| Разработчик | |
| Тип формата | Упакованное приложение | 
| Содержится в | Android | 
| Расширен из | .apk | 
По сути его развитие в Android App Bundle (рус. Связка Android Приложений) не изменило APK — это всё тот же APK, но только со всем необходимым пользователю и устройству:
- Язык (русский, английский)
- Размер интерфейса и разрешение экрана
- Набор инструкций процессора (arm64-v8a, x86-64)
Единственное место где используется AAB, это Google Play. Если пользователь изменит язык, то со стороны сервера потребуются дополнительные ресурсы для скачивания. И как можно понять из этого всего AAB нужен, чтобы сэкономить место в памяти и трафик, ведь ненужные инструкции процессора и размеры интерфейса не будут использованы в принципе, но память всё равно занимают.
Без AAB, APK может поддерживать несколько иностранных языков, до четырёх разных архитектур процессора и несколько разрешений экрана.
См. также
[править | править код]- Alpine Linux
- Fuchsia
- Windows 11
Примечания
[править | править код]- ↑ James Stevenson. Application Names, Android Package Name, and ID // Android Software Internals Quick Reference. — Berkeley, CA: Apress, 2021. — С. 51–60. — ISBN 978-1-4842-6913-8.
- ↑ How to install Cx File Explorer on Android or Windows PC (амер. англ.). CX File Explorer Apk Download. Дата обращения: 2 сентября 2022. Архивировано 2 сентября 2022 года.
- ↑ How to Avoid Android Malware and Other Android Security Threats (англ.). How-to Geek. 18 марта 2013. Архивировано 2 сентября 2016. Дата обращения: 9 сентября 2016.
- ↑ Protect your Android device from malware (англ.). CNET. 25 июня 2014. Архивировано 29 августа 2016. Дата обращения: 9 сентября 2016. Pirated apps 
- ↑ Application Studio (англ.). Android Developers. Дата обращения: 11 сентября 2021. Архивировано 12 сентября 2021 года.
- ↑ Hatem Ben Yacoub. Tips: How to install apk files on Android Emulator. Open Ha Magazine (20 апреля 2018). Дата обращения: 17 июля 2021. Архивировано из оригинала 26 мая 2012 года.
- ↑ Inside the Android Application Framework (video). Google Sites. Дата обращения: 11 сентября 2021. Архивировано 24 декабря 2011 года.
- ↑ The Structure of Android Package (APK) Files. OPhone SDN. OPhone Software Developer Network (17 ноября 2010). Архивировано из оригинала 8 февраля 2011 года.
- ↑ ABI Management | Android Developers. developer.android.com. Дата обращения: 16 июня 2018. Архивировано 31 мая 2019 года.
- ↑ Android ABIs | Android NDK (англ.). Android Developers. — «Note: Historically the NDK supported ARMv5 (armeabi), and 32-bit and 64-bit MIPS, but support for these ABIs was removed in NDK r17.» Дата обращения: 14 августа 2020. Архивировано 8 апреля 2019 года.
- ↑ Dan, Albert. Changelog r17 (англ.). GitHub (5 сентября 2018). — «Support for ARMv5 (armeabi), MIPS, and MIPS64 has been removed. Attempting to build any of these ABIs will result in an error.» Дата обращения: 14 августа 2020. Архивировано 28 августа 2020 года.
- ↑ TrID — 2003.
Литература
[править | править код]- Распорский, Максим. Как установить APK-файл на Андроид // Mr. Android. — 2020. — 16 июня.
- Grustniy, Leonid. Все приложения в Google Play безопасны: правда или миф? // Kaspersky. — 2019. — 10 июня.