Tipy a triky ADB: Príkazy, o ktorých by mal vedieť každý skúsený používateľ

V Android Debug Bridge je toho veľa, o čom ste možno nevedeli. Kliknite sem pre niekoľko užitočných tipov a trikov na používanie ADB!

Rýchle odkazy

  • Shell prístup
  • Pripojenie k viacerým zariadeniam
  • Prenos súborov
  • Ťažba dreva
  • Výpis nainštalovaných aplikácií cez ADB
  • Inštalácia a odinštalovanie aplikácií cez ADB
  • Extrahovanie súborov APK pomocou ADB
  • Zálohovanie a obnova údajov aplikácie
  • Výpis komponentov aplikácie
  • Spustenie aktivít, služieb a vysielacích prijímačov
  • Zakázanie a povolenie takmer akejkoľvek aplikácie
  • Snímanie snímok obrazovky
  • Prenos binárnych dát medzi PC a Android zariadením

Ak ste boli nadšencom Androidu, ktorý číha na scéne moddingu, alebo vývojárom aplikácií akejkoľvek dĺžky skôr či neskôr narazíte na úhľadný nástroj s názvom Android Debug Bridge alebo ADB pre krátky. Je široko používaný v Android Studio ako sprievodný nástroj príkazového riadku. Vývojári systému Android ho tiež používajú ako samostatné riešenie na manuálnu inštaláciu a testovanie aplikácií smartfóny so systémom Android ako aj emulované zariadenia so systémom Android.

ADB však dokáže urobiť veľa a väčšina z toho nie je užitočná len pre vývojárov. Aj keď nie ste vývojár a čítate tento článok, existuje veľká šanca, že ste pravdepodobne raz alebo dvakrát použili ADB bočné načítanie aplikácie alebo upraviť povolenie. Ale to nie je všetko, na čo sa dá ADB použiť. Pokračujte v čítaní niektorých tipov a trikov na používanie ADB, o ktorých ste možno nevedeli.

V počítači musíte mať spustenú a spustenú ADB. Určite si pozrite náš článok o ako nainštalovať ADB ak potrebujete pomoc. V prípade, že používate Windows, musíte tiež nainštalujte príslušné ovládače USB OEM pre vaše zariadenie Android.

Shell prístup

Ak ste už predtým používali ADB, možno ste zvyknutí spúšťať príkazy v jednom riadku. ADB však môžete použiť aj na otvorenie shellu terminálu na vašom zariadení a priame spustenie príkazov. A je to jednoduché!

V okne terminálu alebo príkazového riadka:

adb shell

Potom vás privíta a $ symbol, kde môžete spúšťať príkazy priamo na vašom zariadení.

Pripojenie k viacerým zariadeniam

ADB môže komunikovať s viacerými zariadeniami súčasne. Pri vydávaní príkazov ADB v takýchto scenároch však musíte zadať cieľové zariadenie.

Ak to chcete urobiť, musíte poznať sériové číslo cieľového zariadenia. Serial môžete získať pomocou príkazu devices:

adb zariadenia

Teraz použite -s možnosť zadať sériové číslo cieľového zariadenia. Príklad:

adb -s <sériovýčíslo> škrupina

Prenos súborov

Pre fanúšikov príkazového riadku poskytuje ADB veľmi jednoduchý spôsob prenosu súborov do a z vášho zariadenia so systémom Android. Stačí použiť SEM na kopírovanie súborov a adresárov zo zariadenia a TAM príkaz na kopírovanie súborov a adresárov do zariadenia:

Ak chcete skopírovať súbor alebo adresár s jeho podadresármi do zariadenia Android:

adb push local_path device_path
  • Príklad: adb push D:\image.png /sdcard

Nasledujúci príkaz skopíruje súbor alebo adresár s jeho podadresármi zo zariadenia Android do hostiteľského počítača:

adb pull device_path local_path
  • Príklad: adb pull /sdcard/backup_April.tar D:\Backup

Ťažba dreva

Android Studio poskytuje Okno Logcat, ktorý podporuje zobrazovanie protokolov z vášho zariadenia v reálnom čase. Nie je to však úplne užitočné pre dávkové spracovanie. Našťastie sa zariadenia so systémom Android dodávajú s príkazom logcat dostupným prostredníctvom ADB, ktorý možno použiť na výpis správ denníka systému a aplikácií a ich vytlačenie na obrazovku.

Základná syntax je nasledovná:

adb logcat

Ak chcete vedieť viac, pozrite si náš návod na ako prevziať systémové protokoly, protokoly jadra a dmesg v systéme Android.

veľkonočné vajíčka

Google ponúka dve šikovné veľkonočné vajíčka súvisiace s príkazom logcat.

  1. Prvým je lolcat, prikývnutie LOLcat meme. Poskytuje rovnaký výstup ako bežný príkaz logcat.
    adb lolcat
  2. Druhým je longcat, čo je ekvivalent príkazu logcat -v long. Zobrazuje všetky polia metadát a samostatné správy s prázdnym riadkom.
    adb longcat

Výpis nainštalovaných aplikácií cez ADB

Ak chcete zobraziť nainštalované aplikácie vo svojom zariadení, môžete použiť nasledujúci príkaz:

adb shell pm zoznam balíkov

Tým sa vráti zoznam názvov balíkov nainštalovaných aplikácií, pričom každý z nich je na samostatnom riadku balík:.

možnosti

Existuje aj niekoľko možností, ktoré môžete použiť na získanie špecifickejších zoznamov.

  • -f bude obsahovať cestu k základnému súboru APK pre každú aplikáciu spolu s názvom jej balíka.
  • -a zabezpečí, aby boli vrátené všetky známe balíky, ktoré nie sú APEX.
  • -d spôsobí, že príkaz vráti iba zakázané balíky.
  • -e spôsobí, že príkaz vráti iba povolené balíky.
  • -s spôsobí, že príkaz vráti iba systémové balíky.
  • -3 spôsobí, že príkaz vráti iba balíky tretích strán.
  • -i bude obsahovať názov inštalačného balíka pre každý balík.
  • -U bude obsahovať UID balíka pre každý balík.
  • -u bude obsahovať odinštalované balíčky.
  • --show-versioncode bude obsahovať kód verzie pre každý balík.
  • --len vrchol vráti iba balíky APEX.
  • --uid zobrazí iba balíky s daným UID.
  • --užívateľ zobrazí iba balíky patriace danému ID užívateľa.

Inštalácia a odinštalovanie aplikácií cez ADB

Ide o pomerne bežné využitie ADB, no aj tak to stojí za zmienku. Okrem iného môžete využiť aj ADB na inštalovať a odinštalovať aplikácie pre Android do vášho zariadenia so systémom Android.

Inštalácia súboru APK

Ak máte v počítači súbor APK, môžete si ho nainštalovať do zariadenia nasledujúcim spôsobom:

adbInštalácia-rsomeapk.apk

Nezabudnite vymeniť someapk.apk s úplnou cestou k súboru APK, ktorý chcete nainštalovať.

možnosti

Existuje veľa možností na inštaláciu súborov APK prostredníctvom ADB.

  • The -r možnosť umožňuje ADB inštalovať cez existujúcu aplikáciu (t. j. aktualizovať). V systéme Android Pie a novších nemusíte túto možnosť špecifikovať.
  • The -R pre Android Pie a novší spôsobí zlyhanie inštalácie, ak je aplikácia už nainštalovaná.
  • The -i voľba vám umožňuje zadať názov inštalačného balíka. Toto sa vráti, ak chce Android vedieť, čo nainštalovalo súbor APK.
  • The -t možnosť umožňuje súbor APK s android: testOnly="true" vo svojom manifeste, ktorý sa má nainštalovať.
  • The -d možnosť umožňuje, aby špecifikovaný súbor APK prešiel na nižšiu verziu už nainštalovanej aplikácie. Funguje to iba vtedy, ak sú obe verzie aplikácie laditeľné.
  • The -g možnosť pre Android Marshmallow a novší automaticky udeľuje všetky oprávnenia na spustenie nainštalovanej aplikácii.

To nie sú všetky. Ak chcete úplný zoznam, môžete si pozrieť vstavanú dokumentáciu.

Viaceré súbory APK a balíky

Ak máte veľa súborov APK, ktoré chcete nainštalovať naraz, buď z viacerých aplikácií, alebo pretože inštalujete balík aplikácií, môžete použiť ADB install-multiple a install-multi-package Vlastnosti.

Ak sú všetky vaše súbory APK pre jednu aplikáciu, použite install-multiple:

adbinstall-multipleapk1.apkapk2.apk ...

V opačnom prípade použite install-multi-package:

adbinstall-multi-packageaplikácia 1.apkaplikácia2.apk ...

Možnosti pre tieto príkazy sú podobné ako Inštalácia, ale s určitými obmedzeniami. Pozrite si vstavanú dokumentáciu ADB, kde sú dostupné možnosti.

Odinštalovanie aplikácie

Ak chcete odinštalovať pomocou ADB, budete potrebovať názov balíka aplikácie, ktorú chcete odinštalovať. Pozrite si sekciu pre Výpis nainštalovaných aplikácií ak ste to ešte neurobili.

Keď máte názov balíka, odinštalovanie je také jednoduché ako:

odinštalovanie adb <názov balíka>

Pomocou tohto príkazu vo všeobecnosti nemôžete odinštalovať systém alebo predinštalované aplikácie. Môžete ich však zakázať pomocou ADB. Pozrite si sekciu Zakázanie a povolenie takmer akejkoľvek aplikácie pre podrobnosti.

Extrahovanie súborov APK pomocou ADB

Existuje veľa dôvodov, prečo by ste mohli chcieť extrahovať súbory APK pre aplikáciu. Možno ho chcete zálohovať pre budúce použitie alebo možno už nie je k dispozícii online a chcete ho preniesť na iné zariadenie.

Extrahovanie aplikácie pomocou ADB je celkom jednoduché. Najprv budete chcieť nájsť názov balíka aplikácie, ktorú chcete extrahovať. Existuje niekoľko spôsobov, ako to urobiť, ale najjednoduchšie je zvyčajne použiť na zobrazenie aplikáciu Nastavenia vášho zariadenia zoznam všetkých nainštalovaných aplikácií, vyberte tú, ktorú chcete, a posúvajte sa nadol, kým nenájdete názov balíka alebo aplikáciu ID.

Keď máte názov balíka, spustite nasledujúci príkaz:

adb shell pm cesta <názov balíka>

Tento príkaz vráti cestu všetkých súborov APK pre daný názov balíka.

Potom môžete použiť nasledujúci príkaz na stiahnutie každého súboru APK do počítača:

adb pull /path/to/apk.apk

Zálohovanie a obnova údajov aplikácie

Hoci Google ešte neprišiel s metodikou zálohovania jedným kliknutím v štýle iOS, môžete použiť ADB na zálohovanie a obnovenie nainštalovaných aplikácií spolu s ich údajmi. Funkcionalita však zďaleka nie je dokonalá a Google to už dokázal označil funkciu ako zastaranú.

Zálohovať

Ak chcete zálohovať jednu aplikáciu s jej súborom APK:

adb zálohovanie -apk <balíknázov> -f názov_balíka záloha.ab

V prípade, že chcete zálohovať všetky dáta aplikácie naraz:

adb zálohovanie -f všetky -všetky -apk -nosystem

Keďže modul obnovy nedokáže vykonať obnovu špecifickú pre jednotlivé aplikácie, je lepšie vytvoriť zálohy špecifické pre balík. Nasledujúci úryvok príkazu (kompatibilný so systémom Linux/macOS a Windows Subsystem for Linux) to môže urobiť za vás:

pre APP v $(adb shell pm zoznam balíkov -3)
robiť
APP=$( ozvena${APP} | sed "s/^package://")
záloha adb -f ${APP}.zálohovanie ${APP}
hotový

Obnoviť

Najprv musíte nainštalovať uložený súbor APK;

adb Inštalácia <balíknázov>.apk

Potom môžete obnoviť jeho údaje:

adbobnoviťpackage_name_backup.ab

Aby som to zopakoval, funkcie zálohovania a obnovy ADB majú viacero upozornení vrátane premenlivých výsledkov v závislosti od ROM

Výpis komponentov aplikácie

Komponenty aplikácie sú veci ako jej aktivity, prijímače vysielania, služby atď. Niekedy je užitočné poznať názvy týchto komponentov v konkrétnej aplikácii, najmä ak chcete spustiť skryté aktivity alebo odoslať vysielanie s konkrétnymi údajmi.

Bohužiaľ, ADB nemá veľmi čistý spôsob uvádzania komponentov aplikácie. Ale je to možné. Spustite nasledujúci príkaz:

adb shell dumpsys balík

Vráti sa celá hromada textu.

  • Posúvajte sa, kým nenájdete Tabuľka rozlíšenia aktivity názov na zobrazenie Aktivity.
  • Pozrite sa pod Tabuľka Resolver Resolution Table pre BroadcastReceivers.
  • Skontrolovať Tabuľka riešenia služieb pre Služby.
  • A tak ďalej.

Každý komponent zobrazí akciu potrebnú na jeho spustenie, názov komponentu a prípadne nejaké ďalšie informácie.

Prípadne, ak chcete jednoduchší spôsob zobrazenia aktivít, služieb a prijímačov, môžete použiť aplikáciu Root Activity Launcher od XDA Recognized Developer Zacharee1. Ukáže vám tieto komponenty pre každú aplikáciu spolu s množstvom ďalších užitočných funkcií.

Spúšťač koreňovej aktivityVývojár: Zachary Wander

Cena: 0,99.

Stiahnuť ▼

Spustenie aktivít, služieb a vysielacích prijímačov

ADB možno použiť aj na spustenie aktivít, spustenie služieb a upozorňovanie vysielačov. V prípade potreby môžete dokonca zadať identifikátory URI údajov a doplnky zámerov.

Na spustenie komponentov budete potrebovať názov komponentu, ktorý chcete spustiť. Môžete vidieť, ako to získať z Výpis komponentov aplikácie oddiele.

Syntax príkazu na spustenie aktivity je približne takáto:

začínam -a <akcie> -n <komponent>

Syntax príkazu na spustenie služby je približne takáto:

som startservice -a <akcie> -n <komponent>

Syntax príkazu na oznamovanie BroadcastReceiver je niečo takéto:

som vysielaný -a <akcie> -n <komponent>

Vo väčšine prípadov v prípade aktivít a služieb nemusíte explicitne špecifikovať akciu. Zvyčajne ho budete potrebovať iba vtedy, ak komponent používa iný ako android.intent.akcia. HLAVNÁ.

Okrem základnej syntaxe je tu návod, ako zadať ďalšie údaje, ktoré sa majú odovzdať. Vo všeobecnosti by všetky hodnoty údajov mali byť uzavreté v dvojitých úvodzovkách.

  • -d umožňuje zadať URI údajov.
  • -e alebo --es umožňuje zadať reťazec navyše.
  • --esn vám umožňuje zadať nulový reťazec navyše.
  • --ez sa používa na určenie boolovskej extra.
  • --ei sa používa na zadanie celého čísla navyše.
  • --el slúži na upresnenie dlhého extra.
  • --ef prejde plavák navyše.
  • --EÚ odovzdá URI navyše.
  • --ecn možno použiť na špecifikovanie názvu komponentu navyše.
  • --eia ,,... odovzdá hodnoty ako celé číslo[] navyše.
  • --eial ,,... odovzdá hodnoty ako zoznam.
  • Rovnaké argumenty poľa a zoznamu fungujú aj pre longs, floats a Strings. Stačí vymeniť i s príslušným písmenom.
  • -f umožňuje určiť príznak.

Existuje ešte viac možností správania, ktoré môžete použiť, takže podrobnosti nájdete v vstavanej dokumentácii.

Zakázanie a povolenie takmer akejkoľvek aplikácie

Systémové aplikácie v systéme Android sa nedajú odinštalovať a žiaľ, mnohé z nich sa tiež nedajú deaktivovať cez Nastavenia. Hoci vám ADB nedovolí ich odinštalovať, môže vám pomôcť zakázať ich.

Najprv sa uistite, že získate názov balíka aplikácie, ktorú chcete zakázať. Potom vyskúšajte tieto príkazy. Ak jedna zlyhá, skúste ďalšiu možnosť.

  • pm vypnúť
    • Ak chcete znova povoliť, použite pm povoliť
  • pm disable-user --user 0
    • Ak chcete znova povoliť, použite pm povoliť
  • pm skryť
    • Ak chcete znova povoliť, použite pm odkryť
  • pm pozastavenie
    • Ak chcete znova povoliť, použite pm unspend
  • pm odinštalovať -k --user 0
    • Ak chcete znova povoliť, použite pm inštalácia-existujúca
      • Tento efektívne odinštaluje aplikáciu z vášho používateľského profilu. Zatiaľ čo príkaz znovu povoliť by mal fungovať, nie je zaručené, že bude. Na obnovenie aplikácie možno budete musieť obnoviť továrenské nastavenia.
      • Ak na svojom zariadení používate viacero používateľských profilov, nezabudnite nahradiť 0 v príkazoch vyššie skutočným ID používateľa, ktoré máte.

Ak chcete vedieť viac, pozrite si náš návod na ako odinštalovať bloatware operátora a OEM bez prístupu root.

Snímanie snímok obrazovky

Väčšina ROM s Androidom ponúka dva praktické nástroje shell – screencap a screenrecord – na vytváranie snímok obrazovky a zaznamenávanie aktivít na obrazovke. Môžete im zavolať priamo z prostredia ADB, aby ste zachytili statickú snímku obrazovky alebo úryvok videa z obrazovky telefónu a uložili ich priamo do internej pamäte zariadenia.

Syntax na zachytenie snímky obrazovky je celkom jednoduchá:

adb shell screencap /sdcard/screenshot.png

Podobne, ak potrebujete zachytiť dynamický screengrab, postupujte takto:

adb shell screenrecord /sdcard/recording.mp4

Ako sa dalo očakávať, nástroj screencap je pomerne jednoduchý, zatiaľ čo nástroj screenrecord ponúka niekoľko parametrov. Možnosti pre posledné sú nasledovné:

  • --veľkosť WIDTHxHEIGHT
    • Nastavte rozlíšenie video súboru (napr. „1280x720“). V predvolenom nastavení sa pokúsi použiť hlavné rozlíšenie displeja cieľového zariadenia (ak je podporované) a ak nie, vráti sa späť na 1280 x 720.
  • --bitová rýchlosť
    • Nastavte bitovú rýchlosť videa v bitoch za sekundu. Hodnota môže byť špecifikovaná ako bity alebo megabity, napr. '4000000' je ekvivalentné '4M'.
  • --hlásenie o chybe
    • Môžete pridať ďalšie informácie, ako napríklad prekrytie časovej pečiatky, čo môže byť užitočné na ilustráciu chýb.
  • --time-limit TIME
    • Nastavte maximálny čas nahrávania v sekundách. Predvolená / maximálna hodnota je 180.
  • --display-id ID
    • Zadajte ID fyzického zobrazenia, ktoré chcete zaznamenať. Predvolená je nastavená na primárny displej. Platné ID displeja nájdete v časti „dumpsys SurfaceFlinger --display-id“.
  • --verbózny
    • Zobrazte podrobné informácie o relácii nahrávania.

Možnosti vstavaných nástrojov na snímanie obrazovky systému Android môžete ďalej rozšíriť pomocou scrcpy. Je to open source riešenie zrkadlenia obrazovky, ktoré využíva silu ADB.

Prenos binárnych dát medzi PC a Android zariadením

V prípade, že nechcete vytvoriť plnohodnotný ADB shell, ale radi by ste medzi hostiteľský počítač a cieľové zariadenie so systémom Android začlenili zjednodušený prenos binárnych údajov, môžete využiť exec-in a exec-out príkazy.

Napriek ich predĺžená existencia, príkazy exec-in a exec-out sú stále nezdokumentované. Môžu viesť k poškodeniu súborov v dôsledku spôsobu, akým rôzne shelly spracovávajú vstupy a výstupy. Používajte opatrne.

Prvý z nich vám pomôže vykonať príkaz v systéme Android a načítať nefiltrovaný vstup konzoly ako jeho parameter, zatiaľ čo druhý robí presný opak, t.j. spustí príkaz v systéme Android a zachytí jeho nefiltrovaný binárny výstup hostiteľským OS.

Príklad:

adb exec-von "screencap -p" > "D:\screenshot.png"

Toto použije screencap príkaz systému Android na zachytenie snímky obrazovky telefónu, ale priamo ju uloží ako screenshot.png do oblasti D: hostiteľského počítača (za predpokladu, že používa systém Windows). Na druhej strane,

adb exec-v"cd /sdcard && tar -xf -" < "D:\backup.tar"

Týmto sa extrahuje obsah súboru backup.tar uloženého v oddiele D: hostiteľského počítača (so systémom Windows) v koreňovom adresári interného úložiska zariadenia Android.


ADB je neuveriteľne výkonný nástroj a dokáže oveľa viac, než len to, čo je uvedené vyššie. Príkazy v tomto článku sú len užitočným východiskovým bodom. Pre pokročilejšie použitie si pozrite príkazy ako cmd -l zobraziť rôzne služby, s ktorými by ste mohli interagovať a ls -l /system/bin aby ste videli rôzne spustiteľné súbory príkazov dostupné vo vašej Android ROM.

Ďalšie výlety a kliešte pre Android nájdete v našich sprievodcoch na ako rootovať smartfón s Androidom, ako nainštalovať obnovu TWRP, a ako nainštalovať vlastnú ROM na vašom zariadení so systémom Android.