Tutorial Rilis AAB dan APK Flutter
Panduan praktis untuk proyek Global Network
|
Tujuan: Menghasilkan
AAB untuk Google Play dan APK untuk pemasangan langsung dengan versi,
penandatanganan, dan pemeriksaan yang benar. |
Ringkasan cepat
Gunakan AAB untuk Play Store. Gunakan APK untuk pemasangan
langsung atau pengujian pada perangkat. Perintah build dijalankan dari folder
utama proyek Flutter.
|
Kebutuhan |
Format |
Perintah utama |
|
Unggah ke Google Play |
AAB |
flutter build appbundle --release |
|
Pasang langsung |
APK universal |
flutter build apk --release |
|
APK lebih kecil |
APK per ABI |
flutter build apk --release
--split-per-abi |
1. Data proyek yang perlu diperiksa
☐ Folder proyek:
D:\xxxx\global_network_app
☐ Application ID:
aplikasi.wartanetwork.com
☐ Nama aplikasi dan ikon sudah benar.
☐ Login, Dashboard, cache offline,
profil, dan editor sudah diuji pada HP.
☐ flutter analyze menghasilkan No issues
found!
Versi aplikasi
Versi Android mengikuti baris version pada pubspec.yaml:
version: 3.0.0+21000
Angka 3.0.0 adalah versionName yang dilihat pengguna. Angka
21000 adalah versionCode. Setiap pembaruan ke Play Store wajib menggunakan
versionCode yang lebih besar, misalnya 21001.
|
Penting: Jangan
mengganti applicationId setelah aplikasi pertama kali diterbitkan. Google Play
menganggap applicationId yang berbeda sebagai aplikasi baru. |
2. Siapkan penandatanganan rilis
AAB dan APK produksi harus ditandatangani. Jika aplikasi
sudah pernah diterbitkan, gunakan upload keystore yang sama.
1 Buat
upload keystore hanya jika belum memilikinya
keytool -genkey -v -keystore
"$env:USERPROFILE\upload-keystore.jks" `
-storetype JKS -keyalg RSA -keysize 2048
-validity 10000 `
-alias upload
Simpan password, alias, dan file upload-keystore.jks di
tempat aman. Jangan mengunggahnya ke GitHub atau membagikannya.
2 Buat
android/key.properties
storePassword=PASSWORD_KEYSTORE
keyPassword=PASSWORD_KEY
keyAlias=upload
storeFile=C:\\Users\\NAMA_USER\\upload-keystore.jks
3 Hubungkan
keystore pada android/app/build.gradle.kts
File Gradle Kotlin harus memuat key.properties, membuat
signingConfigs release, lalu menggunakan konfigurasi tersebut pada buildTypes
release.
import java.io.FileInputStream
import
java.util.Properties
val
keystoreProperties = Properties()
val
keystorePropertiesFile = rootProject.file("key.properties")
if
(keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
android {
signingConfigs {
create("release") {
keyAlias =
keystoreProperties.getProperty("keyAlias")
keyPassword =
keystoreProperties.getProperty("keyPassword")
storeFile =
keystoreProperties.getProperty("storeFile")?.let { file(it) }
storePassword =
keystoreProperties.getProperty("storePassword")
}
}
buildTypes {
release {
signingConfig =
signingConfigs.getByName("release")
}
}
}
|
Jangan
hilangkan: File keystore dan password adalah identitas
penandatanganan aplikasi. Kehilangannya dapat menghambat pembaruan aplikasi
yang sudah diterbitkan. |
3. Pemeriksaan sebelum build
1 Masuk ke
folder proyek
cd D:\xxxx\global_network_app
2 Bersihkan
hasil build lama dan ambil dependensi
flutter clean
flutter pub get
3 Periksa
konfigurasi Flutter
flutter doctor -v
flutter analyze
Lanjutkan hanya jika analyzer menampilkan:
No issues found!
Izin internet untuk rilis
Karena aplikasi memakai API, WebView, gambar daring, dan
login sosial, pastikan AndroidManifest.xml memiliki izin berikut di bawah
elemen manifest:
<uses-permission
android:name="android.permission.INTERNET" />
4. Membuat AAB untuk Google Play
1 Jalankan
build release
flutter build appbundle --release
2 Ambil
berkas hasil
build\app\outputs\bundle\release\app-release.aab
Pada sebagian versi Flutter, nama berkas dapat tampil
sebagai app.aab. Gunakan berkas AAB tersebut untuk Play Console.
3 Simpan
salinan dengan nama versi
Copy-Item
"build\app\outputs\bundle\release\app-release.aab" `
"Global-Network-3.0.0-21000.aab"
5. Membuat APK
APK universal
Satu APK yang mudah dibagikan tetapi ukurannya lebih besar:
flutter build apk --release
Lokasi hasil:
build\app\outputs\flutter-apk\app-release.apk
APK terpisah dan lebih kecil
flutter build apk --release --split-per-abi
Hasil utama:
app-armeabi-v7a-release.apk
# HP ARM 32-bit lama
app-arm64-v8a-release.apk # Mayoritas HP Android modern
app-x86_64-release.apk # Emulator/perangkat x86-64
|
Rekomendasi: Untuk
dibagikan kepada mayoritas pengguna Android modern, gunakan
app-arm64-v8a-release.apk. Bila jenis perangkat tidak diketahui, gunakan
app-release.apk universal. |
6. Uji berkas rilis
☐ Pasang APK pada HP yang bukan
perangkat pengembangan bila memungkinkan.
☐ Uji login username/password.
☐ Uji login Google dan Facebook serta
kembalinya aplikasi dari callback.
☐ Uji Dashboard, profil, editor artikel,
unggah foto, dan tombol bagikan.
☐ Aktifkan mode pesawat dan pastikan
cache Dashboard tampil dengan peringatan offline.
☐ Matikan lalu buka kembali aplikasi
untuk memastikan tidak terjadi crash.
Untuk memasang APK melalui kabel USB:
adb install -r
"build\app\outputs\flutter-apk\app-release.apk"
7. Verifikasi berkas sebelum dikirim
Catat ukuran dan SHA-256 agar berkas dapat dikenali dan
diperiksa:
Get-Item "build\app\outputs\bundle\release\app-release.aab"
| `
Select-Object Name, Length, LastWriteTime
Get-FileHash
"build\app\outputs\bundle\release\app-release.aab" `
-Algorithm SHA256
8. Unggah ke Google Play Console
1 Buka Play
Console dan pilih aplikasi Global Network
2 Gunakan
Internal testing terlebih dahulu
3 Buat rilis
baru dan unggah file AAB
4 Isi
catatan rilis
5 Periksa
peringatan Play Console, simpan, lalu mulai peluncuran pengujian
|
Catatan
versi: Jika Play Console menolak karena versionCode sudah
digunakan, naikkan angka setelah tanda + pada pubspec.yaml, lalu build ulang. |
9. Masalah umum dan penyelesaian
Keystore tidak ditemukan
Keystore file not found / signingConfig error
Periksa storeFile pada android/key.properties. Pada Windows
gunakan garis miring ganda, misalnya C:\\Users\\Nama\\upload-keystore.jks.
Password atau alias salah
Periksa storePassword, keyPassword, dan keyAlias. Jangan
membuat keystore baru untuk aplikasi yang sudah diterbitkan.
Versi sudah digunakan
Version code ... has already been used
Naikkan build number:
version: 3.0.0+21001
Build terganggu cache Gradle
flutter clean
flutter pub get
flutter build
appbundle --release
Aplikasi rilis tidak dapat mengakses internet
Periksa izin android.permission.INTERNET pada
android/app/src/main/AndroidManifest.xml. Mode debug dapat berjalan meskipun
manifest rilis belum benar.
10. Checklist akhir
☐ Backup proyek dan keystore sudah
tersimpan di lokasi aman.
☐ Version name dan version code sudah
benar.
☐ Application ID tetap
aplikasi.wartanetwork.com.
☐ flutter analyze menampilkan No issues
found!
☐ AAB/APK berhasil dibuat tanpa error
signing.
☐ Login sosial dan callback sudah diuji
pada build release.
☐ Mode offline Dashboard sudah diuji
setelah cache pernah tersimpan.
☐ SHA-256 dan salinan berkas rilis sudah
disimpan.
☐ AAB diuji melalui Internal testing
sebelum produksi.
Perintah cepat
cd D:\xxxx\global_network_app
flutter clean
flutter pub get
flutter analyze
flutter build
appbundle --release
flutter build apk
--release
Referensi resmi
Flutter Documentation - Build and release an Android app
https://docs.flutter.dev/deployment/android
Dokumen referensi proyek: Global Network | Disusun 8
September 2026