APK (Android Package Kit) este un format de fișier arhivă utilizat pentru distribuirea și instalarea aplicațiilor pe Android. Fiecare aplicație pe care utilizatorul o descarcă din Google Play sau o instalează manual este un fișier APK. Potrivit Android Open Source Project, 2026, formatul se bazează pe standardul ZIP și conține cod compilat, resurse, manifest și semnătură digitală.
Principalele puncte
APK (Android Package Kit) este un format de arhivă în care este ambalată aplicația Android pentru distribuire. Tehnic, APK este o arhivă ZIP cu o structură definită, care conține toate componentele necesare pentru funcționarea aplicației pe dispozitiv.
Formatul APK a apărut odată cu prima versiune a Android în 2008. Ca bază a fost luat standardul JAR (Java Archive), care, la rândul său, se bazează pe ZIP. Această moștenire a asigurat compatibilitatea cu instrumentele existente de lucru cu arhivele — orice arhivator deschide APK ca pe un ZIP obișnuit.
Google Play — canalul principal de distribuire a APK, dar formatul este utilizat și în alte scenarii: instalare directă prin browser (sideloading), magazine de aplicații corporative, testare pe dispozitive de dezvoltare și instalare în emulatoare. Potrivit Statista, aproximativ 15% din instalările de aplicații Android în 2025 au loc în afara Google Play.
Structura internă APK este strict reglementată: fiecare aplicație trebuie să conțină anumite fișiere și directoare. Încălcarea structurii duce la o eroare de instalare.
| Fișier/director | Destinație |
|---|---|
| AndroidManifest.xml | Manifestul aplicației: permisiuni, componente, versiune SDK |
| classes.dex | Bytecod DEX compilat (pot fi mai multe fișiere) |
| resources.arsc | Resurse compilate: șiruri, stiluri, layout-uri |
| res/ | Resurse necompilate: imagini, fonturi, XML |
| lib/ | Biblioteci native (.so) pentru diferite arhitecturi CPU |
| META-INF/ | Metadata: certificate, liste de fișiere, hash-uri |
Manifestul — fișierul central de configurare al aplicației. În formă binară compilată (nu în XML citibil) conține numele pachetului, versiunea, lista de activități, servicii, permisiuni și cerințe SDK. Fără manifest, sistemul nu știe cum să ruleze aplicația.
Codul sursă în Java sau Kotlin este compilat în fișiere DEX (Dalvik Executable). Fișierul principal se numește classes.dex. Dacă bytecodul depășește limita de 64K metode, se creează classes2.dex, classes3.dex și așa mai departe — mecanismul multidex.
Directorul lib/ conține biblioteci C/C++ compilate pentru diferite arhitecturi: armeabi-v7a, arm64-v8a, x86, x86_64. Fiecare bibliotecă are extensia .so (Shared Object). Aplicațiile moderne livrează de obicei doar arm64-v8a.
Construirea APK este un proces în mai multe etape, automatizat de sistemul de build Gradle și Android Gradle Plugin. Fiecare etapă transformă fișierele sursă în componente ale arhivei finale.
Codul sursă este compilat în bytecod Java (.class), apoi convertit în DEX prin instrumentul d8 (anterior dx). Resursele sunt compilate în format binar prin AAPT2. Toate componentele sunt ambalate într-o arhivă ZIP și semnate cu semnătură digitală.
// build.gradle.kts — configurarea de bază a construirii APK
android {
defaultConfig {
applicationId = "com.example.app"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt")
)
}
}
}
ProGuard sau R8 ofuscarează codul, elimină clasele și metodele neutilizate, reducând dimensiunea APK. Fără ofuscare, APK conține nume complete de clase, ceea ce simplifică decompilarea. R8 efectuează și optimizarea bytecodului la nivel DEX.
Semnătura digitală este un element obligatoriu al APK. Android nu instalează pachete nesemnate. Semnătura garantează că aplicația nu a fost modificată după publicare și determină cui îi aparține pachetul.
v1 (JAR signing) — schema originală bazată pe semnarea fiecărui fișier din arhivă. Vulnerabilitate: se pot șterge fișiere din META-INF fără detectare. v2 (APK Signature Scheme v2) a apărut în Android 7.0 — se semnează întreaga arhivă, ceea ce previne modificarea. v3 suportă rotația cheilor, iar v4 — instalarea incrementală.
Google Play necesită v2 sau mai mare pentru toate aplicațiile noi din august 2021. Se recomandă semnarea APK cu toate cele trei scheme pentru compatibilitate maximă cu diferite versiuni de Android.
În build.gradle se specifică keystore, parola și aliasul. Cheia privată este stocată într-un depozit criptat. Pentru publicarea în Google Play se utilizează App Signing — Google stochează cheia privată, iar dezvoltătorul încarcă APK-ul semnat.
Instalarea APK se realizează prin managerul de pachete de sistem PackageManager. Procesul include verificarea semnăturii, parsarea manifestului, copierea fișierelor și optimizarea DEX prin dex2oat.
Instrumentul ADB (Android Debug Bridge) permite instalarea APK direct de pe computerul dezvoltătorului. Comanda `adb install app.apk` copiază fișierul pe dispozitiv și pornește instalarea. Flag-ul -r reinstalează aplicația păstrând datele, flag-ul -d permite instalarea unei versiuni cu versionCode mai mic.
Începând cu Android 8.0, sistemul necesită confirmarea instalării din surse necunoscute pentru fiecare aplicație în parte. Android 14 a întărit controlul: instalarea APK prin magazine terțe este posibilă numai după permisiunea explicită în setări. Google Play Protect scanează fiecare APK la instalare pentru cod malițios.
Pentru aplicațiile mai mari de 150 MB, Google Play suportă Expansion Files — pachete OBB suplimentare de până la 2 GB fiecare. Fișierele OBB nu fac parte din APK, ci se descarcă separat după instalare. Formatul suportă două tipuri: main (resurse de bază) și patch (actualizări).
// Verificarea versiunii APK prin PackageManager
val pm = packageManager
val info = pm.getPackageInfo(
"com.example.app",
PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Versiune: ${info.versionName}")
Pe dispozitivele cu ART (Android Runtime) după instalare se lansează compilarea DEX în cod nativ prin dex2oat. Procesul poate dura câteva secunde și mărește dimensiunea aplicației instalate, dar accelerează lansarea acesteia.
AAB (Android App Bundle) — formatul promovat de Google ca alternativă la APK pentru publicarea în Google Play. Diferența este fundamentală: AAB nu se instalează direct, ci servește ca un container din care Google Play generează APK-uri optimizate.
| Parametru | APK | AAB |
|---|---|---|
| Dimensiune descărcare | Arhivă completă | Doar componentele necesare |
| Instalare directă | Da | Nu (generare APK) |
| Distribuire | Orice canal | Google Play |
| Control versiuni | Versiunea în manifest | Dynamic Delivery |
| Publicare | Google Play + terțe | Google Play |
Google Play necesită AAB din august 2021 pentru aplicațiile noi. Cu toate acestea, APK rămâne formatul principal pentru distribuirea în afara Google Play — prin site-uri web, magazine corporative și testare.
Dezvoltătorii întâmpină regulat probleme la construirea și instalarea APK. Majoritatea sunt legate de incompatibilitatea versiunilor, semnătură sau structura arhivei.
Eroarea apare la încercarea de a instala un APK cu același nume de pachet, dar cu o altă semnătură. Android nu permite reinstalarea aplicației cu certificat modificat. Soluția — ștergeți versiunea veche înainte de instalare.
Dacă proiectul depășește limita de 65536 metode, construirea eșuează cu eroare dex. Soluția — activați multidex în build.gradle sau optimizați dependențele eliminând bibliotecile neutilizate.
Google Play limitează dimensiunea APK la 150 MB. Pentru aplicații mai mari se utilizează APK Expansion Files (OBB). Se recomandă reducerea dimensiunii prin R8, imagini WebP și Android App Bundle. Fiecare megabyte suplimentar afectează negativ conversia instalării: conform Google, fiecare 10 MB reduc conversia cu 1%.
APK poate fi decompilat cu ajutorul instrumentelor JADX, APKTool sau Bytecode Viewer. JADX recuperează codul Java original din DEX, ceea ce face aplicațiile fără ofuscare complet lizibile. Pentru protejarea codului se utilizează ProGuard/R8, care redenumește clasele, metodele și câmpurile în nume scurte ilizibile și elimină informațiile de debug.
Pentru analiza conținutului APK se utilizează Android Studio Profiler, apkanalyzer (instrument CLI din Android SDK) și utilitare terțe. apkanalyzer arată dimensiunea fiecărui component APK: DEX, resurse, biblioteci native și semnătură. Analiza ajută la identificarea dependențelor care ocupă cel mai mult spațiu și la luarea deciziei de înlocuire sau eliminare a acestora.
Întrebări frecvente
Da, orice arhivator (7-Zip, WinRAR) deschide APK ca ZIP. Se poate vizualiza conținutul, dar pentru decompilarea codului sunt necesare instrumente speciale — JADX sau apktool.
XAPK — un format neoficial utilizat de unele magazine terțe. Combină APK cu fișiere OBB suplimentare într-o singură arhivă. Google Play și documentația oficială Android nu utilizează XAPK.
Android Studio semnează automat compilarea de debug cu debug.keystore la lansarea pe dispozitiv. Pentru distribuirea versiunii de test echipei este necesară semnarea cu cheia de release sau utilizarea App Signing.
Utilizați R8 pentru ofuscare și minimizare, convertiți imaginile în WebP, eliminați resursele neutilizate prin Lint, iar pentru proiecte mari treceți la Android App Bundle cu Dynamic Delivery.
Nu — orice modificare a APK după semnare strică semnătura digitală. Pentru actualizare trebuie construită și semnată o nouă versiune cu versionCode mărit.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și