Как настроить доступ ADB для устройств Android?

Я использую Ubuntu 12.10, и я установил Android SDK, установил его путь в моем пользователе .bashrc, и он работает.

Проблема в том, что мой телефон требует, чтобы adb запускался root для доступа, но при запуске adb с sudo я получаю следующую ошибку:

sudo: adb: команда не найдена

I пытался просто использовать sudo -E adb start-server, но это не работает. Попытался добавить строку пути экспорта в /root/.bashrc и (после того, как это не помогло) в /etc/bash.bashrc.

Я помню, что мог установить его на моем Arch Linux, но я думаю, что моя проблема сейчас связана с корневой учетной записью Ubuntu, которая ведет себя не так, как я ожидаю.


Что я не понимаю, так это:

Они не работают:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

Это работает (ввод полного пути):

[ 111]

Это не работает (используется -E с sudo):

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

Это работает (как root):

martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached 
CM7-Blade   device

Я сейчас совершенно сбит с толку и Буду признателен за разъяснения о том, как задать путь для sudo или как еще можно решить мою проблему.

(И, пожалуйста, не говорите, что adb не должен запускаться с правами root.)

Заранее спасибо!

Редактировать: Требуя права root I Я имею в виду, что они мне нужны, потому что в противном случае я получаю:

$ adb devices 
List of devices attached 
????????????    no permissions

, который не является суперпользователем. Извините, если это было недоразумение.

39
задан 19 October 2015 в 11:37

7 ответов

Сначала прочтите следующее: Как настроить Android ADB?


Настройка доступа через USB

Во-первых, вам не нужны права root запустить ADB, если вы установили соответствующие разрешения. Сайт AOSP предоставляет примеры для Настройка USB-доступа для устройств Pixel / Nexus. Вы можете использовать следующую схему для устройств, отличных от Nexus:

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"

Поставщик и идентификатор продукта можно получить с помощью lsusb и поиска вашего устройства. (Примечание: на самом деле это устройство Galaxy Nexus.)

$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]

Итак, мое /etc/udev/rules.d/51-android.rules правило udev выглядит так:

# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"

Вы можете повторить это для других телефон сообщает, как fastboot, если это необходимо. Чтобы изменения вступили в силу, либо перезагрузите udev (sudo udevadm control --reload), либо перезагрузите компьютер (рекомендуется).

Обеспечение доступности программ

Вместо изменения переменной пути я бы предложил добавить символическую ссылку на исполняемый файл либо в ~/bin/ (только для пользователя), либо в /usr/local/bin/ (система широкий).

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/
0
ответ дан 19 October 2015 в 11:37

Я врезался в ту же проблему с планшетом из Китая (некоторый странный производитель).

В дополнение к /etc/udev/rules.d/51-android.rules файл, я должен был измениться ~/.android/adb_usb.ini также.

Выполненный ниже на терминале;

sudo gedit ~/.android/adb_usb.ini

и Ваш adb_usb.ini файл должен быть похожим:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

Отключенное и повторно подключенное устройство и также должно было работать ниже команд на терминале;

adb kill-server

и впоследствии

adb start-server

И устройство было обнаружено.

29
ответ дан 19 October 2015 в 11:37

Конфигурирование доступа USB

Рекомендуемый подход должен создать файл в /etc/udev/rules.d/51-android.rules.

Введите в Терминале:

wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

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

0
ответ дан 19 October 2015 в 11:37

Выполните эти шаги:

  1. Андроид набора Вар

    Первоначально перейдите к своему дому и нажмите Ctrl + H, он покажет Вам, скрытые файлы теперь ищут .bashrc файл, откройтесь, он с любым текстовым редактором затем помещает строки ниже в конце файла:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. Перезагрузка

  3. Используя устройство для отладки

    Прислушайтесь к соединению:

    adb -a
    

    Подключите свое устройство на базе Android и авторизуйте его:

    cordova run android --device
    
1
ответ дан 19 October 2015 в 11:37

Попробуйте эту команду: sudo tools/android update sdk --no-ui

SDK README:

Добро пожаловать в Android SDK! Архив Android SDK изначально содержит только основные инструменты SDK. Он не содержит платформу Android или сторонние библиотеки. На самом деле, он даже не имеет всех инструментов, необходимых для разработки приложения. Чтобы начать разработку приложений, вы должны установить инструменты Platform и хотя бы одну версию платформы Android, используя SDK Manager. Platform-tools содержит инструменты сборки, которые периодически обновляются для поддержки новых функций на платформе Android (поэтому они отделены от базовых инструментов SDK), включая adb, dexdump и другие. Для установки Platform-tools, платформ Android и других надстроек у вас должно быть подключение к Интернету, поэтому, если вы планируете использовать SDK в автономном режиме, обязательно загрузите необходимые компоненты в режиме онлайн. Для запуска SDK Manager, пожалуйста, запустите программу «Android». Из командной строки вы также можете напрямую запустить обновление, выполнив: tools/android update sdk --no-ui

0
ответ дан 19 October 2015 в 11:37

В моем случае вместо режима MTP некоторые смартфоны нужно было просто установить в режим PTP, в отличие от большинства устройств, которым требуется, чтобы режим MTP был обнаружен моей Android Studio (v1.5.1).

Поэтому сначала обязательно попробуйте оба режима MTP и PTP, не тратя время на более сложную настройку ADP в Unix и, возможно, нанося им вред.

В более новых устройствах вы можете выбрать его непосредственно в настройках Dev, в то время как в более старых - в параметрах USB Connected в строке состояния.

Но и для меня новейшие устройства Sony Xperia от Z5 и выше не будут работать независимо от режима USB. Может быть, моя Android Studio устарела, или мне нужно копать также с конфигурациями Unix ADP.

0
ответ дан 19 October 2015 в 11:37

Хотя принятый ответ помог мне добиться цели, я все еще был смущен:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

и особенно

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

с тех пор согласно sudo --help:

-E, --preserve-env          preserve user environment when running command

Это складывается, что на многих дистрибутивах Linux (который включает Debian и Ubuntu) secure_path и env_reset опции включены по умолчанию, которые сбрасывают Ваш PATH переменная и устанавливают ее на secure_path. Можно изменить его в /etc/sudoers файл с помощью visudo.

, Кроме того, можно работать:

sudo env PATH=$PATH adb devices
0
ответ дан 17 October 2019 в 09:46

Другие вопросы по тегам:

Похожие вопросы: