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 devices
Teraz použite -s
možnosť zadať sériové číslo cieľového zariadenia. Príklad:
adb -s <serialnumber> shell
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ť pull
na kopírovanie súborov a adresárov zo zariadenia a push
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.
- Prvým je lolcat, prikývnutie LOLcat meme. Poskytuje rovnaký výstup ako bežný príkaz logcat.
adb lolcat
- 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 list packages
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 package:
.
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:
adbinstall-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-packageapp1.apkapp2.apk ...
Možnosti pre tieto príkazy sú podobné ako install
, 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:
adb uninstall <packagename>
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 path <packagename>
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 backup -apk <packagename> -f package_name_backup.ab
V prípade, že chcete zálohovať všetky dáta aplikácie naraz:
adb backup -f all -all -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:
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
Obnoviť
Najprv musíte nainštalovať uložený súbor APK;
adb install <packagename>.apk
Potom môžete obnoviť jeho údaje:
adbrestorepackage_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 package
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í.
Cena: 0,99.
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:
am start -a <action> -n <component>
Syntax príkazu na spustenie služby je približne takáto:
am startservice -a <action> -n <component>
Syntax príkazu na oznamovanie BroadcastReceiver je niečo takéto:
am broadcast -a <action> -n <component>
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 znova povoliť, použite pm inštalácia-existujúca
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-out "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-in"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.