Как перестать бояться и полюбить adb
В последнее время все больше людей отказывается от получения root прав. У всех на это свои причины. Кто-то не хочет заморачиваться и читать сложные мануалы, кто-то боится потерять гарантию. Google тоже способствует этому, разрешая в новых версиях Android, хоть и не просто, но все же выполнять некоторые действия, которые без root были раньше невозможны. Речь сегодня пойдет о тонкой настройке через adb. Преимущественно статья написана для людей не имеющих root права на телефоне, для тех у кого все же root права есть - статья предоставляется как есть. Автор статьи не несет ответственности за ваши действия.
Для начала запомним что ни одно действие описанное в этой статье не может окирпичить ваш телефон. Вы не имеете root прав, а значит невозможно испортить какой-либо компонент системы. Это не касается ваших личных файлов и приложение, речь только о компонентах системы, о прошивке короче говоря. Так же данные действия никоим образом не могут повлиять на гарантию вашего телефона, собственно по тем же причинам. Без root мы просто не затрагиваем системные компоненты. Используем только то что разрешает нам сама система, как пользователю.
Разберем немного само устройство системы. В Android нет дисков как в Windows. Есть папки. Папки могут быть например картой памяти. Представьте что на вашем компьютере при вставке флешки, на рабочем столе появляется папка "флешка". Вытаскиваете, исчезает. Вот примерно так же и устроена система в вашем телефоне. И так попадая в shell вашего телефона вы оказываетесь в корневой, главной папке. В ней находится куча папок куда у вас нет доступа. Например System (папка прошивки) или Data (папка данных приложений). То есть доступ в эти папки у вас как бы есть, но только на чтение. Вы не можете изменять, удалять или добавлять туда свои файлы. Нет root доступа для этого. Нас интересует внутренняя память телефона + карта памяти, куда запись нам вполне доступна. И так, внутренняя память телефона всегда называется /sdcard. Карта памяти может находится в другом месте, но обычно она /storage/0123-4567
Для того чтобы попасть в shell вашего телефона (командную строку), нужно произвести на телефоне не сложные действия. Заходите в настройки телефона, ищете пункт "О Телефоне". В нем ищите информацию о прошивке, версию и .т.д. Нас интересует пункт "Номер сборки". Нужно нажать на него быстро 10 раз. Должна появиться надпись "Включен режим разработчика". Не бойтесь, ничего страшного не произойдет, просто в настройках телефона появится новое меню "Параметры разработчика". Нужно зайти в это меню и включить "Отладка по USB".
Далее на компьютер нужно установить adb. Для этого вам необходимо скачать "15 seconds adb installer". К сожалению прямых ссылок дать не могу, но уверен поиском в гугле вы найдете нужный файл.
Запустить от администратора, несколько раз согласится нажав на клавиатуре "Y", установить драйверы от Google Inc.
После того как вы установили adb + необходимые драйверы, вы можете работать с командной строкой телефона.
Для этого в пуске нажмите выполнить и вбейте руками CMD. Ну или на любом месте рабочего стола нажмите на клавиатуре "Win + R", вбейте "cmd" (без кавычек) нажмите Enter.
Вы в командной строке компьютера. Чтобы подключиться к командной строке телефона вбейте adb shell. На телефоне может появится диалог - "доверять ли этому компьютеру?" Жмите доверять. Если все прошло гладко, вы увидите что-то вроде 1|greatlte:/ $
Основные команды:
pwd - показывает место (полный путь) к папке где вы находитесь
cd .. - перейти в папку уровнем выше
cd - change directory (сменить папку)
mkdir - make directory (создать папку)
rmdir - remove directory (удалить папку)
rm - remove file (удалить файл)
rm -rf - remove recursive force (удалить папку/файл вместе со всем содержимым) (Это опасная команда! Если запустить ее находясь скажем в корне памяти телефоне, вы сотрете все файлы (фотки например) находящиеся на карте памяти. Лучше не пользоваться этой командой без полного понимания того что она делает).
cp - copy (копировать)
mv - move (перемещать или переименовывать)
Примеры:
cd /sdcard/Downdload - сменить папку на /sdcard/Downdload
mkdir Papka - создает папку Papka в папке где вы находитесь
mkdir /sdcard/Downdload/Papka - создает папку Papka в /sdcard/Downdload
copy bxActions.apk bxActions1.apk - создает копию bxActions.apk с именем bxActions1.apk в папке где вы находитесь
mv bxActions.apk bxActions1.apk - переименовывает файл bxActions.apk в bxActions1.apk в папке где вы находитесь
mv /sdcard/Downdload/bxActions.apk /sdcard/bxActions.apk - переносит файл bxActions.apk из папки /sdcard/Downdload/ в корень внутренней памяти (/sdcard)
Почувствуйте себя хакером, начните использовать кнопку Tab на клавиатуре. Например пишите cd /sd[жмете кнопку TAB] получается - cd /sdcard
Продолжайте - cd /sdcard/Dow[жмете кнопку TAB] - получаете cd /sdcard/Downdload/ и вот уже можно жать Enter. Получается быстрее, если привыкните, жизнь станет сильно проще)
Кнопка Tab в командной строке пытается продолжить то что вы пишите подставляя имена файлов и папок которые есть в системе.
Что может adb? Начнем с азов. Перезагрузка в основные режимы.
reboot - (перезагрузка телефона)
reboot bootloader - перезагрузка в режим download или режим bootloader
reboot recovery - перезагрузка в режим восстановления
Работа с показом всяких системных характеристик:
getprop ro.bootloader - показ версии bootloader (только Samsung)
getprop ro.boot.carrierid - показ региона телефона (только Samsung)
getprop - выводит полный список команд сразу с результатами, можно посмотреть кучу инфы о телефоне
Страшный ужасный push и pull:
Эти две команды, push и pull скачивают и закачивают на телефон файлы с ПК и обратно.
Например. Открываете свой cmd на компьютере. Там вы тоже оказываетесь сразу в какой-то папке. Обычно это какой-нибудь C:\Windows\System32. Допустим вам нужно скачать файл с рабочего стола на телефон. В командной строке ПК пишите - cd C:\Users\Vasya\Desktop
Vasya - название пользователя, у вас оно само собой другое) Используйте кнопку TAB как писал выше, будет быстрее и проще. Задача чтобы вместо C:\Windows\System32 у вас было написано C:\Users\Vasya\Desktop
Как только вы оказались командной строкой на своем рабочем столе, можно например отправить файл контактов на телефон:
Пишите:
adb push контакты.csv /sdcard/Download/
И файл контактов скопируется с вашего рабочего стола в телефон, в папку /sdcard/Download/
С помощью команды pull можно наоборот, скачать с телефона на ПК:
adb pull /sdcard/Download/контакты.csv контакты.csv
Файл должен оказаться в той папке где вы находитесь командной строкой на ПК (но мы же на вашем рабочем столе, верно?)
Даем какой-либо программе специальные разрешения на примере bxAction:
Для работы bxActions нужно два специальных разрешения, WRITE_SECURE_SETTINGS и READ_LOGS. Эти разрешения могут быть даны только через компьютер, через adb. Сам разработчик рекомендует ввести в командной строке следующее:
adb shell pm grant com.jamworks.bxactions android.permission.WRITE_SECURE_SETTINGS
adb shell pm grant com.jamworks.bxactions android.permission.READ_LOGS
Это правильные команды, однако они не дают вам понимания сработали ли они при вводе. Я рекомендую вводить так:
adb shell - тут мы заходим в shell телефона
pm grant com.jamworks.bxactions android.permission.WRITE_SECURE_SETTINGS
pm grant com.jamworks.bxactions android.permission.READ_LOGS
Если при вводе возникнут какие-либо ошибки, вы это увидите. Если все хорошо, вывод будет пустой.
Таким вот не очень хитрым образом вы можете выдавать приложениям права которые раньше могли быть доступны только с получением root! К сожалению Google разрешает таким образом выдавать не все права, тот же Titanuim Backup не заработает, однако многие другие приложения сейчас умееют работать довольствуюсь только доступными в adb правами.
Я перечислю несколько приложений который попросили специальные права, я выдал их через adb и приложения прекрасно работают. Это - Wakelock Detector, Tasker, Adhell, Andromeda, AutoNotification, bxAction, Substratum, SystemUI Tuner.
Страшный ужасный менеджер пакетов.
Бывает ситуация когда вы поставили какое-то приложение, например тему. Вы хотите ее удалить, но не можете ее найти в списке установленных приложений. Так же бывает что приложение в списке есть, но оно не удаляется. Тут нам поможет встроенный менеджер пакетов.
У каждого приложения есть уникальное имя пакета. Это скажем так внутреннее название приложения, такое как его видит система. Вы же видите только название из так называемых строк перевода. Даже если приложение не переведено ни на какие другие языки кроме родного языка разработчика или просто английского, в любом случае у приложения будет так называемый default перевод в котором будет прописано название приложения. Таким образом вы видите у себя в меню приложений bxActions вместо com.jamworks.bxactions
Бывают конечно пакеты которые являются скажем какими то системными дополнениями, которые не переводят даже в файле default перевода и оставляют прям называнием пакета. Кстати по этой же логике создаются приложения клоны. Достаточно пересобрать (именно пересобрать через специальный софт) пакет com.jamworks.bxactions с именем com.jamworks.bxactions1 и при установке вы получите второе приложения bxActions) Такой клон не всегда будет работать, но это один из способов создать клон. Система видит приложения с разными названиями пакетов как отдельные приложения.
И так что может pm?
Посмотреть все пакеты установленные в системе, в т.ч. те которые зашиты в прошивку и не могут быть удалены
adb shell
cmd package list packages
Удалить пакет (например bxactions)
pm uninstall com.jamworks.bxactions
Пакетным менеджером так же можно устанавливать приложения. Например вы скинули bxActions.apk в папку Download
adb shell
cd /sdcard/Download
pm install bxActions.apk
Поздравляю вы установили приложение не дотрагиваясь до телефона)
Пакетный менеджер так же умеет отключать приложения. Например встроенный браузер вам не нравится, вы используете Chrome самостоятельно установленный с маркета. По привычке вы заходите на телефоне в настройки, выбираете пункт приложения, находите встроенный браузер, но пункта отключить нету, есть только остановить. Тут то и пригодится пакетный менеджер. Конечно, вы скажете, что можно поставить какой-нибудь Disabler с маркета, но это не всегда бывает удобно, поэтому просто знайте что есть способ сделать это через adb.
pm disable com.jamworks.bxactions - чтобы отключить
pm enable com.jamworks.bxactions - чтобы включить обратно если вы передумали
Есть одна загвоздка, вы можете не знать какое название пакета приложения Браузер. Обычно в если зайти в свойства приложения через настройки (Настройки - Приложения - bxActions), то в какой нибудь строке указывается название пакета, однако на Samsung'ах например невсегда. В случае если посмотреть название пакета негде, а искать в выводе cmd package list packages не хочется, можно воспользоваться сторонним софтом. Например проводник которым я постоянно пользуюсь это умеет. В Solid Explorer открываем боковое меню, приложения, выбираем системное или пользовательское приложение, видим список приложений и под каждым написано название пакета.
Мне лень это делать, я лучше termux поставлю :)
Банковские приложения, как правило, обижаются на наличие рута и либо не работают совсем, либо отключают часть функций. Например, приложение Сбербанка позволит только запускать шаблоны.