APK
Изображение логотипа
Расширение .apk, .apks, .aab, .xapk, .apkm, .akp
MIME-тип application/vnd.android.package-archive
Разработчик Google
Тип формата система управления пакетами, архив
Содержится в 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
Изображение логотипа
Расширение .aab
MIME-тип application/vnd.android.package-archive[12]
Разработчик Google
Тип формата Упакованное приложение
Содержится в Android
Расширен из .apk

По сути его развитие в Android App Bundle (рус. Связка Android Приложений) не изменило APK — это всё тот же APK, но только со всем необходимым пользователю и устройству:

Единственное место где используется AAB, это Google Play. Если пользователь изменит язык, то со стороны сервера потребуются дополнительные ресурсы для скачивания. И как можно понять из этого всего AAB нужен, чтобы сэкономить место в памяти и трафик, ведь ненужные инструкции процессора и размеры интерфейса не будут использованы в принципе, но память всё равно занимают.

Без AAB, APK может поддерживать несколько иностранных языков, до четырёх разных архитектур процессора и несколько разрешений экрана.

См. также

править

Примечания

править
  1. 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.
  2. How to install Cx File Explorer on Android or Windows PC (амер. англ.). CX File Explorer Apk Download. Дата обращения: 2 сентября 2022. Архивировано 2 сентября 2022 года.
  3. How to Avoid Android Malware and Other Android Security Threats (англ.). How-to Geek. 18 марта 2013. Архивировано 2 сентября 2016. Дата обращения: 9 сентября 2016.
  4. Protect your Android device from malware (англ.). CNET. 25 июня 2014. Архивировано 29 августа 2016. Дата обращения: 9 сентября 2016. Pirated apps.
  5. Application Studio (англ.). Android Developers. Дата обращения: 11 сентября 2021. Архивировано 12 сентября 2021 года.
  6. Hatem Ben Yacoub. Tips: How to install apk files on Android Emulator. Open Ha Magazine (20 апреля 2018). Дата обращения: 17 июля 2021. Архивировано из оригинала 26 мая 2012 года.
  7. Inside the Android Application Framework (video). Google Sites. Дата обращения: 11 сентября 2021. Архивировано 24 декабря 2011 года.
  8. The Structure of Android Package (APK) Files. OPhone SDN. OPhone Software Developer Network (17 ноября 2010). Архивировано из оригинала 8 февраля 2011 года.
  9. ABI Management | Android Developers. developer.android.com. Дата обращения: 16 июня 2018. Архивировано 31 мая 2019 года.
  10. 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 года.
  11. 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 года.
  12. TrID — 2003.

Литература

править

📚 Artikel Terkait di Wikipedia

Raven Software

Raven Software — американская компания, разработчик компьютерных игр, расположенная в Мэдисоне (Висконсин). Компания была основана в 1990 году братьями

Avalanche Software

Lake game developer (англ.). Deseret News (20 апреля 2005). Дата обращения: 4 февраля 2023. Архивировано 26 сентября 2020 года. Avalanche Software Biography (англ

Список поглощений Electronic Arts

года. Business Wire. Electronic Arts to acquire leading European software developer, Bullfrog Productions Ltd.  AllBusiness (6 января 1995). Дата обращения:

Mozilla Firefox

о разработке версии браузера для разработчиков англ. Mozilla Firefox Developer Edition, официальный релиз которой должен состояться 10 ноября. Тем самым

Gearbox Software

года. Yahoo Staff. Take-Two Interactive Software, Inc. to Acquire The Gearbox Entertainment Company Inc., Developer of Highly Successful Borderlands Franchise (англ

CSDN

Китайская Сеть Разработчиков (англ. Chinese Software Developer Network, China Software Developer Network, CSDN) — сеть Байлина Мидами (англ. Bailian Midami)

Opera

компанией Opera Software. Разработан в 1994 году группой исследователей из норвежской компании Telenor. С 1995 года — продукт компании Opera Software, образованной

Euro Truck Simulator 2

экономической стратегии. Разработана и выпущена чешской компанией SCS Software в 2012 году. Часть серии игр Truck Simulator. Разработчики постарались