C'è molto nell'Android Debug Bridge di cui potresti non essere a conoscenza. Clicca qui per alcuni suggerimenti e trucchi utili per l'utilizzo di ADB!
Link veloci
- Accesso alla shell
- Connessione a più dispositivi
- Trasferimento di file
- Registrazione
- Elenco delle app installate tramite ADB
- Installazione e disinstallazione di app tramite ADB
- Estrazione degli APK con ADB
- Backup e ripristino dei dati dell'applicazione
- Elenco dei componenti dell'app
- Lancio di attività, servizi e ricevitori di trasmissione
- Disabilitare e abilitare quasi tutte le app
- Catturare screenshot
- Trasferimento di dati binari tra il PC e il dispositivo Android
Se sei stato un appassionato di Android in agguato nella scena del modding o uno sviluppatore di app per un certo periodo di tempo volta, prima o poi, ti imbatterai in uno strumento utile chiamato Android Debug Bridge, o ADB corto. È ampiamente utilizzato in Android Studio come utilità complementare della riga di comando. Gli sviluppatori Android lo utilizzano anche come soluzione autonoma su cui installare e testare manualmente le app
Smartphone Android così come i dispositivi Android emulati.Ma ADB può fare molto e la maggior parte di esso non è utile solo agli sviluppatori. Anche se non sei uno sviluppatore e stai leggendo questo articolo, ci sono buone probabilità che tu abbia utilizzato ADB una o due volte per caricare lateralmente un'app o modificare un'autorizzazione. Ma non è tutto ciò per cui ADB può essere utilizzato. Continua a leggere per alcuni suggerimenti e trucchi per l'utilizzo di ADB di cui potresti non essere a conoscenza.
Avrai bisogno di ADB attivo e funzionante sul tuo computer. Assicurati di controllare il nostro articolo su come installare ADB se hai bisogno d'aiuto. Se utilizzi Windows, è necessario farlo anche tu installare i driver USB OEM appropriati per il tuo dispositivo Android.
Accesso alla shell
Se hai già utilizzato ADB, potresti essere abituato a eseguire i comandi tutti su un'unica riga. Ma puoi anche utilizzare ADB per aprire una shell terminale sul tuo dispositivo ed eseguire direttamente i comandi. Ed è facile!
Nel terminale o nella finestra del prompt dei comandi:
adb shell
Verrai quindi accolto con un $
simbolo dove puoi eseguire comandi direttamente sul tuo dispositivo.
Connessione a più dispositivi
ADB può comunicare con più dispositivi contemporaneamente. Tuttavia, è necessario specificare il dispositivo di destinazione quando si immettono comandi ADB in tali scenari.
Per fare ciò, dovrai conoscere il numero di serie del dispositivo di destinazione. Puoi ottenere il seriale usando il comando devices:
adb devices
Ora usa il -s
opzione per specificare il numero di serie del dispositivo di destinazione. Esempio:
adb -s <serialnumber> shell
Trasferimento di file
Per gli appassionati della riga di comando, ADB offre un modo molto semplice per trasferire file da e verso il tuo dispositivo Android. Basta usare il pull
comando per copiare file e directory dal dispositivo e dal file push
comando per copiare file e directory sul dispositivo:
Se desideri copiare un file o una directory con le sue sottodirectory sul dispositivo Android:
adb push local_path device_path
- Esempio:
adb push D:\image.png /sdcard
Il seguente comando copierà un file o una directory con le sue sottodirectory dal dispositivo Android al PC host:
adb pull device_path local_path
- Esempio:
adb pull /sdcard/backup_April.tar D:\Backup
Registrazione
Android Studio fornisce il Finestra Logcat, che supporta la visualizzazione dei registri dal tuo dispositivo in tempo reale. Tuttavia, non è esattamente utile per l'elaborazione batch. Fortunatamente, i dispositivi Android vengono forniti con il comando logcat disponibile tramite ADB, che può essere utilizzato per scaricare messaggi di registro di sistema e applicazioni e stamparli sullo schermo.
La sintassi di base è la seguente:
adb logcat
Per saperne di più, dai un'occhiata al nostro tutorial su come prendere logcat di sistema, log del kernel e dmesg su Android.
uova di Pasqua
Google offre due eleganti uova di Pasqua relative al comando logcat.
- Il primo è lolcat, un cenno al Meme LOLcat. Fornisce lo stesso output del normale comando logcat.
adb lolcat
- Il secondo è longcat, che equivale al comando logcat -v long. Visualizza tutti i campi dei metadati e separa i messaggi con una riga vuota.
adb longcat
Elenco delle app installate tramite ADB
Per vedere le app installate sul tuo dispositivo, puoi utilizzare il seguente comando:
adb shell pm list packages
Ciò restituirà un elenco dei nomi dei pacchetti delle app installate, ciascuno con la propria riga anteposta package:
.
Opzioni
Sono inoltre disponibili alcune opzioni che è possibile utilizzare per recuperare elenchi più specifici.
- -F includerà il percorso dell'APK di base per ciascuna app, insieme al nome del pacchetto.
- -UN si assicurerà che tutti i pacchetti non APEX conosciuti vengano restituiti.
- -D farà sì che il comando restituisca solo i pacchetti disabilitati.
- -e farà sì che il comando restituisca solo i pacchetti abilitati.
- -S farà sì che il comando restituisca solo i pacchetti di sistema.
- -3 farà sì che il comando restituisca solo pacchetti di terze parti.
- -io includerà il nome del pacchetto di installazione per ciascun pacchetto.
- -U includerà l'UID del pacchetto per ciascun pacchetto.
- -u includerà i pacchetti disinstallati.
- --mostra-codiceversione includerà il codice di versione per ciascun pacchetto.
- --apice-solo restituirà solo pacchi APEX.
- --uido mostrerà solo i pacchetti con l'UID specificato.
- --utente mostrerà solo i pacchetti appartenenti all'ID utente specificato.
Installazione e disinstallazione di app tramite ADB
Questo è un uso relativamente comune di ADB, ma vale comunque la pena menzionarlo. Tra gli altri modi, puoi anche utilizzare ADB per installare e disinstallare app Android al tuo dispositivo Android.
Installazione di un APK
Se hai un APK sul tuo computer, puoi installarlo sul tuo dispositivo con quanto segue:
adbinstall-rsomeapk.apk
Ricordarsi di sostituire someapk.apk
con il percorso completo dell'APK che desideri installare.
Opzioni
Esistono numerose opzioni per installare gli APK tramite ADB.
- IL -R l'opzione consente l'installazione di ADB su un'app esistente (ad esempio l'aggiornamento). Su Android Pie e versioni successive non è necessario specificare questa opzione.
- IL -R opzione, per Android Pie e versioni successive l'installazione non riuscirà se l'app è già installata.
- IL -io l'opzione consente di specificare il nome di un pacchetto di installazione. Questo è ciò che viene restituito se Android vuole sapere cosa ha installato l'APK.
- IL -T l'opzione consente un APK con Android: testOnly="true" nel suo manifest da installare.
- IL -D l'opzione consente all'APK specificato di eseguire il downgrade a un'app già installata. Funziona solo se è possibile eseguire il debug di entrambe le versioni dell'app.
- IL -G L'opzione per Android Marshmallow e versioni successive concede automaticamente tutte le autorizzazioni di runtime all'app installata.
Non sono tutti. Se desideri un elenco completo, puoi consultare la documentazione integrata.
APK e bundle multipli
Se hai molti APK che desideri installare contemporaneamente, da più app o perché stai installando un bundle di app, puoi utilizzare ADB install-multiple
E install-multi-package
caratteristiche.
Se tutti i tuoi APK riguardano un'app, utilizza install-multiple
:
adbinstall-multipleapk1.apkapk2.apk ...
Altrimenti, usa install-multi-package
:
adbinstall-multi-packageapp1.apkapp2.apk ...
Le opzioni per questi comandi sono simili a install
, ma con alcune limitazioni. Controlla la documentazione integrata di ADB per quali opzioni sono disponibili.
Disinstallazione di un'app
Per disinstallare utilizzando ADB, avrai bisogno del nome del pacchetto dell'app che desideri disinstallare. Consulta la sezione per Elenco delle app installate se non l'hai già fatto.
Una volta ottenuto il nome del pacchetto, la disinstallazione è semplice come:
adb uninstall <packagename>
In genere non è possibile disinstallare il sistema o le app preinstallate utilizzando questo comando. Tuttavia, potresti essere in grado di disabilitarli con ADB. Consulta la sezione Disabilitare e abilitare quasi tutte le app per dettagli.
Estrazione degli APK con ADB
Esistono molti motivi per cui potresti voler estrarre gli APK per un'app. Forse vuoi eseguirne il backup per un utilizzo futuro, o forse non è più disponibile online e desideri trasferirlo su un dispositivo diverso.
Estrarre un'app utilizzando ADB è piuttosto semplice. Innanzitutto, ti consigliamo di trovare il nome del pacchetto dell'app che desideri estrarre. Esistono diversi modi per farlo, ma il più semplice è in genere utilizzare l'app Impostazioni del dispositivo per visualizzare i file elenco di tutte le app installate, seleziona quella desiderata e scorri verso il basso fino a trovare il nome del pacchetto o dell'app ID.
Una volta ottenuto il nome del pacchetto, esegui il comando seguente:
adb shell pm path <packagename>
Questo comando restituirà il percorso di tutti gli APK per quel nome di pacchetto.
Puoi quindi utilizzare il comando seguente per eseguire il pull di ciascun APK sul tuo computer:
adb pull /path/to/apk.apk
Backup e ripristino dei dati dell'applicazione
Sebbene Google non abbia ancora messo a punto una metodologia di backup con un clic in stile iOS, puoi utilizzare ADB per eseguire il backup e ripristinare le app installate insieme ai relativi dati. Tuttavia, la funzionalità è lungi dall'essere perfetta e Google lo ha già fatto ha contrassegnato la funzionalità come deprecata.
Backup
Per eseguire il backup di una singola applicazione, con il suo APK:
adb backup -apk <packagename> -f package_name_backup.ab
Nel caso in cui desideri eseguire il backup di tutti i dati dell'app contemporaneamente:
adb backup -f all -all -apk -nosystem
Poiché il modulo di ripristino non può eseguire ripristini specifici delle singole app, è meglio creare backup specifici del pacchetto. Il seguente frammento di comando (compatibile con Linux/macOS e sottosistema Windows per Linux) può farlo per te:
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
Ristabilire
Per prima cosa devi installare l'APK salvato;
adb install <packagename>.apk
Quindi puoi ripristinare i suoi dati:
adbrestorepackage_name_backup.ab
Per ribadire, le funzionalità di backup e ripristino di ADB presentano molteplici avvertenze, inclusi risultati variabili a seconda della ROM
Elenco dei componenti dell'app
I componenti di un'app sono cose come le sue attività, BroadcastReceivers, Servizi e così via. A volte è utile conoscere i nomi di questi componenti in un'app specifica, soprattutto se desideri avviare attività nascoste o inviare una trasmissione con dati specifici.
Sfortunatamente, ADB non ha un modo molto pulito di elencare i componenti di un'app. Ma è possibile. Esegui il seguente comando:
adb shell dumpsys package
Verrà restituito un intero gruppo di testo.
- Scorri fino a trovare il Tabella del risolutore di attività titolo per vedere le attività.
- Guarda sotto Tabella risolutore del ricevitore per ricevitori broadcast.
- Controlla il Tabella del risolutore del servizio per i Servizi.
- E così via.
Ogni componente mostrerà l'azione necessaria per avviarlo, il nome del componente ed eventualmente alcune informazioni aggiuntive.
In alternativa, se desideri un modo più semplice per visualizzare attività, servizi e ricevitori, puoi utilizzare l'app Root Activity Launcher di XDA Recognized Developer Zacharee1. Ti mostrerà quei componenti per ciascuna app, insieme a una serie di altre utili funzionalità.
Prezzo: 0,99.
Lancio di attività, servizi e ricevitori di trasmissione
ADB può essere utilizzato anche per avviare attività, avviare servizi e inviare notifiche a BroadcastReceivers. Se necessario, puoi anche specificare URI di dati ed extra di intenti.
Per avviare i componenti, avrai bisogno del nome del componente di ciò che desideri avviare. Puoi vedere come ottenerlo da Elenco dei componenti dell'app sezione.
La sintassi del comando per avviare un'attività è simile alla seguente:
am start -a <action> -n <component>
La sintassi del comando per avviare un servizio è simile alla seguente:
am startservice -a <action> -n <component>
La sintassi del comando per notificare un BroadcastReceiver è qualcosa del genere:
am broadcast -a <action> -n <component>
Nella maggior parte dei casi, per Attività e Servizi, non è necessario specificare un'azione in modo esplicito. Di solito ne avrai bisogno solo se il componente ne utilizza uno diverso da android.intent.action. PRINCIPALE.
Oltre alla sintassi di base, ecco come specificare più dati da passare. In generale, tutti i valori dei dati devono essere racchiusi tra virgolette doppie.
- -D consente di specificare un URI di dati.
- -e O --es ti permette di specificare una String extra.
- --es consente di specificare una stringa nulla extra.
- --ez viene utilizzato per specificare un extra booleano.
- --ei viene utilizzato per specificare un numero intero extra.
- --el serve per specificare un extra lungo.
- --ef passerà un float extra.
- --Unione Europea passa un URI extra.
- --ecn può essere utilizzato per specificare un nome componente extra.
-
--eia
passerà i valori come Integer[] extra., ,... -
--eial
passerà i valori come un elenco, ,... . - Gli stessi argomenti di array e lista funzionano anche per long, float e String. Basta sostituire il io con la lettera appropriata.
- -F consente di specificare un flag.
Ci sono ancora più opzioni di comportamento che puoi utilizzare, quindi controlla la documentazione integrata per i dettagli.
Disabilitare e abilitare quasi tutte le app
Le app di sistema in Android non possono essere disinstallate e, sfortunatamente, molte di esse non possono essere disabilitate tramite Impostazioni. Anche se ADB non ti consentirà di disinstallarli, potrebbe aiutarti a disabilitarli.
Innanzitutto, assicurati di ottenere il nome del pacchetto dell'app che desideri disabilitare. Quindi, prova questi comandi. Se uno fallisce, prova l'opzione successiva.
-
pm disabilita
- Per riattivare, utilizzare PM abilita
-
pm disattiva-utente --utente 0
- Per riattivare, utilizzare PM abilita
-
nasconditi
- Per riattivare, utilizzare pm scopri
-
pm sospendere
- Per riattivare, utilizzare pm annullare la sospensione
-
pm disinstalla -k --user 0
- Per riattivare, utilizzare pm installa-esistente
- Questo disinstalla efficacemente l'applicazione dal tuo profilo utente. Mentre il comando per riattivare Dovrebbe lavoro, non c'è alcuna garanzia che lo farà. Potrebbe essere necessario ripristinare le impostazioni di fabbrica per ripristinare l'app.
- Se utilizzi più profili utente sul tuo dispositivo, assicurati di sostituire 0 nei comandi sopra con l'ID utente effettivo che possiedi.
- Per riattivare, utilizzare pm installa-esistente
Per saperne di più, consulta il nostro tutorial su come disinstallare il gestore telefonico e il bloatware OEM senza accesso root.
Catturare screenshot
La maggior parte delle ROM Android offre due comode utilità di shell - screencap e screenrecord - rispettivamente per acquisire screenshot e registrare attività sullo schermo. Puoi chiamarli direttamente dalla shell ADB per acquisire uno screenshot statico o un frammento video dello schermo del tuo telefono e salvarlo direttamente nella memoria interna del dispositivo.
La sintassi per acquisire uno screenshot è piuttosto semplice:
adb shell screencap /sdcard/screenshot.png
Allo stesso modo, se hai bisogno di acquisire uno screengrab dinamico, procedi come segue:
adb shell screenrecord /sdcard/recording.mp4
Come ci si potrebbe aspettare, lo strumento screencap è piuttosto semplice, mentre l'utilità screenrecord offre diversi parametri. Le opzioni per quest'ultimo sono le seguenti:
-
--dimensione LARGHEZZAxALTEZZA
- Imposta la risoluzione del file video (ad esempio "1280x720"). Per impostazione predefinita, tenta di adottare la risoluzione del display principale del dispositivo di destinazione (se supportata) e in caso contrario torna a 1280x720.
-
--Bit-rate RATE
- Imposta il bitrate del video, in bit al secondo. Il valore può essere specificato in bit o megabit, ad es. '4000000' equivale a '4M'.
-
--riportare un errore
- Puoi aggiungere ulteriori informazioni, come una sovrapposizione di timestamp, che può essere utile per illustrare i bug.
-
--limite temporale TEMPO
- Imposta il tempo massimo di registrazione, in secondi. Il valore predefinito/massimo è 180.
-
--ID display-id
- Specificare l'ID del display fisico da registrare. Quello predefinito è impostato sul display principale. Vedi "dumpsys SurfaceFlinger --display-id" per gli ID di visualizzazione validi.
-
--verboso
- Visualizza informazioni approfondite riguardanti la sessione di registrazione.
Puoi estendere ulteriormente le funzionalità delle utilità di acquisizione dello schermo integrate di Android tramite scrcpy. È una soluzione di mirroring dello schermo open source, che sfrutta la potenza di ADB.
Trasferimento di dati binari tra il PC e il dispositivo Android
Nel caso in cui non desideri generare una shell ADB completa, ma desideri incorporare un passthrough semplificato di dati binari tra il PC host e il dispositivo Android di destinazione, puoi utilizzare il exec-in
E exec-out
comandi.
Nonostante il loro esistenza prolungata, i comandi exec-in ed exec-out non sono ancora documentati. Potrebbero portare alla corruzione dei file a causa del modo in cui le diverse shell gestiscono input e output. Usare con cautela.
Il primo ti aiuta a eseguire un comando su Android e ad alimentare l'input della console non filtrato come parametro, mentre il il secondo fa esattamente l'opposto, ovvero esegue un comando su Android e ne acquisisce l'output binario non filtrato dal sistema operativo host.
Esempio:
adb exec-out "screencap -p" > "D:\screenshot.png"
Questo utilizzerà il screencap
comando di Android per catturare uno screenshot del display del telefono, ma lo salva direttamente come screenshot.png nella partizione D: del PC host (a condizione che sia in esecuzione Windows). D'altra parte,
adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"
Ciò estrarrà il contenuto del file backup.tar archiviato nella partizione D: del PC host (con Windows) nella radice della memoria interna del dispositivo Android.
ADB è uno strumento incredibilmente potente e può fare molto di più di quanto sopra. I comandi in questo articolo sono solo un utile punto di partenza. Per un utilizzo più avanzato, controlla comandi come cmd -l per vedere i diversi servizi con cui potresti interagire e ls -l /sistema/bin per vedere i diversi eseguibili dei comandi disponibili nella ROM Android.
Per altri viaggi e tick Android, consulta le nostre guide su come eseguire il root del tuo smartphone Android, come installare la recovery TWRP, E come installare una ROM personalizzata sul tuo dispositivo Android.