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