Android Debug Bridge ima puno toga o čemu možda ne znate. Kliknite ovdje za korisne savjete i trikove za korištenje ADB-a!
Brze veze
- Pristup ljusci
- Povezivanje s više uređaja
- Prijenos datoteka
- Sječa drva
- Popis instaliranih aplikacija putem ADB-a
- Instaliranje i deinstaliranje aplikacija putem ADB-a
- Izdvajanje APK-ova s ADB-om
- Sigurnosno kopiranje i vraćanje podataka aplikacije
- Navođenje komponenti aplikacije
- Pokretanje aktivnosti, usluga i prijemnika
- Onemogućivanje i omogućavanje gotovo svake aplikacije
- Snimanje snimki zaslona
- Prijenos binarnih podataka između računala i Android uređaja
Ako ste entuzijast za Android koji vreba na sceni modificiranja ili programer aplikacija bilo koje vrijeme vrijeme, prije ili kasnije, naići ćete na zgodan alat koji se zove Android Debug Bridge ili ADB za kratak. Opsežno se koristi u Android Studiju kao popratni uslužni program naredbenog retka. Programeri za Android također ga koriste kao samostalno rješenje za ručno instaliranje i testiranje aplikacija Android pametni telefoni kao i emulirani Android uređaji.
Ali ADB može puno učiniti, a većina toga nije korisna samo programerima. Čak i ako niste programer, a čitate ovaj članak, postoji dobra šansa da ste vjerojatno upotrijebili ADB jednom ili dvaput učitavanje aplikacije sa strane ili podesiti dopuštenje. Ali to nije sve za što se ADB može koristiti. Nastavite čitati za neke savjete i trikove za korištenje ADB-a za koje možda niste znali.
Morat ćete imati ADB pokrenut i pokrenut na vašem računalu. Svakako pogledajte naš članak o kako instalirati ADB ako ti treba pomoć. U slučaju da koristite Windows, također morate instalirajte odgovarajuće OEM USB upravljačke programe za vaš Android uređaj.
Pristup ljusci
Ako ste prije koristili ADB, možda ste navikli sve naredbe izvoditi u jednom retku. Ali također možete koristiti ADB za otvaranje ljuske terminala na vašem uređaju i izravno pokretanje naredbi. I to jednostavno!
U prozoru terminala ili naredbenog retka:
adb shell
Tada ćete biti pozdravljeni sa $
simbol gdje možete pokretati naredbe izravno na svom uređaju.
Povezivanje s više uređaja
ADB može komunicirati s više uređaja u isto vrijeme. Međutim, morate navesti ciljni uređaj kada izdajete ADB naredbe u takvim scenarijima.
Da biste to učinili, morat ćete znati serijski broj ciljanog uređaja. Serijski broj možete dobiti pomoću naredbe devices:
adb devices
Sada, upotrijebite -s
opciju za određivanje serijskog broja ciljanog uređaja. Primjer:
adb -s <serialnumber> shell
Prijenos datoteka
Za ljubitelje naredbenog retka, ADB pruža vrlo jednostavan način prijenosa datoteka na i s vašeg Android uređaja. Samo koristite pull
naredba za kopiranje datoteka i direktorija s uređaja i push
naredba za kopiranje datoteka i direktorija na uređaj:
Ako želite kopirati datoteku ili direktorij s njegovim poddirektorijima na Android uređaj:
adb push local_path device_path
- Primjer:
adb push D:\image.png /sdcard
Sljedeća naredba će kopirati datoteku ili direktorij s njegovim poddirektorijima s Android uređaja na glavno računalo:
adb pull device_path local_path
- Primjer:
adb pull /sdcard/backup_April.tar D:\Backup
Sječa drva
Android Studio pruža Logcat prozor, koji podržava prikaz zapisa s vašeg uređaja u stvarnom vremenu. Međutim, nije baš koristan za skupnu obradu. Srećom, uređaji sa sustavom Android isporučuju se s naredbom logcat dostupnom putem ADB-a, koja se može koristiti za ispisivanje poruka dnevnika sustava i aplikacija i njihovo ispisivanje na ekran.
Osnovna sintaksa je sljedeća:
adb logcat
Da biste saznali više, pogledajte naš vodič o kako preuzeti sustav logcats, zapise kernela i dmesg na Androidu.
Uskrsna jaja
Google nudi dva sjajna uskršnja jaja povezana s naredbom logcat.
- Prvi je lolcat, kimanje na LOLcat meme. Daje isti izlaz kao i obična naredba logcat.
adb lolcat
- Drugi je longcat, što je ekvivalentno naredbi logcat -v long. Prikazuje sva polja metapodataka i odvojene poruke s praznim retkom.
adb longcat
Popis instaliranih aplikacija putem ADB-a
Da biste vidjeli instalirane aplikacije na svom uređaju, možete koristiti sljedeću naredbu:
adb shell pm list packages
Ovo će vratiti popis naziva paketa instaliranih aplikacija, sa svakim u svom retku ispred package:
.
Mogućnosti
Postoje i neke opcije koje možete koristiti za dohvaćanje specifičnijih popisa.
- -f uključit će put do osnovnog APK-a za svaku aplikaciju, zajedno s nazivom paketa.
- -a pobrinut će se da se vrate svi poznati paketi koji nisu APEX.
- -d uzrokovat će da naredba vrati samo onemogućene pakete.
- -e uzrokovat će da naredba vrati samo omogućene pakete.
- -s uzrokovat će da naredba vrati samo sistemske pakete.
- -3 uzrokovat će da naredba vrati samo pakete trećih strana.
- -i uključivat će naziv paketa programa za instalaciju za svaki paket.
- -U uključit će UID paketa za svaki paket.
- -u će uključivati deinstalirane pakete.
- --show-versioncode uključivat će kod verzije za svaki paket.
- --samo vrh vratit će samo APEX pakete.
- --uid će prikazati samo pakete s danim UID-om.
- --korisnik će prikazati samo pakete koji pripadaju danom ID-u korisnika.
Instaliranje i deinstaliranje aplikacija putem ADB-a
Ovo je relativno uobičajena upotreba ADB-a, ali ipak je vrijedno spomena. Između ostalih načina, također možete koristiti ADB za instalirati i deinstalirati Android aplikacije na svoj Android uređaj.
Instaliranje APK-a
Ako imate APK na svom računalu, možete ga instalirati na svoj uređaj sa sljedećim:
adbinstall-rsomeapk.apk
Ne zaboravite zamijeniti someapk.apk
s punim putem do APK-a koji želite instalirati.
Mogućnosti
Postoji hrpa opcija za instaliranje APK-ova putem ADB-a.
- The -r opcija omogućuje ADB-u instalaciju preko postojeće aplikacije (tj. ažuriranje). Na Android Pie i novijim verzijama ne morate navesti ovu opciju.
- The -R opcija za Android Pie i novije će uzrokovati neuspjeh instalacije ako je aplikacija već instalirana.
- The -i opcija vam omogućuje da navedete naziv instalacijskog paketa. To je ono što se vraća ako Android želi znati što je instaliralo APK.
- The -t opcija omogućuje APK sa android: testOnly="true" u svom manifestu koji treba instalirati.
- The -d opcija omogućuje da navedeni APK bude vraćanje na već instaliranu aplikaciju. Ovo funkcionira samo ako se u obje verzije aplikacije mogu otkloniti pogreške.
- The -g opciju za Android Marshmallow i kasnije automatski dodjeljuje sva dopuštenja za vrijeme izvođenja instaliranoj aplikaciji.
To nisu svi. Ako želite potpuni popis, možete pogledati ugrađenu dokumentaciju.
Više APK-ova i paketa
Ako imate hrpu APK-ova koje želite instalirati odjednom, bilo iz više aplikacija ili zato što instalirate paket aplikacija, možete upotrijebiti ADB-ov install-multiple
i install-multi-package
značajke.
Ako su svi vaši APK-ovi za jednu aplikaciju, upotrijebite install-multiple
:
adbinstall-multipleapk1.apkapk2.apk ...
U suprotnom, koristite install-multi-package
:
adbinstall-multi-packageapp1.apkapp2.apk ...
Opcije za ove naredbe slične su install
, ali uz određena ograničenja. Provjerite ADB-ovu ugrađenu dokumentaciju za dostupne opcije.
Deinstaliranje aplikacije
Za deinstalaciju pomoću ADB-a trebat će vam naziv paketa aplikacije koju želite deinstalirati. Provjerite odjeljak za Popis instaliranih aplikacija ako već niste.
Nakon što dobijete naziv paketa, deinstalacija je jednostavna kao:
adb uninstall <packagename>
Općenito ne možete deinstalirati sustav ili unaprijed instalirane aplikacije pomoću ove naredbe. Međutim, možda ćete ih moći onemogućiti pomoću ADB-a. Provjerite odjeljak Onemogućivanje i omogućavanje gotovo svake aplikacije za detalje.
Izdvajanje APK-ova s ADB-om
Postoji mnogo razloga zbog kojih biste mogli izdvojiti APK(ove) za aplikaciju. Možda ga želite sigurnosno kopirati za buduću upotrebu ili možda više nije dostupan na mreži i želite ga prenijeti na drugi uređaj.
Ekstrahiranje aplikacije pomoću ADB-a prilično je jednostavno. Prvo ćete htjeti pronaći naziv paketa aplikacije koju želite izdvojiti. Postoji više načina da to učinite, ali najlakši je obično korištenje aplikacije Postavke vašeg uređaja za pregled popis svih instaliranih aplikacija, odaberite onu koju želite i pomaknite se prema dolje dok ne pronađete naziv paketa ili aplikacije ISKAZNICA.
Kada dobijete naziv paketa, pokrenite sljedeću naredbu:
adb shell pm path <packagename>
Ova naredba će vratiti put svih APK-ova za taj naziv paketa.
Zatim možete upotrijebiti sljedeću naredbu za povlačenje svakog APK-a na svoje računalo:
adb pull /path/to/apk.apk
Sigurnosno kopiranje i vraćanje podataka aplikacije
Iako Google tek treba osmisliti metodologiju sigurnosnog kopiranja jednim klikom poput iOS-a, možete koristiti ADB za sigurnosno kopiranje i vraćanje instaliranih aplikacija zajedno s njihovim podacima. Međutim, funkcionalnost je daleko od savršene, a Google već jest označio je značajku kao zastarjelu.
Napravi sigurnosnu kopiju
Za izradu sigurnosne kopije jedne aplikacije s njezinim APK-om:
adb backup -apk <packagename> -f package_name_backup.ab
U slučaju da želite sigurnosno kopirati sve podatke aplikacije odjednom:
adb backup -f all -all -apk -nosystem
Budući da modul za vraćanje ne može izvršiti pojedinačno vraćanje specifično za aplikaciju, bolje je izraditi sigurnosne kopije specifične za paket. Sljedeći isječak naredbe (kompatibilan s Linux/macOS i Windows podsustavom za Linux) može to učiniti umjesto vas:
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
Vratiti
Prvo morate instalirati spremljeni APK;
adb install <packagename>.apk
Tada možete vratiti njegove podatke:
adbrestorepackage_name_backup.ab
Da ponovimo, ADB sigurnosno kopiranje i vraćanje funkcionalnosti imaju više upozorenja, uključujući varijabilne rezultate ovisno o ROM-u
Navođenje komponenti aplikacije
Komponente aplikacije su stvari poput njezinih aktivnosti, primatelja emitiranja, usluga itd. Ponekad je korisno znati nazive tih komponenti u određenoj aplikaciji, osobito ako želite pokrenuti skrivene aktivnosti ili poslati emitiranje s određenim podacima.
Nažalost, ADB nema baš jasan način popisa komponenti aplikacije. Ali moguće je. Pokrenite sljedeću naredbu:
adb shell dumpsys package
Cijela hrpa teksta će biti vraćena.
- Pomičite se dok ne pronađete Tablica razrješitelja aktivnosti naslov za pregled aktivnosti.
- Pogledaj ispod Tablica razlučivača prijemnika za Broadcast Receivers.
- Provjeri Tablica razrješitelja usluge za usluge.
- I tako dalje.
Svaka komponenta će pokazati radnju potrebnu za pokretanje, naziv komponente i eventualne dodatne informacije.
Alternativno, ako želite jednostavniji način da vidite aktivnosti, usluge i primatelje, možete koristiti aplikaciju Root Activity Launcher od XDA Recognized Developer Zacharee1. Pokazat će vam te komponente za svaku aplikaciju, zajedno s hrpom drugih praktičnih značajki.
Cijena: 0,99 kn.
Pokretanje aktivnosti, usluga i prijemnika
ADB se također može koristiti za pokretanje aktivnosti, pokretanje usluga i obavještavanje BroadcastReceivers. Možete čak odrediti URI-je podataka i dodatke namjere ako je potrebno.
Za pokretanje komponenti trebat će vam naziv komponente onoga što želite pokrenuti. Možete vidjeti kako to dobiti od Navođenje komponenti aplikacije odjeljak.
Sintaksa naredbe za pokretanje aktivnosti je otprilike ovakva:
am start -a <action> -n <component>
Sintaksa naredbe za pokretanje usluge je otprilike ovakva:
am startservice -a <action> -n <component>
Sintaksa naredbe za obavještavanje BroadcastReceiver-a je otprilike ova:
am broadcast -a <action> -n <component>
U većini slučajeva, za aktivnosti i usluge, ne morate eksplicitno navesti radnju. Obično će vam trebati samo ako komponenta koristi nešto drugo osim android.intent.action. GLAVNI.
Povrh osnovne sintakse, evo kako odrediti više podataka za prosljeđivanje. Općenito, sve vrijednosti podataka trebaju biti u dvostrukim navodnicima.
- -d omogućuje vam da odredite podatkovni URI.
- -e ili --es omogućuje vam da navedete dodatni String.
- --esn omogućuje vam da navedete dodatni null String.
- --ez koristi se za određivanje Booleovog dodatka.
- --ei koristi se za određivanje dodatka cijelog broja.
- --el služi za određivanje dugog dodatnog.
- --ef proći će dodatni float.
- --eu prosljeđuje dodatni URI.
- --ecn može se koristiti za navođenje dodatnog naziva komponente.
-
--eia
proslijedit će vrijednosti kao Integer[] extra., ,... -
--eial
proslijedit će vrijednosti kao popis, ,... . - Isti argumenti polja i popisa također rade za long, float i nizove. Samo zamijenite ja s odgovarajućim slovom.
- -f omogućuje vam da navedete zastavu.
Postoji još više opcija ponašanja koje možete koristiti, stoga provjerite ugrađenu dokumentaciju za detalje.
Onemogućivanje i omogućavanje gotovo svake aplikacije
Sistemske aplikacije u Androidu ne mogu se deinstalirati, a nažalost, mnoge od njih također se ne mogu onemogućiti u postavkama. Iako vam ADB neće dopustiti da ih deinstalirate, može vam pomoći da ih onemogućite.
Prvo provjerite jeste li dobili naziv paketa aplikacije koju želite onemogućiti. Zatim isprobajte ove naredbe. Ako jedna ne uspije, pokušajte sa sljedećom opcijom.
-
pm onemogućiti
- Za ponovno uključivanje, koristite pm omogućiti
-
pm onemogući-korisnik --korisnik 0
- Za ponovno uključivanje, koristite pm omogućiti
-
pm sakrij
- Za ponovno uključivanje, koristite pm otkrij
-
popodne obustaviti
- Za ponovno uključivanje, koristite pm unsuspend
-
pm deinstaliraj -k --korisnik 0
- Za ponovno uključivanje, koristite pm instalirati-postojeći
- Ovo učinkovito deinstalira aplikaciju s vašeg korisničkog profila. Dok je naredba za ponovno uključivanje trebao bi radi, nema garancije da hoće. Možda ćete morati vratiti tvorničke postavke da biste vratili aplikaciju.
- Ako koristite više korisničkih profila na svom uređaju, svakako zamijenite 0 u gornjim naredbama stvarnim korisničkim ID-om koji imate.
- Za ponovno uključivanje, koristite pm instalirati-postojeći
Da biste saznali više, pogledajte naš vodič o kako deinstalirati nositelja i OEM bloatware bez root pristupa.
Snimanje snimki zaslona
Većina Android ROM-ova nudi dva praktična pomoćna programa ljuske - screencap i screenrecord - za snimanje zaslona i aktivnosti na zaslonu. Možete ih nazvati izravno iz ADB ljuske kako biste snimili statičnu snimku zaslona ili videoisječak zaslona svog telefona i spremili ga izravno u internu pohranu uređaja.
Sintaksa za snimanje snimke zaslona prilično je jednostavna:
adb shell screencap /sdcard/screenshot.png
Slično, ako trebate snimiti dinamičku snimku zaslona, učinite sljedeće:
adb shell screenrecord /sdcard/recording.mp4
Kao što možete očekivati, screencap alat je prilično jednostavan, dok uslužni program screenrecord nudi nekoliko parametara. Opcije za potonje su sljedeće:
-
--veličina ŠIRINAxVISINA
- Postavite razlučivost video datoteke (npr. "1280x720"). Prema zadanim postavkama pokušava preuzeti razlučivost glavnog zaslona ciljnog uređaja (ako je podržana) i vraća se na 1280x720 ako nije.
-
--bit rate RATE
- Postavite brzinu prijenosa videa u bitovima po sekundi. Vrijednost se može navesti kao bitovi ili megabiti, npr. '4000000' je ekvivalent '4M'.
-
--izvješće o pogrešci
- Možete dodati dodatne informacije, kao što je preklapanje vremenske oznake, što može biti korisno za ilustraciju grešaka.
-
--time-limit VRIJEME
- Postavite maksimalno vrijeme snimanja u sekundama. Zadano/maksimalno je 180.
-
--ID ID-a prikaza
- Navedite fizički ID prikaza za snimanje. Zadani je postavljen na primarni zaslon. Pogledajte "dumpsys SurfaceFlinger --display-id" za važeće ID-ove prikaza.
-
-- opširno
- Prikaz detaljnih informacija o sesiji snimanja.
Možete dodatno proširiti mogućnosti Androidovih ugrađenih uslužnih programa za snimanje zaslona scrcpy. To je rješenje za zrcaljenje zaslona otvorenog koda koje koristi snagu ADB-a.
Prijenos binarnih podataka između računala i Android uređaja
U slučaju da ne želite stvoriti potpunu ADB ljusku, ali želite uključiti pojednostavljeni prolaz binarnih podataka između glavnog računala i ciljanog Android uređaja, možete upotrijebiti exec-in
i exec-out
naredbe.
Unatoč njihovom produljeno postojanje, naredbe exec-in i exec-out još uvijek nisu dokumentirane. Oni mogu dovesti do oštećenja datoteke zbog načina na koji različite ljuske obrađuju ulaze i izlaze. Koristite s oprezom.
Prvi vam pomaže da izvršite naredbu na Androidu i unesete nefiltrirani ulaz konzole kao svoj parametar, dok drugi radi upravo suprotno, tj. pokreće naredbu na Androidu i hvata njen nefiltrirani binarni izlaz OS-a domaćina.
Primjer:
adb exec-out "screencap -p" > "D:\screenshot.png"
Ovo će koristiti screencap
naredbu Androida za snimanje snimke zaslona telefona, ali je izravno sprema kao screenshot.png u D: particiju glavnog računala (pod uvjetom da pokreće Windows). S druge strane,
adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"
Ovo će izdvojiti sadržaj datoteke backup.tar pohranjene u D: particiji glavnog računala (sa sustavom Windows) u korijenu unutarnje pohrane Android uređaja.
ADB je nevjerojatno moćan alat i može učiniti mnogo više od onoga što je gore navedeno. Naredbe u ovom članku samo su korisna polazna točka. Za naprednije korištenje pogledajte naredbe poput cmd -l da biste vidjeli različite usluge s kojima biste mogli komunicirati i ls -l /sustav/bin da biste vidjeli različite izvršne naredbe dostupne u vašem Android ROM-u.
Za druga Android putovanja i oznake, pogledajte naše vodiče na kako rootati svoj Android pametni telefon, kako instalirati TWRP recovery, i kako instalirati prilagođeni ROM na svoj Android uređaj.