APK: ce este, structura fișierului și principiul de funcționare

Autor: IT Sectr Publicat: 2026-04-15 Timp de citire: 8 min

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 — formatul pachetului de instalare Android bazat pe ZIP cu bytecod DEX și resurse.
  • Structura include manifestul, fișierele DEX, resursele, bibliotecile de cod nativ și certificatele.
  • Semnătura — element obligatoriu: APK nesemnat nu se instalează pe dispozitive.
  • Construirea are loc prin Gradle: de la Java/Kotlin la bytecod DEX comprimat.
  • Magazinele terțe și instalarea directă APK rămân utilizate în afara Google Play.

Ce este APK și pentru ce se utilizează

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.

Istoria formatului

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.

Domenii de aplicare

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ă a fișierului APK

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/directorDestinație
AndroidManifest.xmlManifestul aplicației: permisiuni, componente, versiune SDK
classes.dexBytecod DEX compilat (pot fi mai multe fișiere)
resources.arscResurse 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

AndroidManifest.xml

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.

Fișierele DEX

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.

Bibliotecile native

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.

Procesul de construire APK prin Gradle

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.

Etapele construirii

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ă.

kotlin
// 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 și reducerea dimensiunii

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.

Semnarea APK: schemele v1, v2, v3 și v4

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.

Evoluția schemelor de semnare

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.

Procesul de semnare prin Gradle

Î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 pe dispozitivul Android

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.

Instalarea prin ADB

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.

Securitatea instalării

Î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.

APK Expansion Files (OBB)

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).

kotlin
// Verificarea versiunii APK prin PackageManager
val pm = packageManager
val info = pm.getPackageInfo(
    "com.example.app",
    PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Versiune: ${info.versionName}")

Optimizarea dex2oat

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.

APK vs AAB: ce format să alegem

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.

ParametruAPKAAB
Dimensiune descărcareArhivă completăDoar componentele necesare
Instalare directăDaNu (generare APK)
DistribuireOrice canalGoogle Play
Control versiuniVersiunea în manifestDynamic Delivery
PublicareGoogle Play + terțeGoogle 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.

Probleme tipice cu APK și soluțiile lor

Dezvoltătorii întâmpină regulat probleme la construirea și instalarea APK. Majoritatea sunt legate de incompatibilitatea versiunilor, semnătură sau structura arhivei.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

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.

Depășirea limitei de metode (65K)

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.

APK de dimensiune prea mare

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%.

Decompilarea APK și securitatea

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.

Analiza APK prin instrumente

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

Se poate deschide APK ca o arhivă ZIP obișnuită?

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.

Cu ce diferă APK de XAPK?

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.

Trebuie semnat APK pentru testare?

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.

Cum se reduce dimensiunea APK?

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.

Se poate modifica APK după publicare?

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

  • APK — formatul pachetului de instalare Android bazat pe ZIP cu semnătură digitală obligatorie.
  • Structura include manifest, bytecod DEX, resurse, biblioteci native și certificate.
  • Construirea se realizează prin Gradle cu compilare în DEX prin instrumentul d8.
  • Semnătura este obligatorie: schemele v1, v2, v3 și v4 asigură diferite niveluri de protecție.
  • Instalarea este posibilă prin Google Play, ADB, browser și magazine corporative.
  • AAB înlocuiește APK în Google Play, dar APK rămâne standardul pentru distribuirea externă.
  • Limitări: 150 MB pentru Google Play, 64K metode fără multidex, semnătură obligatorie.

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.

Discutați proiectul

Citiți și