Bridge di debug Android (adb)

Android Debug Bridge (adb) è uno strumento a riga di comando versatile che ti consente di comunicare con un dispositivo. Il comando adb consente di eseguire diverse azioni del dispositivo, come installazione e di debug delle app. adb dà accesso a una shell Unix che puoi usare per eseguire di comandi su un dispositivo. È un programma client-server che include tre componenti:

  • Un client, che invia comandi. Il client viene eseguito sul tuo computer di sviluppo. Puoi richiama un client da un terminale a riga di comando inviando un comando adb.
  • Un daemon (adbd), che esegue comandi su un dispositivo. Il daemon viene eseguito come background su ciascun dispositivo.
  • Un server, che gestisce la comunicazione tra il client e il daemon. Il server viene eseguito in background sul tuo computer di sviluppo.

adb è incluso nel pacchetto degli strumenti della piattaforma SDK Android. Scarica questo pacchetto con SDK Manager, che installa alle ore android_sdk/platform-tools/. Se vuoi usare l'SDK Android standalone Pacchetto degli strumenti della piattaforma, scaricalo qui.

Per informazioni sulla connessione di un dispositivo per l'uso tramite adb, incluse informazioni su come usare la connessione l'assistente per risolvere i problemi più comuni, vedi Eseguire app su un dispositivo hardware.

Come funziona ADB

Quando avvii un client adb, il client verifica innanzitutto se è presente adb processo del server già in esecuzione. In caso contrario, avvia il processo del server. All'avvio, il server si collega alla porta TCP locale 5037 e rimane in ascolto dei comandi inviati adb clienti.

Nota: tutti i client adb utilizzano la porta 5037 per comunicare con il server adb.

Il server quindi configura le connessioni a tutti i dispositivi in esecuzione. Individua gli emulatori analizzando le porte con numeri dispari nell'intervallo da 5555 a 5585, che è l'intervallo utilizzato dai primi 16 emulatori. Dove il server trova un adb daemon (adbd), configura una connessione a quella porta.

Ogni emulatore utilizza una coppia di porte sequenziali, una porta con numeri pari connessioni della console e una porta di numero dispari per adb connessioni. Ad esempio:

Emulatore 1, console: 5554
Emulatore 1, adb: 5555
Emulatore 2, console: 5556
Emulatore 2, adb: 5557
e così via.

Come mostrato, l'emulatore collegato a adb sulla porta 5555 è uguale all'emulatore la cui console rimane in ascolto sulla porta 5554.

Dopo che il server ha configurato le connessioni con tutti i dispositivi, puoi utilizzare i comandi adb per per accedere a questi dispositivi. Poiché il server gestisce le connessioni ai dispositivi da più client adb, puoi controllare qualsiasi dispositivo da qualsiasi client da uno script.

Attiva il debug ADB sul tuo dispositivo

Per utilizzare adb con un dispositivo collegato tramite USB, devi attivare Debug USB nelle impostazioni di sistema del dispositivo, nella sezione Opzioni sviluppatore. Su Android 4.2 (livello API 17) e versioni successive, la schermata Opzioni sviluppatore è nascosta per impostazione predefinita. Per renderla visibile, attiva Opzioni sviluppatore.

Ora puoi collegare il dispositivo tramite USB. Puoi verificare che il tuo dispositivo sia connesso eseguendo adb devices dal Directory android_sdk/platform-tools/. Se la connessione è attiva, vedrai il nome del dispositivo indicato come "dispositivo".

Nota:quando connetti un dispositivo con Android 4.2.2 (API livello 17) o superiore, il sistema mostra una finestra di dialogo che chiede se accettare una chiave RSA che consenta il debug tramite questo computer. Questo meccanismo di sicurezza protegge i dispositivi degli utenti perché garantisce che il debug USB e altri comandi adb non possono essere eseguiti a meno che tu non riesca a sbloccare il dispositivo e conferma la finestra di dialogo.

Per ulteriori informazioni sulla connessione a un dispositivo tramite USB, leggi Eseguire app su un dispositivo hardware.

Connettersi a un dispositivo tramite Wi-Fi

Nota: le istruzioni riportate di seguito non si applicano ai dispositivi Wear in esecuzione Android 11 (livello API 30). Consulta la guida per eseguire il debug di un'app per Wear OS per ulteriori informazioni.

Android 11 (livello API 30) e versioni successive supportano il deployment e il debug della tua app in modalità wireless da utilizzando Android Debug Bridge (adb). Ad esempio, puoi eseguire il deployment su più dispositivi remoti senza dover mai collegare fisicamente il dispositivo tramite USB. In questo modo non sarà necessario gestire i problemi di connessione USB più comuni, come il driver dell'installazione.

Prima di iniziare a utilizzare il debug wireless, segui questi passaggi:

  • Assicurati che la workstation e il dispositivo siano connessi alla stessa rete wireless.

  • Assicurati che sul dispositivo sia installato Android 11 (livello API 30) o versioni successive per smartphone o Android 13 (livello API 33) o superiore per TV e WearOS. Per ulteriori informazioni, vedi Controlla e aggiorna il tuo Versione di Android.

  • Se utilizzi l'IDE, assicurati di avere installato la versione più recente di Android Studio. Puoi scaricarla qui

  • Sulla workstation, esegui l'aggiornamento all'ultima versione Strumenti della piattaforma SDK.

Per utilizzare il debug wireless, devi accoppiare il dispositivo alla workstation tramite un codice QR o un codice di accoppiamento. La workstation e il dispositivo devono essere connessi alla stessa rete wireless. A per connetterti al tuo dispositivo, procedi nel seguente modo:

  1. Attivare le Opzioni sviluppatore sul tuo dispositivo.

  2. Apri Android Studio e seleziona Accoppia dispositivi tramite Wi-Fi dall'esecuzione. del menu di configurazione.

    Menu a discesa Esegui configurazioni
    Figura 1. Esegui il menu Configura.

    Viene visualizzata la finestra Accoppia dispositivi tramite Wi-Fi, come mostrato nella Figura 2.

    Screenshot della finestra popup di accoppiamento su Wi-Fi
    Figura 2. Finestra popup per accoppiare i dispositivi tramite codice QR o accoppiamento le API nel tuo codice.
  3. Sul tuo dispositivo, tocca Debug wireless e accoppia il dispositivo:

    Screenshot di
            un telefono Pixel su cui è mostrata l'impostazione Sistemi di debug wireless.
    Figura 3. Screenshot dell'impostazione Debug wireless su uno smartphone Google Pixel.
    1. Per accoppiare il dispositivo con un codice QR, seleziona Accoppia dispositivo con codice QR e scansiona il Codice QR ottenuto dal popup Accoppia dispositivi tramite Wi-Fi mostrato nella Figura 2.

    2. Per accoppiare il dispositivo con un codice di accoppiamento, seleziona Accoppia dispositivo con codice di accoppiamento da viene visualizzata la finestra popup Accoppia dispositivi tramite Wi-Fi. Sul dispositivo, seleziona Accoppia con di accoppiamento del dispositivo e prendi nota del codice a sei cifre fornito. Quando il dispositivo viene visualizzato nella Accoppia dispositivi tramite Wi-Fi, puoi selezionare Accoppia e inserire le sei cifre mostrato sul dispositivo.

      Screenshot di un esempio di inserimento del codice PIN
      Figura 4. Esempio di inserimento del codice a sei cifre.
  4. Dopo aver accoppiato il dispositivo, puoi tentare di implementare l'app sul dispositivo.

    Per accoppiare un altro dispositivo o per eliminare il dispositivo corrente sulla workstation, vai a Debug wireless sul tuo dispositivo. Tocca il nome della tua workstation sotto Associata Dispositivi e seleziona Elimina.

  5. Se desideri attivare e disattivare rapidamente il debug wireless, puoi utilizzare Riquadri sviluppatore Impostazioni rapide per Debug wireless, disponibile in Opzioni sviluppatore > Sviluppatore Impostazioni rapide riquadri.

    Screenshot di
            Riquadri sviluppatore delle impostazioni rapide da uno smartphone Google Pixel.
    Figura 5. L'impostazione Riquadri sviluppatore Impostazioni rapide consente di attivare e disattivare rapidamente il debug wireless.

Connessione Wi-Fi tramite riga di comando

In alternativa, per connetterti al tuo dispositivo utilizzando la riga di comando senza Android Studio, segui questi passaggi:

  1. Attiva le Opzioni sviluppatore sul dispositivo, come descritto in precedenza.

  2. Attiva il Debug wireless sul tuo dispositivo come descritto in precedenza.

  3. Sulla workstation, apri una finestra del terminale e vai a android_sdk/platform-tools.

  4. Trova il tuo indirizzo IP, il numero di porta e il codice di accoppiamento selezionando Accoppia dispositivo con codice di accoppiamento. Prendi nota dell'indirizzo IP, del numero di porta e del codice di accoppiamento visualizzati sul del dispositivo.

  5. Sul terminale della workstation, esegui adb pair ipaddr:port. Utilizza l'indirizzo IP e il numero di porta qui sopra.

  6. Quando richiesto, inserisci il codice di accoppiamento, come mostrato di seguito.

    Screenshot di
            dell'accoppiamento tramite riga di comando.
    Figura 6. Un messaggio indica che il dispositivo è stato accoppiato.

Risolvere i problemi di connessione wireless

Se hai difficoltà a connetterti al tuo dispositivo in modalità wireless, prova a procedere nel seguente modo per risolvere il problema.

Controlla se la workstation e il dispositivo soddisfano i prerequisiti

Verifica che la workstation e il dispositivo soddisfino i prerequisiti elencati nella all'inizio di questa sezione.

Verifica la presenza di altri problemi noti

Di seguito è riportato un elenco degli attuali problemi noti relativi al debug wireless (con adb o Android Studio) e come risolverle:

  • Il Wi-Fi non si connette: reti Wi-Fi sicure, ad esempio le reti Wi-Fi aziendali, potrebbe bloccare le connessioni p2p e non consentirti di connetterti tramite Wi-Fi. Prova a collegarti con un cavo o un'altra rete Wi-Fi (non aziendale). Connessione wireless tramite adb connect ip:port su tcp/ip (in seguito a una connessione USB iniziale) è un'altra opzione, nel caso in cui sia possibile ricorrere a una rete non aziendale.

  • A volte adb tramite Wi-Fi si disattiva automaticamente: questo può accadere se il dispositivo cambia rete Wi-Fi o si disconnette dalla rete. Per risolvere il problema, ricollegati alla rete.

  • Il dispositivo non si connette dopo l'accoppiamento. adb si basa su mDNS per rilevare e connettersi automaticamente ai dispositivi accoppiati. Se la tua rete o il tuo dispositivo non supporta il protocollo mDNS o lo ha disattivato, quindi occorre eseguire manualmente connettiti al dispositivo utilizzando adb connect ip:port.

Connettersi in modalità wireless a un dispositivo dopo una connessione USB iniziale (opzione disponibile solo su Android 10 e versioni precedenti)

Nota: questo flusso di lavoro si applica anche ad Android 11 (e superiore), tieni presente che comporta anche una connessione *iniziale* tramite USB fisica.

Nota: le seguenti istruzioni non si applicano ai dispositivi Wear. con Android 10 (livello API 29) o versioni precedenti. Consulta la guida su eseguire il debug di un'app per Wear OS per ulteriori informazioni.

adb solitamente comunica con il dispositivo tramite USB, ma puoi anche usare adb tramite Wi-Fi. Per connettere un dispositivo con Android 10 (livello API 29) o versioni precedenti: segui questi passaggi iniziali tramite USB:

  1. Collega il dispositivo Android e il computer host di adb a una rete Wi-Fi comune.
  2. Nota: tieni presente che non tutti i punti di accesso sono idonei. Potresti dover usare un punto di accesso il cui firewall è configurato correttamente per supportare adb.

  3. Collega il dispositivo al computer host con un cavo USB.
  4. Imposta il dispositivo di destinazione affinché ascolti una connessione TCP/IP sulla porta 5555:
    adb tcpip 5555
    
  5. Scollega il cavo USB dal dispositivo di destinazione.
  6. Trova l'indirizzo IP del dispositivo Android. Ad esempio, su un dispositivo Nexus puoi trovare l'indirizzo IP in Impostazioni > Informazioni sul tablet (o Informazioni sullo smartphone) > Stato > Indirizzo IP.
  7. Connettiti al dispositivo utilizzando il suo indirizzo IP:
    adb connect device_ip_address:5555
    
  8. Verifica che il computer host sia connesso al dispositivo di destinazione:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

Il tuo dispositivo è ora connesso a adb.

Se la connessione di adb al tuo dispositivo si interrompe:

  • Assicurati che l'host sia ancora connesso alla stessa rete Wi-Fi del tuo dispositivo Android.
  • Esegui di nuovo il passaggio adb connect per riconnetterti.
  • Se non funziona, reimposta l'host adb:
    adb kill-server
    

    Poi ricomincia dall'inizio.

Query per i dispositivi

Prima di inviare comandi adb, è utile sapere quali istanze del dispositivo sono connesse al server adb. Genera un elenco di dispositivi collegati utilizzando Comando devices:

  adb devices -l
  

Di conseguenza, adb stampa queste informazioni sullo stato per ciascun dispositivo:

  • Numero di serie: adb crea una stringa per identificare in modo univoco il dispositivo in base al numero di porta. Ecco un esempio di numero di serie: emulator-5554
  • Stato:lo stato della connessione del dispositivo può essere uno dei seguenti:
    • offline: il dispositivo non è connesso a adb o non è connesso a rispondere.
    • device: il dispositivo è connesso al server adb. Tieni presente che questo stato non implica che il sistema Android sia completamente avviato e operativo, il dispositivo si connette a adb mentre il sistema è ancora in fase di avvio. Dopo l'avvio, si tratta della normale procedura lo stato di un dispositivo.
    • no device: nessun dispositivo collegato.
  • Descrizione: se includi l'opzione -l, devices indica il tipo di dispositivo. Queste informazioni sono utili se hai più dispositivi connessi in modo che tu possa distinguerli.

L'esempio seguente mostra il comando devices e il relativo output. Esistono tre tipi di in esecuzione tra i dispositivi. Le prime due righe dell'elenco sono emulatori e la terza riga contiene dispositivo collegato al computer.

$ 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

Emulatore non elencato

Il comando adb devices ha una sequenza di comandi tra maiuscole e minuscole che determina l'esecuzione non vengano visualizzati nell'output adb devices anche se gli emulatori sono visibili sul desktop. Questo accade quando tutte le seguenti condizioni sono vere:

  • Il server adb non è in esecuzione.
  • Puoi utilizzare il comando emulator con -port o -ports con un valore di porta di numero dispari compreso tra 5554 e 5584.
  • La porta di numero dispari che hai scelto non è occupata, quindi è possibile stabilire la connessione numero di porta specificato o, se è occupato, l'emulatore passa a a un'altra porta che soddisfi i requisiti nella sezione 2.
  • Puoi avviare il server adb dopo aver avviato l'emulatore.

Un modo per evitare questa situazione è lasciare che l'emulatore scelga le proprie porte e non deve più eseguire più di 16 emulatori alla volta. Un altro modo è avviare sempre il server adb prima di te usa il comando emulator, come spiegato nei seguenti esempi.

Esempio 1: nella seguente sequenza di comandi, il comando adb devices viene avviato il server adb, ma l'elenco dei dispositivi non compare.

Arresta il server adb e inserisci i comandi seguenti nell'ordine mostrato. Per la durata di visualizzazione media specifica un nome di durata di visualizzazione media valido del tuo sistema. Per ottenere un elenco di nomi di durata di visualizzazione media, emulator -list-avds. Il comando emulator è in Directory 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 *

Esempio 2: nella seguente sequenza di comandi, adb devices mostra la elenco di dispositivi perché il server adb è stato avviato per primo.

Per vedere l'emulatore nell'output adb devices, arresta il server adb e avvialo di nuovo dopo aver utilizzato il comando emulator e prima di utilizzare adb devices, come segue:

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

List of devices attached
emulator-5557 device

Per maggiori informazioni sulle opzioni a riga di comando dell'emulatore, consulta la sezione Riga di comando opzioni di avvio.

Inviare comandi a un dispositivo specifico

Se sono in esecuzione più dispositivi, devi specificare il dispositivo di destinazione quando esegui il comando adb. Per specificare il target:

  1. Usa il comando devices per ottenere il numero di serie del target.
  2. Una volta ottenuto il numero di serie, utilizza la Opzione -s con i comandi adb per specificare il numero di serie.
    1. Se eseguirai molti comandi adb, puoi impostare il Variabile di ambiente $ANDROID_SERIAL che contenga il numero di serie .
    2. Se utilizzi entrambi -s e $ANDROID_SERIAL, override di -s $ANDROID_SERIAL.

Nell'esempio seguente, si ottiene l'elenco dei dispositivi collegati, quindi il numero di uno dei dispositivi viene usato per installare helloWorld.apk su quel dispositivo:

$ 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

Nota: se esegui un comando senza specificare un dispositivo di destinazione quando sono disponibili più dispositivi, adb visualizza un errore "adb: più di un dispositivo/emulatore".

Se disponi di più dispositivi ma solo uno è un emulatore, usa l'opzione -e per inviare comandi all'emulatore. Se ci sono più parametri dispositivi ma con un solo dispositivo hardware collegato, usa l'opzione -d per inviare comandi a del dispositivo hardware.

Installare un'app

Puoi usare adb per installare un APK su un emulatore o un dispositivo collegato con il comando install:

adb install path_to_apk

Devi utilizzare l'opzione -t con install quando installi un APK di prova. Per ulteriori informazioni, consulta -t.

Per installare più APK, utilizza install-multiple. È utile se scarichi tutto gli APK per un dispositivo specifico per la tua app da Play Console e vuoi installarli su un un emulatore o un dispositivo fisico.

Per ulteriori informazioni su come creare un file APK che puoi installare su un emulatore o un dispositivo consulta Creare ed eseguire l'app.

Nota: se usi Android Studio, non è necessario utilizzare adb direttamente per installare l'app sull'emulatore o sul dispositivo. Android Studio gestisce l'imballaggio e l'installazione dell'app al posto tuo.

Configura port forwarding

Utilizza il comando forward per configurare il port forwarding arbitrari, inoltra le richieste su una porta host specifica a una porta diversa del dispositivo. Nell'esempio seguente viene configurato l'inoltro della porta dell'host 6100 alla porta 7100 del dispositivo:

adb forward tcp:6100 tcp:7100

Nell'esempio seguente viene configurato l'inoltro della porta 6100 dell'host a local:logd:

adb forward tcp:6100 local:logd

Questo potrebbe essere utile se stai cercando di determinare cosa viene inviato a una determinata porta dispositivo. Tutti i dati ricevuti saranno scritti sul daemon di logging del sistema e visualizzati nei log del dispositivo.

Copia di file da e verso un dispositivo

Usa i comandi pull e push per copiare i file in e da un dispositivo. A differenza del comando install, che copia un file APK soltanto in una posizione specifica, pull e push consentono di copiare directory e file arbitrari in qualsiasi posizione di un dispositivo.

Per copiare un file o una directory e le relative sottodirectory dal dispositivo: segui questi passaggi:

adb pull remote local

Per copiare un file o una directory e le relative sottodirectory sul dispositivo: segui questi passaggi:

adb push local remote

Sostituisci local e remote con i percorsi per il file/la directory di destinazione sul tuo computer di sviluppo (locale) dispositivo (telecomando). Ad esempio:

adb push myfile.txt /sdcard/myfile.txt

Arrestare l'adb server

In alcuni casi, potrebbe essere necessario terminare il processo del server adb e quindi riavviare per risolvere il problema. Questo potrebbe accadere, ad esempio, se adb non risponde a un comando.

Per arrestare il server adb, utilizza il comando adb kill-server. Potrai quindi riavviare il server eseguendo un qualsiasi altro comando adb.

Emetti comandi ADB

Esegui i comandi adb da una riga di comando sul tuo computer di sviluppo o da uno script utilizzando seguenti:

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

Se è in esecuzione un solo emulatore o è connesso un solo dispositivo, il comando adb viene inviati a quel dispositivo per impostazione predefinita. Se sono in esecuzione più emulatori e/o sono presenti più dispositivi allegato, devi utilizzare -d, -e o -s per specificare il dispositivo di destinazione a cui deve essere indirizzato il comando.

Puoi visualizzare un elenco dettagliato di tutti i comandi adb supportati usando quanto segue :

adb --help

Problemi con i comandi shell

Puoi utilizzare il comando shell per inviare comandi dal dispositivo tramite adb o per avviare un una shell interattiva. Per inviare un singolo comando, utilizza il comando shell come questo:

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

Per avviare una shell interattiva su un dispositivo, utilizza il comando shell in questo modo:

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

Per uscire da una shell interattiva, premi Control+D o digita exit.

Android fornisce la maggior parte dei normali strumenti a riga di comando Unix. Per un elenco degli strumenti disponibili, usa il seguente comando:

adb shell ls /system/bin

La guida è disponibile per la maggior parte dei comandi tramite l'argomento --help. Molti dei comandi shell sono forniti scatola dei giocattoli. La guida generica applicabile a tutti i comandi di Toybox è disponibile tramite toybox --help.

Con Android Platform Tools 23 e versioni successive, adb gestisce gli argomenti allo stesso modo il comando ssh(1). Questa modifica ha risolto molti problemi relativi a iniezione di comando e consente di eseguire in sicurezza comandi che contengono metacaratteri, ad esempio adb install Let\'sGo.apk. Questa modifica significa che l'interpretazione è cambiato anche qualsiasi comando contenente metacaratteri della shell.

Ad esempio, adb shell setprop key 'value' ora è un errore, perché Le virgolette singole (') vengono inghiottite dalla shell locale e il dispositivo rileva adb shell setprop key value. Per far funzionare il comando, cita due volte una volta per la shell locale e una volta per la shell remota, come si fa ssh(1). Ad esempio, adb shell setprop key 'value' .

Vedi anche lo strumento a riga di comando Logcat, che è utile per il monitoraggio del log di sistema.

Gestore attività di chiamata

All'interno di una shell di adb, puoi inviare comandi con lo strumento Gestione attività (am) per eseguire varie azioni di sistema, ad esempio avviare un'attività, forzare l'interruzione di un processo trasmettere un intent, modificare le proprietà dello schermo del dispositivo e altro ancora.

In una shell, la sintassi di am è:

am command

Puoi anche inviare un comando di Gestione attività direttamente da adb senza entrare in una shell remota. Ad esempio:

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

Tabella 1. Comandi disponibili di Gestione attività

Comando Descrizione
start [options] intent Avvia un Activity specificato da intent.

Consulta le Specifica per gli argomenti relativi all'intent.

Le opzioni sono:

  • -D: attiva il debug.
  • -W: attendi il completamento dell'avvio.
  • --start-profiler file: avvia profiler e invia i risultati a file.
  • -P file: ad esempio --start-profiler, ma la profilazione si interrompe quando l'app diventa inattiva.
  • -R count: ripeti l'avvio dell'attività count volte. Prima di ogni ripetizione, l'attività principale sarà terminata.
  • -S: forza l'interruzione dell'app di destinazione prima di avviare l'attività.
  • --opengl-trace: attiva il tracciamento delle funzioni OpenGL.
  • --user user_id | current: specifica l'utente da usare per l'esecuzione. in caso contrario specificato, quindi eseguirlo con l'account dell'utente corrente.
startservice [options] intent Inizia il Service specificato da intent.

Consulta le Specifica per gli argomenti relativi all'intent.

Le opzioni sono:

  • --user user_id | current: specifica con quale utente eseguire. In caso contrario specificato, quindi eseguirlo con l'account dell'utente corrente.
force-stop package Forza l'interruzione di tutti i contenuti associati a package.
kill [options] package Termina tutti i processi associati a package. Questo comando termina solo processi che possono essere eliminati e che non influiranno sull'utente un'esperienza senza intervento manuale.

Le opzioni sono:

  • --user user_id | all | current: specifica i processi dell'utente da terminare. Se non specificato, termina tutti gli utenti i processi di machine learning.
kill-all Termina tutti i processi in background.
broadcast [options] intent Emetti un intent di trasmissione.

Consulta le Specifica per gli argomenti relativi all'intent.

Le opzioni sono:

  • [--user user_id | all | current]: specifica a quale utente inviare le richieste. In caso contrario specificato, quindi invialo a tutti gli utenti.
instrument [options] component Avvia il monitoraggio con un Instrumentation istanza. In genere il target component è il formato test_package/runner_class.

Le opzioni sono:

  • -r: stampa risultati non elaborati (altrimenti decodifica report_key_streamresult). Da utilizzare con [-e perf true] per generare un output non elaborato per la misurazione delle prestazioni.
  • -e name value: imposta l'argomento name a value. Per i test runner una forma comune è -e testrunner_flag value[,value...].
  • -p file: scrivi dati di profilazione in file.
  • -w: attendi il completamento della strumentazione prima di tornare. Obbligatorio per i test runner.
  • --no-window-animation: disattiva le animazioni delle finestre durante l'esecuzione.
  • --user user_id | current: specifica la strumentazione utente in cui viene eseguita. Se non specificato, viene eseguito con l'utente corrente.
profile start process file Avvia profiler su process, scrivi risultati su file.
profile stop process Interrompi profiler su process.
dumpheap [options] process file Esegui il dump dell'heap di process, scrivi in file.

Le opzioni sono:

  • --user [user_id | current]: quando fornisci il nome di un processo, specifica l'utente del processo di cui eseguire il dump. Se non specificato, viene utilizzato l'utente corrente.
  • -b [| png | jpg | webp]: scarica le bitmap dalla memoria grafica. Facoltativamente, puoi specificare il formato in cui eseguire il dump (PNG per impostazione predefinita).
  • -n: esegui il dump dell'heap nativo anziché dell'heap gestito.
set-debug-app [options] package Imposta l'app package per il debug.

Le opzioni sono:

  • -w: attendi il debugger all'avvio dell'app.
  • --persistent: conserva questo valore.
clear-debug-app Cancella il pacchetto precedente impostato per il debug con set-debug-app.
monitor [options] Inizia a monitorare gli arresti anomali e gli errori ANR.

Le opzioni sono:

  • --gdb: avvia gdbserv sulla porta specificata in caso di arresto anomalo/ANR.
screen-compat {on | off} package Controlla lo schermo di compatibilità di package.
display-size [reset | widthxheight] Sostituisci dimensioni di visualizzazione del dispositivo. Questo comando è utile per testare l'app su schermi di diverse dimensioni simulando un risoluzione dello schermo usando un dispositivo con schermo grande e viceversa.

Esempio:
am display-size 1280x800

display-density dpi Esegui l'override della densità del display del dispositivo. Questo comando è utile per testare l'app su diverse densità dello schermo imitando un'alta densità con uno schermo a bassa densità e viceversa.

Esempio:
am display-density 480

to-uri intent Stampa la specifica dell'intent specificata come URI.

Consulta le Specifica per gli argomenti relativi all'intent.

to-intent-uri intent Stampa la specifica dell'intent fornita come URI intent:.

Consulta le Specifica per gli argomenti relativi all'intent.

Specifica per gli argomenti per intent

Per i comandi di Gestione attività che accettano un argomento intent, puoi: specificare l'intent con le seguenti opzioni:

Gestore di pacchetti di chiamate (pm)

All'interno di una shell di adb, puoi inviare comandi con lo strumento di gestione pacchetti (pm) per eseguire azioni e query sui pacchetti dell'app installati sul dispositivo.

In una shell, la sintassi di pm è:

pm command

Puoi anche inviare un comando del gestore di pacchetti direttamente da adb senza entrare in una shell remota. Ad esempio:

adb shell pm uninstall com.example.MyApp

Tabella 2. Comandi del gestore di pacchetti disponibili

Comando Descrizione
list packages [options] filter Stampa tutti i pacchetti, solo facoltativamente quelli il cui nome pacchetto contiene il testo in filter.

Opzioni:

  • -f: vedi il file associato.
  • -d: filtro per mostrare solo i pacchetti disattivati.
  • -e: filtra per mostrare solo i pacchetti abilitati.
  • -s: filtra per mostrare solo i pacchetti di sistema.
  • -3: filtra in modo da mostrare solo i pacchetti di terze parti.
  • -i: vedi il programma di installazione per i pacchetti.
  • -u: include i pacchetti disinstallati.
  • --user user_id: lo spazio utente su cui eseguire la query.
list permission-groups Stampare tutti i gruppi di autorizzazioni noti.
list permissions [options] group Stampa tutte le autorizzazioni note, solo facoltativamente quelli in group.

Opzioni:

  • -g: organizza per gruppo.
  • -f: stampa tutte le informazioni.
  • -s: breve riepilogo.
  • -d: elenca solo le autorizzazioni pericolose.
  • -u: elenca solo le autorizzazioni che saranno visibili agli utenti.
list instrumentation [options] Elenca tutti i pacchetti di test.

Opzioni:

  • -f: elenca il file APK per il pacchetto di test.
  • target_package: elenca i pacchetti di test solo per questa app.
list features Stampa tutte le funzionalità del sistema.
list libraries Stampa tutte le librerie supportate dal dispositivo attuale.
list users Stampa di tutti gli utenti del sistema.
path package Stampa il percorso dell'APK dell'elemento package specificato.
install [options] path Installa nel sistema un pacchetto specificato da path.

Opzioni:

  • -r: reinstalla un'app esistente mantenendo i relativi dati.
  • -t: consenti l'installazione di APK di test. Gradle genera un APK di prova quando Hai eseguito o eseguito il debug solo dell'app o hai utilizzato la sezione Build > di Android Studio > Costruire . Se l'APK è stato creato utilizzando un SDK di anteprima per gli sviluppatori, devi includere il parametro Opzione -t con il comando install se stai installando un APK di prova.
  • -i installer_package_name: specifica il nome del pacchetto di installazione.
  • --install-location location: imposta il percorso di installazione utilizzando uno dei seguenti valori:
    • 0: utilizza il percorso di installazione predefinito.
    • 1: installazione su memoria interna del dispositivo.
    • 2: installazione su supporti esterni.
  • -f: installa il pacchetto nella memoria interna di sistema.
  • -d: consenti il downgrade del codice di versione.
  • -g: concedi tutte le autorizzazioni elencate nel file manifest dell'app.
  • --fastdeploy: aggiorna rapidamente un pacchetto installato aggiornando solo le parti di l'APK che è cambiato.
  • --incremental: installa l'APK a sufficienza per avviare l'app durante il flusso di dati rimanenti in background. Per utilizzare questa funzione, devi firmare la crea un nuovo APK File dello schema di firma dell'APK v4, e posiziona questo file nella stessa directory dell'APK. Questa funzionalità è supportata solo su alcuni dispositivi. Questa opzione obbliga adb a utilizzare la funzionalità o non riesce in caso contrario supportati, con informazioni dettagliate sul motivo dell'errore. Aggiungi l'opzione --wait a attendi l'installazione completa dell'APK prima di concedergli l'accesso.

    --no-incremental impedisce a adb di utilizzare questa funzionalità.

uninstall [options] package Rimuove un pacchetto dal sistema.

Opzioni:

  • -k: conserva le directory dei dati e della cache dopo la rimozione del pacchetto.
  • --user user_id: specifica l'utente per il quale il pacchetto viene rimosso.
  • --versionCode version_code: viene eseguita la disinstallazione solo se l'app ha il codice di versione specificato.
clear package Elimina tutti i dati associati a un pacchetto.
enable package_or_component Abilita il pacchetto o il componente specificato (come "pacchetto/classe").
disable package_or_component Disabilita il pacchetto o il componente specificato (come "pacchetto/classe").
disable-user [options] package_or_component

Opzioni:

  • --user user_id: l'utente da disattivare.
grant package_name permission Concedere l'autorizzazione a un'app. Sui dispositivi con Android 6.0 (livello API 23) e successive, l'autorizzazione può essere qualsiasi autorizzazione dichiarata nel file manifest dell'app. Sui dispositivi Android 5.1 (livello API 22) o versioni precedenti deve essere un'autorizzazione facoltativa definita dal dell'app.
revoke package_name permission Revocare un'autorizzazione da un'app. Sui dispositivi con Android 6.0 (livello API 23) e successive, l'autorizzazione può essere qualsiasi autorizzazione dichiarata nel file manifest dell'app. Sui dispositivi Android 5.1 (livello API 22) o versioni precedenti deve essere un'autorizzazione facoltativa definita dal dell'app.
set-install-location location Modifica il percorso di installazione predefinito. Valori località:
  • 0: Automatico: consenti al sistema di decidere la posizione migliore.
  • 1: Interna: installazione su memoria interna del dispositivo.
  • 2: Esterno: installazione su supporti esterni.

Nota:questa funzionalità è destinata solo al debug. L'uso di questo metodo può causare l'interruzione delle app e altri comportamenti indesiderati.

get-install-location Restituisce il percorso di installazione corrente. Valori restituiti:
  • 0 [auto]: lascia che sia il sistema a decidere la posizione migliore
  • 1 [internal]: installa nello spazio di archiviazione interno del dispositivo
  • 2 [external]: installazione su supporti esterni
set-permission-enforced permission [true | false] Specifica se l'autorizzazione fornita deve essere applicata in modo forzato.
trim-caches desired_free_space Taglia i file della cache per occupare lo spazio libero specificato.
create-user user_name Crea un nuovo utente con l'elemento user_name specificato, la stampa del nuovo identificatore utente dell'utente.
remove-user user_id Rimuovi l'utente con user_id specificato, eliminazione di tutti i dati associati
get-max-users Stampa il numero massimo di utenti supportati dal dispositivo.
get-app-links [options] [package]

Stampa lo stato di verifica del dominio per package specificato o per tutti pacchetti se non ne viene specificato nessuno. I codici di stato sono definiti come segue:

  • none: non è stato registrato nulla per questo dominio
  • verified: il dominio è stato verificato
  • approved: approvazione forzata, di solito tramite shell
  • denied: rifiuto forzato, di solito tramite shell
  • migrated: conservazione della verifica da una risposta precedente
  • restored: conservazione della verifica dovuta a un ripristino dei dati utente
  • legacy_failure: rifiuto da parte di un verificatore precedente, motivo sconosciuto
  • system_configured: approvato automaticamente dalla configurazione del dispositivo
  • >= 1024: codice di errore personalizzato specifico dello strumento di verifica del dispositivo.

Le opzioni sono:

  • --user user_id: include le selezioni dell'utente. Includi tutti i domini, non solo quelle con verifica automatica.
reset-app-links [options] [package]

Reimposta lo stato di verifica del dominio per il pacchetto specificato o per tutti pacchetti se non ne viene specificato nessuno.

  • package: il pacchetto da reimpostare o "tutto" per reimpostare tutti i pacchetti

Le opzioni sono:

  • --user user_id: include le selezioni dell'utente. Includi tutti i domini, non solo quelle con verifica automatica.
verify-app-links [--re-verify] [package]

Trasmetti una richiesta di verifica per l'elemento package specificato o per tutte pacchetti se non ne viene specificato nessuno. Invia solo se il pacco è stato precedentemente inviato non hanno registrato risposta.

  • --re-verify: invia anche se il pacco ha registrato una risposta
set-app-links [--package package] state domains

Imposta manualmente lo stato di un dominio per un pacchetto. Il dominio deve essere dichiarato dal pacchetto come AutoVerify (Verifica automatica) affinché questa operazione funzioni. Questo comando non segnalerà un errore per i domini che non è stato possibile applicare.

  • --package package: il pacchetto da impostare o "tutto" per impostare tutti i pacchetti
  • state: il codice su cui impostare i domini. I valori validi sono:
    • STATE_NO_RESPONSE (0): reimpostata come se non fosse mai stata registrata alcuna risposta.
    • STATE_SUCCESS (1): considera il dominio come verificato in base al dominio dell'agente di verifica. Tieni presente che l'agente di verifica del dominio può sostituirlo.
    • STATE_APPROVED (2): il dominio viene considerato come sempre approvato, in modo da evitare che dall'agente di verifica del dominio.
    • STATE_DENIED (3): il dominio viene considerato come sempre negato, impedendone l'accesso dell'agente di verifica per evitare di modificarlo.
  • domains: elenco dei domini da modificare separati da spazi oppure "tutti" a e modificare ogni dominio.
set-app-links-user-selection --user user_id [--package package] enabled domains

Imposta manualmente lo stato della selezione di un utente host per un pacchetto. Il dominio devono essere dichiarati dal pacchetto affinché questa operazione funzioni. Questo comando non segnalare un errore relativo ai domini che non è stato possibile applicare.

  • --user user_id: l'utente per cui modificare le selezioni
  • --package package: il pacchetto da impostare
  • enabled: se approvare il dominio
  • domains: elenco dei domini da modificare separati da spazi oppure "tutti" a cambia ogni dominio
set-app-links-user-selection --user user_id [--package package] enabled domains

Imposta manualmente lo stato della selezione di un utente host per un pacchetto. Il dominio devono essere dichiarati dal pacchetto affinché questa operazione funzioni. Questo comando non segnalare un errore relativo ai domini che non è stato possibile applicare.

  • --user user_id: l'utente per cui modificare le selezioni
  • --package package: il pacchetto da impostare
  • enabled: se approvare il dominio
  • domains: elenco dei domini da modificare separati da spazi oppure "tutti" a cambia ogni dominio
set-app-links-allowed --user user_id [--package package] allowed

Attiva/disattiva l'impostazione di verifica automatica della gestione dei link per un pacchetto.

  • --user user_id: l'utente per cui modificare le selezioni
  • --package package: il pacchetto da impostare o "tutto" per impostare tutte pacchi; I pacchetti verranno reimpostati se non viene specificato alcun pacchetto
  • allowed: true per consentire al pacchetto di aprire i link verificati automaticamente, false per disattivare
get-app-link-owners --user user_id [--package package] domains

Stampa i proprietari di un dominio specifico per un determinato utente in ordine di priorità bassa ad alta.

  • --user user_id: l'utente per cui eseguire la query
  • --package package: facoltativamente stampa anche per tutti i domini web dichiarata da un pacchetto, o "tutti" per stampare tutti i pacchetti
  • domains: elenco di domini separati da spazi per cui eseguire una query

Chiama Gestione norme dei dispositivi (dpm)

Per aiutarti a sviluppare e testare le tue app di gestione dei dispositivi, risolvi il problema allo strumento Gestione criteri dei dispositivi (dpm). Usa lo strumento per controllare lo stato di amministrazione o modificare i dati relativi allo stato di un criterio sul dispositivo.

In una shell, la dpmsintassi è:

dpm command

Puoi anche inviare un comando di Gestione criteri dei dispositivi direttamente da adb senza entrare in una shell remota:

adb shell dpm command

Tabella 3. Comandi disponibili di Gestione criteri dei dispositivi

Comando Descrizione
set-active-admin [options] component Imposta component come amministratore attivo.

Le opzioni sono:

  • --user user_id: specifica l'utente di destinazione. Puoi anche passare --user current per selezionare l'utente corrente.
set-profile-owner [options] component Imposta component come amministratore attivo e il relativo pacchetto come proprietari del profilo per un utente esistente.

Le opzioni sono:

  • --user user_id: specifica l'utente di destinazione. Puoi passa anche --user current per selezionare l'utente corrente.
  • --name name: specifica il nome leggibile dell'organizzazione.
set-device-owner [options] component Imposta component come amministratore attivo e il relativo pacchetto come proprietario del dispositivo.

Le opzioni sono:

  • --user user_id: specifica l'utente di destinazione. Puoi anche passare --user current per selezionare l'utente corrente.
  • --name name: specifica il nome leggibile dell'organizzazione.
remove-active-admin [options] component Disattivare un amministratore attivo. L'app deve dichiarare android:testOnly nel file manifest. Questo comando rimuove anche i proprietari di dispositivi e profili.

Le opzioni sono:

  • --user user_id: specifica l'utente di destinazione. Puoi anche passare --user current per selezionare l'utente corrente.
clear-freeze-period-record Cancella il record dei periodi di blocco impostati in precedenza per gli aggiornamenti OTA di sistema. È utile per evitare le limitazioni della programmazione del dispositivo durante lo sviluppo di app che gestiscono i periodi di blocco. Consulta Gestire gli aggiornamenti di sistema.

Funzionalità supportata sui dispositivi con Android 9.0 (livello API 28) e versioni successive.

force-network-logs Forza il sistema a rendere tutti i log di rete esistenti pronti per il recupero da parte di un DPC. Se ci sono connessione attiva o i log DNS disponibili, il DPC riceve onNetworkLogsAvailable() di Google. Vedi Logging dell'attività di rete.

Questo comando è a frequenza limitata. Funzionalità supportata sui dispositivi con Android 9.0 (livello API 28) e versioni successive.

force-security-logs Forza il sistema a rendere disponibili al DPC gli eventuali log di sicurezza esistenti. Se sono presenti log disponibile, il DPC riceve onSecurityLogsAvailable() di Google. Consulta Registrazione del dispositivo aziendale attività.

Questo comando è a frequenza limitata. Funzionalità supportata sui dispositivi con Android 9.0 (livello API 28) e versioni successive.

Fai uno screenshot

Il comando screencap è un'utilità shell per acquisire uno screenshot di un dispositivo display.

In una shell, la sintassi di screencap è:

screencap filename

Per utilizzare screencap dalla riga di comando, inserisci quanto segue:

adb shell screencap /sdcard/screen.png

Ecco un esempio di sessione di screenshot, in cui viene utilizzata la shell adb per acquisire lo screenshot e il comando pull per scaricare il file dal dispositivo:

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

Registra un video

Il comando screenrecord è un'utilità shell per registrare il display dei dispositivi con Android 4.4 (livello API 19) e versioni successive. L'utilità registra l'attività sullo schermo su un file MPEG-4 . Puoi utilizzare questo file per creare video promozionali o di formazione o per attività di debug e test.

In una shell, utilizza la seguente sintassi:

screenrecord [options] filename

Per utilizzare screenrecord dalla riga di comando, inserisci quanto segue:

adb shell screenrecord /sdcard/demo.mp4

Interrompi la registrazione dello schermo premendo Ctrl+C. Altrimenti, la registrazione si interrompe automaticamente dopo tre minuti o al limite di tempo impostato da --time-limit.

Per iniziare a registrare lo schermo del tuo dispositivo, esegui il comando screenrecord il video. Quindi, esegui il comando pull per scaricare il video dal dispositivo all'host computer. Ecco un esempio di sessione di registrazione:

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

L'utilità screenrecord può registrare con qualsiasi risoluzione e velocità in bit supportate di Google, mantenendo le proporzioni del display del dispositivo. I record dell'utilità a livello nativo risoluzione e orientamento del display per impostazione predefinita, con una durata massima di tre minuti.

Limitazioni dell'utilità screenrecord:

  • L'audio non viene registrato con il file video.
  • La registrazione video non è disponibile per i dispositivi con Wear OS.
  • Alcuni dispositivi potrebbero non essere in grado di registrare con la risoluzione del display nativa. Se riscontri problemi con la registrazione dello schermo, prova a utilizzare una risoluzione dello schermo inferiore.
  • La rotazione dello schermo durante la registrazione non è supportata. Se lo schermo ruota durante una parte dello schermo viene tagliata nella registrazione.

Tabella 4. Opzioni per screenrecord

Opzioni Descrizione
--help Visualizza sintassi e opzioni dei comandi
--size widthxheight Imposta le dimensioni del video: 1280x720. Il valore predefinito è l'impostazione nativa del dispositivo risoluzione del display (se supportata), 1280 x 720 in caso contrario. Per risultati ottimali, utilizza una dimensione supportata dal codificatore AVC (Advanced Video Coding).
--bit-rate rate Imposta la velocità in bit per il video, in megabit al secondo. Il valore predefinito è 20 Mbps. È possibile aumentare la velocità in bit per migliorare la qualità video, ma così facendo si ottengono filmati più grandi. . Nell'esempio seguente la velocità in bit di registrazione è impostata su 6 Mbps:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time Imposta il tempo massimo di registrazione in secondi. Il valore predefinito e massimo è 180 (3 minuti).
--rotate Ruota l'output di 90 gradi. Si tratta di una funzionalità sperimentale.
--verbose Visualizza le informazioni di log nella schermata della riga di comando. Se non imposti questa opzione, l'utilità non mostra alcuna informazione durante l'esecuzione.

Leggere i profili ART per le app

A partire da Android 7.0 (livello API 24), Android Runtime (ART) raccoglie i profili di esecuzione per installate, utilizzate per ottimizzare le prestazioni delle app. Esamina i profili raccolti per capire quali metodi vengono eseguiti di frequente e quali classi vengono usate durante l'avvio dell'app.

Nota: è possibile recuperare solo il profilo di esecuzione filename se hai accesso root al file system, ad esempio su un emulatore.

Per generare una forma testuale delle informazioni del profilo, utilizza il seguente comando:

adb shell cmd package dump-profiles package

Per recuperare il file generato, utilizza:

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

Reimposta i dispositivi di test

Se testi la tua app su più dispositivi di test, potrebbe essere utile resettare il dispositivo tra Ad esempio, per rimuovere i dati utente e reimpostare l'ambiente di test. Puoi eseguire un ripristino dei dati di fabbrica ripristino di un dispositivo di test con Android 10 (livello API 29) o versioni successive utilizzando Comando shell testharness adb, come mostrato di seguito:

adb shell cmd testharness enable

Quando ripristini il dispositivo utilizzando testharness, il dispositivo esegue automaticamente il backup dell'RSA che consente il debug tramite la workstation attuale in una posizione permanente. Cioè, dopo il dispositivo viene reimpostato, la workstation può continuare a eseguire il debug e a inviare comandi adb per il dispositivo senza registrare manualmente una nuova chiave.

Inoltre, per contribuire a rendere più semplice e sicuro continuare a testare la tua app, puoi usare la testharness per ripristinare un dispositivo cambia anche le seguenti impostazioni del dispositivo:

  • Il dispositivo configura determinate impostazioni di sistema in modo che non vengano visualizzate le procedure guidate di configurazione iniziali. Ciò significa che il dispositivo entra in uno stato da cui puoi installare, eseguire il debug e testare la tua app rapidamente.
  • Impostazioni:
    • Disattiva la schermata di blocco.
    • Disattiva gli avvisi di emergenza.
    • Disattiva la sincronizzazione automatica degli account.
    • Disattiva gli aggiornamenti di sistema automatici.
  • Altro:
    • Disattiva le app di sicurezza preinstallate.

Se la tua app deve rilevare e adattarsi alle impostazioni predefinite di testharness , utilizza il comando ActivityManager.isRunningInUserTestHarness().

Squadra

sqlite3 avvia il programma a riga di comando sqlite per esaminare i database SQLite. Include comandi come .dump per stampare i contenuti di una tabella .schema per stampare l'istruzione SQL CREATE per una tabella esistente. Puoi anche eseguire comandi SQLite dalla riga di comando, come mostrato:

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

Nota: è possibile accedere solo a un database SQLite se hai accesso root al file system, ad esempio su un emulatore.

Per saperne di più, consulta la documentazione della riga di comando sqlite3.

Backend USB adb

Il server adb può interagire con lo stack USB tramite due backend. Può utilizzare il formato nativo del sistema operativo (Windows, Linux o macOS) o può utilizzare il backend libusb. Alcune funzionalità, come attach, detach e il rilevamento della velocità USB, vengono disponibile solo quando si utilizza il backend libusb.

Puoi scegliere un backend utilizzando la variabile di ambiente ADB_LIBUSB. Se non è impostato, adb utilizza il backend predefinito. Il comportamento predefinito varia a seconda del sistema operativo. In fase di avvio con ADB v34, Il backend liubusb viene utilizzato per impostazione predefinita su tutti i sistemi operativi tranne Windows, dove il backend nativo utilizzata per impostazione predefinita. Se ADB_LIBUSB è predefinito, determina se viene utilizzato il backend nativo o libusb. Consulta le pagina manuale ADB per saperne di più sulle variabili di ambiente adb.

Backend mDNS adb

ADB può utilizzare il protocollo DNS multicast per connettere automaticamente il server e i dispositivi. Il server ADB viene fornito con due backend, Bonjour (mdnsResponder di Apple) e Openscreen.

Il backend Bonjour ha bisogno di un daemon per essere in esecuzione sul computer host. Su macOS, il daemon integrato di Apple è sempre in esecuzione, ma su Windows e Linux, l'utente deve assicurarsi che il daemon mdnsd sia attivo e in esecuzione. Se il comando adb mdns check restituisce un errore, è probabile che ADB utilizzi il backend Bonjour, ma non è in esecuzione alcun daemon Bonjour.

Il backend Openscreen non ha bisogno di un daemon in esecuzione sulla macchina. Il supporto per il backend Openscreen su macOS inizia da ADB v35. Windows e Linux sono supportati a partire da ADB v34.

Per impostazione predefinita, ADB utilizza il backend Bonjour. Questo comportamento può essere modificato utilizzando la variabile di ambiente ADB_MDNS_OPENSCREEN (impostata su 1 o 0). Per ulteriori dettagli, consulta la pagina manuale di ADB.