Android Debug Bridge (adb)

Android Debug Bridge (adb) adalah alat command line serbaguna yang memungkinkan Anda berkomunikasi dengan perangkat. Perintah adb memfasilitasi berbagai tindakan perangkat, seperti menginstal dan men-debug aplikasi. adb menyediakan akses ke shell Unix yang dapat Anda gunakan untuk menjalankan berbagai perintah di perangkat. Ini adalah program klien-server yang meliputi tiga komponen:

  • Klien, yang mengirimkan perintah. Klien berjalan pada mesin pengembangan. Anda dapat memanggil klien dari terminal command line dengan mengeluarkan perintah adb.
  • Daemon (adbd), yang menjalankan perintah di perangkat. Daemon berjalan sebagai proses latar belakang di setiap perangkat.
  • Server, yang mengelola komunikasi antara klien dan daemon. Server berjalan sebagai proses latar belakang pada mesin pengembangan Anda.

adb disertakan dalam paket Android SDK Platform-Tools. Download paket ini dengan SDK Manager, yang menginstalnya di android_sdk/platform-tools/. Jika Anda menginginkan paket Android SDK Platform Tools mandiri, download di sini.

Untuk mengetahui informasi tentang menghubungkan perangkat untuk digunakan melalui adb, termasuk cara menggunakan Connection Assistant untuk memecahkan masalah umum, lihat Menjalankan aplikasi pada perangkat hardware.

Cara kerja adb

Saat Anda memulai klien adb, klien akan memeriksa terlebih dahulu apakah ada proses server adb yang sudah berjalan. Jika tidak ada, klien akan memulai proses server. Saat server dimulai, server akan mengikat ke port TCP lokal 5037 dan memproses perintah yang dikirim dari klien adb.

Catatan: Semua klien adb menggunakan port 5037 untuk berkomunikasi dengan server adb.

Selanjutnya server akan mengatur koneksi ke semua perangkat yang berjalan. Server akan mencari emulator dengan memindai port bernomor ganjil dalam rentang 5555 hingga 5585, yang digunakan oleh 16 emulator pertama. Setelah menemukan daemon adb (adbd), server akan mengatur koneksi ke port tersebut.

Setiap emulator menggunakan sepasang port berurutan—port genap untuk koneksi konsol dan port ganjil untuk koneksi adb. Contoh:

Emulator 1, konsol: 5554
Emulator 1, adb: 5555
Emulator 2, konsol: 5556
Emulator 2, adb: 5557
dan seterusnya.

Seperti yang ditunjukkan, emulator yang terhubung ke adb pada port 5555 sama dengan emulator yang konsolnya memproses port 5554.

Setelah server menyiapkan koneksi ke semua perangkat, Anda dapat menggunakan perintah adb untuk mengakses perangkat tersebut. Karena server mengelola koneksi ke perangkat dan menangani perintah dari banyak klien adb, Anda dapat mengontrol perangkat apa pun dari klien mana pun atau dari skrip.

Mengaktifkan proses debug adb di perangkat Anda

Untuk menggunakan adb dengan perangkat yang dihubungkan melalui USB, Anda harus mengaktifkan proses debug USB dalam setelan sistem perangkat, di bagian Opsi developer. Di Android 4.2 (API level 17) dan yang lebih tinggi, layar Opsi developer disembunyikan secara default. Agar opsi tersebut tersedia, aktifkan opsi Developer.

Anda sekarang bisa menghubungkan perangkat Anda dengan USB. Anda dapat memverifikasi bahwa perangkat Anda tersambung dengan menjalankan adb devices dari direktori android_sdk/platform-tools/. Setelah tersambung, nama perangkat akan tercantum sebagai "perangkat".

Catatan: Ketika Anda menghubungkan perangkat yang menjalankan Android 4.2.2 (API level 17) atau yang lebih tinggi, sistem akan menampilkan dialog yang menanyakan apakah Anda ingin menerima kunci RSA agar proses debug dapat dijalankan melalui komputer ini. Mekanisme keamanan ini melindungi perangkat pengguna karena memastikan bahwa proses debug USB dan perintah adb lainnya tidak dapat dijalankan kecuali jika Anda dapat membuka kunci perangkat dan mengonfirmasi dialog.

Untuk mengetahui informasi selengkapnya tentang cara menghubungkan ke perangkat melalui USB, baca Menjalankan aplikasi di perangkat hardware.

Menghubungkan ke perangkat melalui Wi-Fi

Catatan: Petunjuk di bawah tidak berlaku untuk perangkat Wear yang menjalankan Android 11 (API level 30). Lihat panduan melakukan proses debug aplikasi Wear OS untuk mengetahui informasi selengkapnya.

Android 11 (API level 30) dan yang lebih tinggi mendukung deployment dan proses debug aplikasi secara nirkabel dari workstation menggunakan Android Debug Bridge (adb). Misalnya, Anda dapat men-deploy aplikasi yang dapat di-debug ke beberapa perangkat jarak jauh, tanpa perlu menghubungkan perangkat secara langsung melalui USB. Dengan cara tersebut, Anda tidak perlu menangani masalah koneksi USB umum, seperti penginstalan driver.

Sebelum Anda mulai menggunakan proses debug nirkabel, lakukan hal berikut:

  • Pastikan workstation dan perangkat Anda terhubung ke jaringan nirkabel yang sama.

  • Pastikan perangkat Anda menjalankan Android 11 (API level 30) atau yang lebih baru untuk ponsel atau Android 13 (API level 33) atau yang lebih baru untuk TV dan WearOS. Untuk mengetahui informasi selengkapnya, lihat Memeriksa & mengupdate versi Android.

  • Jika menggunakan IDE, pastikan Anda telah menginstal Android Studio versi terbaru. Anda dapat mendownloadnya di sini.

  • Di workstation Anda, update SDK Platform Tools ke versi terbaru.

Untuk menggunakan proses debug nirkabel, Anda harus menghubungkan perangkat ke workstation menggunakan kode QR atau kode penghubung. Workstation dan perangkat Anda harus terhubung ke jaringan nirkabel yang sama. Untuk menghubungkan perangkat, ikuti langkah-langkah berikut:

  1. Aktifkan opsi developer di perangkat Anda.

  2. Buka Android Studio, lalu pilih Pair Devices Using Wi-Fi dari menu jalankan konfigurasi.

    Menu dropdown Jalankan konfigurasi
    Gambar 1. Jalankan menu konfigurasi.

    Jendela Sambungkan perangkat melalui Wi-Fi akan muncul, seperti yang ditunjukkan pada gambar 2.

    Screenshot jendela pop-up perangkat yang disambungkan melalui Wi-Fi
    Gambar 2. Jendela pop-up untuk menyambungkan perangkat menggunakan kode QR atau kode penyambungan.
  3. Di perangkat, ketuk Proses debug nirkabel dan sambungkan perangkat Anda:

    Screenshot
            ponsel Pixel yang menampilkan setelan sistem Proses debug nirkabel.
    Gambar 3. Screenshot setelan Proses debug nirkabel di ponsel Google Pixel.
    1. Untuk menyambungkan perangkat dengan kode QR, pilih Sambungkan perangkat dengan kode QR, lalu pindai kode QR yang diperoleh dari pop-up Sambungkan perangkat melalui Wi-Fi yang ditunjukkan dalam gambar 2.

    2. Untuk menyambungkan perangkat dengan kode penyambungan, pilih Sambungkan perangkat dengan kode penyambungan dari pop-up Sambungkan perangkat melalui Wi-Fi. Di perangkat, pilih Sambungkan menggunakan kode penyambungan dan catat kode enam digit yang diberikan. Setelah perangkat muncul di jendela Sambungkan perangkat melalui Wi-Fi, Anda dapat memilih Sambungkan dan memasukkan kode enam digit yang ditampilkan di perangkat.

      Screenshot contoh entri kode PIN
      Gambar 4. Contoh entri kode enam digit.
  4. Setelah perangkat disambungkan, Anda dapat mencoba men-deploy aplikasi ke perangkat.

    Untuk menyambungkan perangkat lain atau melupakan perangkat saat ini di workstation, buka Proses debug nirkabel di perangkat. Ketuk nama workstation Anda di bagian Perangkat yang disambungkan, lalu pilih Lupakan.

  5. Jika ingin mengaktifkan dan menonaktifkan proses debug nirkabel dengan cepat, Anda dapat menggunakan Kartu developer setelan cepat untuk Proses debug nirkabel, yang dapat ditemukan di Opsi Developer > Kartu developer setelan cepat.

    Screenshot
            Kartu developer setelan cepat dari ponsel Google Pixel.
    Gambar 5. Setelan Kartu developer setelan cepat dapat digunakan untuk mengaktifkan dan menonaktifkan proses debug nirkabel dengan cepat.

Koneksi Wi-Fi menggunakan command line

Atau, untuk terhubung ke perangkat Anda menggunakan command line tanpa Android Studio, ikuti langkah-langkah berikut:

  1. Aktifkan opsi developer di perangkat Anda, seperti yang dijelaskan tadi.

  2. Aktifkan Proses debug nirkabel di perangkat, seperti yang dijelaskan tadi.

  3. Di workstation, buka jendela terminal dan buka android_sdk/platform-tools.

  4. Temukan alamat IP, nomor port, dan kode penyambungan dengan memilih Pair device with pairing code. Catat alamat IP, nomor port, dan kode penyambungan yang ditampilkan di perangkat.

  5. Di terminal workstation Anda, jalankan adb pair ipaddr:port. Gunakan alamat IP dan nomor port dari langkah di atas.

  6. Jika diminta, masukkan kode penyambungan, seperti yang ditunjukkan di bawah ini.

    Screenshot
            penyambungan pada command line.
    Gambar 6. Akan muncul pesan yang menunjukkan bahwa perangkat Anda berhasil disambungkan.

Menyelesaikan masalah koneksi nirkabel

Jika mengalami masalah saat menghubungkan ke perangkat secara nirkabel, coba langkah-langkah pemecahan masalah berikut untuk menyelesaikan masalah tersebut.

Memeriksa apakah workstation dan perangkat Anda memenuhi prasyarat

Pastikan workstation dan perangkat memenuhi prasyarat yang tercantum di awal bagian ini.

Memeriksa masalah umum lainnya

Berikut adalah daftar masalah umum saat ini terkait proses debug nirkabel (dengan adb atau Android Studio) dan cara mengatasinya:

  • Wi-Fi tidak terhubung: Jaringan Wi-Fi yang aman, seperti jaringan Wi-Fi perusahaan, mungkin memblokir koneksi p2p dan tidak memungkinkan Anda terhubung melalui Wi-Fi. Coba hubungkan dengan kabel atau jaringan Wi-Fi (non-perusahaan) lainnya. Koneksi nirkabel menggunakan adb connect ip:port melalui tcp/ip (mengikuti koneksi USB awal) adalah opsi lain, jika menggunakan jaringan non-perusahaan adalah opsi.

  • adb melalui Wi-Fi terkadang dinonaktifkan secara otomatis: Hal ini dapat terjadi jika perangkat beralih jaringan Wi-Fi atau terputus dari jaringan. Untuk menyelesaikannya, hubungkan ulang ke jaringan.

  • Perangkat tidak terhubung setelah penyambungan berhasil: adb mengandalkan mDNS untuk menemukan dan otomatis terhubung ke perangkat yang disambungkan. Jika konfigurasi jaringan atau perangkat Anda tidak mendukung mDNS atau telah menonaktifkannya, Anda harus terhubung secara manual ke perangkat menggunakan adb connect ip:port.

Menghubungkan secara nirkabel dengan perangkat setelah koneksi USB awal (hanya opsi yang tersedia di Android 10 dan yang lebih lama)

Catatan: Alur kerja ini juga berlaku untuk Android 11 (dan yang lebih tinggi), syaratnya juga melibatkan koneksi *awal* melalui USB fisik.

Catatan: Petunjuk berikut tidak berlaku untuk perangkat Wear yang menjalankan Android 10 (API level 29) atau yang lebih rendah. Lihat panduan tentang melakukan proses debug aplikasi Wear OS untuk mengetahui informasi selengkapnya.

adb biasanya berkomunikasi dengan perangkat melalui USB, tetapi Anda juga dapat menggunakan adb melalui Wi-Fi. Untuk menghubungkan perangkat yang menjalankan Android 10 (API level 29) atau lebih rendah, ikuti langkah-langkah awal ini melalui USB:

  1. Hubungkan perangkat Android dan komputer host adb ke jaringan Wi-Fi yang sama.
  2. Catatan: Berhati-hatilah karena tidak semua titik akses (AP) akan cocok. Anda mungkin perlu menggunakan titik akses yang firewall-nya telah dikonfigurasi dengan benar untuk mendukung adb.

  3. Hubungkan perangkat ke komputer host menggunakan kabel USB.
  4. Setel perangkat target untuk memproses koneksi TCP/IP pada port 5555:
    adb tcpip 5555
    
  5. Lepaskan kabel USB dari perangkat target.
  6. Temukan alamat IP perangkat Android. Misalnya, pada perangkat Nexus, Anda dapat menemukan alamat IP di Setelan > Tentang tablet (atau Tentang ponsel) > Status > Alamat IP.
  7. Hubungkan ke perangkat berdasarkan alamat IP-nya:
    adb connect device_ip_address:5555
    
  8. Pastikan komputer host Anda terhubung ke perangkat target:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

Perangkat Anda kini terhubung ke adb.

Jika koneksi adb ke perangkat Anda terputus:

  • Pastikan host Anda masih terhubung ke jaringan Wi-Fi yang sama dengan perangkat Android Anda.
  • Hubungkan kembali dengan menjalankan langkah adb connect sekali lagi.
  • Jika tidak berhasil, reset host adb Anda:
    adb kill-server
    

    Kemudian mulai lagi dari awal.

Kueri untuk perangkat

Sebelum mengeluarkan perintah adb, sebaiknya ketahui instance perangkat yang terhubung ke server adb. Buat daftar perangkat yang terhubung menggunakan perintah devices:

  adb devices -l
  

Sebagai respons, adb akan mencetak informasi status ini untuk setiap perangkat:

  • Nomor seri: adb membuat string untuk mengidentifikasi perangkat secara unik berdasarkan nomor port-nya. Berikut adalah contoh nomor seri: emulator-5554
  • Status: Status koneksi perangkat dapat berupa salah satu dari hal berikut:
    • offline: Perangkat tidak terhubung ke adb atau tidak merespons.
    • device: Perangkat terhubung ke server adb. Perhatikan bahwa status ini tidak berarti bahwa sistem Android telah selesai melakukan booting dan siap digunakan, karena perangkat terhubung ke adb saat sistem masih booting. Setelah booting, status ini merupakan status operasional normal untuk suatu perangkat.
    • no device: Tidak ada perangkat yang terhubung.
  • Deskripsi: Jika Anda menyertakan opsi -l, perintah devices akan memberitahukan tentang perangkat tersebut. Informasi ini berguna jika ada beberapa perangkat yang terhubung sehingga Anda dapat membedakannya.

Contoh berikut menunjukkan perintah devices dan output-nya. Ada tiga perangkat yang sedang berjalan. Dua baris pertama dalam daftar adalah emulator, sedangkan baris ketiga adalah perangkat hardware yang terpasang ke komputer.

$ adb devices
List of devices attached
emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64
emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86
0a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo

Emulator tidak tercantum

Perintah adb devices memiliki urutan perintah corner-case yang menyebabkan emulator yang berjalan tidak muncul di output adb devices meskipun emulatornya terlihat di desktop Anda. Ini terjadi saat semua kondisi berikut terpenuhi:

  • Server adb tidak berjalan.
  • Anda menggunakan perintah emulator dengan opsi -port atau -ports pada port bernomor ganjil antara 5554 dan 5584.
  • Port bernomor ganjil yang Anda pilih tidak sibuk sehingga koneksi port dapat dilakukan pada nomor port yang ditentukan — atau, jika port tersebut sibuk, emulator akan beralih ke port lain yang memenuhi persyaratan nomor 2.
  • Anda memulai server adb setelah memulai emulator.

Salah satu cara untuk menghindari situasi ini adalah membiarkan emulator memilih port-nya sendiri dan menjalankan tidak lebih dari 16 emulator sekaligus. Cara lainnya adalah dengan selalu menjalankan server adb sebelum Anda menggunakan perintah emulator, seperti yang dijelaskan dalam contoh berikut.

Contoh 1: Dalam urutan perintah berikut, perintah adb devices memulai server adb, tetapi daftar perangkat tidak muncul.

Hentikan server adb dan masukkan perintah berikut sesuai urutan yang ditunjukkan. Untuk nama AVD, berikan nama AVD yang valid dari sistem Anda. Untuk mendapatkan daftar nama AVD, ketik emulator -list-avds. Perintah emulator ada di direktori android_sdk/tools.

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5555
$ adb devices

List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

Contoh 2: Dalam urutan perintah berikut, adb devices menampilkan daftar perangkat karena server adb dimulai terlebih dahulu.

Untuk melihat emulator dalam output adb devices, hentikan server adb, lalu mulai lagi setelah menggunakan perintah emulator dan sebelum menggunakan perintah adb devices, seperti berikut:

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5557
$ adb start-server
$ adb devices

List of devices attached
emulator-5557 device

Untuk mengetahui informasi selengkapnya tentang opsi command line emulator, lihat Opsi startup Command Line.

Mengirimkan perintah ke perangkat tertentu

Jika ada beberapa perangkat yang berjalan, Anda harus menentukan perangkat target saat mengeluarkan perintah adb. Untuk menentukan target, ikuti langkah berikut:

  1. Gunakan perintah devices untuk mendapatkan nomor seri target.
  2. Setelah mendapatkan nomor seri, gunakan opsi -s dengan perintah adb untuk menentukan nomor serinya.
    1. Jika akan mengeluarkan banyak perintah adb, Anda dapat menetapkan variabel lingkungan $ANDROID_SERIAL agar berisi nomor seri.
    2. Jika Anda menggunakan -s dan $ANDROID_SERIAL, -s akan mengganti $ANDROID_SERIAL.

Pada contoh berikut, daftar perangkat yang terpasang didapatkan, kemudian nomor seri salah satu perangkat digunakan untuk menginstal helloWorld.apk di perangkat tersebut:

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
0.0.0.0:6520  device

# To install on emulator-5555
$ adb -s emulator-5555 install helloWorld.apk
# To install on 0.0.0.0:6520
$ adb -s 0.0.0.0:6520 install helloWorld.apk

Catatan: Jika Anda mengeluarkan perintah tanpa menentukan perangkat target, sementara perangkat yang tersedia ada beberapa, adb akan menampilkan error "adb: more than one device/emulator".

Jika perangkat yang tersedia ada beberapa, tetapi hanya satu yang merupakan emulator, gunakan opsi -e untuk mengirim perintah ke emulator. Jika perangkat yang tersedia ada beberapa, tetapi hanya satu perangkat hardware yang terpasang, gunakan opsi -d untuk mengirimkan perintah ke perangkat hardware.

Menginstal aplikasi

Anda dapat menggunakan adb untuk menginstal APK di emulator atau perangkat yang terhubung menggunakan perintah install:

adb install path_to_apk

Anda harus menggunakan opsi -t dengan perintah install saat menginstal APK pengujian. Untuk mengetahui informasi selengkapnya, lihat -t.

Untuk menginstal beberapa APK, gunakan install-multiple. Hal ini berguna jika Anda mendownload semua APK untuk perangkat tertentu untuk aplikasi Anda dari Konsol Play dan ingin menginstalnya di emulator atau perangkat fisik.

Untuk mengetahui informasi selengkapnya tentang cara membuat file APK yang bisa Anda instal pada instance perangkat/emulator, lihat Membuat dan Menjalankan aplikasi Anda.

Catatan: Jika menggunakan Android Studio, Anda tidak perlu menggunakan adb secara langsung untuk menginstal aplikasi di emulator atau perangkat. Sebaliknya, Android Studio akan menangani pemaketan dan penginstalan aplikasi itu untuk Anda.

Menyiapkan penerusan port

Gunakan perintah forward untuk menyiapkan penerusan port arbitrer, yang meneruskan permintaan pada port host tertentu ke port yang berbeda di perangkat. Contoh berikut ini menyiapkan penerusan port host 6100 ke port perangkat 7100:

adb forward tcp:6100 tcp:7100

Contoh berikut ini menyiapkan penerusan port host 6100 ke :logd: lokal

adb forward tcp:6100 local:logd

Hal ini dapat berguna jika Anda mencoba menentukan apa yang dikirim ke port tertentu pada perangkat. Semua data yang diterima akan ditulis ke daemon logging sistem dan ditampilkan di log perangkat.

Menyalin file ke dan dari perangkat

Gunakan perintah pull dan push untuk menyalin file ke dan dari perangkat. Tidak seperti perintah install, yang hanya menyalin file APK ke lokasi tertentu, perintah pull dan push memungkinkan Anda menyalin sembarang direktori dan file ke lokasi mana pun di perangkat.

Untuk menyalin file atau direktori beserta subdirektorinya dari perangkat, lakukan langkah berikut:

adb pull remote local

Untuk menyalin file atau direktori beserta subdirektorinya ke perangkat, gunakan kode berikut:

adb push local remote

Ganti local dan remote dengan jalur ke direktori/file target di mesin pengembangan Anda (lokal) dan di perangkat (jarak jauh). Contoh:

adb push myfile.txt /sdcard/myfile.txt

Menghentikan server adb

Dalam beberapa kasus, Anda mungkin perlu menghentikan proses server adb, lalu memulai ulang server untuk menyelesaikan masalah. Misalnya, hal ini dapat terjadi jika adb tidak merespons perintah.

Untuk menghentikan server adb, gunakan perintah adb kill-server. Anda kemudian bisa memulai ulang server dengan menjalankan perintah adb lainnya.

Memberikan perintah adb

Jalankan perintah adb dari command line pada mesin pengembangan atau dari skrip menggunakan hal berikut:

adb [-d | -e | -s serial_number] command

Jika hanya ada satu emulator yang berjalan atau satu perangkat yang terhubung, perintah adb secara default akan dikirim ke perangkat tersebut. Jika beberapa emulator berjalan dan/atau beberapa perangkat terpasang, Anda harus menggunakan opsi -d, -e, atau -s untuk menentukan perangkat target mana yang menjadi tujuan perintah.

Anda dapat melihat daftar detail dari semua perintah adb yang didukung menggunakan perintah berikut:

adb --help

Memberikan perintah shell

Anda dapat menggunakan perintah shell untuk memberikan perintah perangkat melalui adb, atau untuk memulai shell interaktif. Untuk memberikan perintah tunggal, gunakan perintah shell seperti ini:

adb [-d |-e | -s serial_number] shell shell_command

Untuk memulai shell interaktif pada perangkat, gunakan perintah shell seperti ini:

adb [-d | -e | -s serial_number] shell

Untuk keluar dari shell interaktif, tekan Control+D atau ketik exit.

Android menyediakan sebagian besar alat command line Unix biasa. Untuk daftar alat yang tersedia, gunakan perintah berikut:

adb shell ls /system/bin

Bantuan tersedia untuk sebagian besar perintah melalui argumen --help. Banyak perintah shell disediakan oleh toybox. Bantuan umum yang berlaku untuk semua perintah toybox tersedia melalui toybox --help.

Dengan Android Platform Tools 23 dan yang lebih tinggi, adb menangani argumen dengan cara yang sama seperti perintah ssh(1). Perubahan ini telah memperbaiki banyak masalah terkait injeksi perintah dan memungkinkan eksekusi perintah yang berisi metakarakter shell, seperti adb install Let\'sGo.apk, dengan aman. Tetapi, perubahan ini berarti interpretasi setiap perintah yang mengandung metakarakter shell juga telah berubah.

Misalnya, adb shell setprop key 'value' sekarang merupakan error karena tanda kutip tunggal (') tertutup oleh shell lokal, dan perangkat melihat adb shell setprop key value. Agar perintah ini berfungsi, kutip dua kali, satu untuk shell lokal dan satu lagi untuk shell jauh, seperti yang Anda lakukan dengan ssh(1). Misalnya, adb shell setprop key 'value' .

Lihat juga Alat command line logcat yang berguna untuk memantau log sistem.

Memanggil pengelola aktivitas

Dalam sebuah shell adb, Anda dapat memberikan perintah dengan alat pengelola aktivitas (am) untuk melakukan berbagai tindakan sistem, seperti memulai aktivitas, menghentikan proses secara paksa, menyiarkan intent, memodifikasi properti layar perangkat, dan banyak lagi.

Saat berada dalam shell, sintaksis am adalah:

am command

Anda juga bisa memberikan perintah pengelola aktivitas langsung dari adb tanpa memasuki shell jarak jauh. Contoh:

adb shell am start -a android.intent.action.VIEW

Tabel 1. Perintah pengelola aktivitas yang tersedia

Perintah Deskripsi
start [options] intent Memulai Activity yang ditentukan oleh intent.

Lihat Spesifikasi untuk argumen intent.

Pilihannya adalah:

  • -D: Mengaktifkan proses debug.
  • -W: Menunggu peluncuran selesai.
  • --start-profiler file: Memulai profiler dan mengirim hasilnya ke file.
  • -P file: Seperti --start-profiler, tetapi pembuatan profil akan berhenti jika aplikasi tidak ada aktivitas.
  • -R count: Mengulangi peluncuran aktivitas count kali. Sebelum setiap pengulangan, aktivitas paling atas akan diselesaikan.
  • -S: Memaksa berhenti aplikasi target sebelum memulai aktivitas.
  • --opengl-trace: Mengaktifkan pelacakan fungsi OpenGL.
  • --user user_id | current: Menentukan pengguna yang menjalankannya; jika tidak ditetapkan, maka jalankan sebagai pengguna saat ini.
startservice [options] intent Memulai Service yang ditentukan oleh intent.

Lihat Spesifikasi untuk argumen intent.

Pilihannya adalah:

  • --user user_id | current: Menentukan pengguna yang menjalankannya. Jika tidak ditentukan, jalankan sebagai pengguna saat ini.
force-stop package Memaksa berhenti segala sesuatu yang berkaitan dengan package.
kill [options] package Menghentikan semua proses yang berkaitan dengan package. Perintah ini hanya menghentikan proses yang aman untuk dihentikan dan yang tidak akan memengaruhi pengalaman pengguna.

Pilihannya adalah:

  • --user user_id | all | current: Menentukan proses pengguna yang akan dihentikan. Jika tidak ditentukan, tutup semua proses pengguna.
kill-all Mematikan semua proses latar belakang.
broadcast [options] intent Mengeluarkan maksud siaran.

Lihat Spesifikasi untuk argumen intent.

Pilihannya adalah:

  • [--user user_id | all | current]: Menentukan pengguna yang akan dikirimi. Jika tidak ditentukan, kirim ke semua pengguna.
instrument [options] component Mulai memantau dengan instance Instrumentation. Biasanya target component berformat test_package/runner_class.

Pilihannya adalah:

  • -r: Mencetak hasil mentah (jika tidak, mendekode report_key_streamresult). Gunakan dengan [-e perf true] untuk menghasilkan output mentah untuk pengukuran performa.
  • -e name value: Menetapkan argumen name ke value. Untuk test runner, format yang biasa dipakai adalah -e testrunner_flag value[,value...].
  • -p file: Menulis data pembuatan profil ke file.
  • -w: Menunggu instrumentasi hingga selesai sebelum kembali. Diwajibkan untuk test runner.
  • --no-window-animation: Menonaktifkan animasi jendela saat berjalan.
  • --user user_id | current: Menentukan di pengguna mana instrumentasi dijalankan. Jika tidak ditentukan, jalankan pada pengguna saat ini.
profile start process file Memulai profiler pada process, menulis hasilnya ke file.
profile stop process Menghentikan profiler di process.
dumpheap [options] process file Membuang heap process, menulis ke file.

Pilihannya adalah:

  • --user [user_id | current]: Menentukan pengguna proses yang akan dikeluarkan saat memberikan nama proses. Jika tidak ditentukan, pengguna saat ini akan digunakan.
  • -n: Mengeluarkan heap native, bukan heap terkelola.
set-debug-app [options] package Setel package aplikasi ke debug.

Pilihannya adalah:

  • -w: Menunggu debugger saat aplikasi dimulai.
  • --persistent: Mempertahankan nilai ini.
clear-debug-app Mengosongkan paket yang sebelumnya ditetapkan untuk proses debug dengan set-debug-app.
monitor [options] Memulai pemantauan untuk kejadian mogok atau ANR.

Pilihannya adalah:

  • --gdb: Memulai gdbserv pada port yang ditentukan saat terjadi error/ANR.
screen-compat {on | off} package Mengontrol mode kompatibilitas layar package.
display-size [reset | widthxheight] Mengganti ukuran tampilan perangkat. Perintah ini berguna untuk menguji aplikasi Anda pada berbagai ukuran layar dengan meniru resolusi perangkat berlayar kecil pada perangkat berlayar besar, dan sebaliknya.

Contoh:
am display-size 1280x800

display-density dpi Mengganti kepadatan tampilan perangkat. Perintah ini berguna untuk menguji aplikasi Anda pada berbagai kepadatan layar dengan meniru lingkungan layar berkepadatan tinggi menggunakan layar berkepadatan rendah, dan sebaliknya.

Contoh:
am display-density 480

to-uri intent Mencetak spesifikasi maksud yang diberikan sebagai URI.

Lihat Spesifikasi untuk argumen intent.

to-intent-uri intent Mencetak spesifikasi intent yang ditentukan sebagai URI intent:.

Lihat Spesifikasi untuk argumen intent.

Spesifikasi untuk argumen intent

Untuk perintah pengelola aktivitas yang menggunakan argumen intent, Anda dapat menentukan intent dengan opsi berikut:

Memanggil pengelola paket (pm)

Dalam shell adb, Anda dapat memberikan perintah dengan alat pengelola paket (pm) untuk menjalankan tindakan dan kueri pada paket aplikasi yang diinstal pada perangkat.

Saat berada dalam shell, sintaksis pm adalah:

pm command

Anda juga dapat memberikan perintah pengelola paket secara langsung dari adb tanpa memasuki shell jarak jauh. Contoh:

adb shell pm uninstall com.example.MyApp

Tabel 2. Perintah pengelola paket yang tersedia

Perintah Deskripsi
list packages [options] filter Mencetak semua paket, atau hanya paket yang namanya berisi teks dalam filter.

Opsi:

  • -f: Melihat file terkait.
  • -d: Memfilter untuk hanya menampilkan paket yang dinonaktifkan.
  • -e: Memfilter untuk hanya menampilkan paket yang diaktifkan.
  • -s: Memfilter untuk hanya menampilkan paket sistem.
  • -3: Memfilter untuk hanya menampilkan paket pihak ketiga.
  • -i: Melihat penginstal untuk paket.
  • -u: Menyertakan paket yang di-uninstal.
  • --user user_id: Ruang pengguna untuk mengkueri.
list permission-groups Mencetak semua grup izin yang diketahui.
list permissions [options] group Mencetak semua izin yang diketahui, atau hanya izin yang ada dalam group.

Opsi:

  • -g: Mengatur berdasarkan grup.
  • -f: Mencetak semua informasi.
  • -s: Ringkasan singkat.
  • -d: Hanya mencantumkan izin berbahaya.
  • -u: Hanya mencantumkan izin yang akan dilihat pengguna.
list instrumentation [options] Mencantumkan daftar semua paket tes.

Opsi:

  • -f: Mencantumkan file APK untuk paket pengujian.
  • target_package: Mencantumkan paket pengujian hanya untuk aplikasi ini.
list features Mencetak semua fitur sistem.
list libraries Mencetak semua library yang didukung oleh perangkat saat ini.
list users Mencetak semua pengguna di sistem.
path package Mencetak jalur ke APK untuk package yang ditentukan.
install [options] path Menginstal paket yang ditetapkan oleh path ke sistem.

Opsi:

  • -r: Menginstal ulang aplikasi yang sudah ada, dan mempertahankan datanya.
  • -t: Mengizinkan penginstalan APK pengujian. Gradle menghasilkan APK pengujian jika Anda telah menjalankan atau men-debug aplikasi atau telah menggunakan perintah Build > Build APK pada Android Studio. Jika APK dibuat menggunakan SDK pratinjau developer, Anda harus menyertakan opsi -t dengan perintah install jika menginstal APK pengujian.
  • -i installer_package_name: Menetapkan nama paket installer.
  • --install-location location: Menetapkan lokasi penginstalan menggunakan salah satu nilai berikut:
    • 0: Menggunakan lokasi penginstalan default.
    • 1: Menginstal di penyimpanan perangkat internal.
    • 2: Menginstal di media eksternal.
  • -f: Menginstal paket pada memori sistem internal.
  • -d: Mengizinkan downgrade kode versi.
  • -g: Memberikan semua izin yang tercantum dalam manifes aplikasi.
  • --fastdeploy: Mengupdate paket yang diinstal dengan cepat hanya dengan mengupdate bagian APK yang diubah.
  • --incremental: Menginstal cukup APK untuk meluncurkan aplikasi saat melakukan streaming data yang tersisa di latar belakang. Untuk menggunakan fitur ini, Anda harus menandatangani APK, membuat file APK Signature Scheme v4, dan menempatkan file ini di direktori yang sama dengan APK. Fitur ini hanya didukung di perangkat tertentu. Opsi ini memaksa adb untuk menggunakan fitur atau gagal jika tidak didukung, dengan informasi panjang tentang alasan kegagalannya. Tambahkan opsi --wait untuk menunggu hingga APK terinstal sepenuhnya sebelum memberikan akses ke APK.

    --no-incremental mencegah adb menggunakan fitur ini.

uninstall [options] package Membuang paket dari sistem.

Opsi:

  • -k: Mempertahankan direktori cache dan data setelah paket dihapus.
  • --user user_id: Menentukan pengguna yang paketnya dihapus.
  • --versionCode version_code: Hanya meng-uninstal jika aplikasi memiliki kode versi yang ditentukan.
clear package Menghapus semua data yang berhubungan dengan paket.
enable package_or_component Mengaktifkan paket atau komponen yang ditentukan (ditulis sebagai "package/class").
disable package_or_component Menonaktifkan paket atau komponen yang ditentukan (tertulis sebagai "package/class").
disable-user [options] package_or_component

Opsi:

  • --user user_id: Pengguna yang akan dinonaktifkan.
grant package_name permission Memberikan izin ke aplikasi. Pada perangkat yang menjalankan Android 6.0 (API level 23) dan yang lebih baru, izin dapat berupa izin apa pun yang dideklarasikan dalam manifes aplikasi. Pada perangkat yang menjalankan Android 5.1 (API level 22) dan yang lebih rendah, izin tersebut harus berupa izin opsional yang ditentukan oleh aplikasi.
revoke package_name permission Mencabut izin dari aplikasi. Pada perangkat yang menjalankan Android 6.0 (API level 23) dan yang lebih baru, izin dapat berupa izin apa pun yang dideklarasikan dalam manifes aplikasi. Pada perangkat yang menjalankan Android 5.1 (API level 22) dan yang lebih rendah, izin tersebut harus berupa izin opsional yang ditentukan oleh aplikasi.
set-install-location location Ubah lokasi penginstalan default. Nilai lokasi:
  • 0: Auto: Sistem dapat menentukan lokasi terbaik.
  • 1: Internal: Menginstal pada memori internal perangkat.
  • 2: Eksternal: Menginstal di media eksternal.

Catatan: Perintah ini hanya dimaksudkan untuk proses debug. Penggunaannya dapat menyebabkan kerusakan aplikasi dan perilaku yang tidak diinginkan lainnya.

get-install-location Menampilkan lokasi penginstalan saat ini. Nilai yang ditampilkan:
  • 0 [auto]: Memungkinkan sistem menentukan lokasi terbaik
  • 1 [internal]: Menginstal di penyimpanan perangkat internal
  • 2 [external]: Menginstal di media eksternal
set-permission-enforced permission [true | false] Menentukan apakah izin yang ditentukan harus diberlakukan.
trim-caches desired_free_space Memangkas file cache untuk mencapai ruang kosong yang diberikan.
create-user user_name Membuat pengguna baru dengan user_name yang ditentukan, yang mencetak ID pengguna baru untuk pengguna tersebut.
remove-user user_id Menghapus pengguna yang memiliki user_id yang ditentukan, yang menghapus semua data yang terkait dengan pengguna tersebut
get-max-users Mencetak jumlah maksimum pengguna yang didukung oleh perangkat.
get-app-links [options] [package]

Mencetak status verifikasi domain untuk package yang ditentukan, atau untuk semua paket jika tidak ada yang ditentukan. Kode status didefinisikan sebagai berikut:

  • none: tidak ada yang direkam untuk domain ini
  • verified: domain berhasil diverifikasi
  • approved: disetujui secara paksa, biasanya melalui shell
  • denied: ditolak secara paksa, biasanya melalui shell
  • migrated: verifikasi yang disimpan dari respons lama
  • restored: verifikasi yang disimpan dari pemulihan data pengguna
  • legacy_failure: ditolak oleh pemverifikasi lama, alasan tidak diketahui
  • system_configured: disetujui secara otomatis oleh konfigurasi perangkat
  • >= 1024: kode error khusus yang spesifik untuk pemverifikasi perangkat

Pilihannya adalah:

  • --user user_id: menyertakan pilihan pengguna. Sertakan semua domain, bukan hanya domain autoVerify.
reset-app-links [options] [package]

Mereset status verifikasi domain untuk paket yang ditentukan, atau untuk semua paket jika tidak ada yang ditentukan.

  • package: paket yang akan direset, atau "all" untuk mereset semua paket

Pilihannya adalah:

  • --user user_id: menyertakan pilihan pengguna. Sertakan semua domain, bukan hanya domain autoVerify.
verify-app-links [--re-verify] [package]

Menyiarkan permintaan verifikasi untuk package tertentu, atau untuk semua paket jika tidak ada yang ditentukan. Hanya mengirim jika paket sebelumnya belum merekam respons.

  • --re-verify: mengirim meskipun paket telah merekam respons
set-app-links [--package package] state domains

Menetapkan status domain untuk paket secara manual. Domain harus dideklarasikan oleh paket sebagai autoVerify agar perintah ini berfungsi. Perintah ini tidak akan melaporkan kegagalan untuk domain yang tidak dapat diterapkan.

  • --package package: paket yang akan ditetapkan, atau "all" untuk menetapkan semua paket
  • state: kode untuk menetapkan domain. Nilai yang valid adalah:
    • STATE_NO_RESPONSE (0): direset seolah-olah tidak ada respons yang direkam.
    • STATE_SUCCESS (1): memperlakukan domain sebagai berhasil diverifikasi oleh agen verifikasi domain. Perhatikan bahwa agen verifikasi domain dapat menggantinya.
    • STATE_APPROVED (2): memperlakukan domain sebagai selalu disetujui, sehingga mencegah agen verifikasi domain mengubahnya.
    • STATE_DENIED (3): memperlakukan domain sebagai selalu ditolak, sehingga mencegah agen verifikasi domain mengubahnya.
  • domains: daftar domain untuk diubah yang dipisahkan spasi, atau "all" untuk mengubah setiap domain.
set-app-links-user-selection --user user_id [--package package] enabled domains

Menetapkan status pemilihan pengguna host untuk paket secara manual. Domain harus dideklarasikan oleh paket agar perintah ini berfungsi. Perintah ini tidak akan melaporkan kegagalan untuk domain yang tidak dapat diterapkan.

  • --user user_id: pengguna yang diubah pilihannya
  • --package package: paket yang akan ditetapkan
  • enabled: untuk menyetujui domain
  • domains: daftar domain untuk diubah yang dipisahkan spasi, atau "all" untuk mengubah setiap domain
set-app-links-user-selection --user user_id [--package package] enabled domains

Menetapkan status pemilihan pengguna host untuk paket secara manual. Domain harus dideklarasikan oleh paket agar perintah ini berfungsi. Perintah ini tidak akan melaporkan kegagalan untuk domain yang tidak dapat diterapkan.

  • --user user_id: pengguna yang diubah pilihannya
  • --package package: paket yang akan ditetapkan
  • enabled: untuk menyetujui domain
  • domains: daftar domain untuk diubah yang dipisahkan spasi, atau "all" untuk mengubah setiap domain
set-app-links-allowed --user user_id [--package package] allowed

Mengubah setelan penanganan link yang diverifikasi otomatis untuk paket.

  • --user user_id: pengguna yang diubah pilihannya
  • --package package: paket yang akan ditetapkan, atau "all" untuk menetapkan semua paket; paket akan direset jika tidak ada paket yang ditentukan.
  • allowed: true (benar) untuk mengizinkan paket membuka link yang diverifikasi otomatis, false (salah) untuk menonaktifkan
get-app-link-owners --user user_id [--package package] domains

Mencetak pemilik untuk domain tertentu bagi pengguna tertentu dengan urutan prioritas rendah ke tinggi.

  • --user user_id: pengguna yang akan dikueri
  • --package package: (opsional) juga mencetak untuk semua domain web yang dideklarasikan oleh paket, atau "all" untuk mencetak semua paket
  • domains: daftar domain yang dipisahkan spasi yang akan dikueri

Memanggil pengelola kebijakan perangkat (dpm)

Untuk membantu mengembangkan dan menguji aplikasi pengelolaan perangkat, berikan perintah ke alat pengelola kebijakan perangkat (dpm). Gunakan alat ini untuk mengontrol aplikasi admin aktif atau mengubah data status kebijakan di perangkat.

Saat berada dalam shell, sintaksis dpm adalah:

dpm command

Anda juga dapat memberikan perintah pengelola kebijakan perangkat secara langsung dari adb tanpa memasuki shell jarak jauh:

adb shell dpm command

Tabel 3. Perintah pengelola kebijakan perangkat yang tersedia

Perintah Deskripsi
set-active-admin [options] component Menetapkan component sebagai admin aktif.

Pilihannya adalah:

  • --user user_id: Menentukan pengguna target. Anda juga dapat meneruskan --user current untuk memilih pengguna saat ini.
set-profile-owner [options] component Tetapkan component sebagai admin aktif dan paketnya sebagai pemilik profil untuk pengguna yang ada.

Pilihannya adalah:

  • --user user_id: Menentukan pengguna target. Anda juga dapat meneruskan --user current untuk memilih pengguna saat ini.
  • --name name: Menentukan nama organisasi yang dapat dibaca manusia.
set-device-owner [options] component Tetapkan component sebagai admin aktif dan paketnya sebagai pemilik perangkat.

Pilihannya adalah:

  • --user user_id: Menentukan pengguna target. Anda juga dapat meneruskan --user current untuk memilih pengguna saat ini.
  • --name name: Menentukan nama organisasi yang dapat dibaca manusia.
remove-active-admin [options] component Menonaktifkan admin aktif. Aplikasi harus mendeklarasikan android:testOnly dalam manifesnya. Perintah ini juga akan menghapus pemilik perangkat dan profil.

Pilihannya adalah:

  • --user user_id: Menentukan pengguna target. Anda juga dapat meneruskan --user current untuk memilih pengguna saat ini.
clear-freeze-period-record Membersihkan data perangkat dari periode pembekuan yang ditetapkan sebelumnya untuk update OTA sistem. Hal ini berguna untuk menghindari pembatasan penjadwalan perangkat saat mengembangkan aplikasi yang mengelola periode pembekuan. Lihat Mengelola update sistem.

Didukung pada perangkat yang menjalankan Android 9.0 (API level 28) dan yang lebih baru.

force-network-logs Memaksa sistem untuk menyiapkan log jaringan yang akan diambil oleh DPC. Jika ada koneksi atau log DNS yang tersedia, DPC akan menerima callback onNetworkLogsAvailable(). Lihat Logging aktivitas jaringan.

Perintah ini memiliki batasan kapasitas. Didukung pada perangkat yang menjalankan Android 9.0 (API level 28) dan yang lebih baru.

force-security-logs Memaksa sistem untuk menyediakan log keamanan bagi DPC. Jika ada log yang tersedia, DPC akan menerima callback onSecurityLogsAvailable(). Lihat Membuat log aktivitas perangkat perusahaan.

Perintah ini memiliki batasan kapasitas. Didukung pada perangkat yang menjalankan Android 9.0 (API level 28) dan yang lebih baru.

Mengambil screenshot

Perintah screencap adalah utilitas shell untuk mengambil screenshot tampilan perangkat.

Saat berada dalam shell, sintaksis screencap adalah:

screencap filename

Untuk menggunakan screencap dari command line, masukkan perintah:

adb shell screencap /sdcard/screen.png

Berikut adalah contoh sesi screenshot, yang menggunakan shell adb untuk mengambil screenshot dan perintah pull untuk mendownload filenya dari perangkat:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

Merekam video

Perintah screenrecord adalah utilitas shell untuk merekam tampilan perangkat yang menjalankan Android 4.4 (API level 19) dan yang lebih tinggi. Utilitas ini merekam aktivitas layar ke dalam file MPEG-4. Anda dapat menggunakan file ini untuk membuat video promosi atau pelatihan, atau untuk menjalankan debug dan pengujian.

Saat berada dalam shell, gunakan sintaksis berikut:

screenrecord [options] filename

Untuk menggunakan screenrecord dari command line, masukkan perintah:

adb shell screenrecord /sdcard/demo.mp4

Hentikan perekaman layar dengan menekan Control+C. Jika tidak, perekaman akan otomatis berhenti setelah tiga menit atau batas waktu yang ditetapkan oleh --time-limit.

Untuk mulai merekam layar perangkat, jalankan perintah screenrecord untuk merekam video. Kemudian, jalankan perintah pull untuk mendownload video dari perangkat ke komputer host. Berikut adalah contoh sesi rekaman:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

Utilitas screenrecord dapat merekam pada semua resolusi yang didukung dan kecepatan bit yang Anda minta, dengan tetap mempertahankan rasio aspek tampilan perangkat. Secara default, utilitas ini merekam dalam resolusi dan orientasi tampilan native perangkat, dengan panjang maksimum tiga menit.

Batasan utilitas screenrecord:

  • Audio tidak direkam bersama dengan file video.
  • Perekaman video tidak tersedia untuk perangkat yang menjalankan Wear OS.
  • Beberapa perangkat mungkin tidak dapat merekam dalam resolusi tampilan native. Jika Anda mengalami masalah dengan perekaman layar, cobalah menggunakan resolusi layar yang lebih rendah.
  • Rotasi layar selama perekaman tidak didukung. Jika layar berputar selama perekaman, sebagian layar akan terpangkas dalam rekaman.

Tabel 4. Opsi screenrecord

Opsi Deskripsi
--help Opsi dan sintaksis perintah tampilan
--size widthxheight Setel ukuran video: 1280x720. Nilai defaultnya adalah resolusi tampilan native perangkat (jika didukung), 1280x720 jika tidak didukung. Untuk hasil terbaik, gunakan ukuran yang didukung oleh encoder Advanced Video Coding (AVC) perangkat Anda.
--bit-rate rate Menetapkan kecepatan bit video, dalam megabit per detik. Nilai default-nya adalah 4 Mbps. Anda bisa menaikkan kecepatan bit untuk meningkatkan kualitas video, tetapi akibatnya ukuran file film akan lebih besar. Contoh berikut menetapkan kecepatan bit perekaman ke 6 Mbps:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time Menetapkan waktu maksimum perekaman, dalam detik. Nilai default dan maksimum adalah 180 (3 menit).
--rotate Merotasi output 90 derajat. Fitur ini masih eksperimen.
--verbose Menampilkan informasi log pada layar command line. Jika Anda tidak menetapkan opsi ini, utilitas tidak akan menampilkan informasi apa pun saat dijalankan.

Membaca profil ART untuk aplikasi

Mulai dari Android 7.0 (API level 24), Android Runtime (ART) mengumpulkan profil eksekusi untuk aplikasi yang diinstal, yang digunakan untuk mengoptimalkan performa aplikasi. Periksa profil yang dikumpulkan untuk memahami metode apa yang sering dijalankan dan class mana yang digunakan selama memulai aplikasi.

Catatan: Anda hanya dapat mengambil nama file profil eksekusi jika memiliki akses root ke sistem file, misalnya, pada emulator.

Untuk menghasilkan informasi profil dalam format teks, gunakan perintah berikut:

adb shell cmd package dump-profiles package

Untuk mengambil file yang dihasilkan, gunakan:

adb pull /data/misc/profman/package.prof.txt

Mereset perangkat pengujian

Jika Anda menguji aplikasi pada beberapa perangkat pengujian, akan mudah mereset perangkat di antara pengujian, misalnya, untuk menghapus data pengguna dan mereset lingkungan pengujian. Anda dapat melakukan reset ke setelan pabrik pada perangkat pengujian yang berjalan di Android 10 (API level 29) atau versi lebih baru menggunakan perintah shell testharness adb, seperti yang ditunjukkan di bawah ini.

adb shell cmd testharness enable

Saat memulihkan perangkat dengan testharness, perangkat tersebut akan otomatis mencadangkan kunci RSA yang mengizinkan proses debug melalui workstation saat ini di lokasi yang sama. Dengan begitu, setelah perangkat direset, workstation dapat tetap melakukan debug dan mengeluarkan perintah adb ke perangkat tanpa mendaftarkan kunci baru secara manual.

Selain itu, untuk mempermudah dan mengamankan pengujian aplikasi Anda, menggunakan testharness untuk memulihkan perangkat juga akan mengubah setelan perangkat berikut:

  • Perangkat menyiapkan setelan sistem tertentu sehingga wizard penyiapan perangkat awal tidak akan muncul. Dengan begitu, perangkat memasuki kondisi di mana Anda dapat menginstal, men-debug, dan menguji aplikasi Anda dengan cepat.
  • Setelan:
    • Menonaktifkan layar kunci.
    • Menonaktifkan sinyal darurat.
    • Menonaktifkan sinkronisasi otomatis untuk akun.
    • Menonaktifkan update sistem otomatis.
  • Lainnya:
    • Menonaktifkan aplikasi keamanan prainstal.

Jika aplikasi Anda perlu mendeteksi dan beradaptasi dengan setelan default dari perintah testharness, gunakan ActivityManager.isRunningInUserTestHarness().

sqlite

sqlite3 memulai program command line sqlite untuk memeriksa database SQLite. Hal ini mencakup perintah seperti .dump untuk mencetak isi tabel dan .schema untuk mencetak pernyataan SQL CREATE untuk tabel yang sudah ada. Anda juga dapat menjalankan perintah SQLite dari command line, seperti yang ditunjukkan:

$ adb -s emulator-5554 shell
$ sqlite3 /data/data/com.example.app/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions

Catatan: Database SQLite hanya dapat diakses jika Anda memiliki akses root ke sistem file, misalnya, pada emulator.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi command line sqlite3.

Backend USB adb

Server adb dapat berinteraksi dengan stack USB melalui dua backend. Aplikasi dapat menggunakan backend native OS (Windows, Linux, atau macOS) atau menggunakan backend libusb. Beberapa fitur, seperti attach, detach, dan deteksi kecepatan USB, hanya tersedia saat menggunakan backend libusb.

Anda dapat memilih backend menggunakan variabel lingkungan ADB_LIBUSB. Jika tidak disetel, adb akan menggunakan backend defaultnya. Perilaku default bervariasi antar-OS. Mulai API level 34, backend native digunakan secara default. Jika ADB_LIBUSB ditetapkan, sistem akan menentukan apakah backend native atau libusb akan digunakan. Lihat halaman manual adb untuk informasi selengkapnya tentang variabel lingkungan adb.

Backend mDNS adb

ADB dapat menggunakan protokol DNS multicast untuk menghubungkan server dan perangkat secara otomatis. Server ADB dikirimkan dengan dua backend, Bonjour (mdnsResponder Apple) dan Openscreen.

Backend Bonjour membutuhkan {i>daemon<i} agar berjalan di mesin {i>host<i}. Daemon bawaan Apple macOS selalu berjalan, tetapi di Windows dan Linux, pengguna harus memastikan daemon mdnsd aktif dan berjalan. Jika perintah adb mdns check menampilkan error, ada kemungkinan ADB menggunakan backend Bonjour, tetapi tidak ada daemon Bonjour yang berjalan.

Backend Openscreen tidak memerlukan daemon agar berjalan di mesin. Dukungan untuk backend Openscreen di macOS dimulai dari ADB v35. Windows dan Linux didukung mulai ADB v34.

Secara default, ADB menggunakan backend Bonjour. Perilaku ini dapat diubah menggunakan variabel lingkungan ADB_MDNS_OPENSCREEN (ditetapkan ke 1 atau 0). Lihat halaman manual ADB untuk detail selengkapnya.