Untuk mendistribusikan aplikasi iOS ke penguji, gunakan TestFlight (penguji internal langsung, penguji eksternal setelah Beta App Review singkat) atau build ad hoc untuk perangkat terdaftar. Untuk Android, gunakan jalur pengujian Google Play (internal, tertutup, atau terbuka), Play internal app sharing untuk tautan sekali pakai, atau bagikan APK yang ditandatangani melalui Firebase App Distribution atau unduhan langsung. Pilihan yang tepat bergantung pada siapa penguji Anda, berapa jumlahnya, dan apakah build perlu melewati infrastruktur toko.
Panduan ini membandingkan semua opsi, menunjukkan cara mengonfigurasinya untuk aplikasi Capacitor, dan merangkum error yang biasanya dialami tester.
Memilih metode
| Metode | Platform | Maks. tester | Review sebelum tester mendapatkannya | Kebutuhan tester | Terbaik untuk |
|---|---|---|---|---|---|
| internal TestFlight | iOS | 100 anggota tim | Tidak | Pengguna App Store Connect, aplikasi TestFlight | Tim Anda |
| TestFlight eksternal | iOS | 10,000 | Beta App Review (build pertama versi) | Undangan email atau link publik, aplikasi TestFlight | Pengguna beta, klien |
| Ad hoc | iOS | 100 perangkat per tipe perangkat per tahun | Tidak | UDID terdaftar, Developer Mode | Tim QA kecil, tanpa review Apple |
| Mulai pengujian internal | Android | 100 | Tanpa review penuh, biasanya tersedia dalam hitungan menit | Akun Google di daftar email | Tim Anda |
| Uji coba tertutup Play | Android | Daftar email atau Google Groups | Ya | Akun Google, link opt-in | User beta, syarat 12 tester |
| Uji coba terbuka Play Store | Android | Tanpa batas atau terbatas | Ya | Opt-in di listing | Beta publik |
| Berbagi aplikasi internal Play | Android | Siapa pun dengan tautan | Tidak | Akun Google, pengaturan diaktifkan | Build QA cepat, versi apa pun code |
| Firebase App Distribution | Keduanya | Besar | Tidak | Undangan email; iOS memerlukan UDID terdaftar | QA lintas platform |
| Tautan APK langsung | Android | Siapa pun | Tidak | Izinkan sumber tidak dikenal | Pengujian internal cepat |
Aturan praktis:
- Build yang sama yang akan dikirim ke store? Gunakan TestFlight dan Play tracks. Binary yang digunakan penguji adalah binary yang akan dipromosikan.
- Build QA harian? Pengujian internal di kedua store, atau Firebase App Distribution.
- Perlu menguji perubahan web-layer dalam hitungan menit? Kirim live update ke kanal uji, bukan binary baru.
Sebelum distribusi: signing
Setiap build pengujian harus ditandatangani.
- iOS build pengujian menggunakan App Store Connect profil (TestFlight) atau Ad Hoc profil (instal langsung). Keduanya menggunakan sertifikat Apple Distribution. Lihat Penjelasan sertifikat iOS dan provisioning profile.
- Android build untuk Play tracks adalah AAB yang ditandatangani dengan upload key Anda. Untuk instal langsung, Anda butuh APK yang ditandatangani dengan release key apa pun. APK debug juga bisa diinstal, tapi perilakunya berbeda (debuggable, tanda tangan berbeda) dan tidak bisa di-upgrade oleh Play build Anda nantinya.
iOS: TestFlight
Upload build
Dari Xcode: Produk > Arsip, lalu Distribusi Aplikasi > App Store Connect > Upload. Dari command line atau CI, export .ipa dan upload dengan App Store Connect API key, atau biarkan layanan cloud build melakukannya.
Sejak April 2026, upload harus di-build dengan Xcode 26 atau lebih baru.
Tambahkan key ini ke ios/App/App/Info.plist jika aplikasi Anda hanya menggunakan enkripsi HTTPS standar, agar App Store Connect tidak menanyakan pertanyaan export compliance di setiap build:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Prosesnya memakan waktu dari beberapa menit hingga sekitar satu jam. Anda akan menerima email saat build sudah siap.
Pengujian internal
- Di App Store Connect, buka aplikasi Anda, TestFlight > Pengujian Internal, dan buat sebuah grup.
- Tambahkan anggota tim. Mereka harus memiliki role App Store Connect (Admin, App Manager, Developer, Marketing…). Maksimal 100 orang.
- Aktifkan distribusi otomatis jadi setiap build baru masuk ke grup itu.
- Tester menginstal TestFlight aplikasi dari App Store dan menerima undangan.
Tidak perlu review. Ini jalur tercepat dari upload ke ponsel.
Pengujian eksternal
- TestFlight > Pengujian eksternal > + untuk membuat grup.
- Tambahkan tester lewat email, atau aktifkan link publik dengan batas jumlah tester opsional.
- Tambahkan build ke grup dan isi Informasi Pengujian (apa yang diuji, email feedback, deskripsi aplikasi beta, dan demo login jika perlu).
- Ajukan untuk Review Aplikasi Beta. Build pertama dari setiap versi akan direview, biasanya dalam satu hari. Build selanjutnya pada versi yang sama seringkali langsung rilis tanpa review penuh.
External testing mendukung hingga 10.000 tester. Tester bisa mengirim screenshot beserta feedback langsung dari TestFlight, yang dapat Anda lihat di App Store Connect.
Batasan TestFlight yang perlu diketahui
- Build akan kedaluwarsa setelah 90 hari.
- Tester memerlukan versi iOS yang didukung oleh build Anda (Capacitor 8 memerlukan iOS 15 atau yang lebih baru).
- Build TestFlight menggunakan signing App Store produksi, jadi push notification menggunakan produksi Lingkungan APNs.
- In-app purchases di TestFlight menggunakan sandbox dan tidak dikenakan biaya.
iOS: distribusi ad hoc
Ad hoc builds dapat diinstal langsung ke perangkat yang sudah Anda daftarkan di portal Apple Developer, tanpa TestFlight atau review Apple.
- Kumpulkan UDID setiap tester. Tester bisa mendapatkannya di ponsel mereka menggunakan Pencari UDID iOS, atau Anda bisa melihatnya melalui Finder atau Xcode saat perangkat terhubung.
- Daftarkan perangkat di Sertifikat, Identitas & Profil > Perangkat.
- Buat file Ad Hoc provisioning profile yang mencakup perangkat tersebut, lalu unduh profilnya.
- Build sebuah
.ipadengan profil tersebut (Xcode: Distribusi Aplikasi > Pengujian Rilis, yang merupakan nama baru untuk Ad Hoc). - Cara instalnya:
- Seret
.ipake perangkat di Finder atau Xcode > Window > Devices and Simulators. - Atau host menggunakan
itms-servicesmanifest via HTTPS agar tester cukup klik link. Layanan seperti Firebase App Distribution bisa melakukannya untuk Anda.
- Seret
- Pada iOS 16 ke atas, instalasi
.ipadari Mac (Xcode atau Apple Configurator) memerlukan Mode Pengembang di perangkat (Pengaturan > Privasi & Keamanan). Instal dariitms-serviceslink tidak memerlukannya. Lihat cara mengaktifkan Developer Mode di iOS.
Menambah tester baru berarti mendaftarkan UDID mereka, membuat ulang profil, dan melakukan rebuild. Slot perangkat (100 per device family) hanya akan direset saat masa keanggotaan diperbarui, jadi jangan mendaftarkan perangkat sembarangan.
Android: jalur pengujian Google Play
Play Console memiliki tiga jalur pengujian plus produksi. Semuanya membutuhkan AAB yang ditandatangani dengan upload key Anda.
Pengujian internal
- Pengujian > Pengujian internal > Tester: buat daftar email (hingga 100 alamat).
- Buat rilis baru, upload AAB, tambahkan release notes, simpan, dan roll out.
- Salin link opt-in dan kirimkan ke para tester. Mereka menerima dan menginstal dari Play Store.
Rilis internal biasanya tersedia dalam hitungan menit dan tidak menunggu review penuh. Rilis pertama untuk aplikasi baru mungkin memakan waktu lebih lama saat Google memproses aplikasi tersebut.
Pengujian tertutup
Closed tracks direview dan mendukung daftar email atau Google Groups. Ini adalah track yang Anda butuhkan untuk 12 tester selama 14 hari aturan yang berlaku untuk akun developer pribadi yang dibuat setelah 13 November 2023, sebelum akses produksi. Menggunakan Google Group memudahkan tester untuk bergabung. Detailnya ada di cara membuat akun developer Apple dan Google Play.
Pengujian terbuka
Siapa pun bisa bergabung dari listing Play Anda. Gunakan ini untuk beta publik setelah listing toko Anda selesai. Umpan balik dari tester terbuka bersifat privat dan tidak memengaruhi rating publik Anda.
Kami Panduan Android beta testing kami membandingkan track secara lebih detail.
Android: Berbagi aplikasi internal
Internal app sharing adalah cara tercepat untuk mendapatkan APK atau AAB apa pun di perangkat melalui Play Store, tanpa aturan code versi dan tanpa review.
- Di Play Console, buka Berbagi aplikasi internal (di bawah Testing) dan tambahkan uploader.
- Upload APK atau AAB. Anda akan mendapatkan link.
- Tester membuka aplikasi Play Store, masuk ke pengaturan, ketuk versi Play Store tujuh kali untuk membuka pengaturan developer, lalu aktifkan Berbagi aplikasi internal.
- Tester cukup buka link dan instal.
Ini sangat berguna untuk QA pada build pull request karena version code tidak perlu dinaikkan.
Android: APK langsung dan Firebase App Distribution
APK langsung
Build APK release yang ditandatangani. Proyek Capacitor baru tidak punya release signing config, jadi assembleRelease akan menghasilkan APK unsigned yang tidak bisa diinstal. Tambahkan signingConfigs.release block (path keystore dan password, biasanya dibaca dari key.properties) ke android/app/build.gradle dan arahkan buildTypes.release.signingConfig ke sana dulu.
bun run build
bunx cap sync android
cd android && ./gradlew assembleRelease
Bagikan android/app/build/outputs/apk/release/app-release.apk melalui link. Tester mengizinkan browser atau file manager mereka untuk menginstal aplikasi tidak dikenal dan membuka file tersebut. Jika mereka sudah menginstal versi Play Store, mereka harus meng-uninstalnya dulu karena signature-nya berbeda. Anda juga bisa menginstal lewat USB dengan adb install -r app-release.apk (lihat cara mengaktifkan developer options di Android).
Mulai 30 September 2026, perangkat Android bersertifikat di Brasil, Indonesia, Singapura, dan Thailand hanya bisa menginstal aplikasi yang nama paketnya terdaftar oleh developer terverifikasi, dengan rencana peluncuran global pada 2027. Jika tester Anda berada di negara-negara tersebut, daftarkan nama paket di Android Developer Console atau Play Console. Instalasi melalui adb tidak terdampak.
Firebase App Distribution
Firebase App Distribution berfungsi di kedua platform, mengirim undangan lewat email, dan melacak siapa yang menginstal build mana.
bun add -g firebase-tools
firebase login
firebase appdistribution:distribute android/app/build/outputs/apk/release/app-release.apk \
--app 1:1234567890:android:abc123def456 \
--groups "qa-team" \
--release-notes "Fix checkout crash"
- Tester Android menginstal dari link email atau aplikasi App Tester.
- Tester iOS harus tetap berada di profil ad hoc (atau development). App Distribution mengumpulkan UDID mereka saat menerima undangan, tetapi Anda sendiri yang mendaftarkan mereka dan melakukan rebuild.
- Distribusi AAB memerlukan penautan proyek Firebase ke Google Play.
Cloud builds yang memberikan link ke tester
Jika Anda tidak ingin memelihara Mac dan signing di setiap CI runner, Build Capgo melakukan build aplikasi Capacitor di cloud. Untuk test build, proses ini bisa melewati submit ke store dan upload binary ke link download berbatas waktu dengan QR code:
# Android APK/AAB for testers, no Play upload
bunx @capgo/cli@latest build request com.example.app \
--platform android --no-playstore-upload --output-upload --output-retention 2d
# iOS ad hoc build (no App Store submission)
bunx @capgo/cli@latest build request com.example.app \
--platform ios --ios-distribution ad_hoc --output-upload
# iOS build uploaded to TestFlight for external groups
bunx @capgo/cli@latest build request com.example.app \
--platform ios --ios-testflight-groups "Beta Testers"
Tambah --output-record build.json dan membaca link tersebut di CI dengan bunx @capgo/cli@latest build last-output --path build.json --field outputUrl untuk mempostingnya ke pull request atau chat. Dokumentasi Build Capgo menampilkan semua opsi.
Lewati rebuild untuk perubahan web
Sebagian besar perubahan pada aplikasi Capacitor ada di layer web. Rebuilding dan redistribusi binary hanya untuk perbaikan teks membuang satu hari untuk proses dan review TestFlight. Dengan Live updates Capgo, tester tetap memakai build yang sudah mereka instal, dan Anda push JavaScript bundle baru ke test channel:
bunx @capgo/cli@latest bundle upload --channel beta
Anda bahkan bisa memberi tiap pull request channel sendiri dan membiarkan QA beralih di antara channel tersebut di aplikasi yang sama yang sudah terinstal. Lihat ubah setiap pull request menjadi preview yang bisa diinstal.
Pemecahan Masalah
“Unable to install” pada iOS ad hoc. UDID perangkat tidak ada di profil, atau profil sudah kedaluwarsa. Cek dengan security cms -D -i profile.mobileprovision.
App terbuka lalu langsung tertutup di iOS. Developer Mode mati (build ad hoc/development), atau profil sudah kedaluwarsa.
Build TestFlight macet di “Processing”. Tunggu hingga satu jam. Jika gagal, email akan mencantumkan alasannya, biasanya karena missing usage description string (NSCameraUsageDescription dan sejenisnya) atau masalah ikon.
“Missing Compliance” di TestFlight. Jawab pertanyaan export compliance di App Store Connect atau tambahkan ITSAppUsesNonExemptEncryption ke Info.plist.
Android “Aplikasi tidak terinstal”. Versi dengan signature berbeda sudah terinstal, atau APK tidak ditandatangani atau corrupt. Uninstall aplikasi yang sudah ada.
Tester tidak melihat aplikasi di Play Store setelah opt-in. Tunggu beberapa menit, pastikan mereka login dengan akun yang diundang, dan cek bahwa rilis sudah di-rollout ke track tersebut dan tersedia di negara mereka.
“Version code already used” saat upload. Naikkan versionCode di android/app/build.gradle. Internal app sharing adalah pengecualiannya.
Push notification tidak masuk di TestFlight. TestFlight menggunakan environment APNs produksi. Cek aps-environment entitlement dan pengaturan environment provider push Anda.
Setup yang direkomendasikan untuk tim kecil
- Grup internal TestFlight dengan distribusi otomatis, plus jalur internal testing Play, untuk setiap merge ke
main. - Grup eksternal TestFlight dan jalur closed testing Play untuk pengguna beta, diperbarui setiap minggu.
- Live updates pada
betachannel untuk perbaikan khusus web di antara build. - Saat beta sudah stabil, promosikan build yang sama ke produksi di kedua store dan ikuti panduan review aplikasi pertama kali.