Există multe despre Android Debug Bridge despre care este posibil să nu știți. Faceți clic aici pentru câteva sfaturi și trucuri utile pentru utilizarea ADB!
Legături rapide
- Acces Shell
- Conectarea la mai multe dispozitive
- Transferarea fișierelor
- Logare
- Listarea aplicațiilor instalate prin ADB
- Instalarea și dezinstalarea aplicațiilor prin ADB
- Extragerea APK-urilor cu ADB
- Copiere de rezervă și restaurare a datelor aplicației
- Listarea componentelor aplicației
- Lansarea de activități, servicii și receptoare de transmisie
- Dezactivează și activează aproape orice aplicație
- Captură de capturi de ecran
- Transferarea datelor binare între computer și dispozitivul Android
Dacă ați fost un pasionat de Android care pândește în scena modding-ului sau un dezvoltator de aplicații pentru orice perioadă timp, mai devreme sau mai târziu, veți da peste un instrument elegant numit Android Debug Bridge sau ADB pentru mic de statura. Este utilizat pe scară largă în Android Studio ca utilitar însoțitor de linie de comandă. Dezvoltatorii Android îl folosesc și ca soluție autonomă pentru a instala și a testa manual aplicațiile
smartphone-uri cu Android precum și dispozitive Android emulate.Dar ADB poate face multe și majoritatea nu sunt utile doar dezvoltatorilor. Chiar dacă nu sunteți dezvoltator și citiți acest articol, există șanse mari să fi folosit ADB o dată sau de două ori pentru a descărcați o aplicație sau modificați o permisiune. Dar pentru asta nu poate fi folosit ADB. Continuați să citiți pentru câteva sfaturi și trucuri pentru utilizarea ADB despre care poate nu știați.
Va trebui să aveți ADB în funcțiune pe computer. Asigurați-vă că consultați articolul nostru despre cum se instalează ADB daca ai nevoie de ajutor. În cazul în care utilizați Windows, trebuie și instalați driverele USB OEM adecvate pentru dispozitivul dvs. Android.
Acces Shell
Dacă ați mai folosit ADB, este posibil să fiți obișnuit să rulați comenzi într-o singură linie. Dar puteți folosi și ADB pentru a deschide un shell de terminal pe dispozitivul dvs. și pentru a rula comenzi direct. Și este ușor!
În terminalul sau fereastra promptului de comandă:
adb shell
Veți fi apoi întâmpinat cu un $
simbol unde puteți rula comenzi direct pe dispozitiv.
Conectarea la mai multe dispozitive
ADB poate comunica cu mai multe dispozitive în același timp. Cu toate acestea, trebuie să specificați dispozitivul țintă atunci când emiteți comenzi ADB în astfel de scenarii.
Pentru a face acest lucru, va trebui să cunoașteți numărul de serie al dispozitivului țintă. Puteți obține serialul utilizând comanda dispozitive:
adb devices
Acum, folosește -s
opțiunea de a specifica numărul de serie al dispozitivului țintă. Exemplu:
adb -s <serialnumber> shell
Transferarea fișierelor
Pentru pasionații de linie de comandă, ADB oferă o modalitate foarte ușoară de a transfera fișiere pe și de pe dispozitivul tău Android. Folosește doar pull
comandă pentru a copia fișiere și directoare de pe dispozitiv și din push
comandă pentru a copia fișiere și directoare pe dispozitiv:
Dacă doriți să copiați un fișier sau un director cu subdirectoarele sale pe dispozitivul Android:
adb push local_path device_path
- Exemplu:
adb push D:\image.png /sdcard
Următoarea comandă va copia un fișier sau un director cu subdirectoarele sale de pe dispozitivul Android pe computerul gazdă:
adb pull device_path local_path
- Exemplu:
adb pull /sdcard/backup_April.tar D:\Backup
Logare
Android Studio oferă Fereastra Logcat, care acceptă afișarea jurnalelor de pe dispozitivul dvs. în timp real. Cu toate acestea, nu este tocmai util pentru procesarea în lot. Din fericire, dispozitivele Android sunt livrate cu comanda logcat disponibilă prin ADB, care poate fi folosită pentru a descărca mesajele de jurnal de sistem și de aplicații și pentru a le imprima pe ecran.
Sintaxa de bază este următoarea:
adb logcat
Pentru a afla mai multe, aruncați o privire la tutorialul nostru despre cum să luați logcat-uri de sistem, jurnalele kernel și dmesg pe Android.
Ouă de Paște
Google oferă două ouă de Paște interesante legate de comanda logcat.
- Primul este lolcat, un semn din cap către LOLcat meme. Oferă aceeași ieșire ca și comanda logcat obișnuită.
adb lolcat
- Al doilea este longcat, care este echivalent cu comanda logcat -v long. Afișează toate câmpurile de metadate și mesajele separate cu o linie goală.
adb longcat
Listarea aplicațiilor instalate prin ADB
Pentru a vedea aplicațiile instalate pe dispozitivul dvs., puteți utiliza următoarea comandă:
adb shell pm list packages
Aceasta va returna o listă a numelor de pachete ale aplicațiilor instalate, fiecare dintre ele pe propria sa linie antepusă package:
.
Opțiuni
Există, de asemenea, câteva opțiuni pe care le puteți utiliza pentru a prelua liste mai specifice.
- -f va include calea către APK-ul de bază pentru fiecare aplicație, împreună cu numele pachetului său.
- -A se va asigura că toate pachetele cunoscute non-APEX sunt returnate.
- -d va determina comanda să returneze numai pachete dezactivate.
- -e va determina comanda să returneze numai pachetele activate.
- -s va determina comanda să returneze numai pachete de sistem.
- -3 va face ca comanda să returneze numai pachete de la terți.
- -i va include numele pachetului de instalare pentru fiecare pachet.
- -U va include UID-ul pachetului pentru fiecare pachet.
- -u va include pachete dezinstalate.
- --show-versioncode va include codul de versiune pentru fiecare pachet.
- --doar apex va returna numai pachete APEX.
- --uid va afișa numai pachetele cu UID-ul dat.
- --utilizator va afișa numai pachetele care aparțin ID-ului de utilizator dat.
Instalarea și dezinstalarea aplicațiilor prin ADB
Aceasta este o utilizare relativ comună a ADB, dar merită menționată oricum. Printre alte moduri, puteți utiliza și ADB pentru instalați și dezinstalați aplicații Android pe dispozitivul dvs. Android.
Instalarea unui APK
Dacă aveți un APK pe computer, îl puteți instala pe dispozitiv folosind următoarele:
adbinstall-rsomeapk.apk
Amintiți-vă să înlocuiți someapk.apk
cu calea completă către APK-ul pe care doriți să îl instalați.
Opțiuni
Există o mulțime de opțiuni pentru instalarea APK-urilor prin ADB.
- The -r opțiunea permite ADB să instaleze peste o aplicație existentă (adică, actualizare). Pe Android Pie și mai târziu, nu trebuie să specificați această opțiune.
- The -R opțiunea, pentru Android Pie și versiuni ulterioare va duce la eșuarea instalării dacă aplicația este deja instalată.
- The -i opțiunea vă permite să specificați un nume de pachet de instalare. Acesta este ceea ce este returnat dacă Android dorește să știe ce a instalat APK-ul.
- The -t opțiunea permite un APK cu Android: testOnly="true" în manifestul său să fie instalat.
- The -d opțiunea permite ca APK-ul specificat să fie un downgrade la o aplicație deja instalată. Acest lucru funcționează numai dacă ambele versiuni ale aplicației sunt depanabile.
- The -g opțiunea pentru Android Marshmallow și mai târziu acordă automat toate permisiunile de rulare aplicației instalate.
Asta nu sunt toate. Dacă doriți o listă completă, puteți consulta documentația încorporată.
Mai multe APK-uri și pachete
Dacă aveți o mulțime de APK-uri pe care doriți să le instalați simultan, fie din mai multe aplicații, fie pentru că instalați un pachet de aplicații, puteți utiliza aplicațiile ADB. install-multiple
și install-multi-package
Caracteristici.
Dacă toate APK-urile dvs. sunt pentru o aplicație, utilizați install-multiple
:
adbinstall-multipleapk1.apkapk2.apk ...
În caz contrar, folosiți install-multi-package
:
adbinstall-multi-packageapp1.apkapp2.apk ...
Opțiunile pentru aceste comenzi sunt similare cu install
, dar cu unele limitări. Consultați documentația încorporată a ADB pentru opțiunile disponibile.
Dezinstalarea unei aplicații
Pentru a dezinstala folosind ADB, veți avea nevoie de numele pachetului aplicației pe care doriți să o dezinstalați. Consultați secțiunea pentru Listarea aplicațiilor instalate dacă nu ai făcut-o deja.
Odată ce aveți numele pachetului, dezinstalarea este la fel de simplă ca:
adb uninstall <packagename>
În general, nu puteți dezinstala sistemul sau aplicațiile preinstalate folosind această comandă. Cu toate acestea, este posibil să le puteți dezactiva cu ADB. Consultați secțiunea Dezactivează și activează aproape orice aplicație pentru detalii.
Extragerea APK-urilor cu ADB
Există o mulțime de motive pentru care ați putea dori să extrageți APK-urile pentru o aplicație. Poate doriți să faceți o copie de rezervă pentru o utilizare viitoare sau poate că nu mai este disponibil online și doriți să îl transferați pe un alt dispozitiv.
Extragerea unei aplicații folosind ADB este destul de simplă. Mai întâi, veți dori să găsiți numele pachetului aplicației pe care doriți să o extrageți. Există mai multe moduri de a face acest lucru, dar cel mai simplu este de obicei să utilizați aplicația Setări a dispozitivului dvs. pentru a vizualiza lista tuturor aplicațiilor instalate, selectați-o pe cea dorită și derulați în jos până când găsiți numele pachetului sau aplicația ID.
Odată ce aveți numele pachetului, rulați următoarea comandă:
adb shell pm path <packagename>
Această comandă va returna calea tuturor APK-urilor pentru acel nume de pachet.
Apoi puteți utiliza următoarea comandă pentru a trage fiecare APK pe computer:
adb pull /path/to/apk.apk
Copiere de rezervă și restaurare a datelor aplicației
Deși Google încă nu a venit cu o metodologie de backup cu un singur clic similară cu iOS, puteți utiliza ADB pentru a face backup și a restabili aplicațiile instalate împreună cu datele lor. Cu toate acestea, funcționalitatea este departe de a fi perfectă, iar Google a făcut-o deja a marcat caracteristica ca fiind depreciată.
Backup
Pentru a face backup pentru o singură aplicație, cu APK-ul acesteia:
adb backup -apk <packagename> -f package_name_backup.ab
În cazul în care doriți să faceți o copie de rezervă a tuturor datelor aplicației simultan:
adb backup -f all -all -apk -nosystem
Deoarece modulul de restaurare nu poate efectua restaurarea individuală specifică aplicației, este mai bine să creați copii de rezervă specifice pachetului. Următorul fragment de comandă (compatibil cu Linux/macOS și Windows Subsystem pentru Linux) poate face acest lucru pentru dvs.:
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
Restabili
Mai întâi, trebuie să instalați APK-ul salvat;
adb install <packagename>.apk
Apoi îi puteți restaura datele:
adbrestorepackage_name_backup.ab
Pentru a reitera, funcționalitățile de backup și restaurare ADB au mai multe avertismente, inclusiv rezultate variabile în funcție de ROM-ul
Listarea componentelor aplicației
Componentele unei aplicații sunt lucruri precum Activitățile, BroadcastReceivers, Servicii și așa mai departe. Uneori este util să cunoașteți numele acestor componente într-o anumită aplicație, mai ales dacă doriți să lansați Activități ascunse sau să trimiteți o difuzare cu date specifice.
Din păcate, ADB nu are o modalitate foarte clară de a enumera componentele unei aplicații. Dar este posibil. Rulați următoarea comandă:
adb shell dumpsys package
O grămadă de text va fi returnată.
- Derulați până când găsiți Tabel de rezolvare a activității titlu pentru a vedea Activitățile.
- Uita-te dedesubt Tabelul de rezolvare a receptorului pentru BroadcastReceivers.
- Verifică Tabelul de rezolvare a serviciului pentru Servicii.
- Și așa mai departe.
Fiecare componentă va afișa acțiunea necesară pentru a o lansa, numele componentei și, eventual, câteva informații suplimentare.
Ca alternativă, dacă doriți o modalitate mai ușoară de a vedea activități, servicii și receptoare, puteți utiliza aplicația Root Activity Launcher de la XDA Recognized Developer Zacharee1. Vă va arăta acele componente pentru fiecare aplicație, împreună cu o grămadă de alte funcții utile.
Pret: 0,99.
Lansarea de activități, servicii și receptoare de transmisie
ADB poate fi, de asemenea, utilizat pentru a lansa Activități, a porni Servicii și pentru a notifica BroadcastReceivers. Puteți chiar să specificați URI-uri de date și extra Intent, dacă este necesar.
Pentru a lansa componente, veți avea nevoie de numele componentei a ceea ce doriți să lansați. Puteți vedea cum să obțineți asta de la Listarea componentelor aplicației secțiune.
Sintaxa comenzii pentru lansarea unei activități este cam așa:
am start -a <action> -n <component>
Sintaxa comenzii pentru pornirea unui serviciu este cam așa:
am startservice -a <action> -n <component>
Sintaxa comenzii pentru notificarea unui BroadcastReceiver este cam așa:
am broadcast -a <action> -n <component>
În cele mai multe cazuri, pentru activități și servicii, nu trebuie să specificați o acțiune în mod explicit. De obicei, veți avea nevoie doar dacă componenta folosește una alta decât android.intenție.acțiune. PRINCIPAL.
Pe lângă sintaxa de bază, iată cum să specificați mai multe date de transmis. În general, toate valorile datelor ar trebui să fie cuprinse între ghilimele duble.
- -d vă permite să specificați un URI de date.
- -e sau --es vă permite să specificați un String suplimentar.
- --esn vă permite să specificați un șir nul suplimentar.
- --ez este folosit pentru a specifica un plus boolean.
- --ei este folosit pentru a specifica un număr întreg suplimentar.
- --el este pentru a specifica un plus lung.
- --ef va trece un float în plus.
- --UE trece un URI suplimentar.
- --ecn poate fi folosit pentru a specifica un nume de componentă suplimentar.
-
--eia
va trece valorile ca un Integer[] suplimentar., ,... -
--eial
va trece valorile ca Listă, ,... . - Aceeași argumente de matrice și listă funcționează și pentru longs, floats și Strings. Doar înlocuiți i cu litera corespunzătoare.
- -f vă permite să specificați un steag.
Există și mai multe opțiuni de comportament pe care le puteți utiliza, așa că consultați documentația încorporată pentru detalii.
Dezactivează și activează aproape orice aplicație
Aplicațiile de sistem din Android nu pot fi dezinstalate și, din păcate, multe dintre ele nu pot fi dezactivate prin Setări. Deși ADB nu vă va permite să le dezinstalați, vă poate ajuta să le dezactivați.
Mai întâi, asigurați-vă că obțineți numele pachetului aplicației pe care doriți să o dezactivați. Apoi, încercați aceste comenzi. Dacă unul nu reușește, încercați următoarea opțiune.
-
pm dezactivat
- Pentru a reactiva, utilizați activați pm
-
pm disable-user --user 0
- Pentru a reactiva, utilizați activați pm
-
pm ascunde
- Pentru a reactiva, utilizați pm dezvăluie
-
pm suspend
- Pentru a reactiva, utilizați pm nesuspendă
-
pm dezinstalează -k --user 0
- Pentru a reactiva, utilizați pm instal-existent
- Acesta dezinstalează efectiv aplicația din profilul dvs. de utilizator. În timp ce comanda pentru a reactiva ar trebui să funcționează, nu există nicio garanție că va fi. Poate fi necesar să resetați din fabrică pentru a restabili aplicația.
- Dacă utilizați mai multe profiluri de utilizator pe dispozitivul dvs., asigurați-vă că înlocuiți 0 în comenzile de mai sus cu ID-ul de utilizator real pe care îl aveți.
- Pentru a reactiva, utilizați pm instal-existent
Pentru a afla mai multe, consultați tutorialul nostru pe cum să dezinstalați bloatware-ul operator și OEM fără acces root.
Captură de capturi de ecran
Majoritatea ROM-urilor Android oferă două utilitare shell la îndemână - screencap și screenrecord - pentru a face capturi de ecran și, respectiv, pentru a înregistra activitățile de pe ecran. Le puteți apela direct din shell-ul ADB pentru a capta o captură de ecran statică sau un fragment video a ecranului telefonului și a le salva direct pe stocarea internă a dispozitivului.
Sintaxa pentru capturarea unei capturi de ecran este destul de simplă:
adb shell screencap /sdcard/screenshot.png
În mod similar, dacă trebuie să luați o captură de ecran dinamică, faceți următoarele:
adb shell screenrecord /sdcard/recording.mp4
După cum v-ați putea aștepta, instrumentul screencap este destul de simplu, în timp ce utilitarul screenrecord oferă mai mulți parametri. Opțiunile pentru acesta din urmă sunt următoarele:
-
--dimensiune WIDTHxHEIGHT
- Setați rezoluția fișierului video (de exemplu, „1280x720”). În mod implicit, încearcă să ia rezoluția de afișare principală a dispozitivului țintă (dacă este acceptată) și cade înapoi la 1280x720 dacă nu.
-
--bit-rate RATE
- Setați rata de biți video, în biți pe secundă. Valoarea poate fi specificată ca biți sau megabiți, de ex. „4000000” este echivalent cu „4M”.
-
--bugreport
- Puteți adăuga informații suplimentare, cum ar fi o suprapunere de marcaj temporal, care poate fi utilă pentru a ilustra erori.
-
--time-limit TIME
- Setați timpul maxim de înregistrare, în secunde. Implicit / maxim este 180.
-
--display-id ID
- Specificați ID-ul de afișare fizic de înregistrat. Cel implicit este setat pe afișajul principal. Consultați „dumpsys SurfaceFlinger --display-id” pentru ID-uri de afișare valide.
-
--verbos
- Afișați informații detaliate despre sesiunea de înregistrare.
Puteți extinde și mai mult capacitățile utilităților de captură de ecran încorporate din Android prin scrcpy. Este o soluție de oglindire a ecranului cu sursă deschisă, care utilizează puterea ADB.
Transferarea datelor binare între computer și dispozitivul Android
În cazul în care nu doriți să generați un shell ADB cu drepturi depline, dar doriți să încorporați o trecere simplificată a datelor binare între computerul gazdă și dispozitivul Android țintă, puteți utiliza exec-in
și exec-out
comenzi.
În ciuda lor existență prelungită, comenzile exec-in și exec-out sunt încă nedocumentate. Acestea pot duce la coruperea fișierelor din cauza modului în care diferitele shell-uri gestionează intrările și ieșirile. Utilizați cu prudență.
Primul vă ajută să executați o comandă pe Android și să alimentați intrarea nefiltrată a consolei ca parametru, în timp ce al doilea face exact opusul, adică rulează o comandă pe Android și captează ieșirea sa binară nefiltrată de sistemul de operare gazdă.
Exemplu:
adb exec-out "screencap -p" > "D:\screenshot.png"
Aceasta va folosi screencap
comanda Android pentru a captura o captură de ecran a ecranului telefonului, dar o salvează direct ca screenshot.png în partiția D: a computerului gazdă (cu condiția să ruleze Windows). Pe de altă parte,
adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"
Aceasta va extrage conținutul fișierului backup.tar stocat în partiția D: a computerului gazdă (care rulează Windows) la rădăcina stocării interne a dispozitivului Android.
ADB este un instrument incredibil de puternic și poate face mult mai mult decât ceea ce este mai sus. Comenzile din acest articol sunt doar un punct de plecare util. Pentru o utilizare mai avansată, consultați comenzi precum cmd -l pentru a vedea diferite servicii cu care ați putea interacționa și ls -l /system/bin pentru a vedea diferitele executabile de comandă disponibile în ROM-ul Android.
Pentru alte călătorii și căpușe Android, consultați ghidurile noastre pe cum să vă rootați smartphone-ul Android, cum se instalează TWRP recovery, și cum să instalați un ROM personalizat pe dispozitivul dvs. Android.