Build dan Rilis APK Android
Generate APK release yang kecil dan siap install: split ABI, app bundle, signing, dan cek ukuran.
Debug vs release
Selama development kamu memakai build debug yang besar dan lambat. Untuk dibagikan ke user, build mode release: kode dioptimasi, di-shrink, dan jauh lebih kecil.
Build APK release
flutter build apk --releaseHasilnya ada di build/app/outputs/flutter-apk/app-release.apk. APK ini sudah bisa diinstall langsung ke HP, cocok untuk testing internal atau dibagikan via link.
Split per ABI: APK lebih kecil
HP Android punya arsitektur CPU berbeda (arm64, armeabi, x86_64). Secara default satu APK memuat native library untuk semua arsitektur. Split memecahnya per arsitektur:
flutter build apk --release --split-per-abiKamu dapat beberapa file seperti app-arm64-v8a-release.apk. Kebanyakan HP modern pakai arm64, dan ukuran APK bisa turun 30 sampai 40 persen.
App Bundle untuk Play Store
Untuk upload ke Google Play, pakai format bundle, bukan APK:
flutter build appbundle --releasePlay Store akan men-generate APK optimal per perangkat user secara otomatis. Jangan upload APK biasa ke Play Console untuk rilis production.
Signing: tanda tangan digital
Secara default build release memakai debug key. Untuk rilis resmi, buat keystore sendiri:
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias uploadLalu referensikan di android/key.properties dan android/app/build.gradle. Jaga file keystore baik-baik: kalau hilang, kamu tidak bisa update aplikasi yang sama di Play Store selamanya.
Checklist sebelum rilis
- Naikkan
versionCodedanversionNamedi pubspec.yaml. - Matikan
debugShowCheckedModeBanner. - Pastikan tidak ada
printataudebugPrintsensitif tertinggal. - Test di HP fisik, bukan cuma emulator.
- Cek permission di AndroidManifest, hapus yang tidak dipakai.
Catatan teknis: Jangan pernah commit file keystore atau key.properties ke Git. Masukkan ke .gitignore sejak awal. Banyak kasus keystore bocor di repo publik yang berujung aplikasi dibajak. Untuk CI/CD seperti GitHub Actions, simpan keystore sebagai secret yang di-encode base64, bukan sebagai file di repo.