Membangun aplikasi Android dengan Gradle release build, keystore signing untuk keamanan, format AAB untuk Play Console, serta mengupload ke internal testing track Google Play.

Setelah di episode 18 kita membangun dan mendistribusikan ke TestFlight, pada episode ini kita lakukan hal yang sama untuk Android: Gradle release build, keystore signing, format AAB, dan upload ke Google Play Console. Build Android relatif lebih fleksibel dibanding iOS — tidak membutuhkan program berbayar untuk testing, tapi Play Console membutuhkan akun developer ($25 sekali bayar).
Keystore adalah file .jks atau .keystore yang berisi private key untuk menandatangani aplikasi Android. Ini memastikan bahwa hanya kalian yang bisa mengupdate aplikasi di Play Store.
keytool -genkeypair \
-v \
-keystore release-key.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias nativephp-app \
-storepass YOUR_PASSWORD \
-keypass YOUR_PASSWORD \
-dname "CN=Your Name, OU=Your Company, O=Your Company, L=Jakarta, ST=Jakarta, C=ID"Warning
JANGAN commit keystore ke repository. Simpan di tempat aman (password manager, encrypted storage) dan backup ke tempat terpisah. Jika keystore hilang, kalian TIDAK BISA mengupdate aplikasi yang sudah terpublish di Play Store.
MYAPP_RELEASE_STORE_FILE=release-key.jks
MYAPP_RELEASE_KEY_ALIAS=nativephp-app
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****android {
signingConfigs {
create("release") {
storeFile = file(System.getenv("MYAPP_RELEASE_STORE_FILE") ?: "release-key.jks")
storePassword = System.getenv("MYAPP_RELEASE_STORE_PASSWORD")
keyAlias = System.getenv("MYAPP_RELEASE_KEY_ALIAS")
keyPassword = System.getenv("MYAPP_RELEASE_KEY_PASSWORD")
}
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
signingConfig = signingConfigs.getByName("release")
}
}
}Google Play sekarang mewajibkan AAB (Android App Bundle) untuk upload ke Play Store:
| Format | Penggunaan | Ukuran |
|---|---|---|
.aab | Upload ke Play Console | Lebih kecil (only download needed) |
.apk | Direct install / sideload | Lebih besar (semua ABI & density) |
AAB memungkinkan Google Play mengoptimalkan download sesuai perangkat — user hanya mengunduh resources untuk device mereka (ARM, x86, density tertentu).
php artisan native:build android --releasecd resources/native/android
./gradlew bundleReleaseOutput:
app/build/outputs/bundle/release/
└── app-release.aabcd resources/native/android
./gradlew assembleReleaseOutput:
app/build/outputs/apk/release/
└── app-release.apk# Buka Google Play Console
# Pilih aplikasi → Testing → Internal testing → Create new release
# Upload app-release.aab
# Isi release notes
# Mulai rolloutAtau gunakan Google Play Developer API untuk otomasi:
curl -X POST \
"https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/edits" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json"Tip
Internal testing tidak membutuhkan review dari Google. Build tersedia untuk tester dalam beberapa menit setelah rollout. Cocok untuk testing cepat sebelum closed/open testing.
# 1. Buat keystore (sekali saja)
keytool -genkeypair -v -keystore release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-app
# 2. Build release AAB
php artisan native:build android --release
# 3. Upload ke Play Console (via UI)
# Play Console → Internal testing → New release → Upload AAB
# 4. Tambah tester email
# Play Console → Internal testing → Testers → Add email list
# 5. Rollout
# Tester install via Play Store internal testing linkInti yang harus dibawa pulang:
native:build android --release menghasilkan AAB untuk upload.Di episode 20 selanjutnya, kita akan membahas Publikasi Store & Review Guidelines — aset store yang diperlukan, privasi manifest, data safety form, alasan umum penolakan, dan checklist submission untuk kedua store. Sampai jumpa di episode 20!