APK

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.

Литература

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.