Episode ini mengirim aplikasi ke pengguna: membangun release app bundle untuk Android dan iOS, code signing, provisioning profiles, dan app store submission, deployment web dan packaging desktop, serta pengelolaan release channels dan versioning yang bertanggung jawab.

Kode yang bagus hanya bernilai ketika sampai ke tangan pengguna. Episode 14 membahas jalur rilis lengkap: membangun artifact release untuk Android dan iOS, code signing dan submission ke app store, deployment web dan packaging desktop, serta disiplin versioning dan release channel.
Untuk distribusi Play Store, bangun app bundle; untuk berbagi manual, bangun APK:
flutter build appbundle --releaseflutter build appbundle --release menghasilkan app-release.aab di folder build/app/outputs/bundle/release/. Play Store lalu membuat APK optimal per device dari bundle tersebut — ukurannya lebih kecil dan memenuhi kebijakan store.
flutter build apk --release --split-per-abiflutter build apk --release --split-per-abi menghasilkan APK terpisah per arsitektur ARM — menghemat ukuran dibanding satu APK universal.
Untuk iOS, build archive lalu upload lewat Xcode:
flutter build ipa --releaseflutter build ipa --release menghasilkan archive yang siap di-upload. Sebelum ini berhasil, pastikan project iOS sudah di-setup dengan benar — termasuk signing (di bawah).
Android memakai keystore untuk menandatangani APK. Siapkan keystore sekali, referensikan di android/key.properties, dan konfigurasikan di build.gradle. Jangan pernah commit keystore atau password ke repository — simpan di secret manager dan CI.
iOS memerlukan provisioning profile dan sertifikat signing yang diatur di developer account Apple. Alur khasnya:
Setelah artifact siap, submission dilakukan lewat App Store Connect — untuk App Store atau TestFlight. Setiap platform punya kebijakan review; simpan catatan akses ke akun test agar review tidak tertahan.
Android menawarkan sideload gratis; untuk Play Store perlu akun developer. iOS memerlukan akun Apple Developer untuk sign dan distribusi. Perhitungkan biaya ini dalam anggaran project.
Flutter web di-build sebagai static files yang bisa di-host di mana saja:
flutter build web --releaseflutter build web --release menghasilkan folder build/web berisi HTML, JavaScript, dan asset yang siap di-upload ke hosting statis seperti Nginx, Cloudflare Pages, atau Vercel. Konfigurasikan fallback ke index.html agar routing deep link bekerja.
Untuk desktop, bangun bundle per platform:
flutter build linux --releaseflutter build linux --release menghasilkan bundle di build/linux/x64/release/bundle/. Untuk distribusi lintas platform yang rapi, pertimbangkan flutter_distributor atau MSIX untuk Windows.
Versi aplikasi didefinisikan di pubspec.yaml:
version: 1.2.0+5Format version: 1.2.0+5 berarti 1.2.0 adalah versi semver dan 5 adalah build number yang wajib naik setiap upload. Naikkan major untuk breaking change, minor untuk fitur baru, patch untuk perbaikan.
Otomatiskan versioning dengan semantic-release atau sejenisnya: berdasarkan jenis commit (feat, fix, breaking), versi dinaikkan dan changelog dibuat otomatis. Ini menghapus keputusan versi manual yang sering lupa atau tidak konsisten.
Gunakan channel untuk mengontrol risiko:
Pisahkan konfigurasi environment (API URL, flag) per channel. Jangan mencampur endpoint staging dengan production hanya karena lupa mengganti konfigurasi.
Inti yang harus dibawa pulang:
flutter build appbundle untuk Play Store; flutter build apk --split-per-abi untuk distribusi manual.flutter build ipa lalu signing dan submission via App Store Connect.build/web dan di-host sebagai static site.flutter build <platform>.Di episode 15 selanjutnya kita membahas performance optimization — rendering performance dan jank reduction, profiling dengan DevTools, widget inspector, dan timeline, mengurangi rebuild dan cache widget, optimasi gambar, serta memory usage dan app startup time. Aplikasi kalian mulai diukur dan dipercepat.