Android Debug Bridge (adb
) è uno strumento a riga di comando versatile che ti consente di comunicare con un dispositivo. Il comando adb
facilita una serie di azioni sul dispositivo, come l'installazione e il debug delle app. adb
fornisce l'accesso a una shell Unix che puoi utilizzare per eseguire una serie di comandi su un dispositivo. È un programma client-server che include tre componenti:
- Un client, che invia comandi. Il client viene eseguito sulla macchina di sviluppo. Puoi richiamare un client da un terminale a riga di comando mediante l'invio di un comando
adb
. - Un daemon (adbd), che esegue comandi su un dispositivo. Il daemon viene eseguito come processo in background su ogni dispositivo.
- Un server, che gestisce la comunicazione tra il client e il daemon. Il server viene eseguito come processo in background sulla macchina di sviluppo.
adb
è incluso nel pacchetto Android SDK Platform Tools. Scarica questo
pacchetto con SDK Manager, che lo installa
all'indirizzo android_sdk/platform-tools/
. Se vuoi il pacchetto SDK Android autonomo
Platform Tools, scaricalo qui.
Per informazioni sulla connessione di un dispositivo per l'utilizzo su adb
, incluso come utilizzare l'Assistente connessioni per risolvere i problemi comuni, consulta la sezione Eseguire app su un dispositivo hardware.
Come funziona ADB
Quando avvii un client adb
, il client verifica innanzitutto se è già in esecuzione un processo del server adb
. In caso contrario, il processo del server viene avviato.
All'avvio, il server si associa alla porta TCP locale 5037 e rimane in ascolto dei comandi inviati dai client adb
.
Nota: tutti i client adb
utilizzano la porta 5037 per comunicare
con il server adb
.
Il server configura quindi le connessioni per tutti i dispositivi in esecuzione.
Individua gli emulatori scansionando le porte di numero dispari nell'intervallo da 5555 a 5585, ovvero l'intervallo utilizzato dai primi 16 emulatori. Nel momento in cui il server trova un daemon adb
(adbd), imposta una connessione a quella porta.
Ogni emulatore utilizza una coppia di porte sequenziali: una porta con numero pari per le connessioni della console e una porta con numero dispari per le connessioni adb
. 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 connesso 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 per tutti i dispositivi, puoi utilizzare i comandi adb
per accedere a questi dispositivi. Poiché il server gestisce le connessioni ai dispositivi e i comandi di più client adb
, puoi controllare qualsiasi dispositivo da qualsiasi client o da uno script.
Attiva il debug ADB sul dispositivo
Per utilizzare adb con un dispositivo collegato tramite USB, devi attivare Debug USB nelle impostazioni di sistema del dispositivo, alla sezione Opzioni sviluppatore. Su Android 4.2 (livello API 17) e versioni successive, la schermata Opzioni sviluppatore è nascosta per impostazione predefinita. Per renderlo visibile, abilita Opzioni sviluppatore.
Ora puoi collegare il tuo dispositivo tramite USB. Puoi verificare che il dispositivo sia connesso eseguendo adb devices
dalla directory android_sdk/platform-tools/
. Se è connesso, il nome del dispositivo è indicato come "dispositivo".
Nota: quando connetti un dispositivo con Android 4.2.2 (livello API 17) o versioni successive, il sistema mostra una finestra di dialogo che chiede se accettare una chiave RSA che consente 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 possano essere eseguiti a meno che tu non riesca a sbloccare il dispositivo e confermare la finestra di dialogo.
Per maggiori informazioni sulla connessione a un dispositivo tramite USB, leggi Eseguire app su un dispositivo hardware.
Connettiti a un dispositivo tramite Wi-Fi
Nota: le istruzioni riportate di seguito non si applicano ai dispositivi Wear con Android 11 (livello API 30). Per ulteriori informazioni, consulta la guida al debug di un'app Wear OS.
Android 11 (livello API 30) e versioni successive supportano il deployment e il debug dell'app in modalità wireless dalla workstation tramite Android Debug Bridge (adb). Ad esempio, puoi eseguire il deployment dell'app di cui è possibile eseguire il debug su più dispositivi remoti senza dover collegare fisicamente il dispositivo tramite USB. In questo modo non è necessario risolvere problemi comuni di connessione USB, come l'installazione del driver.
Prima di iniziare a utilizzare il debug wireless:
-
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 il telefono oppure Android 13 (livello API 33) o versioni successive per TV e Wear OS. Per maggiori informazioni, consulta la pagina Controllare e aggiornare la versione di Android.
-
Se utilizzi l'IDE, assicurati che sia installata la versione più recente di Android Studio. Puoi scaricarla qui.
-
Sulla workstation, esegui l'aggiornamento all'ultima versione degli SDK Platform Tools.
Per utilizzare il debug wireless, devi accoppiare il dispositivo alla workstation utilizzando un codice QR o un codice di accoppiamento. La workstation e il dispositivo devono essere connessi alla stessa rete wireless. Per connetterti al tuo dispositivo, segui questi passaggi:
-
Attiva le opzioni sviluppatore sul tuo dispositivo.
-
Apri Android Studio e seleziona Accoppia dispositivi mediante Wi-Fi dal menu di configurazione dell'esecuzione.
Figura 1. Menu Esegui configurazioni.Viene visualizzata la finestra Accoppia dispositivi tramite Wi-Fi, come mostrato nella figura 2.
Figura 2. Finestra popup per accoppiare i dispositivi tramite codice QR o codice di accoppiamento. -
Sul dispositivo, tocca Debug wireless e accoppia il dispositivo:
Figura 3. Screenshot dell'impostazione Debug wireless su un telefono Google Pixel.-
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.
-
Per accoppiare il dispositivo con un codice di accoppiamento, seleziona Accoppia dispositivo con codice di accoppiamento dal popup Accoppia dispositivi tramite Wi-Fi. Sul dispositivo, seleziona Accoppia utilizzando il codice di accoppiamento e prendi nota del codice a sei cifre fornito. Quando il dispositivo viene visualizzato nella finestra Accoppia dispositivi tramite Wi-Fi, puoi selezionare Accoppia e inserire il codice di sei cifre mostrato sul dispositivo.
Figura 4. Esempio di inserimento di un codice a sei cifre.
-
-
Dopo aver accoppiato il dispositivo, puoi provare a implementare l'app sul dispositivo.
Per accoppiare un altro dispositivo o per eliminare il dispositivo corrente sulla workstation, vai alla sezione Debug wireless sul dispositivo. Tocca il nome della workstation nella sezione Dispositivi accoppiati e seleziona Elimina.
-
Se vuoi attivare e disattivare rapidamente il debug wireless, puoi utilizzare i riquadri sviluppatore delle Impostazioni rapide per Debug wireless, disponibili in Opzioni sviluppatore > Riquadri sviluppatore Impostazioni rapide.
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:
-
Attiva le opzioni sviluppatore sul dispositivo, come descritto in precedenza.
-
Attiva il debug wireless sul dispositivo, come descritto in precedenza.
-
Sulla workstation, apri una finestra del terminale e vai a
android_sdk/platform-tools
. -
Trova l'indirizzo IP, il numero di porta e il codice di accoppiamento selezionando Accoppia il dispositivo con codice di accoppiamento. Prendi nota dell'indirizzo IP, del numero di porta e del codice di accoppiamento visualizzati sul dispositivo.
-
Esegui
adb pair ipaddr:port
sul terminale della workstation. Utilizza l'indirizzo IP e il numero di porta indicati sopra. -
Quando richiesto, inserisci il codice di accoppiamento, come mostrato di seguito.
Figura 6. Un messaggio indica che il dispositivo è stato accoppiato correttamente.
Risolvi i problemi di connessione wireless
Se hai difficoltà a connetterti al tuo dispositivo in modalità wireless, prova a risolvere il problema svolgendo i seguenti passaggi per la risoluzione dei problemi.
Verificare se la workstation e il dispositivo soddisfano i prerequisiti
Verifica che la workstation e il dispositivo soddisfino i prerequisiti elencati all'inizio di questa sezione.
Verifica la presenza di altri problemi noti
Di seguito è riportato un elenco degli attuali problemi noti del debug wireless (con adb o Android Studio) e come risolverli:
-
Il Wi-Fi non si connette. Le reti Wi-Fi sicure, ad esempio le reti Wi-Fi aziendali, potrebbero bloccare le connessioni p2p e impedirti di connetterti tramite Wi-Fi. Prova a connetterti con un cavo o un'altra rete Wi-Fi (non aziendale). Un'altra opzione è una connessione wireless che utilizza "adb connect
:port" su tcp/ip (dopo una connessione USB iniziale), 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, connettiti di nuovo alla rete.
Connettiti in modalità wireless a un dispositivo dopo una connessione USB iniziale (solo opzione disponibile su Android 10 e versioni precedenti)
Nota: questo flusso di lavoro è applicabile anche ad Android 11 (e versioni successive), con attenzione al fatto che comporta anche una connessione *iniziale* tramite USB fisica.
Nota: le seguenti istruzioni non riguardano i dispositivi Wear con Android 10 (livello API 29) o versioni precedenti. Per ulteriori informazioni, consulta la guida relativa al debug di un'app Wear OS.
In genere adb
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:
-
Connetti il dispositivo Android e il computer host
adb
a una rete Wi-Fi comune. - Collega il dispositivo al computer host con un cavo USB.
-
Imposta il dispositivo di destinazione in modo che rimanga in ascolto di una connessione TCP/IP sulla porta 5555:
adb tcpip 5555
- Scollega il cavo USB dal dispositivo di destinazione.
- Trova l'indirizzo IP del tuo dispositivo Android. Ad esempio, su un dispositivo Nexus, puoi trovare l'indirizzo IP in Impostazioni > Informazioni sul tablet (o Informazioni sul telefono) > Stato > Indirizzo IP.
-
Connettiti al dispositivo tramite il suo indirizzo IP:
adb connect device_ip_address:5555
-
Verifica che il computer host sia connesso al dispositivo di destinazione:
$ adb devices List of devices attached device_ip_address:5555 device
Nota: fai attenzione che non tutti i punti di accesso sono adatti. Potrebbe essere necessario utilizzare un punto di accesso il cui firewall è configurato correttamente per supportare adb
.
Il tuo dispositivo è ora connesso a adb
.
Se la connessione adb
al tuo dispositivo si interrompe:
- Assicurati che il tuo host sia ancora connesso alla stessa rete Wi-Fi del tuo dispositivo Android.
-
Esegui di nuovo il passaggio
adb connect
per riconnetterti. -
Se il problema persiste, reimposta l'host di
adb
:adb kill-server
Poi ricomincia dall'inizio.
Query per dispositivi
Prima di inviare comandi adb
, è utile sapere quali istanze del dispositivo sono connesse al server adb
. Genera un elenco dei dispositivi collegati utilizzando il
comando devices
:
adb devices -l
In risposta, adb
stampa queste informazioni sullo stato per ciascun dispositivo:
- Numero di serie:
adb
crea una stringa per identificare in modo univoco il dispositivo tramite il relativo numero di porta. Ecco un numero di serie di esempio:emulator-5554
- Stato: lo stato della connessione del dispositivo può essere uno dei seguenti:
offline
: il dispositivo non è connesso aadb
o non risponde.device
: il dispositivo è connesso al serveradb
. Tieni presente che questo stato non implica che il sistema Android sia completamente avviato e operativo, perché il dispositivo si connette aadb
mentre il sistema è ancora in fase di avvio. Dopo l'avvio, questo è il normale stato operativo di un dispositivo.no device
: nessun dispositivo connesso.
- Descrizione: se includi l'opzione
-l
, il comandodevices
indica il tipo di dispositivo. Queste informazioni sono utili quando hai più dispositivi connessi, in modo da poterli distinguere.
L'esempio seguente mostra il comando devices
e il relativo output. Ci sono tre dispositivi in esecuzione. Le prime due righe nell'elenco sono emulatori, mentre la terza riga è un dispositivo hardware 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 in elenco
Il comando adb devices
ha una sequenza di comandi con lettere maiuscole e minuscole che fa sì che gli emulatori in esecuzione non vengano visualizzati nell'output adb devices
anche se gli emulatori sono visibili sul desktop. Questo accade quando sono vere tutte le seguenti
condizioni:
- Il server
adb
non è in esecuzione. - Puoi utilizzare il comando
emulator
con l'opzione-port
o-ports
con un valore di porta di numero dispari compreso tra 5554 e 5584. - La porta con numero dispari che hai scelto non è occupata, quindi la connessione della porta può essere stabilita presso il numero di porta specificato oppure, se è occupato, l'emulatore passa a un'altra porta che soddisfi i requisiti del passaggio 2.
- Avvia il server
adb
dopo aver avviato l'emulatore.
Un modo per evitare questa situazione è consentire all'emulatore di scegliere le proprie porte e di eseguire non più di 16 emulatori alla volta. Un altro modo è avviare sempre il server adb
prima di utilizzare il comando emulator
, come spiegato negli esempi seguenti.
Esempio 1: nella seguente sequenza di comandi, il comando adb devices
avvia il server adb
, ma l'elenco dei dispositivi non viene visualizzato.
Arresta il server adb
e inserisci i seguenti comandi nell'ordine mostrato. Come nome della durata di visualizzazione media, specifica un nome della durata di visualizzazione media valido del tuo sistema. Per visualizzare un elenco dei nomi della durata di visualizzazione media, digita emulator -list-avds
. Il comando emulator
si trova nella 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 l'elenco dei dispositivi perché il server adb
è stato avviato per primo.
Per visualizzare l'emulatore nell'output adb devices
, arresta il server adb
, quindi avvialo di nuovo dopo aver utilizzato il comando emulator
e prima di utilizzare il comando 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 ulteriori informazioni sulle opzioni della riga di comando dell'emulatore, vedi Opzioni di avvio dalla riga di comando.
Invia 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, procedi nel seguente modo:
- Usa il comando
devices
per ottenere il numero di serie della destinazione. - Una volta ottenuto il numero di serie, utilizza l'opzione
-s
con i comandiadb
per specificarlo.- Se eseguirai molti comandi
adb
, puoi impostare la variabile di ambiente$ANDROID_SERIAL
in modo che contenga il numero di serie. - Se usi sia
-s
che$ANDROID_SERIAL
,-s
esegue l'override di$ANDROID_SERIAL
.
- Se eseguirai molti comandi
Nell'esempio seguente si ottiene l'elenco dei dispositivi collegati, che viene poi utilizzato 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
mostra l'errore "adb: more than one device/emulator".
Se hai più dispositivi disponibili ma solo uno è un emulatore, utilizza l'opzione -e
per inviare comandi all'emulatore. Se sono presenti più dispositivi ma un solo dispositivo hardware collegato, utilizza l'opzione -d
per inviare comandi al dispositivo hardware.
Installare un'app
Puoi usare adb
per installare un APK su un emulatore o un dispositivo connesso con il comando install
:
adb install path_to_apk
Quando installi un APK di test, devi utilizzare l'opzione -t
con il comando install
. Per maggiori informazioni,
consulta la pagina -t
.
Per installare più APK, usa il criterio install-multiple
. Questo è utile se scarichi tutti gli APK per un dispositivo specifico per la tua app da Play Console e vuoi installarli su un emulatore o un dispositivo fisico.
Per ulteriori informazioni su come creare un file APK che puoi installare su un emulatore/un'istanza di dispositivo, consulta Creare ed eseguire un'app.
Nota: se usi Android Studio, non è necessario utilizzare adb
direttamente per installare l'app dall'emulatore o dal dispositivo. ma è Android Studio a occuparsi della pacchettizzazione e dell'installazione dell'app.
Configura port forwarding
Utilizza il comando forward
per configurare un port forwarding arbitrario, che inoltra le richieste da una porta host specifica a una porta diversa su un dispositivo.
Nell'esempio seguente viene configurato l'inoltro dalla porta host 6100 alla porta del dispositivo 7100:
adb forward tcp:6100 tcp:7100
Nell'esempio seguente viene configurato l'inoltro della porta host 6100 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 sul dispositivo. Tutti i dati ricevuti verranno scritti nel daemon di logging del sistema e visualizzati nei log del dispositivo.
Copiare file su e da un dispositivo
Utilizza i comandi pull
e push
per copiare file da e verso un dispositivo. A differenza del comando install
, che copia un file APK solo in una posizione specifica, i comandi 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:
adb pull remote local
Per copiare un file o una directory e le relative sottodirectory sul dispositivo:
adb push local remote
Sostituisci local
e remote
con i percorsi dei file/della directory di destinazione sulla tua macchina di sviluppo (locale) e sul dispositivo (remoto). Ad esempio:
adb push myfile.txt /sdcard/myfile.txt
Arresta l'adb server
In alcuni casi, per risolvere il problema potrebbe essere necessario terminare il processo del server adb
e riavviarlo. Questo potrebbe verificarsi, ad esempio, se adb
non risponde a un comando.
Per arrestare il server adb
, utilizza il comando adb kill-server
.
Puoi quindi riavviare il server emettendo qualsiasi altro comando adb
.
Emetti comandi adb
Esegui i comandi adb
dalla riga di comando sulla tua macchina di sviluppo o da uno script utilizzando quanto segue:
adb [-d | -e | -s serial_number] command
Se è in esecuzione un solo emulatore o se è connesso un solo dispositivo, il comando adb
viene inviato a quel dispositivo per impostazione predefinita. Se sono in esecuzione più emulatori e/o sono collegati più dispositivi, devi utilizzare l'opzione -d
, -e
o -s
per specificare il dispositivo di destinazione a cui deve essere indirizzato il comando.
Utilizza il seguente comando per visualizzare un elenco dettagliato di tutti i comandi adb
supportati:
adb --help
Esegui comandi della shell
Puoi utilizzare il comando shell
per inviare comandi del dispositivo tramite adb
o per avviare una shell interattiva. Per emettere un singolo comando, utilizza il comando shell
come segue:
adb [-d |-e | -s serial_number] shell shell_command
Per avviare una shell interattiva su un dispositivo, utilizza il comando shell
come segue:
adb [-d | -e | -s serial_number] shell
Per uscire da una shell interattiva, premi Control+D
o digita exit
.
Android fornisce la maggior parte degli strumenti a riga di comando Unix standard. Per un elenco degli strumenti disponibili, utilizza il seguente comando:
adb shell ls /system/bin
La guida è disponibile per la maggior parte dei comandi tramite l'argomento --help
.
Molti dei comandi della shell sono forniti da toybox.
L'assistenza generale applicabile a tutti i comandi toybox è disponibile tramite toybox --help
.
Con Android Platform Tools 23 e versioni successive, adb
gestisce gli argomenti allo stesso modo del comando ssh(1)
. Questa modifica ha risolto molti problemi relativi all'iniezione di comandi e consente di eseguire in sicurezza comandi che contengono metacaratteri della shell, ad esempio adb install Let\'sGo.apk
. Questa modifica significa che è cambiata anche l'interpretazione di qualsiasi comando contenente metacaratteri 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 per la shell locale e una volta per la shell remota, come fai con
ssh(1)
. Ad esempio, adb shell setprop key 'value'
.
Vedi anche lo strumento a riga di comando Logcat, utile per monitorare il log di sistema.
Gestore dell'attività di chiamata
All'interno di una shell di adb
, puoi inviare comandi allo 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à della schermata del dispositivo e altro ancora.
In una shell, la sintassi am
è:
am command
Puoi anche inviare un comando di Activity Manager direttamente da adb
senza accedere a una shell remota. Ad esempio:
adb shell am start -a android.intent.action.VIEW
Tabella 1. Comandi di Gestione attività disponibili
Comando | Descrizione |
---|---|
start [options] intent
|
Avvia un Activity specificato da
intent . Consulta la specifica per gli argomenti intent. Le opzioni sono:
|
startservice [options] intent
|
Avvia il campo Service specificato da
intent . Consulta la specifica per gli argomenti intent. Le opzioni sono:
|
force-stop package
|
Forza l'interruzione di tutti gli elementi associati a package .
|
kill [options] package
|
Interrompi tutti i processi associati a package . Questo comando termina solo i processi sicuri da terminare e che non influiscono sull'esperienza utente.
Le opzioni sono:
|
kill-all
|
Termina tutti i processi in background. |
broadcast [options] intent
|
Emetti un intent di trasmissione. Consulta la specifica per gli argomenti intent. Le opzioni sono:
|
instrument [options] component
|
Avvia il monitoraggio con un'istanza Instrumentation .
In genere il target component
è il formato test_package/runner_class . Le opzioni sono:
|
profile start process file
|
Avvia profiler su process , scrivi i risultati in 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:
|
set-debug-app [options] package
|
Imposta l'app package di cui eseguire il debug. Le opzioni sono:
|
clear-debug-app
|
Cancella il pacchetto precedente impostato per il debug con set-debug-app .
|
monitor [options]
|
Avvia il monitoraggio per rilevare arresti anomali o ANR. Le opzioni sono:
|
screen-compat {on | off} package
|
Controlla la modalità di compatibilità
schermo di package .
|
display-size [reset | widthxheight]
|
Sostituisci le dimensioni di visualizzazione del dispositivo.
Questo comando è utile per testare l'app su schermi di dimensioni diverse, imitando una risoluzione di schermo ridotta su un dispositivo con uno schermo grande e viceversa.
Esempio: |
display-density dpi
|
Esegui l'override della compattezza del display del dispositivo.
Questo comando è utile per testare l'app su diverse densità di schermo imitando un ambiente di schermo ad alta densità con uno schermo a bassa densità e viceversa.
Esempio: |
to-uri intent
|
Stampa la specifica di intent fornita come URI. Consulta la specifica per gli argomenti intent. |
to-intent-uri intent
|
Stampa la specifica di intent fornita come URI intent: . Consulta la specifica per gli argomenti intent. |
Specifiche per gli argomenti intent
Per i comandi di Gestione attività che utilizzano un argomento intent
, puoi specificare l'intent con le seguenti opzioni:
Chiama gestore pacchetti (pm
)
All'interno di una shell di adb
, puoi inviare comandi con lo strumento di gestione dei pacchetti (pm
) per eseguire azioni e query sui pacchetti dell'app installati sul dispositivo.
In una shell, la sintassi pm
è:
pm command
Puoi anche eseguire un comando del gestore di pacchetti direttamente da adb
senza accedere a 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, facoltativamente solo quelli il cui nome del pacchetto contiene il testo in filter . Opzioni:
|
list permission-groups
|
Stampa tutti i gruppi di autorizzazioni noti. |
list permissions [options] group
|
Stampa tutte le autorizzazioni note, facoltativamente solo quelle in group . Opzioni:
|
list instrumentation [options]
|
Elenca tutti i pacchetti di test. Opzioni:
|
list features
|
Stampare tutte le funzionalità del sistema. |
list libraries
|
Stampa tutte le librerie supportate dal dispositivo corrente. |
list users
|
Stampa tutti gli utenti del sistema. |
path package
|
Stampa il percorso dell'APK dell'elemento package specificato.
|
install [options] path
|
Installa un pacchetto specificato da path nel sistema. Opzioni:
|
uninstall [options] package
|
Rimuove un pacco dal sistema. Opzioni:
|
clear package
|
Eliminare tutti i dati associati a un pacchetto. |
enable package_or_component
|
Consente di attivare il pacchetto o il componente specificato (scritto come "package/class"). |
disable package_or_component
|
Disattiva il pacchetto o il componente specificato (scritto come "package/class"). |
disable-user [options] package_or_component
|
Opzioni:
|
grant package_name permission
|
Concedi un'autorizzazione a un'app. Sui dispositivi con Android 6.0 (livello API 23) e versioni successive, l'autorizzazione può essere qualsiasi autorizzazione dichiarata nel file manifest dell'app. Sui dispositivi con Android 5.1 (livello API 22) e versioni precedenti, deve essere presente un'autorizzazione facoltativa definita dall'app. |
revoke package_name permission
|
Revoca un'autorizzazione da un'app. Sui dispositivi con Android 6.0 (livello API 23) e versioni successive, l'autorizzazione può essere qualsiasi autorizzazione dichiarata nel file manifest dell'app. Sui dispositivi con Android 5.1 (livello API 22) e versioni precedenti, deve essere presente un'autorizzazione facoltativa definita dall'app. |
set-install-location location
|
Modifica il percorso di installazione predefinito. Valori posizione:
Nota: è inteso solo per il debug. L'utilizzo di questa opzione può causare l'interruzione delle app e altri comportamenti indesiderati. |
get-install-location
|
Restituisce il percorso di installazione corrente. Valori restituiti:
|
set-permission-enforced permission [true | false]
|
Specifica se è necessario applicare l'autorizzazione specificata. |
trim-caches desired_free_space
|
Taglia i file della cache per raggiungere lo spazio libero specificato. |
create-user user_name
|
Crea un nuovo utente con il user_name specificato,
stampando il nuovo identificatore utente dell'utente.
|
remove-user user_id
|
Verrà rimosso l'utente con l'elemento user_id specificato,
eliminando tutti i dati associati all'utente
|
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 il package specificato o per tutti i pacchetti se nessuno è specificato. I codici di stato sono definiti come segue:
Le opzioni sono:
|
reset-app-links [options] [package]
|
Reimposta lo stato di verifica del dominio per il pacchetto specificato o per tutti i pacchetti se non è specificato alcun pacchetto.
Le opzioni sono:
|
verify-app-links [--re-verify] [package]
|
Trasmetti una richiesta di verifica per il package specificato o per tutti i pacchetti se nessuno è specificato. Invia solo se il pacchetto non ha precedentemente registrato una risposta.
|
set-app-links [--package package] state domains
|
Impostare manualmente lo stato di un dominio per un pacchetto. Affinché questa operazione funzioni, il dominio deve essere dichiarato dal pacchetto come verifica automatica. Questo comando non segnala un errore per i domini che non è stato possibile applicare.
|
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. Affinché la procedura funzioni, il dominio deve essere dichiarato dal pacchetto. Questo comando non segnala un errore per i domini che non è stato possibile applicare.
|
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. Affinché la procedura funzioni, il dominio deve essere dichiarato dal pacchetto. Questo comando non segnala un errore per i domini che non è stato possibile applicare.
|
set-app-links-allowed --user user_id [--package package] allowed
|
Attiva/disattiva l'impostazione di gestione dei link verificata automaticamente per un pacchetto.
|
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à da bassa ad alta.
|
Gestione delle norme relative ai dispositivi per le chiamate (dpm
)
Per aiutarti a sviluppare e testare le tue app di gestione dei dispositivi, esegui i comandi allo strumento Gestione criteri dei dispositivi (dpm
). Utilizza lo strumento per controllare l'app di amministrazione attiva o modificare i dati sullo stato di un criterio sul dispositivo.
In una shell, la sintassi dpm
è:
dpm command
Puoi anche eseguire un comando di gestione dei criteri dei dispositivi direttamente da adb
senza accedere a una shell remota:
adb shell dpm command
Tabella 3. Comandi di Gestione dei criteri dei dispositivi disponibili
Comando | Descrizione |
---|---|
set-active-admin [options] component
|
Imposta component come amministratore attivo.
Le opzioni sono:
|
set-profile-owner [options] component
|
Imposta component come amministratore attivo e il relativo pacchetto come proprietario del profilo per un utente esistente.
Le opzioni sono:
|
set-device-owner [options] component
|
Imposta component come amministratore attivo e il relativo pacchetto come proprietario del dispositivo.
Le opzioni sono:
|
remove-active-admin [options] component
|
Disattivare un amministratore attivo. L'app deve dichiarare android:testOnly nel manifest. Questo comando rimuove anche i proprietari di dispositivi e profili.
Le opzioni sono:
|
clear-freeze-period-record
|
Cancella il record del dispositivo relativo ai periodi di blocco impostati in precedenza per gli aggiornamenti OTA di sistema. Ciò è utile per evitare le limitazioni di pianificazione del dispositivo durante lo sviluppo di app che gestiscono i periodi di blocco. Vedi Gestire gli aggiornamenti di sistema.
Funzionalità supportata sui dispositivi con Android 9.0 (livello API 28) e versioni successive. |
force-network-logs
|
Forzare il sistema a rendere i log di rete esistenti pronti per il recupero da parte di un DPC. Se sono disponibili log di connessione o DNS, il DPC riceve il callback onNetworkLogsAvailable() . Vedi Logging delle 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
|
Forzare il sistema a rendere disponibili i log di sicurezza esistenti per il DPC. Se sono disponibili log, il DPC riceve il callback onSecurityLogsAvailable() . Consulta Registrare l'attività dei dispositivi aziendali.
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à della shell per acquisire uno screenshot del display di un dispositivo.
In una shell, la sintassi screencap
è:
screencap filename
Per utilizzare screencap
dalla riga di comando, inserisci quanto segue:
adb shell screencap /sdcard/screen.png
Ecco una sessione di screenshot di esempio 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à della shell per la registrazione della visualizzazione dei dispositivi con Android 4.4 (livello API 19) e versioni successive. L'utilità registra l'attività dello schermo su un file MPEG-4. Puoi utilizzare questo file per creare video promozionali o di formazione o per eseguire il debug e i 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 (Comando + C su macOS). In caso contrario, la registrazione
si interrompe automaticamente dopo tre minuti o dopo il limite di tempo impostato da --time-limit
.
Per iniziare a registrare lo schermo del dispositivo, esegui il comando screenrecord
al fine di registrare il video. Quindi, esegui il comando pull
per scaricare il video dal dispositivo al computer host. 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 a qualsiasi risoluzione e velocità in bit supportate richieste, mantenendo le proporzioni del display del dispositivo. Per impostazione predefinita, l'utilità registra con la risoluzione e l'orientamento nativi del display, 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 riuscire a registrare con la risoluzione nativa del display. Se riscontri problemi con la registrazione dello schermo, prova a utilizzare una risoluzione inferiore.
- La rotazione dello schermo durante la registrazione non è supportata. Se lo schermo ruota durante la registrazione, alcune parti dello schermo vengono tagliate.
Tabella 4. Opzioni di screenrecord
Opzioni | Descrizione |
---|---|
--help
|
Visualizza sintassi e opzioni del comando |
--size widthxheight
|
Imposta le dimensioni del video: 1280x720 . Il valore predefinito è la risoluzione
display nativa del dispositivo (se supportata), 1280 x 720 in caso contrario. Per ottenere risultati ottimali, utilizza una dimensione supportata dal codificatore AVC (Advanced Video Coding) del tuo dispositivo. |
--bit-rate rate |
Imposta la velocità in bit per il video, in megabit al secondo. Il valore predefinito è 4 Mbps.
Puoi aumentare la velocità in bit per migliorare la qualità video, ma in questo modo otterrai file video più grandi. L'esempio seguente imposta la velocità in bit della registrazione su 6 Mbps:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
Imposta il tempo di registrazione massimo, in secondi. Il valore predefinito e massimo è 180 (3 minuti). |
--rotate |
Ruota l'output di 90 gradi. Questa funzionalità è sperimentale. |
--verbose |
Visualizza le informazioni del log nella schermata della riga di comando. Se non imposti questa opzione, l'utilità non mostra informazioni durante l'esecuzione. |
Lettura dei profili ART per le app
A partire da Android 7.0 (livello API 24), Android Runtime (ART) raccoglie i profili di esecuzione per le app installate, che vengono utilizzati per ottimizzare le prestazioni delle app. Esamina i profili raccolti per capire quali metodi vengono eseguiti di frequente e quali classi vengono utilizzate durante l'avvio dell'app.
Nota: è possibile recuperare il nome file del profilo di esecuzione solo se hai accesso root al file system, ad esempio su un emulatore.
Per generare un formato di testo 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 l'app su più dispositivi di test, potrebbe essere utile reimpostare il dispositivo tra un test e l'altro, ad esempio per rimuovere i dati utente e reimpostare l'ambiente di test. Puoi eseguire il ripristino dei dati di fabbrica di un dispositivo di test con Android 10 (livello API 29) o versioni successive utilizzando il comando della shell adb
testharness
, come mostrato di seguito:
adb shell cmd testharness enable
Quando ripristini il dispositivo utilizzando testharness
, il dispositivo esegue automaticamente il backup della chiave RSA che consente il debug tramite la workstation corrente in una posizione permanente. In altre parole, dopo
il ripristino del dispositivo, la workstation può continuare a eseguire il debug ed emettere i comandi adb
al dispositivo senza registrare manualmente una nuova chiave.
Inoltre, per rendere più semplice e sicuro continuare a testare la tua app, l'uso di testharness
per il ripristino di un dispositivo comporta anche la modifica delle seguenti impostazioni del dispositivo:
- Il dispositivo configura determinate impostazioni di sistema in modo che le procedure guidate di configurazione iniziale non vengano visualizzate. In altre parole, il dispositivo entra in uno stato in cui puoi installare, eseguire il debug e testare la tua app rapidamente.
- Impostazioni:
- Consente di disattivare la schermata di blocco.
- Disattiva gli avvisi di emergenza.
- Disattiva la sincronizzazione automatica per gli account.
- Disattiva gli aggiornamenti di sistema automatici.
- Altro:
- Consente di disattivare le app di sicurezza preinstallate.
Se la tua app deve rilevare e adattarsi alle impostazioni predefinite del comando testharness
, utilizza
ActivityManager.isRunningInUserTestHarness()
.
quadrato
sqlite3
avvia il programma a riga di comando sqlite
per l'esame dei database SQLite.
Include comandi come .dump
per stampare i contenuti di una tabella e .schema
per stampare l'istruzione SQL CREATE
per una tabella esistente.
Puoi anche eseguire comandi SQLite dalla riga di comando, come illustrato di seguito:
$ 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 a un database SQLite solo se hai accesso root al file system, ad esempio tramite un emulatore.
Per ulteriori informazioni, consulta la documentazione relativa alla riga di comando di sqlite3
.