Mengapa File APK Perlu Ditandatangani?
Setiap aplikasi Android harus ditandatangani secara digital sebelum dapat diinstal. Tanda tangan memiliki beberapa tujuan:
- Memverifikasi identitas pengembang aplikasi
- Memastikan APK belum dirusak
- Memungkinkan Android mencocokkan pembaruan aplikasi dengan yang asli
- Diperlukan untuk menginstal di semua perangkat Android
Diperlukan Alat Desktop
Penandatanganan APK memerlukan alat baris perintah (JDK / Android SDK). Ini tidak dapat dilakukan di browser web. Ikuti panduan di bawah ini untuk menandatangani APK di komputer Anda.
Metode 1: Masuk dengan apksigner (Disarankan)
apksigner adalah alat penandatanganan APK resmi Google, termasuk dalam Android SDK Build Tools.
Langkah 1: Buat Keystore
keytool -genkey -v -keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-key-alias
Langkah 2: Tanda tangani APK
apksigner sign --ks my-release-key.jks \
--ks-key-alias my-key-alias \
--out signed-app.apk unsigned-app.apk
Langkah 3: Verifikasi Tanda Tangan
apksigner verify --verbose signed-app.apk
Metode 2: Masuk dengan jarsigner (Warisan)
# Sign
jarsigner -verbose -sigalg SHA256withRSA \
-digestalg SHA-256 \
-keystore my-release-key.jks \
app-unsigned.apk my-key-alias
# Verify
jarsigner -verify -verbose app-signed.apk
Langkah 4: Zipalign (Penting!)
Setelah penandatanganan, optimalkan APK dengan zipalign:
zipalign -v 4 signed-app.apk aligned-app.apk
Penandatanganan Debug (Untuk Pengujian)
Untuk tujuan pengujian, Anda dapat menggunakan keystore debug default Android:
# Location of debug keystore:
# Linux/Mac: ~/.android/debug.keystore
# Windows: C:\Users\{USERNAME}\.android\debug.keystore
# Sign with debug key
apksigner sign --ks ~/.android/debug.keystore \
--ks-key-alias androiddebugkey \
--ks-pass pass:android \
app.apk
Perbandingan Alat Penandatanganan
| Metrik | apksigner | jarsigner |
|---|---|---|
| Tanda Tangan V1 | ||
| V2 Tanda Tangan | ||
| Tanda Tangan V3 | ||
| Direkomendasikan | Warisan |
Penandatangan APK — Pertanyaan Umum
Pertanyaan umum tentang penandatanganan APK, keystore, dan penandatanganan kode Android
Mengapa Urutan Penyelarasan (zipalign Sebelum apksigner) Penting di Android 11–15
Salah satu kesalahan yang paling sering dilakukan pengembang dan modder saat menandatangani APK yang dimodifikasi atau digabungkan adalah menjalankan zipalign setelah untuk menandatangani paket—atau menggunakan utilitas jarsigner lama dari Java, bukan SDK Android apksigner dari Google. Karena APK Signature Scheme v2 dan v3 menghitung hash kriptografi pada seluruh tata letak biner arsip ZIP, memodifikasi byte offset dengan zipalign setelah penandatanganan akan segera membatalkan blok tanda tangan v2/v3.
Dimulai dengan Android 11 (API level 30) dan diterapkan secara ketat di Android 14 dan 15, PackageManager memerlukan dua ketentuan yang tidak dapat dinegosiasikan untuk setiap APK yang menargetkan level SDK modern:
- resources.arsc Selaras 4-Byte Tidak Terkompresi: Tabel sumber daya yang dikompilasi (resources.arsc) harus disimpan tanpa kompresi (STORED) dan disejajarkan pada batas 4 byte sehingga Android dapat memetakan memori (mmap) secara langsung tanpa menyalinnya ke RAM. Selalu jalankan penandatanganan zipalign -p -f -v 4 input.apk aligned.apk sebelum.
- Blok Tanda Tangan v2+ Wajib: Menandatangani APK yang menargetkan API 30+ dengan jarsigner (yang hanya menulis tanda tangan META-INF/ v1) akan menyebabkan Android 11–15 menolak penginstalan dengan INSTALL_PARSE_FAILED_NO_CERTIFICATES. Gunakan generator perintah interaktif di atas untuk membuat perintah apksigner --v2-signing-enabled=true yang tepat untuk keystore Anda, atau verifikasi output yang Anda tandatangani di Pemverifikasi Tanda Tangan APK kami.