Suggerimenti e trucchi ADB: comandi che ogni utente esperto dovrebbe conoscere

click fraud protection

C'è molto in Android Debug Bridge che potresti non sapere. Fai clic qui per alcuni suggerimenti e trucchi utili per l'utilizzo di ADB!

Link veloci

  • Accesso alla conchiglia
  • Connessione a più dispositivi
  • Trasferimento di file
  • Registrazione
  • Elenco delle app installate tramite ADB
  • Installazione e disinstallazione di app tramite ADB
  • Estrazione di APK con ADB
  • Backup e ripristino dei dati dell'applicazione
  • Elenco dei componenti dell'app
  • Attività di lancio, servizi e ricevitori di trasmissione
  • Disabilitare e abilitare quasi tutte le app
  • Acquisizione di schermate
  • 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 tempo, prima o poi, ti imbatterai in uno strumento accurato chiamato Android Debug Bridge, o ADB per corto. È ampiamente utilizzato in Android Studio come utility complementare della riga di comando. Gli sviluppatori Android lo usano anche come soluzione autonoma per installare e testare manualmente le app

Smartphone Android così come i dispositivi Android emulati.

Ma c'è molto che ADB può fare e la maggior parte non è utile solo per gli sviluppatori. Anche se non sei uno sviluppatore e stai leggendo questo articolo, ci sono buone probabilità che tu abbia usato ADB una o due volte per sideload di 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 che potresti non conoscere.

Dovrai avere ADB attivo e funzionante sul tuo computer. Assicurati di dare un'occhiata al nostro articolo su come installare ADB se hai bisogno d'aiuto. Se stai usando Windows, devi farlo anche tu installare i driver USB OEM appropriati per il tuo dispositivo Android.

Accesso alla conchiglia

Se hai già utilizzato ADB in precedenza, potresti essere abituato a eseguire comandi tutti in una riga. Ma puoi anche usare ADB per aprire una shell di terminale sul tuo dispositivo ed eseguire direttamente i comandi. Ed è facile!

Nel terminale o nella finestra del prompt dei comandi:

shell adb

Sarai quindi accolto con un $ simbolo dove puoi eseguire i 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 inviano 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:

dispositivi adb

Ora usa il -S opzione per specificare il numero di serie del dispositivo di destinazione. Esempio:

adb -s <serialenumero> conchiglia

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 tiro comando per copiare file e directory dal dispositivo e dal file spingere comando per copiare file e directory sul dispositivo:

Se desideri copiare un file o una directory con le relative sottodirectory sul dispositivo Android:

adb push percorso_locale percorso_dispositivo
  • Esempio: adb push D:\image.png /sdcard

Il seguente comando copierà un file o una directory con le relative sottodirectory dal dispositivo Android al PC host:

adb pull percorso_dispositivo percorso_locale
  • 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 in batch. Fortunatamente, i dispositivi Android vengono forniti con il comando logcat disponibile tramite ADB, che può essere utilizzato per scaricare i messaggi di registro del sistema e dell'applicazione e stamparli sullo schermo.

La sintassi di base è la seguente:

adblogcat

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 ingegnosi easter egg relativi al comando logcat.

  1. Il primo è lolcat, un cenno al Meme LOL gatto. Fornisce lo stesso output del normale comando logcat.
    adb lolcat
  2. Il secondo è longcat, che equivale al comando logcat -v long. Visualizza tutti i campi dei metadati e i messaggi separati con una riga vuota.
    adb gatto lungo

Elenco delle app installate tramite ADB

Per vedere le app installate sul tuo dispositivo, puoi utilizzare il seguente comando:

adb shell pm elenco Pacchetti

Ciò restituirà un elenco dei nomi dei pacchetti delle app installate, con ciascuno sulla propria riga preceduto da pacchetto:.

Opzioni

Ci sono anche alcune opzioni che puoi usare per recuperare elenchi più specifici.

  • -F includerà il percorso dell'APK di base per ogni app, insieme al nome del pacchetto.
  • -UN si assicurerà che vengano restituiti tutti i pacchetti non APEX noti.
  • -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.
  • --show-codice versione includerà il codice della versione per ogni pacchetto.
  • --solo apex restituirà solo pacchetti APEX.
  • --uid 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 to installare e disinstallare app Android sul tuo dispositivo Android.

Installazione di un APK

Se hai un APK sul tuo computer, puoi installarlo sul tuo dispositivo con quanto segue:

adbinstallare-Rsomeapk.apk

Ricordati di sostituire someapk.apk con il percorso completo dell'APK che desideri installare.

Opzioni

Ci sono un sacco di opzioni per l'installazione di APK tramite ADB.

  • IL -R L'opzione consente ad ADB di installarsi su un'app esistente (ad es. aggiornamento). Su Android Pie e versioni successive, non è necessario specificare questa opzione.
  • IL -R opzione, per Android Pie e versioni successive causerà l'esito negativo dell'installazione 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 opzione consente un APK con Android: testOnly="true" nel suo manifest da installare.
  • IL -D l'opzione consente all'APK specificato di essere un downgrade a un'app già installata. Funziona solo se è possibile eseguire il debug di entrambe le versioni dell'app.
  • IL -G 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.

Più APK e bundle

Se disponi di un gruppo di APK che desideri installare contemporaneamente, da più app o perché stai installando un pacchetto di app, puoi utilizzare ADB installazione multipla E install-multi-pacchetto caratteristiche.

Se tutti i tuoi APK sono per un'app, usa installazione multipla:

adbinstallazione multiplaapk1.apkapk2.apk ...

Altrimenti, usa install-multi-pacchetto:

adbinstall-multi-pacchettoapp1.apkapp2.apk ...

Le opzioni per questi comandi sono simili a installare, 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:

disinstallazione adb <nome del pacchetto>

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 di APK con ADB

Ci sono molti motivi per cui potresti voler estrarre gli APK per un'app. Forse vuoi eseguirne il backup per un uso futuro, o forse non è più disponibile online e vuoi trasferirlo su un altro dispositivo.

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 il file elenco di tutte le app installate, seleziona quella desiderata e scorri verso il basso fino a trovare il nome del pacchetto o l'app ID.

Una volta che hai il nome del pacchetto, esegui il seguente comando:

percorso pm della shell adb <nome del pacchetto>

Questo comando restituirà il percorso di tutti gli APK per quel nome di pacchetto.

Puoi quindi utilizzare il seguente comando per eseguire il pull di ogni APK sul tuo computer:

adb pull /path/to/apk.apk

Backup e ripristino dei dati dell'applicazione

Sebbene Google non abbia ancora ideato una metodologia di backup con un clic simile a iOS, puoi utilizzare ADB per eseguire il backup e ripristinare le app installate insieme ai loro dati. Tuttavia, la funzionalità è lungi dall'essere perfetta e Google lo ha già fatto ha contrassegnato la funzione come deprecata.

Backup

Per eseguire il backup di una singola applicazione, con il relativo APK:

adb backup -apk <pacchettonome> -f nome_pacchetto_backup.ab

Nel caso in cui desideri eseguire il backup di tutti i dati dell'app contemporaneamente:

adb backup -F Tutto -Tutto -apk -nosystem

Poiché il modulo di ripristino non può eseguire il ripristino specifico di una singola 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:

per APP In $(adb shell pm list packages -3)
Fare
APP=$( eco${APP} | sed "s/^pacchetto://")
backup adb -f ${APP}.backup ${APP}
Fatto

Ristabilire

Innanzitutto, devi installare l'APK salvato;

adb installare <pacchettonome>.apk

Quindi puoi ripristinare i suoi dati:

adbristabilirenome_pacchetto_backup.ab

Per ribadire, le funzionalità di backup e ripristino ADB hanno più avvertimenti, inclusi risultati variabili a seconda della ROM

Elenco dei componenti dell'app

I componenti di un'app sono cose come le sue attività, i ricevitori di trasmissione, i servizi e così via. A volte è utile conoscere i nomi di questi componenti in un'app specifica, soprattutto se si desidera 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 pacchetto

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 del risolutore del ricevitore per BroadcastReceiver.
  • Controlla il Tabella dei risolutori di servizio per 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 da XDA Recognized Developer Zacharee1. Ti mostrerà quei componenti per ogni app, insieme a una serie di altre utili funzionalità.

Avvio attività rootSviluppatore: Zachary Wander

Prezzo: 0,99.

Scaricamento

Attività di lancio, servizi e ricevitori di trasmissione

ADB può anche essere utilizzato per avviare attività, avviare servizi e inviare notifiche a BroadcastReceivers. Puoi anche specificare gli URI dei dati e gli extra di intenti, se necessario.

Per avviare i componenti, avrai bisogno del nome del componente di ciò che desideri avviare. Puoi vedere come ottenerlo dal file Elenco dei componenti dell'app sezione.

La sintassi del comando per l'avvio di un'attività è qualcosa del genere:

sono inizio -a <azione> -N <componente>

La sintassi del comando per l'avvio di un servizio è simile a questa:

sono startservice -a <azione> -N <componente>

La sintassi del comando per notificare un BroadcastReceiver è qualcosa del genere:

sono trasmesso -a <azione> -N <componente>

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 usa uno diverso da android.intent.azione. PRINCIPALE.

Oltre alla sintassi di base, ecco come specificare più dati da trasmettere. In generale, tutti i valori dei dati devono essere racchiusi tra virgolette.

  • -D consente di specificare un URI di dati.
  • -e O --es consente di specificare una stringa extra.
  • --esn consente di specificare una stringa aggiuntiva null.
  • --ez è usato per specificare un extra booleano.
  • --ei è usato per specificare un intero extra.
  • --el è per specificare un lungo extra.
  • --ef passerà un float extra.
  • --Unione Europea passa un URI extra.
  • --ecn può essere utilizzato per specificare un nome di componente extra.
  • --eia ,,... passerà i valori come extra Integer[].
  • --eial ,,... passerà i valori come una lista.
  • Gli stessi argomenti di array e list funzionano anche per long, float e stringhe. Basta sostituire il io con apposita lettera.
  • -F consente di specificare un flag.

Ci sono ancora più opzioni di comportamento che puoi usare, quindi dai un'occhiata alla 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. Sebbene ADB non ti permetta 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.

  • disabilitare pm
    • Per riattivare, utilizzare abilitazione pm
  • pm disabilita-utente --utente 0
    • Per riattivare, utilizzare abilitazione pm
  • nasconditi
    • Per riattivare, utilizzare scopri
  • pm sospendere
    • Per riattivare, utilizzare pm riattivare
  • pm uninstall -k --user 0
    • Per riattivare, utilizzare pm installazione esistente
      • Questo disinstalla efficacemente l'applicazione dal tuo profilo utente. Mentre il comando per riattivare Dovrebbe funzionerà, non c'è alcuna garanzia che lo farà. Potrebbe essere necessario ripristinare le impostazioni di fabbrica per ripristinare l'app.
      • Se stai utilizzando più profili utente sul tuo dispositivo, assicurati di sostituire 0 nei comandi precedenti con l'ID utente effettivo che possiedi.

Per saperne di più, dai un'occhiata al nostro tutorial su come disinstallare carrier e bloatware OEM senza accesso root.

Acquisizione di schermate

La maggior parte delle ROM Android offre due utili utility shell - screencap e screenrecord - rispettivamente per acquisire schermate e registrare le attività sullo schermo. Puoi chiamarli direttamente dalla shell ADB per acquisire uno screenshot statico o uno snippet video dello schermo del tuo telefono e salvarlo direttamente nella memoria interna del dispositivo.

La sintassi per catturare uno screenshot è piuttosto semplice:

adb shell screencap /sdcard/screenshot.png

Allo stesso modo, se devi 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:

  • --size LARGHEZZA x ALTEZZA
    • Impostare la risoluzione del file video (ad es. "1280x720"). Per impostazione predefinita, tenta di utilizzare la risoluzione del display principale del dispositivo di destinazione (se supportata) e in caso contrario torna a 1280x720.
  • --bit-rate TASSO
    • 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 di tempo TEMPO
    • Impostare il tempo massimo di registrazione, in secondi. Il valore predefinito/massimo è 180.
  • --display-id ID
    • Specificare l'ID del display fisico da registrare. Quello predefinito è impostato sul display principale. Vedere "dumpsys SurfaceFlinger --display-id" per gli ID display validi.
  • --prolisso
    • Visualizza informazioni approfondite sulla 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 utilizza la potenza di ADB.

Trasferimento di dati binari tra il PC e il dispositivo Android

Nel caso in cui non si desideri generare una shell ADB completa, ma si desidera incorporare un passthrough semplificato di dati binari tra il PC host e il dispositivo Android di destinazione, è possibile 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 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 l'esatto contrario, ovvero esegue un comando su Android e acquisisce il suo output binario non filtrato dal sistema operativo host.

Esempio:

adb esec-fuori "caposchermo -p" > "D:\screenshot.png"

Questo utilizzerà il screenshot comando di Android per acquisire uno screenshot del display del telefono, ma lo salva direttamente come screenshot.png nella partizione D: del PC host (a condizione che esegua Windows). D'altra parte,

adb esec-In"cd /sdcard && tar -xf -" < "D:\backup.tar"

Questo estrarrà il contenuto del file backup.tar archiviato nella partizione D: del PC host (che esegue Windows) nella radice della memoria interna del dispositivo Android.


ADB è uno strumento incredibilmente potente e può fare molto di più di quello che c'è sopra. I comandi in questo articolo sono solo un utile punto di partenza. Per un utilizzo più avanzato, dai un'occhiata a comandi come cmd -l per vedere diversi servizi con cui potresti interagire e ls -l /sistema/bin per vedere i diversi eseguibili dei comandi disponibili nella tua ROM Android.

Per altri viaggi e zecche 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.