V Android Debug Bridge je veliko stvari, o katerih morda ne veste. Kliknite tukaj za nekaj uporabnih nasvetov in trikov za uporabo ADB!
hitre povezave
- Dostop do lupine
- Povezovanje z več napravami
- Prenos datotek
- Sečnja
- Prikazovanje nameščenih aplikacij prek ADB
- Nameščanje in odstranjevanje aplikacij prek ADB
- Ekstrahiranje APK-jev z ADB
- Varnostno kopiranje in obnavljanje podatkov aplikacije
- Navajanje komponent aplikacije
- Zagon dejavnosti, storitev in oddajnih sprejemnikov
- Onemogočanje in omogočanje skoraj vseh aplikacij
- Zajemanje posnetkov zaslona
- Prenos binarnih podatkov med osebnim računalnikom in napravo Android
Če ste bili navdušenec nad Androidom, ki se skriva na sceni spreminjanja, ali razvijalec aplikacij za prej ali slej boste naleteli na lepo orodje, imenovano Android Debug Bridge ali ADB za kratek. Obširno se uporablja v Android Studiu kot spremljevalni pripomoček ukazne vrstice. Razvijalci za Android ga uporabljajo tudi kot samostojno rešitev za ročno namestitev in testiranje aplikacij Pametni telefoni Android kot tudi emulirane naprave Android.
Toda ADB lahko naredi veliko in večina tega ni uporabna samo za razvijalce. Tudi če niste razvijalec in berete ta članek, obstaja velika verjetnost, da ste verjetno enkrat ali dvakrat uporabili ADB za stransko nalaganje aplikacije ali prilagodite dovoljenje. Vendar to ni vse, za kar je mogoče uporabiti ADB. Nadaljujte z branjem in poiščite nekaj nasvetov in trikov za uporabo ADB, za katere morda niste vedeli.
V računalniku boste morali imeti nameščen in delujoč ADB. Vsekakor preberite naš članek o kako namestiti ADB če potrebujete pomoč. Če uporabljate Windows, morate tudi namestite ustrezne OEM gonilnike USB za vašo napravo Android.
Dostop do lupine
Če ste že uporabljali ADB, ste morda navajeni izvajati vse ukaze v eni vrstici. ADB pa lahko uporabite tudi za odpiranje terminalske lupine v vaši napravi in neposredno izvajanje ukazov. In to enostavno!
V terminalu ali oknu ukaznega poziva:
adb shell
Nato vas bo pozdravil a $
simbol, kjer lahko izvajate ukaze neposredno v svoji napravi.
Povezovanje z več napravami
ADB lahko komunicira z več napravami hkrati. Vendar pa morate pri izdajanju ukazov ADB v takšnih scenarijih določiti ciljno napravo.
Če želite to narediti, morate poznati serijsko številko ciljne naprave. Serijsko številko lahko dobite z ukazom devices:
adb devices
Zdaj pa uporabite -s
možnost podajanja serijske številke ciljne naprave. primer:
adb -s <serialnumber> shell
Prenos datotek
Za ljubitelje ukazne vrstice ADB ponuja zelo enostaven način za prenos datotek v napravo Android in iz nje. Samo uporabite pull
ukaz za kopiranje datotek in imenikov iz naprave in push
ukaz za kopiranje datotek in imenikov v napravo:
Če želite kopirati datoteko ali imenik z njegovimi podimeniki v napravo Android:
adb push local_path device_path
- primer:
adb push D:\image.png /sdcard
Naslednji ukaz bo kopiral datoteko ali imenik s svojimi podimeniki iz naprave Android v gostiteljski računalnik:
adb pull device_path local_path
- primer:
adb pull /sdcard/backup_April.tar D:\Backup
Sečnja
Android Studio ponuja Okno Logcat, ki podpira prikaz dnevnikov iz vaše naprave v realnem času. Vendar pa ni ravno uporaben za paketno obdelavo. Na srečo so naprave Android opremljene z ukazom logcat, ki je na voljo prek ADB, ki ga je mogoče uporabiti za izpis sistemskih in aplikacijskih dnevniških sporočil ter njihovo tiskanje na zaslon.
Osnovna sintaksa je naslednja:
adb logcat
Če želite izvedeti več, si oglejte našo vadnico o kako prevzeti sistemske dnevnike, dnevnike jedra in dmesg v sistemu Android.
velikonočna jajca
Google ponuja dve čudoviti velikonočni jajci, povezani z ukazom logcat.
- Prvi je lolcat, prikimavanje LOLcat meme. Daje enak izhod kot običajni ukaz logcat.
adb lolcat
- Drugi je longcat, ki je enakovreden ukazu logcat -v long. Prikaže vsa metapodatkovna polja in ločena sporočila s prazno vrstico.
adb longcat
Prikazovanje nameščenih aplikacij prek ADB
Če si želite ogledati nameščene aplikacije v vaši napravi, lahko uporabite naslednji ukaz:
adb shell pm list packages
To bo vrnilo seznam imen paketov nameščenih aplikacij, pri čemer bo vsak v svoji vrstici dodal package:
.
Opcije
Obstaja tudi nekaj možnosti, ki jih lahko uporabite za pridobivanje bolj specifičnih seznamov.
- -f bo vključeval pot do osnovnega APK-ja za vsako aplikacijo skupaj z imenom njenega paketa.
- -a bo poskrbel, da bodo vrnjeni vsi znani paketi, ki niso APEX.
- -d bo povzročil, da bo ukaz vrnil samo onemogočene pakete.
- -e bo povzročil, da bo ukaz vrnil samo omogočene pakete.
- -s bo povzročil, da bo ukaz vrnil samo sistemske pakete.
- -3 bo povzročil, da bo ukaz vrnil samo pakete tretjih oseb.
- -jaz bo vključeval ime namestitvenega paketa za vsak paket.
- -U bo vključeval UID paketa za vsak paket.
- -u bo vključeval nenameščene pakete.
- --show-versioncode bo vključeval kodo različice za vsak paket.
- --samo vrh bo vrnil samo pakete APEX.
- --uid bo prikazal samo pakete z danim UID.
- --uporabnik bo prikazal samo pakete, ki pripadajo podanemu ID-ju uporabnika.
Nameščanje in odstranjevanje aplikacij prek ADB
To je relativno pogosta uporaba ADB, vendar jo je vseeno vredno omeniti. Med drugimi načini lahko uporabite tudi ADB za namestitev in odstranitev aplikacij za Android na vašo napravo Android.
Namestitev APK-ja
Če imate v računalniku APK, ga lahko namestite v svojo napravo z naslednjim:
adbinstall-rsomeapk.apk
Ne pozabite zamenjati someapk.apk
s celotno potjo do APK-ja, ki ga želite namestiti.
Opcije
Obstaja veliko možnosti za namestitev APK-jev prek ADB.
- The -r možnost ADB omogoča namestitev nad obstoječo aplikacijo (tj. posodobitev). V sistemu Android Pie in novejših vam te možnosti ni treba določiti.
- The -R možnost za Android Pie in novejše bo povzročilo neuspeh namestitve, če je aplikacija že nameščena.
- The -jaz vam omogoča, da določite ime paketa namestitvenega programa. To je tisto, kar se vrne, če Android želi vedeti, kaj je namestilo APK.
- The -t možnost omogoča APK z android: testOnly="true" v svojem manifestu, ki ga je treba namestiti.
- The -d možnost omogoča, da je navedeni APK vrnitev na že nameščeno aplikacijo. To deluje le, če je mogoče obe različici aplikacije odpraviti napake.
- The -g možnost za Android Marshmallow in pozneje samodejno dodeli vsa dovoljenja za izvajanje nameščeni aplikaciji.
To niso vsi. Če želite popoln seznam, si lahko ogledate vgrajeno dokumentacijo.
Več APK-jev in svežnjev
Če imate več APK-jev, ki jih želite namestiti hkrati, bodisi iz več aplikacij ali ker nameščate aplikacijski sveženj, lahko uporabite ADB install-multiple
in install-multi-package
Lastnosti.
Če so vsi vaši APK-ji za eno aplikacijo, uporabite install-multiple
:
adbinstall-multipleapk1.apkapk2.apk ...
V nasprotnem primeru uporabite install-multi-package
:
adbinstall-multi-packageapp1.apkapp2.apk ...
Možnosti za te ukaze so podobne install
, vendar z nekaterimi omejitvami. Oglejte si vgrajeno dokumentacijo ADB, katere možnosti so na voljo.
Odstranjevanje aplikacije
Za odstranitev z ADB boste potrebovali ime paketa aplikacije, ki jo želite odstraniti. Oglejte si razdelek za Prikaz nameščenih aplikacij če še niste.
Ko imate ime paketa, je odstranitev preprosta kot:
adb uninstall <packagename>
Na splošno s tem ukazom ne morete odstraniti sistemskih ali vnaprej nameščenih aplikacij. Morda pa jih lahko onemogočite z ADB. Oglejte si razdelek Onemogočanje in omogočanje skoraj vseh aplikacij za podrobnosti.
Ekstrahiranje APK-jev z ADB
Obstaja veliko razlogov, zakaj bi morda želeli ekstrahirati APK(-e) za aplikacijo. Morda ga želite varnostno kopirati za prihodnjo uporabo ali pa morda ni več na voljo v spletu in ga želite prenesti v drugo napravo.
Ekstrahiranje aplikacije z ADB je precej preprosto. Najprej boste želeli najti ime paketa aplikacije, ki jo želite ekstrahirati. To lahko storite na več načinov, vendar je najlažji običajno uporaba aplikacije Nastavitve vaše naprave za ogled seznam vseh nameščenih aplikacij, izberite želeno in se pomaknite navzdol, dokler ne najdete imena paketa ali aplikacije ID.
Ko imate ime paketa, zaženite naslednji ukaz:
adb shell pm path <packagename>
Ta ukaz bo vrnil pot vseh APK-jev za to ime paketa.
Nato lahko z naslednjim ukazom povlečete vsak APK v svoj računalnik:
adb pull /path/to/apk.apk
Varnostno kopiranje in obnavljanje podatkov aplikacije
Čeprav Google še ni pripravil metodologije varnostnega kopiranja z enim klikom v slogu iOS-a, lahko uporabite ADB za varnostno kopiranje in obnovitev nameščenih aplikacij skupaj z njihovimi podatki. Vendar pa funkcionalnost še zdaleč ni popolna in Google je že označil funkcijo kot zastarelo.
Rezerva
Če želite varnostno kopirati posamezno aplikacijo z njenim APK-jem:
adb backup -apk <packagename> -f package_name_backup.ab
Če želite varnostno kopirati vse podatke aplikacije hkrati:
adb backup -f all -all -apk -nosystem
Ker obnovitveni modul ne more izvesti posamezne obnovitve, specifične za aplikacijo, je bolje ustvariti varnostne kopije, specifične za paket. Naslednji delček ukaza (združljiv z Linux/macOS in podsistemom Windows za Linux) lahko to stori namesto vas:
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
Obnovi
Najprej morate namestiti shranjeni APK;
adb install <packagename>.apk
Nato lahko obnovite njegove podatke:
adbrestorepackage_name_backup.ab
Če ponovim, imajo funkcije varnostnega kopiranja in obnovitve ADB več opozoril, vključno s spremenljivimi rezultati glede na ROM
Navajanje komponent aplikacije
Komponente aplikacije so stvari, kot so njene dejavnosti, BroadcastReceivers, storitve itd. Včasih je koristno poznati imena teh komponent v določeni aplikaciji, zlasti če želite zagnati skrite dejavnosti ali poslati oddajo z določenimi podatki.
Na žalost ADB nima zelo čistega načina navajanja komponent aplikacije. Vendar je možno. Zaženite naslednji ukaz:
adb shell dumpsys package
Cel kup besedila bo vrnjen.
- Pomikajte se, dokler ne najdete Tabela razreševalnika dejavnosti naslov za ogled dejavnosti.
- Poglej pod Tabela razreševalnika sprejemnika za BroadcastReceivers.
- Preverite Tabela razreševalnika storitve za storitve.
- In tako naprej.
Vsaka komponenta bo prikazala dejanje, potrebno za zagon, ime komponente in morebitne dodatne informacije.
Če želite lažji način za ogled dejavnosti, storitev in sprejemnikov, lahko uporabite aplikacijo Root Activity Launcher priznanega razvijalca XDA Zacharee1. Pokazal vam bo te komponente za vsako aplikacijo, skupaj s kopico drugih priročnih funkcij.
Cena: 0,99.
Zagon dejavnosti, storitev in oddajnih sprejemnikov
ADB se lahko uporablja tudi za zagon dejavnosti, zagon storitev in obveščanje BroadcastReceivers. Po potrebi lahko celo določite podatkovne URI-je in dodatke namena.
Za zagon komponent boste potrebovali ime komponente, ki jo želite zagnati. Kako to pridobiti, si lahko ogledate v Seznam komponent aplikacije razdelek.
Sintaksa ukaza za zagon dejavnosti je približno takšna:
am start -a <action> -n <component>
Sintaksa ukaza za zagon storitve je približno takšna:
am startservice -a <action> -n <component>
Sintaksa ukaza za obveščanje BroadcastReceiverja je približno takšna:
am broadcast -a <action> -n <component>
V večini primerov vam za dejavnosti in storitve ni treba izrecno podati dejanja. Običajno ga boste potrebovali le, če komponenta uporablja drugega kot android.intent.action. GLAVNO.
Poleg osnovne sintakse je tukaj opisano, kako določiti več podatkov za posredovanje. Na splošno morajo biti vse vrednosti podatkov v dvojnih narekovajih.
- -d vam omogoča, da določite podatkovni URI.
- -e oz --es vam omogoča, da določite dodatek String.
- --esn vam omogoča, da podate dodaten ničelni niz.
- --ez se uporablja za določanje logičnega dodatka.
- --ei se uporablja za podajanje dodatnega celega števila.
- --el je za določanje dolgega dodatka.
- --ef bo prenesel float extra.
- --eu posreduje dodatni URI.
- --ecn lahko uporabite za določitev dodatnega imena komponente.
-
--eia
bo posredoval vrednosti kot dodatek Integer[]., ,... -
--eial
bo posredoval vrednosti kot seznam, ,... . - Isti argumenti matrike in seznama delujejo tudi za longs, float in nize. Samo zamenjajte jaz z ustrezno črko.
- -f vam omogoča, da določite zastavo.
Uporabite lahko še več možnosti vedenja, zato za podrobnosti preverite vgrajeno dokumentacijo.
Onemogočanje in omogočanje skoraj vseh aplikacij
Sistemskih aplikacij v sistemu Android ni mogoče odstraniti in na žalost jih veliko tudi ni mogoče onemogočiti v nastavitvah. Čeprav vam ADB ne dovoli, da jih odstranite, vam jih lahko pomaga onemogočiti.
Najprej se prepričajte, da dobite ime paketa aplikacije, ki jo želite onemogočiti. Nato poskusite te ukaze. Če ena ne uspe, poskusite naslednjo možnost.
-
pm onemogoči
- Če želite znova omogočiti, uporabite pm omogoči
-
pm disable-user --user 0
- Če želite znova omogočiti, uporabite pm omogoči
-
pm skrij
- Če želite znova omogočiti, uporabite pm razkrij
-
popoldne prekine
- Če želite znova omogočiti, uporabite pm unsuspend
-
pm uninstall -k --user 0
- Če želite znova omogočiti, uporabite pm namestitev-obstoječe
- Ta dejansko odstrani aplikacijo iz vašega uporabniškega profila. Medtem ko je ukaz za ponovno vklop naj delo, ni zagotovila, da bo. Za obnovitev aplikacije boste morda morali ponastaviti na tovarniške nastavitve.
- Če v napravi uporabljate več uporabniških profilov, ne pozabite zamenjati 0 v zgornjih ukazih z dejanskim uporabniškim ID-jem, ki ga imate.
- Če želite znova omogočiti, uporabite pm namestitev-obstoječe
Če želite izvedeti več, si oglejte našo vadnico o kako odstraniti napihnjeno programsko opremo operaterja in OEM brez korenskega dostopa.
Zajemanje posnetkov zaslona
Večina ROM-ov za Android ponuja dva priročna pripomočka lupine - screencap in screenrecord - za snemanje posnetkov zaslona oziroma snemanje dejavnosti na zaslonu. Pokličete jih lahko neposredno iz lupine ADB, da posnamete statični posnetek zaslona ali videoposnetek zaslona telefona in ga shranite neposredno v notranji pomnilnik naprave.
Sintaksa za zajem posnetka zaslona je precej preprosta:
adb shell screencap /sdcard/screenshot.png
Podobno, če želite zajeti dinamični posnetek zaslona, naredite naslednje:
adb shell screenrecord /sdcard/recording.mp4
Kot lahko pričakujete, je orodje screencap precej preprosto, medtem ko pripomoček screenrecord ponuja več parametrov. Možnosti za slednje so naslednje:
-
--velikost ŠIRINA x VIŠINA
- Nastavite ločljivost video datoteke (npr. "1280x720"). Privzeto poskuša vzeti glavno ločljivost zaslona ciljne naprave (če je podprta) in se vrne na 1280x720, če ni.
-
--bitna hitrost RATE
- Nastavite bitno hitrost videa v bitih na sekundo. Vrednost je lahko podana kot biti ali megabiti, npr. '4000000' je enakovredno '4M'.
-
--poročilo o napaki
- Dodate lahko dodatne informacije, kot je prekrivanje časovnega žiga, ki je lahko uporabno za ponazoritev napak.
-
--time-limit ČAS
- Nastavite najdaljši čas snemanja v sekundah. Privzeto/največje je 180.
-
--display-id ID
- Določite ID fizičnega zaslona za snemanje. Privzeti je nastavljen na primarni zaslon. Glejte »dumpsys SurfaceFlinger --display-id« za veljavne prikazne ID-je.
-
--besedno
- Prikažite poglobljene informacije o snemalni seji.
Zmogljivosti orodij za zajem zaslona, vgrajenih v sistem Android, lahko dodatno razširite tako, da scrcpy. Je odprtokodna rešitev za zrcaljenje zaslona, ki izkorišča moč ADB.
Prenos binarnih podatkov med osebnim računalnikom in napravo Android
V primeru, da ne želite ustvariti polne lupine ADB, ampak želite vključiti poenostavljen prehod binarnih podatkov med gostiteljskim računalnikom in ciljno napravo Android, lahko uporabite exec-in
in exec-out
ukazi.
Kljub njihovemu podaljšan obstoj, sta ukaza exec-in in exec-out še vedno nedokumentirana. Lahko povzročijo poškodbe datotek zaradi načina, kako različne lupine obravnavajo vhode in izhode. Uporabljajte previdno.
Prvi vam pomaga izvesti ukaz v sistemu Android in podati nefiltriran vnos konzole kot njegov parameter, medtem ko drugi naredi ravno nasprotno, tj. zažene ukaz v sistemu Android in zajame njegov nefiltriran binarni izhod s strani gostiteljskega OS.
primer:
adb exec-out "screencap -p" > "D:\screenshot.png"
To bo uporabilo screencap
ukaz Android za zajem posnetka zaslona telefona, vendar ga neposredno shrani kot screenshot.png v particijo D: gostiteljskega računalnika (pod pogojem, da ima nameščen Windows). Po drugi strani,
adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"
To bo ekstrahiralo vsebino datoteke backup.tar, shranjene v particiji D: gostiteljskega računalnika (z operacijskim sistemom Windows) v korenu notranjega pomnilnika naprave Android.
ADB je neverjetno zmogljivo orodje in lahko naredi veliko več kot le to, kar je zgoraj. Ukazi v tem članku so le uporabna izhodiščna točka. Za naprednejšo uporabo si oglejte ukaze, kot je cmd -l da si ogledate različne storitve, s katerimi bi morda lahko komunicirali, in ls -l /sistem/bin da si ogledate različne izvršljive ukaze, ki so na voljo v vašem Android ROM-u.
Za druga potovanja in kljukice za Android si oglejte naše vodnike na kako rootati svoj pametni telefon Android, kako namestiti obnovitev TWRP, in kako namestiti ROM po meri v napravo Android.