APK (Android Package Kit) ay isang format ng archive file na ginagamit para sa pamamahagi at pag-install ng mga application sa Android. Bawat application na dina-download ng user mula sa Google Play o manu-manong ini-install ay isang APK file. Ayon sa Android Open Source Project, 2026, ang format ay batay sa ZIP na pamantayan at naglalaman ng compiled code, resources, manifest at digital signature.
Mga pangunahing punto
APK (Android Package Kit) ay isang format ng archive kung saan nakabalot ang Android application para sa pamamahagi. Sa teknikal, ang APK ay isang ZIP archive na may tiyak na istraktura na naglalaman ng lahat ng mga component na kinakailangan para sa paggana ng application sa device.
Ang APK format ay lumitaw kasama ng unang bersyon ng Android noong 2008. Bilang batayan ay kinuha ang JAR (Java Archive) na pamantayan, na sa turn ay batay sa ZIP. Ang pagmamanang ito ay nagtiyak ng compatibility sa mga umiiral na tool sa pag-archive — kahit anong archiver ay nagbubukas ng APK tulad ng ordinaryong ZIP.
Google Play — pangunahing channel ng pamamahagi ng APK, ngunit ang format ay ginagamit din sa iba pang sitwasyon: direktang pag-install sa pamamagitan ng browser (sideloading), corporate application store, pag-test sa developer device at pag-install sa emulator. Ayon sa Statista, halos 15% ng pag-install ng Android application sa 2025 ay nagaganap sa labas ng Google Play.
Ang panloob na istraktura ng APK ay mahigpit na kinokontrol: bawat application ay dapat maglaman ng tiyak na mga file at directory. Ang paglabag sa istraktura ay humahantong sa error sa pag-install.
| File/directory | Layunin |
|---|---|
| AndroidManifest.xml | Manifest ng application: mga pahintulot, component, bersyon ng SDK |
| classes.dex | Compiled DEX byte-code (maaaring maraming file) |
| resources.arsc | Compiled resources: strings, style, layout |
| res/ | Hindi compiled resources: mga larawan, font, XML |
| lib/ | Native library (.so) para sa iba't ibang CPU architecture |
| META-INF/ | Metadata: certificate, listahan ng file, hash |
Ang manifest ay ang sentral na configuration file ng application. Sa binary compiled form (hindi sa nababasang XML) naglalaman ito ng package name, version, listahan ng activities, services, permissions at SDK requirements. Kung walang manifest, hindi alam ng system kung paano patakbuhin ang application.
Ang source code sa Java o Kotlin ay compiled sa DEX (Dalvik Executable) file. Ang pangunahing file ay tinatawag na classes.dex. Kung ang byte-code ay lumampas sa limit na 64K methods, nilikha ang classes2.dex, classes3.dex at iba pa — ang multidex mechanism.
Ang directory na lib/ ay naglalaman ng compiled C/C++ library para sa iba't ibang architecture: armeabi-v7a, arm64-v8a, x86, x86_64. Bawat library ay may extension na .so (Shared Object). Ang mga modernong application ay karaniwang nagbibigay lamang ng arm64-v8a.
Ang pagbuo ng APK ay isang multi-stage process na awtomatiko ng build system na Gradle at Android Gradle Plugin. Bawat stage ay nagko-convert ng source file sa component ng final archive.
Ang source code ay compiled sa Java byte-code (.class), pagkatapos ay convert sa DEX sa pamamagitan ng tool na d8 (dating dx). Ang resources ay compiled sa binary format sa pamamagitan ng AAPT2. Lahat ng component ay nakabalot sa ZIP archive at pinirmahan ng digital signature.
// build.gradle.kts — base configuration ng pagbuo ng 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 o R8 ay nag-o-obfuscate ng code, nagtatanggal ng hindi ginagamit na mga class at method, binabawasan ang laki ng APK. Kung walang obfuscation, ang APK ay naglalaman ng buong pangalan ng class na nagpapadali sa decompilation. Ang R8 ay nagsasagawa rin ng byte-code optimization sa DEX level.
Ang digital signature ay sapilitang elemento ng APK. Hindi ini-install ng Android ang hindi pirma na package. Ang pirma ay ginagarantiyahan na ang application ay hindi nabago pagkatapos ng publication at tinutukoy kung kanino nabibilang ang package.
v1 (JAR signing) — orihinal na scheme batay sa pagpirma ng bawat file sa archive. Kahinaan: maaaring tanggalin ang file mula sa META-INF nang hindi natutukoy. v2 (APK Signature Scheme v2) ay lumitaw sa Android 7.0 — ang buong archive ay pinirmahan na pumipigil sa pagbabago. v3 ay sumusuporta sa key rotation, at v4 ay sumusuporta sa incremental installation.
Ang Google Play ay nangangailangan ng v2 o mas mataas para sa lahat ng bagong application mula noong Agosto 2021. Inirerekomenda na pirmahan ang APK gamit ang lahat ng tatlong scheme para sa maximum compatibility sa iba't ibang bersyon ng Android.
Sa build.gradle ay tinutukoy ang keystore, password at alias. Ang pribadong key ay naka-store sa naka-encrypt na storage. Para sa publication sa Google Play ay ginagamit ang App Signing — iniimbak ng Google ang pribadong key, at ang developer ay nag-uupload ng pinirmahang APK.
Ang pag-install ng APK ay isinasagawa sa pamamagitan ng system package manager na PackageManager. Ang proseso ay may kasamang verification ng pirma, pag-parse ng manifest, pagkopya ng file at DEX optimization sa pamamagitan ng dex2oat.
Ang tool na ADB (Android Debug Bridge) ay nagbibigay-daan sa pag-install ng APK nang direkta mula sa computer ng developer. Ang command na `adb install app.apk` ay kumokopya ng file sa device at nag-start ng installation. Ang flag na -r ay nag-reinstall ng application na pinapanatili ang data, ang flag na -d ay nagbibigay-daan sa pag-install ng bersyon na may mas mababang versionCode.
Simula sa Android 8.0, ang system ay nangangailangan ng kumpirmasyon ng pag-install mula sa hindi kilalang source para sa bawat application nang hiwalay. Android 14 ay nagpatibay ng kontrol: ang pag-install ng APK sa pamamagitan ng third-party na tindahan ay posible lamang pagkatapos ng malinaw na pahintulot sa mga setting. Ang Google Play Protect ay nag-scan ng bawat APK sa pag-install para sa malisyosong code.
Para sa application na mas malaki sa 150 MB, ang Google Play ay sumusuporta sa Expansion Files — karagdagang OBB package hanggang 2 GB bawat isa. Ang mga OBB file ay hindi bahagi ng APK, ngunit dina-download nang hiwalay pagkatapos ng pag-install. Ang format ay sumusuporta sa dalawang uri: main (base resources) at patch (mga update).
// Pagsusuri ng bersyon ng APK sa pamamagitan ng PackageManager
val pm = packageManager
val info = pm.getPackageInfo(
"com.example.app",
PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Bersyon: ${info.versionName}")
Sa mga device na may ART (Android Runtime) pagkatapos ng pag-install ay inilunsad ang compilation ng DEX sa native code sa pamamagitan ng dex2oat. Ang proseso ay maaaring tumagal ng ilang segundo at pinapataas ang laki ng naka-install na application, ngunit pinapabilis ang paglunsad nito.
AAB (Android App Bundle) — format na itinutulak ng Google bilang alternatibo sa APK para sa publication sa Google Play. Ang pagkakaiba ay pangunahing: ang AAB ay hindi direktang nai-install, ngunit nagsisilbing container kung saan ang Google Play ay gumagawa ng optimized na APK.
| Parameter | APK | AAB |
|---|---|---|
| Laki ng download | Buong archive | Tanging kinakailangang component |
| Direktang pag-install | Oo | Hindi (pag-generate ng APK) |
| Pamamahagi | Kahit anong channel | Google Play |
| Kontrol ng bersyon | Bersyon sa manifest | Dynamic Delivery |
| Publication | Google Play + third-party | Google Play |
Google Play ay nangangailangan ng AAB mula noong Agosto 2021 para sa mga bagong application. Gayunpaman, ang APK ay nananatiling pangunahing format para sa pamamahagi sa labas ng Google Play — sa pamamagitan ng mga website, corporate store at pag-test.
Ang mga developer ay regular na nakakaranas ng problema sa pagbuo at pag-install ng APK. Karamihan sa mga ito ay may kaugnayan sa incompatibility ng bersyon, pirma o istraktura ng archive.
Ang error ay nangyayari kapag sinusubukang mag-install ng APK na may parehong package name ngunit ibang pirma. Android ay hindi pinapayagan ang muling pag-install ng application na may binagong certificate. Solusyon — tanggalin ang lumang bersyon bago mag-install.
Kung ang proyekto ay lumampas sa limit na 65536 method, ang pagbuo ay nabibigo na may dex error. Solusyon — i-activate ang multidex sa build.gradle o i-optimize ang dependencies sa pamamagitan ng pag-alis ng hindi ginagamit na library.
Nililimitahan ng Google Play ang laki ng APK sa 150 MB. Para sa mas malaking application ay ginagamit ang APK Expansion Files (OBB). Inirerekomenda na bawasan ang laki sa pamamagitan ng R8, WebP na mga larawan at Android App Bundle. Bawat dagdag na megabyte ay negatibong nakakaapekto sa conversion ng pag-install: ayon sa Google, bawat 10 MB ay nagbabawas ng conversion ng 1%.
Ang APK ay maaaring i-decompile gamit ang mga tool na JADX, APKTool o Bytecode Viewer. JADX ay nag-recover ng original Java code mula sa DEX, na ginagawang ganap na nababasa ang mga application na walang obfuscation. Para sa proteksyon ng code ay ginagamit ang ProGuard/R8, na nagpapalit ng pangalan ng class, method at field sa maiikling hindi nababasang pangalan at nagtatanggal ng debug information.
Para sa pagsusuri ng nilalaman ng APK ay ginagamit ang Android Studio Profiler, apkanalyzer (CLI tool mula sa Android SDK) at third-party na utilities. apkanalyzer ay nagpapakita ng laki ng bawat component ng APK: DEX, resources, native library at pirma. Ang pagsusuri ay tumutulong na matukoy kung aling dependencies ang kumukuha ng pinakamaraming espasyo at gumawa ng desisyon tungkol sa pagpapalit o pag-alis ng mga ito.
Mga madalas itanong
Oo, kahit anong archiver (7-Zip, WinRAR) ay nagbubukas ng APK bilang ZIP. Maaaring tingnan ang nilalaman, ngunit para sa decompilation ng code ay kinakailangan ang mga espesyal na tool — JADX o apktool.
XAPK — hindi opisyal na format na ginagamit ng ilang third-party na tindahan. Pinagsasama nito ang APK na may karagdagang OBB file sa isang archive. Ang Google Play at opisyal na dokumentasyon ng Android ay hindi gumagamit ng XAPK.
Android Studio ay awtomatikong pumipirma ng debug build na may debug.keystore kapag pinatakbo sa device. Para sa pamamahagi ng test version sa team ay kinakailangan ang pirma gamit ang release key o paggamit ng App Signing.
Gamitin ang R8 para sa obfuscation at minimization, i-convert ang mga larawan sa WebP, tanggalin ang hindi ginagamit na resources sa pamamagitan ng Lint, at para sa malalaking proyekto lumipat sa Android App Bundle na may Dynamic Delivery.
Hindi — kahit anong pagbabago sa APK pagkatapos ng pagpirma ay sumisira sa digital signature. Para sa update ay kailangang buuin at pirmahan ang bagong bersyon na may mas mataas na versionCode.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din