ADB съвети и трикове: Команди, за които всеки опитен потребител трябва да знае

В Android Debug Bridge има много неща, за които може би не знаете. Щракнете тук за някои полезни съвети и трикове за използване на ADB!

бързи връзки

  • Shell достъп
  • Свързване към множество устройства
  • Прехвърляне на файлове
  • Сеч
  • Изброяване на инсталирани приложения чрез ADB
  • Инсталиране и деинсталиране на приложения чрез ADB
  • Извличане на APK с ADB
  • Архивиране и възстановяване на данни от приложението
  • Изброяване на компоненти на приложението
  • Стартиране на дейности, услуги и излъчващи приемници
  • Деактивиране и активиране на почти всяко приложение
  • Заснемане на екранни снимки
  • Прехвърляне на двоични данни между компютъра и устройството с Android

Ако сте ентусиаст на Android, дебнещ в сцената на модифициране, или сте разработчик на приложения за каквато и да е дълъг време, рано или късно, ще се натъкнете на чист инструмент, наречен Android Debug Bridge или ADB за къс. Той се използва широко в Android Studio като помощна програма за команден ред. Разработчиците на Android също го използват като самостоятелно решение за ръчно инсталиране и тестване на приложения

Android смартфони както и емулирани Android устройства.

Но ADB може да направи много и повечето от тях не са полезни само за разработчиците. Дори ако не сте програмист и четете тази статия, има голям шанс вероятно да сте използвали ADB веднъж или два пъти, за странично зареждане на приложение или настройте разрешение. Но това не е всичко, за което може да се използва ADB. Продължете да четете за някои съвети и трикове за използване на ADB, за които може да не сте знаели.

Ще трябва да имате включен и работещ ADB на вашия компютър. Не пропускайте да разгледате нашата статия за как да инсталирате ADB ако имате нужда от помощ. В случай, че използвате Windows, вие също трябва инсталирайте подходящите OEM USB драйвери за вашето Android устройство.

Shell достъп

Ако сте използвали ADB преди, може да сте свикнали да изпълнявате всички команди в един ред. Но можете също да използвате ADB, за да отворите терминална обвивка на вашето устройство и да изпълнявате команди директно. И е лесно!

Във вашия терминал или прозорец на командния ред:

adb обвивка

След това ще бъдете поздравени с a $ символ, където можете да изпълнявате команди директно на вашето устройство.

Свързване към множество устройства

ADB може да комуникира с множество устройства едновременно. Трябва обаче да посочите целевото устройство, когато издавате ADB команди в такива сценарии.

За да направите това, ще трябва да знаете серийния номер на целевото устройство. Можете да получите серийния номер, като използвате командата devices:

adb устройства

Сега използвайте опция за указване на серийния номер на целевото устройство. Пример:

adb -s <сериенномер> черупка

Прехвърляне на файлове

За любителите на командния ред ADB предоставя много лесен начин за прехвърляне на файлове към и от вашето Android устройство. Просто използвайте дръпнете команда за копиране на файлове и директории от устройството и тласък команда за копиране на файлове и директории на устройството:

Ако искате да копирате файл или директория с неговите поддиректории на устройството с Android:

adb push local_path device_path
  • Пример: adb push D:\image.png /sdcard

Следната команда ще копира файл или директория с неговите поддиректории от устройството с Android на хост компютъра:

adb изтегляне device_path local_path
  • Пример: adb тегли /sdcard/backup_April.tar D:\Backup

Сеч

Android Studio предоставя Прозорец на Logcat, който поддържа показване на регистрационни файлове от вашето устройство в реално време. Това обаче не е точно полезно за групова обработка. За щастие устройствата с Android се доставят с командата logcat, достъпна чрез ADB, която може да се използва за изхвърляне на системни и регистрационни съобщения на приложения и отпечатването им на екрана.

Основният синтаксис е както следва:

adb logcat

За да научите повече, разгледайте нашия урок за как да вземете системни logcats, регистрационни файлове на ядрото и dmesg на Android.

Великденски яйца

Google предлага две страхотни великденски яйца, свързани с командата logcat.

  1. Първият е lolcat, кимване към LOLcat мем. Тя дава същия резултат като обикновената команда logcat.
    adb lolcat
  2. Вторият е longcat, който е еквивалентен на командата logcat -v long. Той показва всички полета с метаданни и отделни съобщения с празен ред.
    adb longcat

Изброяване на инсталирани приложения чрез ADB

За да видите инсталираните приложения на вашето устройство, можете да използвате следната команда:

adb shell pm списък пакети

Това ще върне списък с имената на пакетите на инсталираните приложения, като всяко от тях е на свой собствен ред, предхождащо го пакет:.

Настроики

Има и някои опции, които можете да използвате, за да извлечете по-конкретни списъци.

  • -f ще включва пътя до основния APK за всяко приложение, заедно с името на неговия пакет.
  • ще се увери, че всички известни пакети, различни от APEX, са върнати.
  • ще накара командата да върне само деактивирани пакети.
  • ще накара командата да върне само разрешени пакети.
  • ще накара командата да върне само системни пакети.
  • -3 ще накара командата да върне само пакети на трети страни.
  • ще включва името на пакета на инсталатора за всеки пакет.
  • -U ще включва UID на пакета за всеки пакет.
  • -u ще включва деинсталирани пакети.
  • --покажи код на версията ще включва кода на версията за всеки пакет.
  • --само връх ще върне само APEX пакети.
  • --uid ще покаже само пакети с даден UID.
  • --потребител ще покаже само пакети, принадлежащи на дадения потребителски идентификатор.

Инсталиране и деинсталиране на приложения чрез ADB

Това е сравнително често срещана употреба на ADB, но все пак си струва да се спомене. Наред с други начини, можете също да използвате ADB за инсталирайте и деинсталирайте приложения за Android към вашето Android устройство.

Инсталиране на APK

Ако имате APK на вашия компютър, можете да го инсталирате на вашето устройство със следното:

adbИнсталирайsomeapk.apk

Не забравяйте да замените someapk.apk с пълния път до APK, който искате да инсталирате.

Настроики

Има куп опции за инсталиране на APK чрез ADB.

  • The опция позволява на ADB да инсталира върху съществуващо приложение (т.е. актуализация). В Android Pie и по-нови версии не е необходимо да указвате тази опция.
  • The опция за Android Pie и по-нови ще доведе до неуспешно инсталиране, ако приложението вече е инсталирано.
  • The опция ви позволява да посочите име на пакет на инсталационната програма. Това се връща, ако Android иска да знае какво е инсталирало APK.
  • The -T опция позволява APK с android: testOnly="true" в неговия манифест, за да бъде инсталиран.
  • The опция позволява посоченият APK да бъде понижаване до вече инсталирано приложение. Това работи само ако и двете версии на приложението са с възможност за отстраняване на грешки.
  • The -g опция за Android Marshmallow и по-късно автоматично предоставя всички разрешения за изпълнение на инсталираното приложение.

Това не са всички. Ако искате пълен списък, можете да разгледате вградената документация.

Множество APK файлове и пакети

Ако имате куп APK, които искате да инсталирате наведнъж, или от множество приложения, или защото инсталирате пакет от приложения, можете да използвате ADB инсталиране на множество и инсталиране на множество пакети Характеристика.

Ако всичките ви APK файлове са за едно приложение, използвайте инсталиране на множество:

adbинсталиране на множествоapk1.apkapk2.apk ...

В противен случай използвайте инсталиране на множество пакети:

adbинсталиране на множество пакетиприложение1.apkприложение2.apk ...

Опциите за тези команди са подобни на Инсталирай, но с някои ограничения. Проверете вградената документация на ADB за наличните опции.

Деинсталиране на приложение

За да деинсталирате чрез ADB, ще ви трябва името на пакета на приложението, което искате да деинсталирате. Разгледайте раздела за Изброява инсталираните приложения ако още не сте го направили.

След като имате името на пакета, деинсталирането е толкова просто, колкото:

adb деинсталиране <име на пакет>

По принцип не можете да деинсталирате системни или предварително инсталирани приложения с помощта на тази команда. Възможно е обаче да можете да ги деактивирате с ADB. Разгледайте секцията Деактивиране и активиране на почти всяко приложение за детайли.

Извличане на APK с ADB

Има много причини, поради които може да искате да извлечете APK(ите) за приложение. Може би искате да го архивирате за бъдеща употреба или може би вече не е достъпен онлайн и искате да го прехвърлите на друго устройство.

Извличането на приложение с помощта на ADB е доста просто. Първо ще искате да намерите името на пакета на приложението, което искате да извлечете. Има няколко начина да направите това, но най-лесният обикновено е да използвате приложението Настройки на вашето устройство, за да видите списък с всички инсталирани приложения, изберете това, което искате, и превъртете надолу, докато намерите името на пакета или приложението ДОКУМЕНТ ЗА САМОЛИЧНОСТ.

След като имате името на пакета, изпълнете следната команда:

adb shell pm път <име на пакет>

Тази команда ще върне пътя на всички APK файлове за това име на пакет.

След това можете да използвате следната команда, за да изтеглите всеки APK към вашия компютър:

adb тегли /path/to/apk.apk

Архивиране и възстановяване на данни от приложението

Въпреки че Google все още не е измислил методология за архивиране с едно кликване в стил iOS, можете да използвате ADB за архивиране и възстановяване на инсталирани приложения заедно с техните данни. Функционалността обаче далеч не е перфектна и Google вече го направи маркира функцията като отхвърлена.

Архивирайте

За да архивирате едно приложение с неговия APK:

adb архивиране -apk <пакетиме> -f име_на_пакет_backup.ab

В случай, че искате да архивирате всички данни на приложението наведнъж:

adb архивиране -f всичко -всичко -apk -nosystem

Тъй като модулът за възстановяване не може да извърши индивидуално възстановяване, специфично за приложението, по-добре е да създадете резервни копия, специфични за пакета. Следният команден фрагмент (съвместим с Linux/macOS и Windows подсистема за Linux) може да го направи вместо вас:

за ПРИЛОЖЕНИЕ в $(adb shell pm списък на пакети -3)
направи
APP=$( ехо${APP} | сед "s/^пакет://")
adb архивиране -f ${APP}.backup ${APP}
Свършен

Възстанови

Първо, трябва да инсталирате запазения APK;

adb Инсталирай <пакетиме>.apk

След това можете да възстановите данните му:

adbВъзстановипакет_име_резервно копие.ab

За да повторим, функциите за архивиране и възстановяване на ADB имат множество предупреждения, включително променливи резултати в зависимост от ROM

Изброяване на компоненти на приложението

Компонентите на приложението са неща като неговите дейности, BroadcastReceivers, услуги и т.н. Понякога е полезно да знаете имената на тези компоненти в конкретно приложение, особено ако искате да стартирате скрити дейности или да изпратите излъчване с конкретни данни.

За съжаление, ADB няма много ясен начин за изброяване на компонентите на приложението. Но е възможно. Изпълнете следната команда:

adb shell dumpsys пакет

Цял куп текст ще бъде върнат.

  • Превъртете, докато намерите Таблица за разрешаване на дейности заглавие, за да видите дейностите.
  • Погледни отдолу Таблица за преобразуване на приемника за BroadcastReceivers.
  • Проверете Таблица за разрешаване на услугата за услуги.
  • И така нататък.

Всеки компонент ще покаже действието, необходимо за стартирането му, името на компонента и евентуално допълнителна информация.

Като алтернатива, ако искате по-лесен начин да видите дейности, услуги и приемници, можете да използвате приложението Root Activity Launcher от XDA Recognized Developer Захари1. Той ще ви покаже тези компоненти за всяко приложение, заедно с куп други удобни функции.

Основна програма за стартиране на активностРазработчик: Захари Уондър

Цена: 0.99.

Изтегли

Стартиране на дейности, услуги и излъчващи приемници

ADB може също да се използва за стартиране на дейности, стартиране на услуги и уведомяване на BroadcastReceivers. Можете дори да посочите URI адреси на данни и екстри за намерения, ако е необходимо.

За да стартирате компоненти, ще ви трябва името на компонента на това, което искате да стартирате. Можете да видите как да го получите от Изброяване на компоненти на приложението раздел.

Синтаксисът на командата за стартиране на дейност е нещо подобно:

започвам -а <действие><компонент>

Синтаксисът на командата за стартиране на услуга е нещо подобно:

стартирам услуга -a <действие><компонент>

Синтаксисът на командата за уведомяване на BroadcastReceiver е нещо подобно:

излъчвам -а <действие><компонент>

В повечето случаи за дейности и услуги не е необходимо изрично да указвате действие. Обикновено ще ви трябва само ако компонентът използва друго освен android.intent.action. ОСНОВЕН.

В допълнение към основния синтаксис, ето как да посочите повече данни за предаване. По принцип всички стойности на данните трябва да бъдат затворени в двойни кавички.

  • ви позволява да посочите URI на данни.
  • или --es ви позволява да посочите допълнителен низ.
  • --esn ви позволява да посочите допълнителен нулев низ.
  • --ез се използва за указване на булева екстра.
  • --ei се използва за указване на цяло число.
  • --ел е за уточняване на дълга допълнителна.
  • --еф ще предаде float extra.
  • --ЕС предава допълнителен URI.
  • --ecn може да се използва за указване на допълнително име на компонент.
  • --eia ,,... ще предаде стойностите като Integer[] extra.
  • --eial ,,... ще предаде стойностите като списък.
  • Същите аргументи на масива и списъка също работят за дълги, плаващи и низове. Просто сменете аз със съответната буква.
  • -f ви позволява да посочите флаг.

Има още повече опции за поведение, които можете да използвате, така че вижте вградената документация за подробности.

Деактивиране и активиране на почти всяко приложение

Системните приложения в Android не могат да бъдат деинсталирани и, за съжаление, много от тях също не могат да бъдат деактивирани чрез Настройки. Докато ADB няма да ви позволи да ги деинсталирате, може да ви помогне да ги деактивирате.

Първо се уверете, че сте получили името на пакета на приложението, което искате да деактивирате. След това опитайте тези команди. Ако някой не успее, опитайте следващата опция.

  • pm деактивиране
    • За да активирате отново, използвайте pm активиране
  • pm disable-user --user 0
    • За да активирате отново, използвайте pm активиране
  • pm скрий
    • За да активирате отново, използвайте pm показване
  • следобед прекратявам
    • За да активирате отново, използвайте pm unsup
  • pm деинсталиране -k --user 0
    • За да активирате отново, използвайте pm инсталиране-съществуващ
      • Това ефективно деинсталира приложението от вашия потребителски профил. Докато командата за повторно активиране Трябва работи, няма гаранция, че ще стане. Може да се наложи да възстановите фабричните настройки, за да възстановите приложението.
      • Ако използвате няколко потребителски профила на вашето устройство, не забравяйте да замените 0 в командите по-горе с действителния потребителски идентификатор, който имате.

За да научите повече, вижте нашия урок за как да деинсталирате оператора и OEM раздутия софтуер без root достъп.

Заснемане на екранни снимки

Повечето Android ROM предлагат две удобни помощни програми за обвивка - screencap и screenrecord - съответно за правене на екранни снимки и записване на дейности на екрана. Можете да ги извикате директно от обвивката на ADB, за да заснемете статична екранна снимка или видео фрагмент от екрана на телефона си и да го запишете директно във вътрешната памет на устройството.

Синтаксисът за заснемане на екранна снимка е доста ясен:

adb shell screencap /sdcard/screenshot.png

По същия начин, ако трябва да вземете динамична екранна снимка, направете следното:

adb shell screenrecord /sdcard/recording.mp4

Както може да очаквате, инструментът за скрийнкап е доста прост, докато помощната програма за запис на екрана предлага няколко параметъра. Вариантите за последното са следните:

  • --размер WIDTHxHEIGHT
    • Задайте разделителната способност на видео файла (напр. "1280x720"). По подразбиране се опитва да вземе основната разделителна способност на дисплея на целевото устройство (ако се поддържа) и се връща обратно до 1280x720, ако не.
  • --битова скорост RATE
    • Задайте битрейт на видеото в битове в секунда. Стойността може да бъде посочена като битове или мегабити, напр. „4000000“ е еквивалентно на „4M“.
  • --доклад за грешка
    • Можете да добавите допълнителна информация, като наслагване на клеймо за време, което може да бъде полезно за илюстриране на грешки.
  • --time-limit TIME
    • Задайте максималното време за запис в секунди. По подразбиране / максимумът е 180.
  • --display-id ID
    • Посочете идентификатора на физическия дисплей за запис. По подразбиране е зададен основният дисплей. Вижте "dumpsys SurfaceFlinger --display-id" за валидни идентификатори на дисплея.
  • --многословен
    • Показване на подробна информация относно записващата сесия.

Можете допълнително да разширите възможностите на вградените в Android помощни програми за заснемане на екран чрез scrcpy. Това е решение за дублиране на екрана с отворен код, което използва силата на ADB.

Прехвърляне на двоични данни между компютъра и устройството с Android

В случай, че не искате да създадете пълноценна обвивка на ADB, но искате да включите рационализирано преминаване на двоични данни между хост компютъра и целевото устройство с Android, можете да използвате изпълнител и изп команди.

Въпреки техните продължително съществуване, командите exec-in и exec-out все още не са документирани. Те могат да доведат до повреда на файла поради начина, по който различните обвивки обработват входове и изходи. Използвайте с повишено внимание.

Първият ви помага да изпълните команда на Android и да подадете нефилтрирания конзолен вход като неин параметър, докато вторият прави точно обратното, т.е. изпълнява команда на Android и улавя нейния нефилтриран двоичен изход от хост ОС.

Пример:

adb изп-вън "screencap -p" > "D:\screenshot.png"

Това ще използва екранна шапка команда на Android за заснемане на екранна снимка на дисплея на телефона, но директно я запазва като screenshot.png в дяла D: на хост компютъра (при условие, че работи с Windows). От друга страна,

adb изп-в"cd /sdcard && tar -xf -" < "D:\backup.tar"

Това ще извлече съдържанието на файла backup.tar, съхранен в дяла D: на хост компютъра (работещ под Windows) в основата на вътрешната памет на устройството с Android.


ADB е невероятно мощен инструмент и може да направи много повече от това, което е по-горе. Командите в тази статия са само полезна отправна точка. За по-разширено използване вижте команди като cmd -l за да видите различни услуги, с които бихте могли да взаимодействате и ls -l /system/bin за да видите различните изпълними команди, налични във вашия Android ROM.

За други пътувания и отметки с Android вижте нашите ръководства на как да руутнете вашия смартфон с Android, как да инсталирате TWRP възстановяване, и как да инсталирате персонализиран ROM на вашето устройство с Android.