četvrtak, 18 aprila, 2024
Mobilni kutak

APK

Autor: Zlatan Vasović

APK je skraćenica od Android Package fileAndroid paket… ali ne poštanski, već sa programom koji (ne)želite da instalirate…

Najjednostavnije rečeno, APK datoteke su ZIP file formatirani paketi bazirani na JAR (Java ARchive) formatu sa oznakom .apk na kraju. Ovo ne čudi, jer je Android programiran u Java-i. MIME type (Internet media type – Internet medija tip) ove arhive je application/vnd.android.package-archive. APK sadrži sav kod programa (kao i .dex datoteke), resurse, sredstva, sertifikate i manifest datoteku.

Sadržaj paketa

APK datoteka obično sadrži sledeće direktorijume:

  • META-INF direktorijum:

MANIFEST.MF:Manifest datoteka
CERT.RSA: sertifikat programa – RSA format PKCS#1
CERT.SF: lista resursa i SHA-1 pregled; na primer:

[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: direktorijum koji sadrži kompajlirani kod koji je specifičan za procesor programskog sloja; podeljen je u više direktorujuma u okviru njega:

armeabi: kompajlirani kod samo za sve arm bazirane procesore
armeabi-v7a: kompajlirani kod samo za sve armv7 i jače procesore
x86: kompajlirani kod samo za x86 procesore
mips: kompajlirani kod samo za mips procesore

  • res: direktorijum koji sadrži resurse koji nisu kompajlirani u resources.arsc (vidite dole)
  • AndroidManifest.xml: dodatna Androidmanifest datoteka koja opisuje ime, verziju, prava pristupa i referencirane datoteke biblioteka aplikacije; može biti u Android binarnom (Binary) XML-u koji može biti konvertovan u XML tekst čitljiv čoveku uz pomoć alata kao što su apktool, Androguard, AXMLPrinter2
  • classes.dex:class-ovi kompajlirani u dex formatu datoteka razumljiv Dalvik virtuelnoj mašini
  • resources.arsc: datoteka koja sadrži unapred kompajlirane resurse, kao što je binarni XML na primer.

Neki paketi sadrže i dodatne datoteke i direktorijume koji se najviše mogu primetiti u paketima složenijih programa (na primer neki web shop, prodavnica programa i slično).

Instaliranje

APK datoteke se mogu dobaviti na dva načina: preuzimanjem sa interneta i preuzimanjem sa Play Store-a. Instaleri programa su upravo APK Installer (deo sistema) i Play Store koga nećete naći na svim uređajima na kojima se izvršava Android.

Primer procesa instalacije: preuzimanje programa sa interneta → program je preuzet → otvaranje paketa → prikaz zahteva programa → potvrda instalacije → instaliranje uz pomoć APK Installer-a → instaliranje je završeno i možete pokrenuti program.

Dali smo primer za APK Installer zato što je takva instalacija potpunija. Play Store proces instalacije delom sakriva ali se 90% tog procesa može primetiti. Praćenje procesa do kraja u potpunosti je vrlo bitno da biste odmah otkrili grešku (bug) prilikom instalacije i brzo je rešili.

Sličnosti sa ostalim paketima

APK po svojoj sadržini podseća na instalacione pakete desktop operativnih sistema (RPM, DEB…). Najviše sličnosti ima baš sa instalacionim paketima za linuks kao što su malopre spomenuti RPM i DEB zbog kompajliranja, identifikacije i slično. Ima i sličnosti sa TAR.xx (npr. TAR.GZ) odnosno TAR.x (na primer TAR.Z) paketima u kojima nije moguće pakovati korisničke datoteke (slike, dokumenta, muzika…) sa telefona/tableta, već isključivo sistemske (konfiguracione, boot i slične datoteke).

Identifikacija uz pomoć RSA ključeva je takođe primenjena na desktop linuks distribucijama.

Najviše sličnosti ima sa ZIP i JAR formatima od kojih je nastao. Ipak, najveći nedostatak APK-a, a i samog Androida kao operativnog sistema, jeste nedostatak više formata za pakovanje korisničkih datoteka gde je ZIP trenutno podrazumevan. Na linuks distribucijama za desktop je ovo sređeno sa formatima iz TAR i BZIP familija.