Saatnya aplikasimu keluar dari laptop dan terbang ke dunia nyata — dari kode menjadi aplikasi yang bisa diunduh jutaan orang di Play Store.
Gunakan ← → atau tombol navigasi untuk berpindah slide
Selama ini kamu membangun roket di garasi (coding di laptop). BAB ini adalah peluncuran — memastikan roketnya aman, terpantau, dan benar-benar terbang ke orbit (Play Store).
flutter build apkBahan baku (kode Flutter { }) masuk ke ban berjalan pabrik → keluar produk jadi (file APK) yang siap dipasang di HP Android. Perintah flutter build apk adalah tombol "MULAI PRODUKSI".
--release = versi final, sudah dioptimasi & di-minify (beda dengan --debug saat ngoding).build/app/outputs/flutter-apk/app-release.apk# Build APK rilis (semua arsitektur)
flutter build apk --release
# Lebih ramping → khusus HP 64-bit modern
flutter build apk --release --target-platform android-arm64
# Pisah per arsitektur (ukuran lebih kecil)
flutter build apk --release --split-per-abi
📁 Struktur folder hasil:
flutter build appbundleApp Bundle seperti mengirim bahan masak lengkap ke dapur Google Play. Google lalu "memasak" porsi pas untuk tiap HP user — yang HP-nya arm64 hanya dapat porsi arm64. Hasil: ukuran download lebih kecil!
.aab (Android App Bundle).build/app/outputs/bundle/release/# Build App Bundle untuk Play Store
flutter build appbundle --release
Keystore ibarat tanda tangan + cap resmi-mu. Sama seperti paspor membuktikan "ini benar kamu", certificate membuktikan "aplikasi ini benar dari developer asli". Kehilangan keystore = kehilangan identitas — kamu tak bisa lagi update aplikasi itu!
keytool -genkey -v -keystore ~/upload-keystore.jks \
-keyalg RSA -keysize 2048 -validity 10000 -alias upload
android {
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
.jks dan key.properties ke Git! Tambahkan ke .gitignore. Simpan keystore di tempat super aman — backup di banyak lokasi.Analytics adalah CCTV pintar di tokomu. Ia mencatat: berapa orang masuk, tombol mana paling sering ditekan, halaman mana paling lama dilihat. Dengan data ini, kamu tahu apa yang user suka tanpa harus bertanya satu per satu.
FirebaseAnalytics analytics = FirebaseAnalytics.instance;
// Catat event saat tombol ditekan
await analytics.logEvent(
name: 'button_click',
parameters: {'screen': 'home'},
);
// Catat layar yang dibuka
await analytics.logScreenView(screenName: 'ProductPage');
active users hari ini
event "button_click"
Crashlytics adalah alarm kebakaran otomatis di aplikasimu. Begitu ada "kebakaran" (crash) di HP user mana pun, alarm langsung berbunyi ke dashboard-mu — lengkap dengan lokasi dan penyebabnya, tanpa user perlu lapor.
// Tangkap semua error Flutter → kirim ke Crashlytics
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
// Catat error manual (non-fatal) di dalam try/catch
try {
await fetchData();
} catch (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: false);
}
Performance Monitoring adalah speedometer aplikasimu. Ia mengukur seberapa cepat layar terbuka, berapa lama loading API, dan kapan aplikasi "tersendat". Jika jarum menunjuk merah → ada yang perlu dibenahi.
// Ukur durasi sebuah proses dengan custom trace
final trace = FirebasePerformance.instance.newTrace('load_products');
await trace.start();
await fetchProducts(); // proses yang diukur
await trace.stop(); // durasi otomatis terkirim
app start time
load_products
frozen frames
Play Store seperti mal besar. Sebelum buka toko, kamu sewa kios (Developer Account $25), pasang papan nama menarik (ikon & screenshot), dan tulis deskripsi produk. Lalu barang (file .aab) diangkut naik ke gudang awan.
Versioning seperti edisi buku. "Edisi Revisi 2.0" memberi tahu pembaca ada perubahan besar, sedangkan nomor cetakan internal (versionCode) memastikan tiap edisi unik. versionName dilihat user, versionCode dipakai sistem.
1.2.0+5
version: 1.2.0+5 # versionName + versionCode
# ▲ ▲ ▲ ▲
# MAJOR─┘ │ │ └─ versionCode (internal, harus naik)
# MINOR─┘ └─PATCH
Changelog seperti struk/nota yang merinci apa saja yang berubah. User membacanya di Play Store ("What's New") untuk tahu fitur baru, dan tim developer memakainya untuk melacak sejarah aplikasi.
CHANGELOG.md (format Keep a Changelog).# Changelog
## [1.2.0] - 2026-06-10
### ✨ Added
- Fitur dark mode di halaman pengaturan
- Login dengan Google
### 🔧 Fixed
- Perbaikan crash saat membuka kamera
- Tombol checkout kini responsif
### ⚡ Improved
- Loading produk 2x lebih cepat
🌙 Sekarang ada Dark Mode!
🚀 Loading lebih cepat
🐛 Perbaikan bug kamera
💬 Sebelum tinggal landas, pilot memeriksa checklist. Klik tiap item untuk menandainya selesai ✓
print() & debugPrint() yang tidak perlu--release (bukan debug)Security adalah perisai yang melindungi aplikasi & data user dari serangan. Perisai harus menutup semua sisi — satu celah kecil saja (API key bocor) bisa membahayakan seluruh pengguna.
Klik tiap item perisai untuk mengaktifkannya 🔒
.env / dart-define)key.properties ada di .gitignoreflutter_secure_storage💬 Inilah panggung utamamu! Pilih satu dari lima proyek nyata berikut dan bangun dari nol hingga siap rilis, menggunakan semua skill BAB 1–12.
Toko online lengkap dengan keranjang & pembayaran
Chatbot pintar dengan Gemini / OpenAI streaming
Pindai dokumen → teks → ekspor PDF
Manajemen sekolah: nilai, absensi, jadwal
Catat pemasukan/pengeluaran + grafik
Lihat slide 15–19 →
Bangun toko online seperti Tokopedia mini: katalog produk, keranjang belanja, checkout, dan riwayat pesanan — semua tersinkron ke cloud.
Buat asisten AI pribadi seperti ChatGPT. Jawaban muncul kata-demi-kata (streaming) sehingga terasa hidup dan responsif.
Aplikasi pemindai dokumen: arahkan kamera ke teks/dokumen → diubah jadi teks digital (OCR) → diekspor jadi file PDF rapi.
Sistem manajemen sekolah dalam genggaman: guru input nilai & absensi, siswa lihat jadwal & rapor, semua role punya akses berbeda.
Aplikasi pengatur keuangan pribadi: catat pemasukan & pengeluaran, lihat di mana uang habis lewat grafik, dan atur budget bulanan.
💬 Selamat! Berikut peta kemampuan lengkap yang kini kamu kuasai dari BAB 1 hingga 12. Kamu sudah jadi Mobile Developer sungguhan! 🎓
🎯 Tujuan: Membuat keystore lalu menghasilkan APK rilis yang sudah ditandatangani. Ikuti langkah & centang tiap selesai.
keytoolandroid/key.propertiesbuild.gradle baca keystore.gitignoreflutter build apk --release# Step 1 — buat keystore
keytool -genkey -v -keystore ~/upload-keystore.jks \
-keyalg RSA -keysize 2048 -validity 10000 -alias upload
# Step 2 — android/key.properties
storePassword=passwordku
keyPassword=passwordku
keyAlias=upload
storeFile=/Users/kamu/upload-keystore.jks
app-release.apk muncul di folder output.jarsigner -verify -verbose app-release.apk → "jar verified".🎯 Tujuan: Integrasikan Analytics & Crashlytics ke project dummy, lalu kirim 1 event dan 1 test-crash.
dependencies:
firebase_core: ^2.27.0
firebase_analytics: ^10.8.0
firebase_crashlytics: ^3.4.18
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Arahkan semua error Flutter ke Crashlytics
FlutterError.onError =
FirebaseCrashlytics.instance.recordFlutterFatalError;
runApp(const MyApp());
}
// Analytics — catat event tombol
await FirebaseAnalytics.instance.logEvent(
name: 'button_click',
parameters: {'screen': 'home'},
);
// Crashlytics — paksa crash untuk uji coba
ElevatedButton(
onPressed: () => FirebaseCrashlytics.instance.crash(),
child: const Text('Test Crash'),
);
button_click muncul di Firebase → Analytics → DebugView.Pilih 1 dari 5 opsi (slide 15–19), lalu susun dokumen perencanaan lengkap sebelum mulai ngoding. Perencanaan yang baik = setengah pekerjaan selesai!
Aplikasi berjalan, ter-build sebagai APK/AAB rilis, terpasang Analytics & Crashlytics, lolos Production & Security Checklist, dan siap di-upload ke Play Store. 🚀
Selamat berkarya, calon developer hebat! 🎉