APK (Android Package Kit) adalah format file arsip yang digunakan untuk mendistribusikan dan menginstal aplikasi di Android. Setiap aplikasi yang diunduh pengguna dari Google Play atau diinstal secara manual adalah file APK. Menurut Android Open Source Project, 2026, format ini didasarkan pada standar ZIP dan berisi kode yang dikompilasi, sumber daya, manifes, dan tanda tangan digital.
Poin utama
APK (Android Package Kit) adalah format arsip di mana aplikasi Android dikemas untuk didistribusikan. Secara teknis, APK adalah arsip ZIP dengan struktur tertentu yang berisi semua komponen yang diperlukan untuk menjalankan aplikasi di perangkat.
Format APK muncul bersamaan dengan versi pertama Android pada tahun 2008. Sebagai dasar diambil standar JAR (Java Archive), yang pada gilirannya didasarkan pada ZIP. Warisan ini memastikan kompatibilitas dengan alat arsip yang ada — pengarsip apa pun dapat membuka APK sebagai ZIP biasa.
Google Play — saluran utama distribusi APK, tetapi format ini juga digunakan dalam skenario lain: instalasi langsung melalui browser (sideloading), toko aplikasi perusahaan, pengujian di perangkat pengembang, dan instalasi di emulator. Menurut Statista, sekitar 15% instalasi aplikasi Android pada tahun 2025 terjadi di luar Google Play.
Struktur internal APK diatur secara ketat: setiap aplikasi harus berisi file dan direktori tertentu. Pelanggaran struktur menyebabkan kesalahan instalasi.
| File/direktori | Tujuan |
|---|---|
| AndroidManifest.xml | Manifes aplikasi: izin, komponen, versi SDK |
| classes.dex | Kode byte DEX yang dikompilasi (bisa beberapa file) |
| resources.arsc | Sumber daya yang dikompilasi: string, gaya, tata letak |
| res/ | Sumber daya yang tidak dikompilasi: gambar, font, XML |
| lib/ | Pustaka asli (.so) untuk berbagai arsitektur CPU |
| META-INF/ | Metadata: sertifikat, daftar file, hash |
Manifes — file konfigurasi pusat aplikasi. Dalam bentuk biner yang dikompilasi (bukan XML yang dapat dibaca) berisi nama paket, versi, daftar aktivitas, layanan, izin, dan persyaratan SDK. Tanpa manifes, sistem tidak tahu cara menjalankan aplikasi.
Kode sumber dalam Java atau Kotlin dikompilasi menjadi file DEX (Dalvik Executable). File utama bernama classes.dex. Jika kode byte melebihi batas 64K metode, dibuat classes2.dex, classes3.dex dan seterusnya — mekanisme multidex.
Direktori lib/ berisi pustaka C/C++ yang dikompilasi untuk berbagai arsitektur: armeabi-v7a, arm64-v8a, x86, x86_64. Setiap pustaka memiliki ekstensi .so (Shared Object). Aplikasi modern biasanya hanya menyediakan arm64-v8a.
Pembuatan APK adalah proses multi-tahap yang diotomatisasi oleh sistem build Gradle dan Android Gradle Plugin. Setiap tahap mengubah file sumber menjadi komponen arsip akhir.
Kode sumber dikompilasi menjadi kode byte Java (.class), kemudian dikonversi ke DEX melalui alat d8 (sebelumnya dx). Sumber daya dikompilasi ke format biner melalui AAPT2. Semua komponen dikemas dalam arsip ZIP dan ditandatangani dengan tanda tangan digital.
// build.gradle.kts — konfigurasi dasar pembuatan 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 atau R8 mengaburkan kode, menghapus kelas dan metode yang tidak digunakan, mengurangi ukuran APK. Tanpa pengaburan, APK berisi nama kelas lengkap, yang memudahkan dekompilasi. R8 juga melakukan optimalisasi kode byte di tingkat DEX.
Tanda tangan digital adalah elemen wajib APK. Android tidak menginstal paket yang tidak ditandatangani. Tanda tangan menjamin bahwa aplikasi tidak dimodifikasi setelah publikasi dan menentukan siapa pemilik paket.
v1 (JAR signing) — skema asli berdasarkan penandatanganan setiap file dalam arsip. Kerentanan: file dapat dihapus dari META-INF tanpa terdeteksi. v2 (APK Signature Scheme v2) muncul di Android 7.0 — seluruh arsip ditandatangani, yang mencegah modifikasi. v3 mendukung rotasi kunci, dan v4 mendukung instalasi inkremental.
Google Play memerlukan v2 atau lebih tinggi untuk semua aplikasi baru sejak Agustus 2021. Disarankan untuk menandatangani APK dengan ketiga skema untuk kompatibilitas maksimal dengan berbagai versi Android.
Dalam build.gradle ditentukan keystore, kata sandi, dan alias. Kunci pribadi disimpan dalam penyimpanan terenkripsi. Untuk publikasi di Google Play digunakan App Signing — Google menyimpan kunci pribadi, dan pengembang mengunggah APK yang ditandatangani.
Instalasi APK dilakukan melalui manajer paket sistem PackageManager. Prosesnya mencakup verifikasi tanda tangan, penguraian manifes, penyalinan file, dan optimalisasi DEX melalui dex2oat.
Alat ADB (Android Debug Bridge) memungkinkan instalasi APK langsung dari komputer pengembang. Perintah `adb install app.apk` menyalin file ke perangkat dan memulai instalasi. Bendera -r menginstal ulang aplikasi dengan mempertahankan data, bendera -d mengizinkan instalasi versi dengan versionCode lebih rendah.
Mulai Android 8.0, sistem memerlukan konfirmasi instalasi dari sumber tidak dikenal untuk setiap aplikasi secara terpisah. Android 14 memperkuat kontrol: instalasi APK melalui toko pihak ketiga hanya dimungkinkan setelah izin eksplisit di pengaturan. Google Play Protect memindai setiap APK saat instalasi untuk kode berbahaya.
Untuk aplikasi yang lebih besar dari 150 MB, Google Play mendukung Expansion Files — paket OBB tambahan hingga 2 GB masing-masing. File OBB tidak termasuk dalam APK, tetapi diunduh secara terpisah setelah instalasi. Format ini mendukung dua jenis: main (sumber daya dasar) dan patch (pembaruan).
// Memeriksa versi APK melalui PackageManager
val pm = packageManager
val info = pm.getPackageInfo(
"com.example.app",
PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Versi: ${info.versionName}")
Pada perangkat dengan ART (Android Runtime) setelah instalasi, kompilasi DEX ke kode asli dimulai melalui dex2oat. Proses ini dapat memakan waktu beberapa detik dan meningkatkan ukuran aplikasi yang diinstal, tetapi mempercepat peluncurannya.
AAB (Android App Bundle) — format yang dipromosikan Google sebagai alternatif APK untuk publikasi di Google Play. Perbedaannya mendasar: AAB tidak diinstal secara langsung, tetapi berfungsi sebagai wadah dari mana Google Play menghasilkan APK yang dioptimalkan.
| Parameter | APK | AAB |
|---|---|---|
| Ukuran unduhan | Arsip lengkap | Hanya komponen yang diperlukan |
| Instalasi langsung | Ya | Tidak (menghasilkan APK) |
| Distribusi | Saluran apa pun | Google Play |
| Kontrol versi | Versi di manifes | Dynamic Delivery |
| Publikasi | Google Play + pihak ketiga | Google Play |
Google Play memerlukan AAB sejak Agustus 2021 untuk aplikasi baru. Namun, APK tetap menjadi format utama untuk distribusi di luar Google Play — melalui situs web, toko perusahaan, dan pengujian.
Pengembang secara teratur menghadapi masalah saat membangun dan menginstal APK. Sebagian besar terkait dengan ketidakcocokan versi, tanda tangan, atau struktur arsip.
Kesalahan terjadi saat mencoba menginstal APK dengan nama paket yang sama tetapi tanda tangan berbeda. Android tidak mengizinkan instalasi ulang aplikasi dengan sertifikat yang diubah. Solusi — hapus versi lama sebelum instalasi.
Jika proyek melebihi batas 65536 metode, pembuatan gagal dengan kesalahan dex. Solusi — aktifkan multidex di build.gradle atau optimalkan dependensi dengan menghapus pustaka yang tidak digunakan.
Google Play membatasi ukuran APK hingga 150 MB. Untuk aplikasi yang lebih besar digunakan APK Expansion Files (OBB). Disarankan untuk mengurangi ukuran melalui R8, gambar WebP, dan Android App Bundle. Setiap megabita tambahan berdampak negatif pada konversi instalasi: menurut Google, setiap 10 MB mengurangi konversi sebesar 1%.
APK dapat didekompilasi menggunakan alat JADX, APKTool, atau Bytecode Viewer. JADX memulihkan kode Java asli dari DEX, yang membuat aplikasi tanpa pengaburan sepenuhnya dapat dibaca. Untuk melindungi kode digunakan ProGuard/R8, yang mengganti nama kelas, metode, dan bidang menjadi nama pendek yang tidak terbaca serta menghapus informasi debug.
Untuk analisis konten APK digunakan Android Studio Profiler, apkanalyzer (alat CLI dari Android SDK), dan utilitas pihak ketiga. apkanalyzer menunjukkan ukuran setiap komponen APK: DEX, sumber daya, pustaka asli, dan tanda tangan. Analisis membantu mengidentifikasi dependensi mana yang memakan ruang terbanyak dan mengambil keputusan tentang penggantian atau penghapusannya.
Pertanyaan yang sering diajukan
Ya, pengarsip apa pun (7-Zip, WinRAR) membuka APK sebagai ZIP. Konten dapat dilihat, tetapi untuk dekompilasi kode diperlukan alat khusus — JADX atau apktool.
XAPK — format tidak resmi yang digunakan oleh beberapa toko pihak ketiga. Ini menggabungkan APK dengan file OBB tambahan menjadi satu arsip. Google Play dan dokumentasi resmi Android tidak menggunakan XAPK.
Android Studio secara otomatis menandatangani build debug dengan debug.keystore saat dijalankan di perangkat. Untuk mendistribusikan versi uji ke tim, diperlukan tanda tangan dengan kunci rilis atau penggunaan App Signing.
Gunakan R8 untuk pengaburan dan minimalisasi, konversi gambar ke WebP, hapus sumber daya yang tidak digunakan melalui Lint, dan untuk proyek besar beralihlah ke Android App Bundle dengan Dynamic Delivery.
Tidak — setiap perubahan APK setelah penandatanganan merusak tanda tangan digital. Untuk pembaruan, harus dibuat dan ditandatangani versi baru dengan versionCode yang ditingkatkan.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga