Nasveti in triki ADB: Ukazi, ki bi jih moral poznati vsak napredni uporabnik

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 si oglejte 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:

lupina adb

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 naprave

Zdaj pa uporabite -s možnost podajanja serijske številke ciljne naprave. primer:

adb -s <serijskištevilo> lupina

Prenos datotek

Za ljubitelje ukazne vrstice ADB ponuja zelo enostaven način za prenos datotek v napravo Android in iz nje. Samo uporabite potegni ukaz za kopiranje datotek in imenikov iz naprave in potiskati ukaz za kopiranje datotek in imenikov v napravo:

Če želite kopirati datoteko ali imenik z njegovimi podimeniki v napravo Android:

adb push lokalna_pot pot_naprave
  • 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 naprava_pot lokalna_pot
  • 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.

  1. Prvi je lolcat, prikimavanje LOLcat meme. Daje enak izhod kot običajni ukaz logcat.
    adb lolcat
  2. 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 lupina pm seznam paketi

To bo vrnilo seznam imen paketov nameščenih aplikacij, pri čemer bo vsak v svoji vrstici dodal paket:.

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:

adbnamestite-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 namestitev-več in install-multi-package Lastnosti.

Če so vsi vaši APK-ji za eno aplikacijo, uporabite namestitev-več:

adbnamestitev-večapk1.apkapk2.apk ...

V nasprotnem primeru uporabite install-multi-package:

adbinstall-multi-packageapp1.apkapp2.apk ...

Možnosti za te ukaze so podobne namestite, 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:

odstranitev adb <ime paketa>

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 pot <ime paketa>

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 rezerva -apk <paketime> -f ime_paketa_backup.ab

Če želite varnostno kopirati vse podatke aplikacije hkrati:

adb rezerva -f vse -vse -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:

za APP v $(adb shell pm seznam paketov -3)
narediti
APP=$( odmev${APP} | sed "s/^paket://")
adb backup -f ${APP}.rezerva ${APP}
Končano

Obnovi

Najprej morate namestiti shranjeni APK;

adb namestite <paketime>.apk

Nato lahko obnovite njegove podatke:

adbobnovitivarnostna kopija imena_paketa.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:

lupina adb dumpsys paket

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.

Korenski zaganjalnik dejavnostirazvijalec: Zachary Wander

Cena: 0,99.

Prenesi

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:

sem začetek -a <ukrepanje> -n <komponento>

Sintaksa ukaza za zagon storitve je približno takšna:

am startservice -a <ukrepanje> -n <komponento>

Sintaksa ukaza za obveščanje BroadcastReceiverja je približno takšna:

am oddaja -a <ukrepanje> -n <komponento>

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 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 izvršitelj in izvedba 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 izv-ven "screencap -p" > "D:\screenshot.png"

To bo uporabilo zaslonska slika 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 izv-v"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.