Troubleshooting Android
Panduan pemecahan masalah spesifik untuk otomatisasi Android menggunakan Heimdall.
ADB Issues
Problem: adb: command not found
Penyebab: Android SDK Platform-Tools tidak terinstall atau tidak ada di PATH.
Solusi:
# Ubuntu/Debian
sudo apt install android-tools-adb android-tools-fastboot
# macOS
brew install android-platform-tools
# Windows
# Download dari developer.android.com, ekstrak, tambahkan ke PATHVerifikasi instalasi:
adb versionProblem: adb devices menampilkan List of devices attached tapi kosong
Penyebab: Device tidak terhubung, USB debugging tidak aktif, atau driver bermasalah.
Solusi:
- Coba ganti kabel USB
- Pastikan USB Debugging aktif (Settings > Developer Options > USB Debugging)
- Unlock device sebelum menghubungkan
- Restart ADB:
adb kill-server
adb start-server
adb devices- Jika menggunakan emulator, pastikan AVD berjalan:
adb devices
# Harus menampilkan emulator-5554 deviceProblem: adb devices menampilkan unauthorized
Penyebab: RSA key belum di-accept di device.
Solusi:
- Lepas dan sambungkan kembali kabel USB
- Di device, akan muncul dialog "Allow USB debugging?" - tekan OK
- Jika tidak muncul dialog, matikan dan aktifkan kembali USB Debugging
- Restart device jika perlu
Problem: ADB lambat atau timeout
Penyebab: Kabel USB rusak, USB mode salah, atau device overloaded.
Solusi:
- Ganti kabel USB ke kabel berkualitas
- Ubah USB mode ke File Transfer atau PTP (jika tidak membutuhkan MTP)
- Tutup aplikasi berat di device
- Restart ADB:
adb kill-server
adb start-server- Periksa apakah ada proses ADB lain yang menggantung:
ps aux | grep adbProblem: adb forward gagal dengan already registered
Penyebab: Port forwarding sebelumnya masih tertahan.
Solusi:
# Hapus semua forwarding
adb forward --remove-all
# Verifikasi
adb forward --list
# Coba lagi
adb forward tcp:7912 tcp:7912Problem: ADB over WiFi tidak stabil
Penyebab: Koneksi wireless tidak stabil atau device masuk sleep.
Solusi:
- Pastikan device dan komputer di jaringan WiFi yang sama
- Matikan screen lock agar device tidak sleep
- Pertahankan koneksi dengan menjalankan periodic ping:
adb shell svc wifi disable && adb shell svc wifi enableDevice Problems
Problem: Device sering disconnected saat test
Penyebab: Kabel USB longgar, battery low, atau USB debugging terputus.
Solusi:
- Gunakan kabel USB berkualitas
- Matikan screen lock agar device tidak sleep
- Pastikan battery di atas 20%
- Gunakan emulator jika device fisik tidak stabil
Problem: Device lambat, test timeout
Penyebab: Device dengan spesifikasi rendah atau terlalu banyak proses berjalan.
Solusi:
- Matikan aplikasi lain di device:
adb shell am force-stop <package> - Bersihkan cache:
adb shell pm clear <package> - Aktifkan developer options > limit background processes
- Gunakan device dengan spesifikasi lebih tinggi untuk test
- Restart device untuk membersihkan memory
Problem: Emulator lambat atau crash
Penyebab: Hardware acceleration tidak aktif atau resource komputer tidak cukup.
Solusi:
- Aktifkan hardware acceleration:
# Intel HAXM (Windows/macOS)
# Install dari SDK Manager Android Studio
# KVM (Linux)
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients
sudo adduser $USER kvm- Gunakan emulator dengan resolusi rendah untuk kecepatan
- Tutup aplikasi lain yang menggunakan banyak memory
- Gunakan cold boot daripada quick boot:
emulator -avd <avd_name> -no-snapshot-loadProblem: Device dalam keadaan offline
Penyebab: Device tidak merespons ADB karena sleep atau proses ADB menggantung.
Solusi:
# Restart ADB
adb kill-server
adb start-server
# Jika masih offline, restart device
adb rebootApp Problems
Problem: Aplikasi tidak terinstall
Penyebab: APK rusak, signature mismatch, atau storage penuh.
Solusi:
- Cek storage device:
adb shell df /data - Uninstall aplikasi sebelumnya:
adb uninstall com.example.app- Install ulang:
adb install path/to/app.apk- Jika masih gagal, coba dengan
-rflag (replace):
adb install -r path/to/app.apkProblem: Aplikasi crash saat dibuka
Penyebab: APK corrupt, incompatible dengan OS version, atau bug di aplikasi.
Solusi:
- Cek log aplikasi:
adb logcat | grep <package_name>- Bersihkan data aplikasi:
adb shell pm clear com.example.app- Uninstall dan install ulang
- Cek compatibility APK dengan OS version device
Problem: Aplikasi tidak muncul di launcher
Penyebab: Activity utama tidak terdaftar atau launchMode salah.
Solusi:
- Cek activity yang tersedia:
adb shell cmd package resolve-activity -c android.intent.category.LAUNCHER com.example.app- Jalankan langsung activity:
adb shell am start -n com.example.app/.MainActivity- Jika activity tidak ditemukan, periksa
AndroidManifest.xml
Problem: Data aplikasi tidak ter-reset antar test
Penyebab: Aplikasi tidak di-clear setelah test sebelumnya.
Solusi:
- Clear data sebelum test dimulai:
adb shell pm clear com.example.app- Atau uninstall dan install ulang:
adb uninstall com.example.app
adb install app.apk- Tambahkan cleanup di test script atau fixture
Permission
Problem: Permission tidak di-grant secara otomatis
Penyebab: Android 6.0+ memerlukan runtime permission untuk beberapa akses.
Solusi:
# Grant permission secara manual
adb shell pm grant com.example.app android.permission.CAMERA
adb shell pm grant com.example.app android.permission.READ_CONTACTS
# Atau gunakan auto-grant (butuh root)
adb shell pm grant com.example.app android.permission.POST_NOTIFICATIONSProblem: Permission di-revoke saat test berjalan
Penyebab: Aplikasi di-reinstall atau clear data.
Solusi:
- Grant ulang permission setelah clear data
- Atau gunakan
adb install -guntuk auto-grant all permissions:
adb install -g app.apkFastInputIME / Keyboard
Problem: Keyboard tidak muncul saat input
Penyebab: Heimdall menggunakan FastInputIME (Ghost Keyboard) untuk input cepat, keyboard bawaan disembunyikan.
Solusi:
- Tunggu sampai skrip selesai - keyboard akan kembali normal
- Atau matikan FastInputIME via ADB:
adb shell ime set com.android.inputmethod.latin/.LatinIME- Set default keyboard kembali:
adb shell ime set com.android.inputmethod.latin/.LatinIMEProblem: FastInputIME tidak terinstall
Penyebab: APK FastInputIME belum diinstall di device.
Solusi:
# Install FastInputIME APK
adb install -r path/to/FastInputIME.apk
# Set sebagai default IME
adb shell ime set com.github.uiautomator/.FastInputIMEProblem: Input tidak bekerja di某些 aplikasi
Penyebab: Beberapa aplikasi menggunakan custom input method yang tidak kompatibel.
Solusi:
- Coba gunakan
Ketikdengan input method bawaan (matikan FastInputIME sementara) - Atau gunakan ADB input command:
adb shell input text "hello world"- Gunakan
Ketik URUTANjika input field tidak terdeteksi
Performance
Problem: UIAutomator2 lambat
Penyebab: Hierarchy UI besar atau device lambat.
Solusi:
- Gunakan selector yang spesifik, jangan dump seluruh hierarchy:
# Jangan
driver.dump_hierarchy()
# Lakukan
driver(text="Login").exists- Gunakan
resource-iduntuk akses cepat - Cache selector yang sering digunakan
Problem: Screenshot lambat atau kosong
Penyebab: Device overloaded atau permission tidak ada.
Solusi:
# Cek apakah screenshot berfungsi
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png .
# Jika berhasil, masalah di sisi Heimdall
# Cek permission storage
adb shell pm grant com.example.app android.permission.WRITE_EXTERNAL_STORAGEProblem: Touch event tidak terdaftar dengan benar
Penyebab: Koordinat salah atau layar dalam keadaan scaled.
Solusi:
# Cek resolusi layar
adb shell wm size
# Jika ada scaling
adb shell wm density
# Reset density jika perlu
adb shell wm density resetChecklist Android
Gunakan checklist ini saat mengatasi masalah Android:
- [ ] ADB terinstall dan terdeteksi (
adb devices) - [ ] Device terhubung dan dalam keadaan unlocked
- [ ] USB Debugging aktif
- [ ] uiautomator2 sudah diinit
- [ ] Aplikasi target terinstall
- [ ] Permission yang dibutuhkan sudah di-grant
- [ ] FastInputIME terinstall dan aktif (jika digunakan)
- [ ] Device tidak dalam keadaan low battery
- [ ] Hardware acceleration aktif untuk emulator
- [ ] Log diperiksa untuk error spesifik
Referensi
- Common Issues - Masalah umum di semua platform
- Web Specific Troubleshooting - Masalah spesifik Web
- Debugging Tips - Workflow debugging