Guide

Come usare i comandi ADB e Fastboot su Android [GUIDA]

In questa guida andremo a vedere come usare i comandi ADB e Fastboot su Android necessari per poter mettere mano sul proprio dispositivo Android per poter eseguire alcuni importanti funzioni sul device. Prima di tutto, ci si deve servire di due importanti strumenti che sono Android Debug Bridge (ADB) e fastboot ossia due programmi che possono essere avviati tramite il Prompt dei comandi di Windows. Chi ha installato sul proprio computer con sistema operativo Microsoft, l’SDK di Android, potrà trovare i programmi ADB e fastboot all’interno della cartella platform tools (android_sdk/platform-tools/), programmi che comunque sarà possibile reperire ugualmente senza necessariamente installare il pacchetto intero SDK in quanto si potrà installare il tool minimal adb che contiene solo i file necessari per ADB e fastboot e può essere scaricato dal sito XDA. ADB è un tool da riga di comando versatile che permette di poter comunicare con un dispositivo. Il comando ADB, permette di svolgere con facilità delle azioni sul dispositivo come l’accesso a una shell Unix, utile per poter eseguire diversi comandi su un dispositivo.

Link Sponsorizzati

Android debug bridge (ADB), è un tool di riga di comando versatile, che permette di comunicare con un dispositivo, azionando con facilità alcune funzioni del device come l’installazione e debug di applicazioni e accesso a una shell Unix, utile per poter eseguire vari comandi su un dispositivo. Android debug bridge (ADB) è un programma client-server che include i seguenti componenti:

  • Client: serve per inviare i comandi dal computer dello sviluppatore ed è possibile richiamarlo da un terminale della riga di comando inviando un comando adb
  • Demone (adbd): serve per eseguire i comandi su un dispositivo con esecuzione come processo in background su ciascun device
  • Server: gestisce la comunicazione tra il client e il demone. Sul computer dello sviluppatore, il server viene eseguito come processo in background
Come usare i comandi ADB e fastboot su Android: come funziona ADB e fastboot

Vediamo ora come funziona ADB. quando si avvia il client ADB, il client deve controllare come prima cosa se è già in esecuzione un processo del server ADB, in maniera tale di avviarne il processo se questo non viene rilevato. Il server una volta avviato, andrà a collegarsi alla porta TCP locale 5037, necessaria per poter comunicare con il client ADB e “ascolterà” tutti i comandi inviati da quest’ultimo. Verranno quindi imposte dal server le connessioni a tutti i dispositivi che sono in esecuzione in quel momento, individuando gli emulatori ed eseguendo la scansione di porte aventi numeri dispari nell’intervallo che va da 5555 a 5585, l’intervallo usato dai primi 16 emulatori. Quando il server trova un demone (adbd), procede a impostare una connessione a quella porta. Perchè vengono fatte le scansioni delle sole porte dispari? Il motivo è che ciascun emulatore usa una coppia di porte sequenziali: una porta avente numero pari per le connessioni della console e una porta dispari invece per le connessioni ADB. Ecco di seguito un esempio:

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

L’emulatore 1, come si può vedere nell’esempio, è collegato ad ADB sulla porta 5555, ma anche alla console in ascolto 5554. Una volta che il server è riuscito a configurare le connessioni a tutti i dispositivi, è possibile utilizzare i comandi ADB per poter accedere a questi device. Il server, gestendo le connessioni ai dispositivi e gestendo i comandi da più client ADB, permette di controllare qualsiasi device da qualsiasi client o da uno script.

Come usare i comandi ADB e fastboot su Android: come abilitare il debug USB su un dispositivo Android

Come abilitare il debug USB su un dispositivo Android. Per poter utilizzare ADB con un dispositivo che è collegato via USB, è necessario abilitare su Android il debug USB dalle impostazioni del sistema operativo, sotto la voce Opzioni sviluppatore. A partire da Android 4.2, la voce Opzioni sviluppatore è stata nascosta per impostazione predefinita, ma renderla nuovamente visibile è molto semplice in quanto basta andare su Impostazioni > Info sul telefono > Premi 7 volte con il dito su Numero Build fino a visualizzare una piccola finestra pop-up che indica che sei diventato uno sviluppatore e le opzioni associate a esso ora sono attive. Non dovrai fare altro che tornare indietro alle Impostazioni e dovresti visualizzare ora in elenco la nuova voce Opzioni sviluppatore su cui dovrai premerci sopra per potervi accedere. Considera comunque che questo passaggio è generale, in alcuni dispositivi, la schermata delle Opzioni sviluppatore potrebbe trovarsi o essere nominata in maniera differente. Una volta dentro la schermata delle Opzioni sviluppatore, potrai attivare il debug USB per avere la modalità debug quando connesso il dispositivo via USB e conseguentemente adesso, potrai connettere il tuo dispositivo via USB. Per verificare che il device sia connesso, dalla directory android_sdk/platform-tools, ti basta eseguire adb devices e se è presente una connessione, vedrai il tuo dispositivo elencato come “device”. Alla connessione di un dispositivo Android via USB al computer, nelle versioni 4.2.2.0 e successive di Android, il sistema mostrerà una finestra in cui è richiesto se accettare una chiave RSA, utile per consentire il debug attraverso il computer in uso. Questo non è altro che un sistema di sicurezza, che protegge i device dell’utente garantendo che il debug USB e altri comandi ADB, non possano essere eseguiti a meno che non sia possibile sbloccare il dispositivo e dandone conferma.

Come usare i comandi ADB e fastboot su Android: come connettere un dispositivo Android via Wi-Fi invece che USB

Come connettere un dispositivo Android via Wi-Fi invece che USB. In genere ADB viene usato per comunicare con un dispositivo via USB tuttavia questo cavo di connessione non è l’unico modo che si può usare, infatti è possibile usare ADB anche via Wi-Fi, dopo però alcune impostazioni iniziali fatte via USB come vedremo nei passaggi seguenti:

  • Collega il tuo dispositivo Android al computer host adb a una rete Wi-Fi in comune (quindi devono usare la stessa rete wireless). Durante questa fase, è importante che il punto d’accesso abbia un firewall configurato in maniera tale da supportare ADB
  • Se devi connetterti a un dispositivo Wear OS, disattiva il Bluetooth sul telefono accoppiato
  • Collega ora il dispositivo Android al computer host usando il cavo USB
  • Imposta il dispositivo di destinazione per l’ascolto di una connessione TCP/IP su porta 5555 con il comando adb tcpip 5555
  • Scollega il cavo USB dal computer
  • Devi trovare adesso l’indirizzo IP del dispositivo Android. Per poterlo trovare, segui i seguenti passaggi (guida generale per smartphone e tablet) Impostazioni > Informazioni sul dispositivo > Stato > Indirizzo IP; per chi ha Wear OS invece: su un dispositivo Wear OS, è possibile trovare l’indirizzo IP in Impostazioni > Impostazioni Wi-Fi > Avanzate > Indirizzo IP
  • Ora puoi connetterti al dispositivo tramite il suo indirizzo IP con il comando adb connect device_ip_adress (tuo ip)
  • Verifica adesso che il tuo computer host sia connesso al dispositivo di destinazione tramite il comando seguente:

$ adb devices

List of devices attached

device_ip_adress:5555 device

Se rilevi la connessione ADB ok, altrimenti se questa risulta persa fai come segue:

  • Assicurati che il tuo computer host sia connesso alla stessa identica rete Wi-Fi del dispositivo Android
  • Connettiti nuovamente con il comando adb connect
  • Se il collegamento ADB non funziona, reimposta l’host ADB con il comando adb kill-server e ricomincia da capo i passaggi per eseguire il collegamento wireless

Una volta che è presente la connessione tra computer e dispositivo Android, sia che venga usata una connessione USB o Wi-Fi, si potranno eseguire i comandi ADB. Ecco di seguito quali sono:

Come usare i comandi ADB e fastboot su Android: Tabella 1 – Comandi e opzioni adb disponibili
  • -s: Installa l’app sulla scheda SD.
  • -d: Consente il downgrade del codice versione (solo per il debug dei pacchetti).
  • -g: Concedere tutte le autorizzazioni di runtime.
Opzioni globali Descrizione
-a Ascolta su tutte le interfacce di rete invece che su on localhost.
-d Dirige un comando adb sull’unico dispositivo USB collegato. Restituisce un errore quando è collegato più di un dispositivo USB.
-e Dirige un comando adb all’unico emulatore in esecuzione. Restituisce un errore quando è in esecuzione più di un emulatore.
-s serial_number Dirige un comando adb su un dispositivo specifico, a cui fa riferimento il numero seriale assegnato ad adb (come emulator-5556). Sostituisce il valore del numero di serie memorizzato nella $ANDROID_SERIALvariabile di ambiente.
-H server Il nome dell’host del server adb. Il valore predefinito è localhost.
-P port Il numero di porta del server adb. Il valore predefinito è 5037.
-L socket Ascolta sul socket del server adb fornito. Il valore predefinito è tcp:localhost:5037.
Comandi generali Descrizione
devices [-l] Stampa un elenco di tutti i dispositivi. Utilizzare l’opzione -l per includere le descrizioni del dispositivo.
help Stampa un elenco di comandi adb supportati e le loro descrizioni.
version Stampa il numero della versione adb.
run-as package_name Esegui comandi su un dispositivo come app (specificato utilizzando nome_pacchetto ).Ciò consente di eseguire comandi in adb come se l’app specificata eseguisse il comando (ovvero, si ha lo stesso accesso al dispositivo che l’app ha), senza richiedere l’accesso come root. Questo potrebbe essere necessario quando si utilizza adb su un dispositivo non rooted o un emulatore con un’immagine Play Store. L’app deve essere debuggabile.
Comandi di rete Descrizione
connect host[:port] Connetti a un dispositivo su TCP / IP. Se non si specifica una porta 5555, viene utilizzata la porta predefinita.
disconnect [host |host:port] Disconnettersi dal dispositivo TCP / IP specificato in esecuzione sulla porta specificata.Se non si specifica un host o una porta, tutti i dispositivi vengono disconnessi da tutte le porte TCP / IP. Se si specifica un host, ma non una porta 5555, viene utilizzata la porta predefinita,.
forward --list Elenca tutte le connessioni socket inoltrate.
forward [--no-rebind]local remote Inoltra le connessioni socket dalla porta locale specificata alla porta remota specificata sul dispositivo. È possibile specificare porte locali e remote nei modi seguenti:

  • tcp:port. Per scegliere qualsiasi porta aperta, crea il valore localetcp:0 .
  • localabstract:unix_domain_socket_name.
  • localreserved:unix_domain_socket_name.
  • localfilesystem:unix_domain_socket_name.
  • dev:character_device_name.
  • jdwp:pid.
forward --remove local Rimuove la connessione socket inoltrato specificato.
reverse --list Elenca tutte le connessioni di presa inversa dal dispositivo.
reverse [--no-rebind]remote local Inverte una connessione socket. L’ --no-rebindopzione indica che l’inversione fallisce se il socket specificato è già associato a un reverse comando precedente . È possibile specificare la porta per gli argomenti locali e remoti nei modi seguenti:

  • tcp:port. Per scegliere qualsiasi porta aperta, impostare il valore remototcp:0 .
  • localabstract:unix_domain_socket_name.
  • localreserved:unix_domain_socket_name.
  • localfilesystem:unix_domain_socket_name.
reverse --remove remote Rimuove la connessione invertita specificata dal dispositivo.
reverse --remove-all Rimuove tutte le connessioni della presa inversa dal dispositivo.
Comandi di trasferimento file Descrizione
push local remote Copia file e directory dal dispositivo locale (computer) in una posizione remota sul dispositivo.
pull [-a] remote local Copia file e directory remoti su un dispositivo. Utilizza l’ -acome opzione per conservare il timestamp e la modalità del file.
sync  [system|vendor|oem|data|all] Sincronizza una build locale dalla posizione specificata nel $ANDROID_PRODUCT_OUTdispositivo. Tutti i file modificati vengono copiati dalla partizione specificata.L’impostazione predefinita è sincronizzare tutte le partizioni. Questo comando viene utilizzato solo quando si crea l’origine della piattaforma Android. Gli sviluppatori di app non hanno bisogno di usare questo comando.La $ANDROID_PRODUCT_OUTvariabile di ambiente viene automaticamente impostata dal sistema di build Android per contenere la posizione delle immagini di sistema. Normalmente non è necessario impostarlo $ANDROID_PRODUCT_OUTquando lo si esegue adb sync, ma può essere utile se non si è in un albero di build (ma ne è disponibile uno) o se si sta eseguendo la sincronizzazione tra gli alberi di build senza passare da uno all’altro.

$ ANDROID_PRODUCT_OUT = / out / target / product / generic 
adb sync
Comandi di installazione dell’app Descrizione
install [options]package Serve per installare i pacchetti sul dispositivo. Le opzioni possibili sono le seguenti:

  • -l: App di blocco in avanti.
  • -r: Sostituisci l’app esistente.
  • -t: Consenti pacchetti di test. Se l’APK viene creato utilizzando un SDK di anteprima per sviluppatori (se si targetSdkVersiontratta di una lettera anziché di un numero), è necessario includere l’ -topzione con il comando di installazione se si installa un APK di test.
install-multiple[optionspackages Stesse opzioni come installcon l’aggiunta di quanto segue:

-p: Installazione parziale dell’app.

uninstall [-k] package Rimuovi questo pacchetto di app dal dispositivo. Aggiungi-kcome opzione per mantenere i dati e le directory della cache.
Backup e ripristino dei comandi Descrizione
backup[ ] -f file-apk-noapk] [ -obb-noobb] [ -shared-noshared] [ -all] [ -system| [ -nosystem]package_names Scrivi un archivio dei dati del dispositivo su file . Se non si specifica un nome file, il file è predefinito. L’elenco dei pacchetti è facoltativo quando si specificano le opzioni . Quanto segue descrive gli usi per le altre opzioni: backup.adb-all-shared

  • -apk | -noapk: Esegue il backup o non esegue il backup dei .apkfile. Il valore predefinito è -noapk.
  • -obb | -noobb: Esegue il backup o non esegue il backup dei .obbfile. Il valore predefinito è -noobb.
  • -shared | -noshared: Esegui il backup o non eseguire il backup dello spazio di archiviazione condiviso. Il valore predefinito è -noshared.
  • -all: Esegue il backup di tutte le app installate.
  • -system | -nosystem: Includi o non includa app di sistema quando esegui il backup di tutte le app installate ( -all). Il valore predefinito è -system.
restore file Ripristina il contenuto del dispositivo dal file .
Comandi di debug Descrizione
bugreport path Stampa un bugreportal percorso specificato. Se il percorso è una directory, quindi il bug report viene salvato in quella directory usando il nome file predefinito, . Stampa su dispositivi che non supportano rapporti sui bug zippati . bugreport.zipstdout
jdwp Stampa un elenco dei processi JDWP disponibili su un determinato dispositivo. Da utilizzare per connettersi a un processo JDWP specifico. Per esempio:forward jdwp:pid
adb forward tcp:8000 jdwp:472
jdb -attach localhost:8000
logcat [-help] [option] [filter-spec] Stampa i dati del registro sullo schermo. Per informazioni sul logcatcomando e la$ANDROID_LOG_TAGSvariabile di ambiente, vedere Filtraggio dell’output del registro nella pagina del logcat.La $ADB_TRACEvariabile di ambiente contiene un elenco separato da virgole delle informazioni di debug da registrare. I valori possono essere una qualsiasi combinazione dei seguenti: alladbsocketspacketsrwxusbsyncsysdepstransport, e jdwp.
Comandi di sicurezza Descrizione
disable-verity Disabilita il dm-veritycontrollo delle userdebugbuild. L’ dm-verityè una opzione garantisce che quando un utente avvia un dispositivo si trovi nello stesso stato in cui si trovava al momento dell’ultimo utilizzo.
enable-verity Riattiva il dm-veritycontrol su userdebugbuild. L’ dm-verityè una opzione garantisce che quando un utente avvia un dispositivo si trovi nello stesso stato in cui si trovava al momento dell’ultimo utilizzo.
keygen file Genera adb chiavi crittografate RSA pubbliche e private. La chiave privata è memorizzata nel file . La chiave pubblica viene memorizzata . Una coppia di chiavi RSA è necessaria quando si usa adb per connettersi via USB per la prima volta. È necessario accettare la chiave RSA del computer host per concedere esplicitamente l’accesso adb al dispositivo. file.pubUtilizzare la variabile $ANDROID_VENDOR_KEYSdi ambiente per puntare a un file o una directory contenente coppie di chiavi di autenticazione RSA a 2048 bit generate con il comando keygen . Queste coppie di chiavi si aggiungono alle coppie di chiavi RSA generate dal server adb.

Quando il server adb ha bisogno di una chiave, per prima cosa cerca nella directory dell’archivio chiavi del server adb. Se non viene trovata alcuna chiave, controlla la $ANDROID_VENDOR_KEYSvariabile di ambiente per una posizione. Se non vengono ancora trovate chiavi, il server adb locale genera e salva una nuova coppia di chiavi nella directory dell’archivio chiavi del server adb. Per questo motivo, solo un OEM che crea un nuovo dispositivo Android deve eseguire 'adb keygen'autonomamente.

Per impostazione predefinita, le coppie di chiavi generate dal server adb sono memorizzate nelle seguenti directory dell’archivio chiavi come adbkey(chiave privata) e adbkey.pub(chiave pubblica):

  • Linux e Mac: $HOME/.android.
  • Di Windows: %USERPOFILE%\.android.
Comandi di scripting Descrizione
wait-for [-transport-state Attendi che il dispositivo si trovi nello stato specificato.

  • state: i valori possono essere devicerecoverysideload, o bootloader.
  • transport: i valori possono essere usblocalany.
get-state Stampa lo stato adb di un dispositivo. Lo stato adb può essere print offline,bootloaderdevice.
get-serialno Stampa la stringa del numero seriale del dispositivo adb.
get-devpath Stampa il percorso del dispositivo adb.
remount Rimontare i /system/vendor/oem le partizioni in modalità lettura-scrittura.
reboot [bootloader |recovery | sideload |sideload-auto-reboot ] Riavvia il dispositivo. Questo comando si avvia automaticamente all’avvio dell’immagine di sistema, ma supporta anche bootloaderrecovery.

  • L’opzione bootloader riavvia in modalità bootloader.
  • L’opzione recovery riavvia in modalità ripristino.
  • L’opzione sideloadriavvia in sideloadmodalità di ripristino e avvio .
  • L’opzione sideload-auto-reboot opzione è uguale a sideload, ma si riavvia dopo il sideload.
sideload otapackage sideload (installa in formato APK) il pacchetto OTA completo specificato sul dispositivo.
root Riavvia adbd con i permessi di root.
unroot Riavvia adbd senza autorizzazioni di root.
usb Riavvia il server adb in ascolto su USB.
tcpip port-number Riavvia il server adb in ascolto su TCP nella porta specificata.
Comandi di debug interni Descrizione
start-server Controlla se il processo del server adb è in esecuzione.
kill-server Termina la procedura del server adb.
reconnect Forza una riconnessione dall’host.
reconnect device Forza una riconnessione dal dispositivo per forzare una riconnessione.
Comandi di shell Descrizione
shell Avvia una shell interattiva remota nel dispositivo di destinazione.
shell -e escape_char [-n] [-T] [-t] [-x] [command] Emette un comando shell nel dispositivo di destinazione e quindi esce dalla shell remota. Utilizza qualsiasi combinazione delle seguenti opzioni:

  • -e: Specificare un carattere di escape o il valore nonese non si desidera utilizzare un carattere di escape. Se non si fornisce un valore, viene utilizzato il carattere di escape predefinito (un trattino ( -)).
  • -n: Non leggere stdin.
  • -T: Disattiva l’allocazione di pseudo-terminal utiity (PTY).
  • -t: Impone l’allocazione PTY.
  • -x: Disabilita i codici di uscita remota e la stdout/stderrseparazione.
emu command Esegui un comando della console di emulazione.

È possibile utilizzare il comando shellper inviare comandi del dispositivo tramite adb, con o senza immettere la shell remota adb sul dispositivo. Per emettere un singolo comando senza inserire una shell remota, usa il comando shell in questo modo:

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

Oppure inserisci una shell remota su un dispositivo di questo tipo:

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

Quando sei pronto per uscire dalla shell remota, premi Ctrl + D o digita exit.

I binari del comando shell sono memorizzati nel file system del dispositivo in /system/bin/.

Call activity manager (am). All’interno di una shell adb, puoi impartire comandi con lo strumento activity manager ( am) per eseguire varie azioni di sistema, come avviare un’attività, forzare l’interruzione di un processo, trasmettere un intent, modificare le proprietà dello schermo del dispositivo e altro. In una shell, la sintassi è: am command

Puoi inviare anche un comando di gestione attività direttamente da ADB senza inserire una shell

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

Come usare i comandi ADB e fastboot su Android: Tabella 2 – Comandi di Gestione attività disponibili
Comando Descrizione
start [optionsintent Avvia un Activityspecificato da intent.Le opzioni sono:

  • -D: Abilita il debug.
  • -W: Attende il completamento del lancio.
  • --start-profiler file: Avvia il profiler e invia i risultati a file.
  • -P file: Mi piace --start-profiler, ma la profilazione si interrompe quando l’app diventa inattiva.
  • -R count: Ripeti i count tempi di avvio delle attività . Prima di ogni ripetizione, l’attività principale sarà terminata.
  • -S: Forza ferma l’app di destinazione prima di iniziare l’attività.
  • --opengl-trace: Abilita la traccia delle funzioni OpenGL.
  • --user user_id | current: Specifica quale utente eseguire come; se non specificato, quindi eseguire come l’utente corrente.
startservice [optionsintent Avvia il Servicespecificato da intent.Le opzioni sono:

  • --user user_id | current: Specifica quale utente eseguire come; se non specificato, quindi eseguire come l’utente corrente.
force-stop package Forza l’interruzione di tutto ciò che è associato package(nome del pacchetto dell’app).
kill [optionspackage Elimina tutti i processi associati package (nome del pacchetto dell’app). Questo comando uccide solo i processi che possono essere uccisi in sicurezza e che non influiscono sull’esperienza dell’utente.Le opzioni sono:

  • --user user_id | all | current: Specifica l’utente di cui uccidere i processi; tutti gli utenti se non specificato.
kill-all Uccidi tutti i processi in background.
broadcast [optionsintent Emetti un intento di trasmissione.

Le opzioni sono:

  • [--user user_id | all | current]: Specifica a quale utente inviare; se non specificato, inviare a tutti gli utenti.
instrument [optionscomponent Inizia il monitoraggio con Instrumentationun’istanza. In genere l’obiettivocomponent è la forma . test_package/runner_classLe opzioni sono:

  • -r: Stampa risultati grezzi (altrimenti decodificatireport_key_streamresult). Utilizzare con [-e perf true]per generare output non elaborati per le misurazioni delle prestazioni.
  • -e name value: Imposta argomento name a value. Per i corridori di prova è una forma comune . -e testrunner_flag value[,value...]
  • -p file: Scrivi dati di profilo su file.
  • -w: Attendi che la strumentazione finisca prima di tornare. Richiesto per i corridori di prova.
  • --no-window-animation: Disattiva le animazioni delle finestre durante l’esecuzione.
  • --user user_id | current: Specifica quale strumentazione utente esegue; utente corrente se non specificato.
profile start process file Avvia il profiler process, scrivi i risultati su file.
profile stop process Interrompi il profiler process.
dumpheap [optionsprocess file Scarica il mucchio di process, scrivi a file.Le opzioni sono:

  • --user [user_id | current]: Quando si fornisce un nome di processo, specificare l’utente del processo da eseguire; usa l’utente corrente se non specificato.
  • -n: Scarica l’heap nativo anziché l’heap gestito.
set-debug-app [optionspackage Imposta l’app packageper 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 il monitoraggio per arresti anomali o ANR.Le opzioni sono:

  • --gdb: Avvia gdbserv sulla porta specificata in crash / ANR.
screen-compat {on | off}package Controlla la modalità di compatibilità dello schermo di package.
display-size [reset |widthxheight] Ignora le dimensioni di visualizzazione del dispositivo. Questo comando è utile per testare la tua app su diverse dimensioni dello schermo imitando una risoluzione dello schermo piccola usando un dispositivo con uno schermo grande e viceversa.Esempio:
am display-size 1280x800
display-density dpi Ignora la densità del display del dispositivo. Questo comando è utile per testare l’app su diverse densità dello schermo su un ambiente con schermo ad alta densità utilizzando uno schermo a bassa densità e viceversa.Esempio:
am display-density 480
to-uri intent Stampa la specifica di intento specificata come un URI.
to-intent-uri intent Stampa la specifica di intento specificata come un intent:URI.

Specifica per argomenti di intent

Per i comandi del gestore attività che accettano un intentargomento, è possibile specificare l’intento con le seguenti opzioni:

Chiama gestore pacchetti ( pm)

All’interno di una shell adb, puoi impartire comandi con lo strumento package manager ( pm) per eseguire azioni e query sui pacchetti di app installati sul dispositivo. In una shell, la sintassi è:

pm command

Puoi anche inviare un comando gestore pacchetti direttamente da adb senza inserire una shell remota. Per esempio:

adb shell pm uninstall com.example.MyApp
Come usare i comandi ADB e fastboot su Android: Tabella 3 – Comandi di gestione pacchetti disponibili
filter Stampa tutti i pacchetti, opzionalmente solo quelli il cui nome del pacchetto contiene il testo filter.Opzioni:

  • -f: Guarda il loro file associato.
  • -d: Filtra per mostrare solo i pacchetti disabilitati.
  • -e: Filtra per mostrare solo i pacchetti abilitati.
  • -s: Filtra per mostrare solo i pacchetti di sistema.
  • -3: Filtra per mostrare solo pacchetti di terze parti.
  • -i: Vedi l’installer per i pacchetti.
  • -u: Include anche pacchetti disinstallati.
  • --user user_id: Lo spazio utente da interrogare.
list permission-groups Stampa tutti i gruppi di autorizzazioni noti.
list permissions [optionsgroup Stampa tutte le autorizzazioni conosciute, opzionalmente solo quelle in group.Opzioni:

  • -g: Organizza per gruppo.
  • -f: Stampa tutte le informazioni.
  • -s: Breve riassunto.
  • -d: Elenca solo le autorizzazioni pericolose.
  • -u: Elenca solo le autorizzazioni che gli utenti vedranno.
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 corrente.
list users Stampa tutti gli utenti sul sistema.
path package Stampa il percorso per l’APK del dato package.
install [optionspath Installa un pacchetto (specificato da path) nel sistema.Opzioni:

  • -l: Installare la confezione con il blocco in avanti.
  • -r: Reinstallazione di un’app esistente, mantenendo i suoi dati.
  • -t: Consente di installare gli APK di test. Gradle genera un APK di test quando hai eseguito o eseguito il debug della tua app o hai utilizzato il comando Android Studio Build> Build APK . Se l’APK viene creato utilizzando un SDK di anteprima per sviluppatori (se si targetSdkVersiontratta di una lettera anziché di un numero), è necessario includere l’ -topzione con il installcomando se si sta installando un APK di test.
  • -i installer_package_name: Specificare il nome del pacchetto di installazione.
  • -s: Installa il pacchetto sulla memoria di massa condivisa (come la sdcard).
  • -f: Installa pacchetto nella memoria di sistema interna.
  • -d: Consentire il downgrade del codice versione.
  • -g: Concedi tutte le autorizzazioni elencate nel manifest dell’app.
uninstall [optionspackage Rimuove un pacchetto dal sistema.Opzioni:

  • -k: Conserva le directory dei dati e della cache dopo la rimozione del pacchetto.
clear package Elimina tutti i dati associati a un pacchetto.
enable package_or_component Abilita il pacchetto o componente indicato (scritto come “pacchetto / classe”).
disable package_or_component Disabilitare il pacchetto o componente indicato (scritto come “pacchetto / classe”).
disable-user [optionspackage_or_component Opzioni:

  • --user user_id: L’utente da disabilitare.
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 manifest dell’app.Sui dispositivi con Android 5.1 (livello API 22) e versioni precedenti, deve essere un’autorizzazione opzionale 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 manifest dell’app.Sui dispositivi con Android 5.1 (livello API 22) e versioni precedenti, deve essere un’autorizzazione opzionale definita dall’app.
set-install-location location Cambia il percorso di installazione predefinito. Valori di posizione:

  • 0: Auto: consente al sistema di decidere la posizione migliore.
  • 1: Interno: installazione sull’archiviazione del dispositivo interno.
  • 2: Esterno: su supporto esterno.

Nota: è inteso solo per il debug; l’utilizzo di questo può causare rotture di app e altri comportamenti indesiderati.

get-install-location Restituisce il percorso di installazione corrente. Valori di ritorno:

  • 0 [auto]: Consente al sistema di decidere la posizione migliore
  • 1 [internal]: Installa sulla memoria interna del dispositivo
  • 2 [external]: Installa su supporti esterni
set-permission-enforced permission [true |false] Specifica se l’autorizzazione data deve essere applicata.
trim-caches desired_free_space Taglia i file della cache per raggiungere lo spazio disponibile.
create-user user_name Crea un nuovo utente con il dato user_name, stampando il nuovo identificativo utente dell’utente.
remove-user user_id Rimuovi l’utente con il dato user_id, cancellando tutti i dati associati a quell’utente
get-max-users Stampa il numero massimo di utenti supportati dal dispositivo.

Chiama gestore criteri dispositivo ( dpm)

Per aiutarti a sviluppare e testare le tue app di gestione dei dispositivi (o di altre aziende), puoi impartire i comandi allo strumento Device Policy Manager ( dpm). Utilizzare lo strumento per controllare l’app di amministrazione attiva o modificare i dati di stato di una politica sul dispositivo. In una shell, la sintassi è:

dpm command

Puoi anche inviare un comando di gestione dei criteri della periferica direttamente da adb senza inserire una shell remota:

adb shell dpm command
Come usare i comandi ADB e fastboot su Android: Tabella 4 – Comandi di gestione dei criteri dispositivo disponibili
Comando Descrizione
set-active-admin [optionscomponent Imposta il componente come amministratore attivo.Le opzioni sono:

  • --user user_id: Specificare l’utente di destinazione. Puoi anche passare --user currentper selezionare l’utente corrente.
set-profile-owner [optionscomponent Imposta il componente come amministratore attivo e il suo pacchetto come proprietario del profilo per un utente esistente.Le opzioni sono:

  • --user user_id: Specificare l’utente di destinazione. Puoi anche passare --user currentper selezionare l’utente corrente.
  • --name name: Specificare il nome dell’organizzazione leggibile dall’uomo.
set-device-owner [optionscomponent Imposta il componente come amministratore attivo e il suo pacchetto come proprietario del dispositivo.Le opzioni sono:

  • --user user_id: Specificare l’utente di destinazione. Puoi anche passare --user currentper selezionare l’utente corrente.
  • --name name: Specificare il nome dell’organizzazione leggibile dall’uomo.
remove-active-admin [optionscomponent Disattiva un amministratore attivo. L’app deve dichiarare android:testOnly nel manifest.Questo comando rimuove anche i proprietari di dispositivi e profili.Le opzioni sono:

  • --user user_id: Specificare l’utente di destinazione. Puoi anche passare --user currentper selezionare l’utente corrente.

Fare uno screenshot. Il comando screencap è un’utilità di shell per l’acquisizione di uno screenshot del display di un dispositivo. In una shell, la sintassi è:

screencap filename

Per utilizzare il comando screencapda dalla riga di comando, digita quanto segue:

adb shell screencap / sdcard / screen . png

Ecco una sessione di screenshot di esempio, che utilizza la shell di adb per acquisire lo screenshot e ilpullcomando per scaricare il file dal dispositivo:

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

Per registrare un video. Il comando screenrecord è un’utilità shell per registrare la visualizzazione di dispositivi con Android 4.4 (livello API 19) e versioni successive. L’utilità registra l’attività dello schermo su un file MPEG-4. È possibile utilizzare questo file per creare video promozionali o di formazione o per il debug e il test.

In una shell, utilizzare la seguente sintassi:

screenrecord [options] filename

Per utilizzare screenrecorddalla riga di comando, digitare quanto segue:

adb shell screenrecord /sdcard/demo.mp4

Interrompi la registrazione dello schermo premendo Control + C (Command + C su Mac); in caso contrario, la registrazione si interrompe automaticamente a tre minuti o al limite di tempo impostato da --time-limit. Per iniziare a registrare lo schermo del dispositivo, eseguire il screenrecordcomando per registrare il video. Quindi, eseguire il pullcomando 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’utility screenrecord può registrare in qualsiasi risoluzione e bit rate supportati, pur mantenendo le proporzioni del display del dispositivo. L’utility registra la risoluzione e l’orientamento nativi dello schermo per impostazione predefinita, con una lunghezza massima di tre minuti.

Limitazioni di screenrecord:

  • L’audio non è registrato con il file video.
  • La registrazione video non è disponibile per i dispositivi con sistema operativo Wear.
  • Alcuni dispositivi potrebbero non essere in grado di registrare con la risoluzione di visualizzazione nativa. Se si verificano 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 la registrazione, parte della schermata viene tagliata durante la registrazione.
Come usare i comandi ADB e fastboot su Android: Tabella 5 – Opzioni screenrecord
Opzioni Descrizione
--help Visualizza la sintassi e le opzioni del comando
--size widthxheight Imposta le dimensioni del video: 1280x720. Il valore predefinito è la risoluzione di visualizzazione nativa del dispositivo (se supportato), 1280×720 in caso contrario. Per risultati ottimali, utilizza una dimensione supportata dal codificatore AVC (Advanced Video Coding) del tuo dispositivo.
--bit-rate rate Imposta la velocità in bit del video per il video, in megabit al secondo. Il valore predefinito è 4Mbps.È possibile aumentare la velocità in bit per migliorare la qualità del video, ma in questo modo si ottengono file di film più grandi. L’esempio seguente imposta il bit rate di registrazione su 6Mbps:

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’uscita di 90 gradi. Questa funzionalità è sperimentale.
--verbose Visualizza le informazioni del registro sullo schermo della riga di comando. Se non si imposta questa opzione, l’utility non visualizza alcuna informazione durante l’esecuzione.

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, utilizzate per ottimizzare le prestazioni dell’app. È possibile esaminare i profili raccolti per capire quali metodi sono determinati per essere eseguiti frequentemente e quali classi vengono utilizzate durante l’avvio dell’app.

Per produrre un modulo di testo delle informazioni del profilo, utilizzare il comando:

adb shell cmd package dump-profiles package
Per recuperare il file prodotto, utilizzare:
adb pull /data/misc/profman/package.txt

Altri comandi shell

Per un elenco di tutti i programmi di shell disponibili, utilizzare il seguente comando:

adb shell ls /system/bin

La guida è disponibile per la maggior parte dei comandi.

La tabella seguente elenca alcuni dei comandi di shell adb più comuni.

Come usare i comandi ADB e fastboot su Android: Tabella 6 – Altri comandi della shell adb
Comando shell Descrizione
dumpsys Scarica i dati di sistema sullo schermo.
dumpstate Esegue il dump dello stato su un file.
logcat [option]...  [filter-spec]... Abilita la registrazione di sistema e app e stampa l’output sullo schermo.
dmesg Stampa i messaggi di debug del kernel sullo schermo.
start Avvia (riavvia) un dispositivo.
stop Interrompe l’esecuzione di un dispositivo.
sqlite3 Avvia il sqlite3programma della riga di comando.Lo sqlite3strumento include comandi come .dumpstampa il contenuto di una tabella e.schemastampa l’istruzione SQL CREATE per una tabella esistente. È anche possibile eseguire comandi SQLite al volo.

I database SQLite3 sono memorizzati nella cartella ./data/data/package_name/databases/

Per esempio:

$ adb -s emulator-5554 shell 
$ sqlite3 /data/data/com.example.app/databases/rssitems.db 
Versione SQLite 3.3.12 
Immettere ".help" per istruzioni

Abbiamo quindi visto come usare i comandi ADB e Fastboot su Android, tutti i comandi sono stati recuperati dalla fonte ufficiale developer.android.com e per qualche problema di comprensione causato dalla traduzione del testo trovato nella guida o per leggere tutte le descrizioni dei comandi in lingua originale, ti rimando alla lettura della FONTE.


Link Sponsorizzati