понедељак, 4 августа, 2025
Мобилни кутак

АПК

Аутор: Златан Васовић

APK је скраћеница од Android Package fileAndroid пакет… али не поштански, већ са програмом који (не)желите да инсталирате…

Најједноставније речено, APK датотеке су ZIP file форматирани пакети базирани на JAR (Java ARchive) формату са ознаком .apk на крају. Ово не чуди, јер је Android програмиран у Java-и. MIME type (Internet media type – Интернет медија тип) ове архиве је application/vnd.android.package-archive. APK садржи сав код програма (као и .dex датотеке), ресурсе, средства, сертификате и манифест датотеку.

Садржај пакета

APK датотека обично садржи следеће директоријуме:

  • META-INF директоријум:

MANIFEST.MF: Манифест датотека
CERT.RSA: сертификат програма – RSA формат PKCS#1
CERT.SF: листа ресурса и SHA-1 преглед; на пример:

[code] Signature-Version: 0.2
Created-By: 0.2 (Android)
SHA1-Digest-Manifest: wxqnEAI0UA5nOhu78CGMwjkGGWE=

Name: res/layout/exchange_component_back_bottom.xml
SHA1-Digest: eACjMjESj77hg0cBFTZ0nqWrt7w=

Name: res/drawable-hdpi/icon.png
SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW7XgCA=\\[/code]

  • lib: директоријум који садржи компајлирани код који је специфичан за процесор програмског слоја; подељен је у више директорујума у оквиру њега:

armeabi: компајлирани код само за све arm базиране процесоре
armeabi-v7a: компајлирани код само за све armv7 и јаче процесоре
x86: компајлирани код само за x86 процесоре
mips: компајлирани код само за mips процесоре

  • res: директоријум који садржи ресурсе који нису компајлирани у resources.arsc (видите доле)
  • AndroidManifest.xml: додатна Android манифест датотека која описује име, верзију, права приступа и референциране датотеке библиотека апликације; може бити у Android бинарном (Binary) XML-у који може бити конвертован у XML текст читљив човеку уз помоћ алата као што су apktool, Androguard, AXMLPrinter2
  • classes.dex: class-ови компајлирани у dex формату датотека разумљив Dalvik виртуелној машини
  • resources.arsc: датотека која садржи унапред компајлиране ресурсе, као што је бинарни XML на пример.

Неки пакети садрже и додатне датотеке и директоријуме који се највише могу приметити у пакетима сложенијих програма (нa пример неки web shop, продавница програма и слично).

Инсталирање

APK датотеке се могу добавити на два начина: преузимањем са интернета и преузимањем са Play Store-а. Инсталери програма су управо APK Installer (део система) и Play Store кога нећете наћи на свим уређајима на којима се извршава Android.

Пример процеса инсталације: преузимање програма са интернета → програм је преузет → отварање пакета → приказ захтева програма → потврда инсталације → инсталирање уз помоћ APK Installer-а → инсталирање је завршено и можете покренути програм.

Дали смо пример за APK Installer зато што је таква инсталација потпунија. Play Store процес инсталације делом сакрива али се 90% тог процеса може приметити. Праћење процеса до краја у потпуности је врло битно да бисте одмах открили грешку (bug) приликом инсталације и брзо је решили.

Сличности са осталим пакетима

APK по својој садржини подсећа на инсталационе пакете desktop оперативних система (RPM, DEB…). Највише сличности има баш са инсталационим пакетима за линукс као што су малопре споменути RPM и DEB због компајлирања, идентификације и слично. Има и сличности са TAR.xx (нпр. TAR.GZ) односно TAR.x (на пример TAR.Z) пакетима у којима није могуће паковати корисничке датотеке (слике, документа, музика…) са телефона/таблета, већ искључиво системске (конфигурационе, boot и сличне датотеке).

Идентификација уз помоћ RSA кључева је такође примењена на desktop линукс дистрибуцијама.

Највише сличности има са ZIP и JAR форматима од којих је настао. Ипак, највећи недостатак APK-а, а и самог Androidа као оперативног система, јесте недостатак више формата за паковање корисничких датотека где је ZIP тренутно подразумеван. На линукс дистрибуцијама за desktop је ово сређено са форматима из TAR и BZIP фамилија.