Як налаштувати доступ ADB для пристроїв Android?


39

Я використовую Ubuntu 12.10, і я встановив Android SDK, встановив, що це шлях у мого користувача, .bashrcі він працює.

Проблема полягає в тому, що мій телефон вимагає, щоб adb запускався корінцем для дозволів, але при запуску adb з sudo я отримую таку помилку:

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

Я намагався просто використовувати sudo -E adb start-server, але це не працює. Спробував додати лінію експортного шляху до /root/.bashrc(і після того, як зрозумів, що це не допомогло) /etc/bash.bashrc.

Я пам’ятаю, що міг би встановити це в моєму Arch Linux, але, мабуть, моя проблема зараз пов’язана з кореневим обліковим записом Ubuntu, не так, як я очікую.


Що я не розумію, це наступне:

Вони не працюють:

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

Це робить (набравши повний шлях):

martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
CM7-Blade   device

Це не працює (використовуючи -E із судо):

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

Зараз я зовсім розгублений, і я буду вдячний, щоб роз’яснити, як встановити шлях для судо-судових справ або як ще я можу вирішити свою проблему.

(І, будь ласка, не кажіть, що adb не повинен використовуватися як root.)

Спасибі заздалегідь!

Редагувати: вимагаючи кореневих прав, я маю на увазі, що вони мені потрібні, оскільки в іншому випадку я отримую:

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

яка не є надрукованою. Вибачте, якщо це було непорозуміння.


Я помітив, як в Windows, так і в Ubuntu, що пристрої Android часто не з’являються, якщо ви їх підключили до порту USB 3, а підключення їх до порту, який не є USB3, полегшує проблему.
Пол Грегуар

Відповіді:


48

Спочатку прочитайте наступне: Як налаштувати Android ADB?


Налаштування доступу до USB

По-перше, вам не потрібні кореневі дозволи для запуску 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"

Ви можете повторити це для інших станів телефону, наприклад, швидка завантаження, якщо це необхідно. Щоб зміни вступили в силу або перезавантажте udev ( sudo udevadm control --reload), або перезавантажте (рекомендується).

Доступність програм

Замість того, щоб змінювати змінну шляху, я б запропонував додати виконувану символічну посилання або в ~/bin/(лише для користувача), або в /usr/local/bin/(для системи).

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/

1
Я спробував додати правила udev для свого телефону, але це не допомогло, тому я подумав, що, можливо, я не зрозумів свою проблему. Будь ласка, якщо у вас є час, дивіться кінець мого запитання.
Мартін Феєс

Ви додали правильні ідентифікатори? modaco.com/topic/329317-guide-ubuntu-and-the-blade Після цього перезавантажили машину? adb devicesпрацює для мене без кореневих привілеїв.
LiveWireBT

4
Так, це працює! Я додав правила udev до /etc/udev/rules.d/51-android-rules і, мабуть, це була помилка. Після використання /lib/udev/rules.d/11-android.rules все було добре! Мені не потрібно кореневих дозволів! Дуже дякую!
Мартін Феєш

Був такий же ???????????? немає дозволів і ваша відповідь не вирішила це, дякую.
Panthro

чомусь це не спрацювало тут, мені довелося запустити adb-сервер із sudo; будь-яку ідею, де я міг би подивитися, щоб зрозуміти, чому це не працює?
Сила Водолія

29

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

Окрім /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

І пристрій виявлено.


Я теж спробував з вашою порадою, але нічого не змінилося, будь-яка ідея, куди я міг би подивитися, щоб зрозуміти, чому це не працює тут?
Сила Водолія

Хороший. Це працювало для мене. Поряд з цим мені довелося оновити свій adb .
Божевільний арахіс вафлі

Це рішення не працює на Ubuntu 14.04. Список пристроїв все ще залишається порожнім.
Luís de Sousa

1
Велике спасибі, Уйгар, нарешті я знайшов рішення, яке працює для мене.
Дмитро Попов

Ось що мені не вистачало. Насправді, 0x2207у вашому прикладі той самий ідентифікатор постачальника, який використовує мій пристрій.
ssokolow

2

У моєму випадку замість режиму MTP деяким смартфонам потрібно було просто встановити його в режимі PTP, на відміну від більшості пристроїв, які вимагали, щоб режим MTP був виявлений моєю Android Studio (v1.5.1).

Тому не забудьте спершу спробувати як режими MTP, так і PTP, перш ніж не витрачати час на складнішу ADP-конфігурацію Unix і, можливо, шкодити їм.

У нових пристроях ви можете обрати його безпосередньо в опціях Dev, тоді як у старих - у параметрі USB-підключення на панелі стану.

Але для мене новітні пристрої Sony Xperia від Z5 і вище не працюватимуть, незалежно від режиму USB. Можливо, моя Android Studio стара, або мені потрібно також копатись з конфігураціями ADP Unix.


1

Виконайте такі дії:

  1. Встановіть android vars

    Спочатку зайдіть до свого дому та натисніть 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
    

0

Налаштування доступу до 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

Незважаючи на те, що прийнята відповідь допомогла мені виконати справи, я все ще збентежився:

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

-1

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

SDK README:

Ласкаво просимо до Android SDK! Архів SDK для Android спочатку містить лише основні засоби SDK. Він не містить платформи Android або будь-яких сторонніх бібліотек. Насправді він навіть не має всіх інструментів, необхідних для розробки програми. Для того, щоб почати розробку програм, потрібно встановити інструменти Platform та принаймні одну версію платформи Android, використовуючи диспетчер SDK. Платформа-інструменти містять інструменти збирання, які періодично оновлюються для підтримки нових функцій платформи Android (саме тому вони відокремлені від основних інструментів SDK), включаючи adb, dexdump та інші. Для встановлення платформ-інструментів, платформ Android та інших додатків необхідно мати підключення до Інтернету, тому якщо ви плануєте використовувати SDK в режимі офлайн, будь ласка, завантажте необхідні компоненти, перебуваючи в Інтернеті. Щоб запустити менеджер SDK, запустіть програму "android". З командного рядка ви також можете безпосередньо запустити оновлення, виконавши:tools/android update sdk --no-ui


Я не впевнений, що це стосується початкового питання ...
landroni
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.