Как перестать бояться и полюбить 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 открываем боковое меню, приложения, выбираем системное или пользовательское приложение, видим список приложений и под каждым написано название пакета.

Android

738 постов7.5K подписчиков

Добавить пост

Правила сообщества

Сообщество посвящено обсуждению и обмену опытом использования устройств, работающих под управлением ОС Android/Linux, а также программного обеспечения для них. Обсуждение других операционных систем (в том числе GNU/Linux) - только в рамках их взаимодействия с Android.


В сообществе запрещены:

* заведомо деструктивные рекомендации

* бессодержательная переписка, особенно с переходом на личности собеседников

* обсуждение нужности рутового доступа (он нужен, и если у вас его нет - мы вам искренне посочувствуем, но искать другие способы решения вашей проблемы не будем)

* обсуждение нужности ПО от Google (необходимости в нем нет, и если вам этот функционал не нужен - смело запускайте pm disable-user или даже pm uninstall, только не забудьте предварительно сделать полную резервную копию)


Если вы просите о помощи, обязательно укажите максимально полную информацию об используемом вами устройстве, чего вы хотите добиться и какие шаги для этого предпринимали - это существенно ускорит получение ответа, так как из обсуждения будут исключены диалоги вида "попробуй вот так - пробовал, не помогает". Соответственно, и при ответе следует давать рекомендации, подходящие для любого устройства. Если вы не уверены в универсальности решения, напишите об этом явно: "у меня %s и мне помогло %s".


Данная редакция правил действует с момента ее публикации: 2022-01-27 22:00:00 +03:00

Автор поста оценил этот комментарий

Мне лень это делать, я лучше termux поставлю :)

раскрыть ветку
Автор поста оценил этот комментарий
Есть ещё один нюанс в наличии рута, который модет сильно повлиять на решение рутовать\не рутовать телефон.
Банковские приложения, как правило, обижаются на наличие рута и либо не работают совсем, либо отключают часть функций. Например, приложение Сбербанка позволит только запускать шаблоны.
раскрыть ветку
1
Автор поста оценил этот комментарий
Можно ли так удалить Play Music, Hangouts, Play Games, Play Movies, Google+ и прочий шлак от Гугла? А в новых самсунгах ещё и шлак от Мелкомягких (жырррный офис) и какой-то встроенный банк. На некоторых ещё и шлак от Яндекса есть неудадяемый (только stop и disable без delete). Если можно все это удалить, смогу своим телефоном ещё пару лет пользоваться. Не охота менять только потому, что на внутренней памяти места мало.
раскрыть ветку