App Store & Play Store Publishing — Mobile

Publishing ke App Store & Play Store Proses submit app ke store lebih kompleks dari deploy web. Ada signing, review process, guidelines yang harus dipatuhi…

Publishing artinya mengirim build rilis Laundry Bu Rini ke App Store Connect (Apple) dan Google Play Console, lengkap dengan identitas, tanda tangan, nomor versi, halaman toko, dan keterangan privasi, lalu menunggu review. Bayangin Bu Rini membuka cabang di mal. Dia bayar sewa ke pengelola (akun developer), memasang papan nama yang gak bisa diganti (bundle ID), menyegel tiap kiriman barang dengan cap tokonya (signing), memberi nomor urut di tiap kiriman (nomor build), lalu menunggu petugas mal memeriksa sebelum tokonya boleh buka (review).

🧪 Tebakan cepat: Kamu memperbaiki salah ketik, mengubah version di app.json dari "1.0.0" jadi "1.0.1", build ulang tanpa autoIncrement, lalu mengunggah ke Play Console. Unggahannya diterima? Jawabannya ada di bagian "Versi: yang dibaca orang dan yang dihitung toko".

Akun dan biaya

Dicek di halaman resmi pada 11 Oktober 2026:

Apple Developer Program Google Play Console
Biaya 99 USD per tahun (ditagih dalam mata uang lokal) 25 USD, sekali bayar
Jenis akun individu atau organisasi (organisasi butuh nomor D-U-N-S) Personal atau Organization
Syarat tambahan akun harus aktif selama aplikasinya mau tetap dijual akun Personal yang dibuat setelah 13 November 2023: closed test dengan minimal 12 tester yang ikut terus-menerus selama 14 hari, lalu mengajukan akses production

Aturan 12 tester itu ketat: tester yang keluar lalu masuk lagi mulai hitungan 14 harinya dari nol. Pengajuan akses production biasanya dijawab dalam 7 hari atau kurang.

Identitas aplikasi

ios.bundleIdentifier dan android.package sudah diisi id.laundryburini.app sejak pelajaran Expo. Di toko, ID ini identitas aplikasinya: Play Console gak mengizinkan package name diganti, dan di App Store bundle ID terikat ke catatan aplikasinya. Mengganti ID berarti aplikasi baru, dengan pengguna dan ulasan dari nol.

Versi: yang dibaca orang dan yang dihitung toko

Di app.json iOS Android Siapa yang membaca
version: "1.0.0" CFBundleShortVersionString versionName pengguna, di halaman toko
ios.buildNumber: "1" CFBundleVersion toko
android.versionCode: 1 versionCode (bilangan bulat) toko

Hasil npx expo prebuild di project ini: android/app/build.gradle berisi versionCode 1 dan versionName "1.0.0", dan Info.plist berisi CFBundleShortVersionString 1.0.0 dan CFBundleVersion 1. Toko menghitung nomor build, bukan version. Jadi version "1.0.1" dengan versionCode yang tetap 1 ditolak Play Console: Version code 1 has already been used. Try another version code. Itu jawaban tebakannya. Di Apple, nomor build yang sama untuk versi yang sama ditolak dengan ITMS-90189: Redundant Binary Upload.

Biarkan EAS yang menaikkan nomor build:

{
  "cli": { "appVersionSource": "remote" },
  "build": {
    "production": { "autoIncrement": true }
  },
  "submit": {
    "production": { "android": { "track": "internal" } }
  }
}

Signing: tanda tangan di tiap build

Signing adalah menandatangani file aplikasi (APK/AAB atau IPA) dengan sertifikat digital. Toko dan HP memakainya untuk memastikan build itu dari developer yang sama dan isinya gak diubah orang lain.

Build dan kirim dengan EAS

eas build --platform all --profile production   # .aab untuk Play, .ipa untuk App Store
eas submit --platform android                     # butuh Google Service Account key
eas submit --platform ios                         # butuh App Store Connect API key, masuk TestFlight

Halaman toko dan privasi

Review: yang sering bikin ditolak

⚠️ Jebakan yang sering ketemu

TL;DR: Akun Apple Developer Program 99 USD per tahun, Google Play 25 USD sekali bayar (dicek 11 Oktober 2026); akun Play Personal baru wajib closed test dengan 12 tester selama 14 hari berturut-turut. bundleIdentifier dan package (id.laundryburini.app) adalah identitas permanen. version dibaca pengguna, sedangkan toko menghitung versionCode dan buildNumber, yang harus naik di tiap unggahan: pakai appVersionSource: "remote" dan autoIncrement: true. App signing adalah menandatangani APK/AAB/IPA dengan sertifikat digital untuk membuktikan identitas developer dan keutuhan build: iOS dengan distribution certificate dan provisioning profile, Android dengan upload key yang ditandatangani ulang Play App Signing (upload key yang hilang bisa di-reset). eas build dan eas submit mengirim ke TestFlight dan track internal Play. Isi halaman toko, kebijakan privasi, App Privacy, dan Data safety, lalu siapkan akun demo, push yang gak wajib, dan penghapusan akun supaya lolos review.

Yang akan kamu pelajari