Interested Article - Android application package

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

Файлы APK могут быть сгенерированы и подписаны из Android App Bundle .

Обзор

APK аналогичен другим пакетам приложений, таким как APPX в Microsoft Windows или Deb в операционных системах, основанных на Debian. Чтобы создать APK файл, программа для Android сперва компилируется с помощью инструментов, таких как Android Studio или Visual Studio, а затем все её части упаковываются в один контейнерный файл. APK содержит весь скомпонованный программный код (например, файлы .dex ), а так же ресурсы, активы, сертификаты и файл манифеста. Как и в случае со многими файловыми форматами, файлы APK могут иметь любое выбранное имя, но, для распознавания файла как приложения для андроид, может понадобиться указание расширения файла .

Большинство реализаций безопасности Android позволяют пользователям вручную устанавливать файлы APK только после того, как они включили параметр «Неизвестные источники», который разрешает установку из источников, отличных от надёжных, наподобие Google Play . Это сделано для предотвращения неопытных пользователей от различных классов шпионских и троянских программ , которые маскируются под легитимные приложения. Включение функции установки из неизвестных источников можно сделать по многим причинам, например, во время разработки приложений, чтобы установить приложения, которых нет в магазине, или установить более старую версию существующего приложения .

Использование в других операционных системах

На мероприятии во время анонса Windows 11 в июне 2021 года, Microsoft продемонстрировала новую подсистему Windows для Android ( Windows Subsystem for Android, WSA ), которая реализует поддержку Android Open Source Project (AOSP) и позволит пользователям запускать Android приложения в Windows. Microsoft подтвердила, что пользователи смогут загружать sideload-приложения Android (не имеющие официального выпуска), а также устанавливать их .

Содержание упакованного приложения

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 : директория, содержащая скомпилированный код, зависимый от платформы; lib разделён на несколько субдиректорий:
    • armeabi-v7a : скомпилированный код только для всех процессоров на базе ARMv7 и выше
    • arm64-v8a : скомпилированный код только для всех процессоров на базе ARMv8 arm64 и выше
    • x86 : скомпилированный код только для процессоров x86
    • x86_64 : скомпилированный код только для процессоров x86-64
    • mips и armeabi устарели с версии 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.

Примечания

  1. (англ.) . Android Developers . Дата обращения: 3 декабря 2018. 21 ноября 2020 года.
  2. Peters. (англ.) . The Verge (30 июня 2021). Дата обращения: 15 августа 2021. 4 августа 2021 года.
  3. (англ.) . Android Developers . Дата обращения: 11 сентября 2021. 12 сентября 2021 года.
  4. (video). Google Sites . Дата обращения: 11 сентября 2021. 24 декабря 2011 года.
  5. Hatem Ben Yacoub. . Open Ha Magazine (20 апреля 2018). Дата обращения: 17 июля 2021. Архивировано из 26 мая 2012 года.
  6. . OPhone SDN . OPhone Software Developer Network (17 ноября 2010). Архивировано из 8 февраля 2011 года.
  7. Android Central (27 июля 2018). Дата обращения: 11 сентября 2021. 1 сентября 2021 года.
  8. Parmar. . Windows Latest (27 июня 2021). Дата обращения: 28 июня 2021. 27 июня 2021 года.
  9. . developer.android.com . Дата обращения: 16 июня 2018. 31 мая 2019 года.
  10. (англ.) . 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. (англ.) . 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 года.
Источник —

Same as Android application package