Что это за утилита `adb`, которую я постоянно советую использовать?

10

В куче вопросов на этом сайте я вижу ответы, подсказывающие нам выполнить adb shellили adb logcatи так далее.

Теперь я не совсем невежественный пользователь, поэтому я скачал и установил Termux и у меня есть приглашение оболочки, когда я могу набирать команды, но - откуда эта adbштука? Я могу загрузить это как приложение? Похоже, он не установлен по умолчанию (на Redmi 3S, Android 6.0.1).

Кроме того, похоже, что это какой-то лифт разрешений. Это как su? Если нет, то чем он отличается?

einpoklum
источник
@RahulGopi: Да, я просто думаю, что здесь может быть краткий ответ.
einpoklum
5
Это инструмент, описанный в нашей adb tag-wiki , со ссылками на ресурсы - я сказал это, прежде чем догадываться :) Помните: у многих из наших тегов есть приличные вики :) Также посмотрите здесь на нашем сайте: что такое ADB и почему он используется за? Как мне установить его на моем устройстве?
Иззи
ADB используется для подключения мышек и клавиатур внедренных компьютеров.

Ответы:

33

Около adb

Короче говоря, adb(Android Debug Bridge) - это утилита, предназначенная для установки на компьютер, чтобы позволить ей получить оболочку на телефоне, который либо подключен через USB-кабель, либо в той же сети Wi-Fi.

На некоторых устройствах под управлением Android Lollipop (5.1.1) и, возможно, более ранних версий ОС можно было обмануть устройство, чтобы оно подключилось к себе, поскольку adbклиент также входил в комплект поставки телефона. Это больше невозможно, потому что начиная с Android Marshmallow (6.0), Google удалил adbдвоичный файл с телефонов, чтобы уменьшить поверхность атаки.

Тем не менее, можно вручную ввести adbклиента в телефон без необходимости компилировать двоичный файл самостоятельно. Обратитесь к вики-тегу adb для получения дополнительной информации об этой теме, а также об установке на компьютере и общих проблемах.


Где его взять

Некоторое время назад, чтобы получить adbи другую утилиту под названием fastboot, нужно было загрузить полный Android SDK от Google, если они хотели получить официальный пакет. В настоящее время, как говорит XDA , появился небольшой официальный пакет . Включает в себя двоичные файлы для наиболее распространенных операционных систем.


Как это устроено

adbКлиент, установленный на компьютере, делает соединение с подключенным или иным образом обнаруживаемого телефона, с помощью внутреннего сервера. Затем пользователь сможет отправлять различные команды на сам телефон, который будет прослушиваться adbdдемоном, находящимся на телефоне.

При использовании adbвы выдаете себя за пользователя с именем shell(UID 2000). Этот пользователь особенный, поскольку он может предоставлять разрешения для приложений и получать доступ к большему количеству информации, чем простой пользователь. Этот факт, однако, не означает, что adbэто то же самое su, что последний позволяет выдавать себя за любого пользователя.

Более подробную информацию о adbего работе можно получить, ознакомившись с официальной документацией .


Выдача команд с телефона

Большинство команд, которые могут быть переданы через, adbкак правило, представляют собой служебные программы, которые предустановлены в телефоне.

Чтобы получить к ним доступ, вам необходимо установить приложение эмулятора терминала на свой телефон (обратите внимание, что Termux особенный, так как он определяет свой собственный PATH, тем самым игнорируя двоичные файлы системы). Это, например, позволит вам вводить команды, например, logcatпрямо на вашем мобильном устройстве. Не забудьте опустить adbпрефикс, хотя.

Стоит отметить, что, если у вас нет прав доступа root, диапазон команд, которые вы сможете выполнить, и информация, к которой вы сможете получить доступ, будет значительно меньше, чем при использовании adb, потому что вызывающий их UID будет само приложение, и приложения имеют меньше разрешений, чем UID 2000.

Гримуар
источник
Отлично сработано! К сожалению, я не могу отказать в голосе дважды :) // Да, наши вики слишком часто "неизвестны". Не могу указать там достаточно часто. Но включение ссылки в любой ответ, упомянутый в этом, идет немного далеко ИМХО :) Где это подходит (как здесь: «для дальнейших деталей ...»), хорошая идея. Не стесняйтесь продолжать это - я тем временем продолжаю уборку комментариев :)
Иззи
@ Иззи Хороший вопрос. Давайте подождем и посмотрим, действительно ли нужно спамить ссылки.
Гримуар
Пожалуйста, возьми мой голос.
iBug
@iBug Для меня большая честь.
Гримуар
2

Android Debugging Bridge (ADB) .

Он отправляет команды через USB или Wi-Fi на устройство Android. Обычно он устанавливается на компьютер, подключенный к устройству. Клиент ADB также может быть запущен на самом устройстве, однако идея заключается в удаленной отладке устройства.

Он входит в комплект для разработки программного обеспечения Android

Затем вы можете использовать менеджер SDK для загрузки инструментов платформы.

Здесь также есть более прямая ссылка на тот случай, если вы просто заинтересованы в инструментах платформы.

Документация АБР

jdwolf
источник
Подождите, если он не установлен на устройстве, почему люди предлагают использовать его в оболочках на устройстве? например в примерах, которые я дал?
einpoklum
Неплохо подмечено. Может быть, правильнее сказать, что команда adb - это «клиент», подключающийся к устройству Android. На устройстве Android также может быть установлен клиент, потому что почему бы и нет. Но это похоже на запуск ssh localhost
jdwolf
Чтобы быть честным, документация объясняет все это хорошо: developer.android.com/studio/command-line/adb.html
jdwolf