Помилка "недостатнього дозволу" в команді `adb push '12.04


57

Коли я спробував підсунути apk-файл у планшет, я отримав цю помилку, будь ласка, допоможіть мені.

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.

Заздалегідь дякую за допомогу.


1
Відповідь користувача84207, яка підтримується посиланням на офіційну документацію для розробників Android, набагато краща, ніж прийнята відповідь Анвар Шаха, оскільки нам слід уникати запуску демонів як кореня, коли це можливо. Запуск adb як root робить комп'ютер вразливим до більшої кількості атак.
nealmcb

Відповіді:


20

Цю саму помилку я бачив іноді на Ubuntu. Робочим рішенням для цього є запущення adb з sudoкомандою. Наприклад, якщо ви натискаєте app.apkна sdcard, команда була б

sudo adb push app.apk /mnt/sdcard

Також переконайтесь, що ви вибрали режим «Налагодження USB» у налаштуваннях програми (у GingerBread) або в розділі «Розробка» (у сендвіч IceCream та вище). Якщо adb вже запущений, спершу слід вбити його командоюsudo adb kill-server

Сподіваюсь, це допоможе.


Я зрозумів, але все ж спробую цей метод теж ... дякую за допомогу
Neha Sharad Umachigi

5
"Я отримав це" ... Будь ласка, будь ласка, поділіться, якщо ви знайшли рішення, щоб інші могли отримати користь (як ви прагнули отримати користь собі, коли задавали питання). Наприклад, у мене зараз ця проблема, але я змушений шукати в іншому місці, хоча це та сама точна проблема, яку ти описуєш.
erjoalgo

2
Ця відповідь ризикована, оскільки помилки в adb можуть охопити весь комп'ютер. Відповідь за допомогою правил udev від користувача84207, яка підтримується посиланням на офіційну документацію для розробників Android, уникає цієї проблеми.
nealmcb

Це найпростіший і найпростіший і принаймні робочий спосіб вирішення проблеми.
Анвар

Примітка. Це працювало для мене, оскільки sudoзнаходить іншу встановлену версію, adbніж non-sudo. Ось чому це працює, а не тому, що adbсаме по собі потребує більшої привілеї.
Кевін Купер

61

Я зіткнувся з цією ж проблемою. Додавання правила udev, як зазначено тут, зробило трюк:

Увійдіть як корінь, створіть файл /etc/udev/rules.d/51-android.rulesі додайте такий рядок, щоб надати дозволи будь-кому з plugdevгрупи:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

У цьому прикладі ідентифікатор постачальника - HTC. Потрібно використовувати ідентифікатор постачальника для свого пристрою, який можна отримати, запустивши lsusbта шукаючи такий рядок

Bus 002 Device 009: ID 2a47:9e18

У цьому прикладі ваш ідентифікатор виробника буде 2a47, тому вам доведеться замінити 0bb4з 2a47. Таким чином, правильний рядок буде таким:

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"

Тепер призначте дозволи на читання файлів, перезавантажте udev та перезавантажте демон adb:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server

Можливо, вам доведеться відключити і знову підключити свій пристрій до порту USB.


9
Ви можете отримати ідентифікатор постачальника USB за допомогою команди lsusb. Це перша частина відділеної двокрапки пари. Наприклад, 18d1: 4e22 означає, що ідентифікатор постачальника - 18d1.
Пітер Ламберг

Можливо, вам доведеться "запустити" udev після додавання нового файлу правил (хоча я не впевнений). Ось спосіб «запуск» askubuntu.com/questions/82470 / ... .
user29020

2
та / або вам може знадобитися відключити і підключити знову пристрій? Але ця відповідь спрацювала для мене і набагато краще, ніж запускати adb як root. Ваш користувач Ubuntu також повинен бути частиною plugdevгрупи. Біжи, idщоб дізнатися.
nealmcb

2
Це репо, дуже корисно, якщо вам доведеться працювати з багатьма пристроями github.com/M0Rf30/android-udev-rules
zamber


22

Відповідь Jorch914 на StackOverflow вирішила для мене це питання:

Гаразд, я нарешті знайшов проблему, мабуть, на цьому пристрої потрібно встановити підключення як камеру (навіть після того, як налагодження usb вже включено)

введіть тут опис зображення

Також це посилання описує процес налаштування


1
Так, це було! Мені довелося "Вибрати конфігурацію USB" на Android N, яка за замовчуванням була встановлена ​​на "Зарядка".
Дан Даскалеску

1
з будь-якої причини я завжди мав змогу підключити свій піксель до mac та почати працювати, але коли я перейшов на робочу станцію CentOS Dev, мені довелося це зробити, щоб запросити його на дозвіл налагодження. Дякую
bsautner

2
Працювали для мене. Схоже, хитрість полягає в тому, щоб змінити його з "Зарядки" на щось інше, чому б.
Бім

11

Ці дві прості команди вирішили для мене проблему:

adb kill-server
adb start-server

Зауважте, що на відміну від відповіді напівпочатківця мені це не потрібно sudo.


1
це працювало для мене
Судіп Бхандарі

Не працювало для Nexus 5X, підключеного до Ubuntu 16.04, коли я намагався запустити adb shell ls.
Дан Даскалеску

10

Я просто пробігаю ту саму проблему, але ось як я зміг її пройти:

  • ви повинні вбити існуючий сервер adb, видавши таку команду: adb kill-server(це може бути неправильно, але я видав його з AND без sudo
  • запустити сервер adb з належними дозволами, видавши: sudo adb start-server
  • вуаля. ви, можливо, знаєте, видавати будь-які потрібні вам команди

Не впевнений, чи знаєте ви, але є пакет, який включає adb. Я згадую про це, тому що я помітив, що ви отримуєте посилання на старішу версію adb. Ви можете встановити, видавши в командному рядку наступне:sudo apt-get install android-tools-adb

Я сподіваюся, що це допомагає.


ADB інструментів платформи може бути новішим; Тим часом ці інструменти навіть доступні як окреме завантаження.
Мартін Цайтлер

2

Сьогодні я зіткнувся з insufficient permissions for deviceпомилкою, хоча adbпрацював так, як очікувалося лише кілька хвилин до цього. Тепер я отримую:

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

$ adb shell
error: insufficient permissions for device

Незадовго до того, як зіткнутися з помилкою, я відключився Media device (MTP), оскільки вважав, що не потрібно використовувати MTP. Однак, виявляється, що налагодження USB або хоча б деякі adbкоманди вимагають цього Media device (MTP)ввімкнути.

Щоб увімкнути Media device (MTP)Android 4.4, перейдіть до:

Settings
Storage
The "..." menu (in the upper right corner)
USB computer connection
Media device (MTP)

Коли MTPвимкнено, lsusbвідображається наступне:

Bus 002 Device 071: ID [idVendor1]:[idProduct1] Google Inc.

Після ввімкнення MTPlsusb показує наступне:

Bus 002 Device 072: ID [idVendor2]:[idProduct2] [idVendor string]

IdVendor та idProduct змінюються залежно від того MTP, включено чи відключено.

Я не є експертом Android, тому можливо, що вищезгадана поведінка характерна саме для моєї конкретної моделі телефону.


0

Це може бути з іншої причини. Я просто отримую цю помилку при спробі встановити apk на пристрій:

$ adb install platforms/android/build/outputs/apk/android-armv7-release.apk 
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device
- waiting for device -

Це сталося через те, що пристрій не був готовий до правильного режиму. Пристрій обмінювався 4G-з'єднанням через USB.

Це може бути відомо так:

$ adb devices -l
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

33332EF19F3D00EC       no permissions usb:1-1.2

Тож було достатньо відключити обмін з'єднаннями по телефону та запустити знову.

Як правило, переконайтеся, що ви маєте такий результат за допомогою adb deviceкоманди, перш ніж намагатись натиснути файли на пристрої

$ adb devices -l
List of devices attached
33332EF19F3D00EC       device usb:1-1.2

У цих випадках не потрібно вбивати або перезавантажувати сервер adb.

Можливо, буде та сама ситуація, якщо ви встановили пристрій для передачі даних через USB


0

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


1
Чи можете ви надати більше інформації про цей процес? Крок за кроком було б ідеально, тому ОП може наслідувати ваш приклад. :)
ThatGuy

0

Я зіткнувся з тією ж проблемою, і я вирішив цю проблему, додавши шлях вашого_android_sdk_path до змінної середовища, наприклад

sudo export $PATH:/your_android_sdk_path/platform-tools/adb

ваше бажання, як ви хочете додати це до свого облікового запису або системи, відредагувавши цей файловий ~/.bashrcфайл, ~/.profile або /etc/profile, /etc/bash.bashrc, or /etc/environmentякщо ви хочете додати до широкого доступу до системи.

а потім створити посилання на це у смітнику

sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

якщо ви використовували пристрої adb або будь-яку команду, то спочатку вбити сервер, як

adb kill-server

потім запустіть сервер, як

adb start-server
adb devices

тепер ви можете бачити, що ваші пристрої перераховані належним чином без проблем


0

Відповідь на цю проблему тут: https://github.com/snowdream/51-android

Як розробник Android я пропоную вам НЕ використовувати "sudo", щоб змусити використовувати adb в будь-якому місці. Це не те, що ми повинні робити. Правила, правила та обмеження існують для нашої безпеки.


0

Ще одна можливість: прив’язка USB також суперечить adb. Вимкнення його вирішує проблему для мене.

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