CLOUSD
Buka akun
Testing aplikasi

Tes aplikasi Android online

Satu build, tiga versi Android, error instalasi yang akan Anda temui, dan perintah logcat yang menemukan crash-nya, tanpa laci penuh ponsel uji.

Menguji aplikasi Android secara online berarti ponselnya berada di tempat lain. Anda menjangkaunya lewat jaringan, menginstal build, menonton layarnya di browser, dan mengambil log dengan adb seolah ada kabel yang tercolok. Jika dilakukan dengan benar, cara ini menggantikan sebagian besar fungsi laci berisi ponsel uji. Jika dilakukan asal-asalan, hasilnya hanyalah emulator lambat dengan langkah tambahan.

Panduan ini membawa satu build dari APK sampai log crash di tiga versi Android. Panduan ini memakai perintah yang saya jalankan setiap minggu, mencantumkan error instalasi yang akan Anda temui, dan diakhiri dengan situasi di mana ponsel fisik masih menjadi alat yang lebih tepat.

Siapkan build-nya

Mulailah dari build yang bisa diinstal lewat command line. Build debug sudah cukup untuk putaran pertama:

./gradlew assembleDebug
ls app/build/outputs/apk/debug/

Dua pengecekan menghemat waktu nanti. Yang pertama adalah ABI. Jika aplikasi Anda membawa kode native, pastikan APK berisi library arm64-v8a. Ponsel yang dibangun dari model asli adalah arm64, dan berbeda dengan image emulator x86 di laptop Anda, ponsel ini tidak menerjemahkan kode yang dibuat untuk arsitektur lain.

unzip -l app/build/outputs/apk/debug/app-debug.apk | grep "lib/"

Yang kedua adalah flag testOnly. Saat Anda menekan Run di Android Studio, IDE menandai APK dengan android:testOnly="true", dan adb install biasa akan menolaknya. Build dari assembleDebug tidak membawa flag itu. Jika yang Anda punya hanya build dari IDE, instal dengan adb install -t.

Jika artefak rilis Anda berupa app bundle, ubah menjadi APK set untuk ponsel yang tersambung dengan bundletool:

bundletool build-apks --bundle=app-release.aab --output=app.apks --connected-device
bundletool install-apks --apks=app.apks

Tanpa --ks, bundletool menandatangani dengan kunci debug. Itu tidak masalah untuk pengujian, tetapi hasilnya tidak bisa diinstal menimpa salinan yang ditandatangani dengan kunci rilis Anda.

Pilih tiga versi Android, bukan satu

Satu ponsel menyembunyikan sebagian besar bug kompatibilitas, karena Android mengubah perilaku dengan dua cara. Sebagian perubahan mengenai setiap aplikasi di rilis baru. Sebagian lainnya baru aktif saat Anda menaikkan targetSdkVersion. Tiga versi menangkap sebagian besar dari keduanya:

  • Versi tertua yang masih Anda dukung, atau yang paling mendekatinya. Android 12 adalah batas bawah yang masuk akal untuk sebagian besar aplikasi di 2026.
  • Versi dengan porsi terbesar di analitik Anda sendiri, sering 14 atau 15.
  • Rilis terbaru, 16 atau 17, tempat perubahan yang bergantung pada target, seperti edge-to-edge yang diwajibkan dan predictive back, muncul lebih dulu.

Daftar lengkap perubahan antara setiap pasangan versi itu panjang. Testing aplikasi di berbagai versi Android memuat checklist per versi.

Langkah 1: buat ponselnya

Di layanan cloud phone, Anda memilih versi Android dan model, dan ponsel siap dalam sekitar satu menit. Beri nama setiap ponsel sesuai versinya, misalnya qa-12, qa-14, dan qa-16, supaya log dan screenshot tetap mudah dibaca seminggu kemudian. Jika Anda menjalankannya dari CI lewat skrip, perangkat pertama Anda menunjukkan langkah yang sama lewat API.

Pilih model yang benar-benar dimiliki pengguna Anda. Ponsel murah dengan panel 720p dan flagship 1440p merusak tata letak yang berbeda, jadi mencampur kerapatan layar di ketiga versi memberi cakupan lebih luas dengan waktu yang sama.

Langkah 2: instal build-nya

Ada tiga cara memasukkan APK ke ponsel: unggah di dasbor browser, kirim lewat REST API, atau jalankan adb install lewat relay ADB. Panduan aplikasi membahas dua cara pertama. Untuk adb, aktifkan relay untuk alamat IP Anda seperti dijelaskan di dokumentasi ADB, lalu sambungkan:

adb connect HOST:PORT
adb -s HOST:PORT install -r app-debug.apk

Kegagalan instalasi hampir selalu salah satu dari lima ini, dan string error-nya memberi tahu yang mana:

ErrorPenyebabPerbaikan
INSTALL_FAILED_NO_MATCHING_ABIStidak ada library native untuk ABI ponseltambahkan arm64-v8a ke abiFilters
INSTALL_FAILED_TEST_ONLYAPK dibuat lewat tombol Run di IDEadb install -t, atau build dengan Gradle
INSTALL_FAILED_UPDATE_INCOMPATIBLEsudah terpasang salinan yang ditandatangani kunci lainadb uninstall salinan lama dulu
INSTALL_FAILED_DEPRECATED_SDK_VERSIONtarget di bawah API 23 di Android 14, di bawah 24 di 15 ke atasnaikkan targetSdkVersion
INSTALL_PARSE_FAILED_MANIFEST_MALFORMEDkomponen dengan intent filter tidak punya android:exported di 12 ke atasdeklarasikan exported di setiap komponen seperti itu

Langkah 3: jalankan smoke test yang bisa diulang

Jalankan putaran yang sama dengan cara yang sama di setiap versi, supaya perbedaan yang Anda lihat adalah perbedaan Android, bukan perbedaan cara Anda mengetuk. Putaran saya mencakup enam hal:

  1. Cold start. am start -W mencetak TotalTime dalam milidetik. Bandingkan antarversi, bukan dengan flagship fisik.
  2. Pertama kali dibuka. Instal tanpa -g, supaya setiap permintaan izin runtime muncul seperti yang dilihat pengguna baru.
  3. Ke latar belakang lalu kembali. Tekan Home, buka dua aplikasi lain, lalu kembali.
  4. Kematian proses. Dengan aplikasi di latar belakang, am kill mengakhiri proses seperti yang dilakukan sistem saat memori menipis. Kembali ke aplikasi harus memulihkan layar beserta statusnya.
  5. Konfigurasi. Mode gelap, font yang lebih besar, ukuran tampilan yang berbeda.
  6. Navigasi kembali. Gestur kembali dari setiap layar utama.

Perintahnya, dengan S berisi alamat perangkat:

S=HOST:PORT
adb -s $S shell am force-stop com.example.app
adb -s $S shell am start -W -n com.example.app/.MainActivity
adb -s $S shell input keyevent KEYCODE_HOME
adb -s $S shell am kill com.example.app
adb -s $S shell cmd uimode night yes
adb -s $S shell settings put system font_scale 1.3
adb -s $S shell wm density 560
adb -s $S shell wm density reset

Kembalikan skala font dengan settings put system font_scale 1.0 dan mode gelap dengan cmd uimode night no sebelum putaran berikutnya, atau reset ponselnya.

Langkah 4: baca log-nya

Bersihkan buffer sebelum setiap skenario, lalu baca hanya proses Anda sendiri:

adb -s $S logcat -c
adb -s $S shell am start -W -n com.example.app/.MainActivity
adb -s $S logcat -d --pid=$(adb -s $S shell pidof -s com.example.app)

Pid berubah setiap kali proses dimulai ulang, jadi crash saat startup tidak akan muncul di bawah pid yang baru. Baca buffer crash sebagai gantinya. Buffer ini menyimpan crash Java dan native untuk setiap proses:

adb -s $S logcat -d -b crash
adb -s $S logcat -d AndroidRuntime:E "*:S"

Untuk ANR, logcat hanya memberi judulnya. adb bugreport report.zip mengumpulkan trace thread dari saat itu beserta status sistem. Butuh satu atau dua menit, dan file inilah yang dilampirkan ke tiket.

Letakkan ketiga log berdampingan. Peringatan yang hanya muncul di versi terbaru biasanya perubahan yang bergantung pada target. Crash di ketiga versi adalah masalah di kode Anda.

Langkah 5: reset di antara run

pm clear menghapus data aplikasi Anda dan membiarkan sisanya: aplikasi lain, pengaturan yang Anda ubah, akun Google. Untuk perbandingan yang bersih antar suite, reset ponsel ke kondisi baru, dan pakai pm clear untuk pengulangan cepat di dalam satu suite.

Setelah putarannya stabil, tempatnya di CI. Halaman testing aplikasi menunjukkan langkah yang sama sebagai panggilan API. Instrumentation test hanyalah perintah adb biasa, jadi bisa dijalankan di perangkat apa pun yang bisa dijangkau adb:

adb -s $S shell am instrument -w -e class com.example.LoginTest \
  com.example.app.test/androidx.test.runner.AndroidJUnitRunner

Batas pengujian online

Jujurlah tentang apa yang tidak bisa diberitahukan ponsel di data center:

  • Kualitas kamera, autofokus, pergeseran GPS yang nyata, dan sensor biometrik.
  • Performa grafis. Android tervirtualisasi merender lewat driver yang diterjemahkan atau driver software, jadi waktu frame dan jumlah jank tidak bisa dipindahkan ke ponsel fisik.
  • Konsumsi baterai dan thermal throttling.
  • Software vendor. Pengoptimal baterai dan pengaturan autostart di beberapa merek menghentikan pekerjaan latar belakang dengan cara yang tidak dilakukan Android standar.
  • Radio: pembayaran NFC, pairing Bluetooth, fitur operator.

Simpan dua atau tiga ponsel fisik untuk pengecekan itu dan jalankan matriks yang luas secara online.

Cara gratis untuk memulai

"Testing di perangkat asli online gratis" biasanya berarti salah satu dari tiga hal. Android Emulator di mesin Anda sendiri tidak berbiaya dan merupakan tempat yang tepat untuk loop edit dan run. Device cloud publik menawarkan kuota gratis kecil untuk ponsel fisik, kebanyakan untuk run otomatis. Layanan cloud phone biasanya menawarkan trial: Clousd memberi 30 menit pertama gratis tanpa kartu, cukup untuk menginstal build dan menjalankan smoke test pertama, lihat trial gratis.

Siap menjalankan
cloud phone pertama Anda?

Coba gratis 30 menit

Tanpa kartu