Android: adb: Дозвіл відмовлено


91

Що б я не вводив, після adb shellцього не вдається Permission denied:

D:\android-sdk-windows\platform-tools>adb shell find /data -name *.db
find: permission denied

D:\android-sdk-windows\platform-tools>adb shell test
test: permission denied

D:\android-sdk-windows\platform-tools>adb remount
remount failed: No such file or directory

Будь-які ідеї?


Де ви намагаєтесь запустити оболонку adb, в емуляторі або цільовому пристрої; якщо на цільовому пристрої ви не можете отримати доступ до папки / data, поки у вас немає дозволу root.
— Vamsi

20
після adb root>> adbd cannot run as root in production buildsщо робити?
— d.popov

3
Думаю, вам потрібен кореневий телефон, щоб мати змогу це запустити
— Канер

так, я знаю. Але, як ви бачите в даний час, я не маю репутації коментувати публікацію автора, але у мене була ця проблема, тому єдиним способом було додати нову публікацію або відкрити дублікат теми, тому я вирішив додати публікацію.
— д.попов

1
телефон був укорінений, але з ОС щось пішло не так. Замерзало після завантаження головного екрану при перезавантаженні. У будь-якому випадку - нандроїд прошивав телефон за допомогою стандартного ПЗУ вирішив проблему.
— д.попов

Відповіді:


129

Відповідно до adb help:

adb root                     - restarts the adbd daemon with root permissions

Що справді вирішило проблему для мене.


2
Вам також потрібно буде ввімкнути кореневий доступ для adb, якщо ви цього ще не зробили - див. Відповідь @ Macarse.
— Paul Whittaker,

Насправді, безпосередньою проблемою є те, що Android все ще (через два роки після написання) не надсилає findкоманду. Тим не менш, якщо adb не працює як root, це правда, ви також не зможете спустити розділ / data за допомогою будь-якої іншої команди (хоча ви все одно можете отримати доступ до явних розташувань у ньому).
— Кріс Страттон,

1
Це не правда. Вам просто потрібно перейти до правильного користувача. Дивіться мою відповідь нижче: stackoverflow.com/a/38292436/342947
— Fabian Zeindl

2
Ваша відповідь не чітка. Чи слід виконувати цей коментар на пристрої чи на комп’ютері?
— Саурон,

20
adbd cannot run as root in production buildsце те, що ви отримуєте, коли біжите adb root. Це стосується нещодавньої інсталяції MacOS із сучасною версією Android SDK. Я вважаю, що ця відповідь зовсім не правильна, і я бачив, як інші люди згадували цю проблему. Чому так багато голосів?
— Ендрю Костер

40

Без вкорінення : Якщо ви не можете скористатися телефоном, скористайтеся run-as <package>командою, щоб отримати доступ до даних вашої програми.

Приклад:

$ adb exec-out run-as com.yourcompany.app ls -R /data/data/com.yourcompany.app/

exec-out виконує команду без запуску оболонки та маніпулювання результатом.


9
Це працює лише для додатків, створених для налагодження, тобто ви можете використовувати його для програм, які розробляєте, але він не повинен працювати для робочих версій вашої програми чи будь-яких інших програм.
— Chris Stratton

2
Це повертається run-as: Could not set capabilities: Operation not permittedдля мене
— Том М,

Він працює для API емулятора 29, і не забудьте додати .debugпрефікс до кінця пакету програми для налагоджувальних програм:
— ультраон

19

Причиною "відмови у дозволі" є те, що ваш пристрій Android не коректно вкорінено. Ви бачили $після початку adb shell? Якби ви правильно вкорінили свою машину, то #натомість побачили б .

Якщо ви бачите $, спробуйте ввести режим суперкористувача, набравши su. Якщо увімкнено Root, ви побачите #- без запитання пароля.


2
Після того, як ви правильно вкорінили свою машину, вам потрібно буде ввімкнути кореневий доступ adb і запустити adb у кореневому режимі, перш ніж ваш suкрок зможе працювати - див. Відповіді @ Macarse та @ Roman
— Paul Whittaker,

1
Ні. Причиною "дозволу відмовлено" є відсутність findкоманди.
— Chris Stratton

@ChrisStratton Ти врятував мені життя, я також вже
— писав

1
Я намагаюся побачити файли в симуляторі Android. Я
— Піт Елвін

5

Можливо, вам доведеться активувати корінь adb у меню налаштувань розробника. Якщо ви запускаєте adb rootз рядка cmd, ви можете отримати:

root access is disabled by system setting - enable in settings -> development options

Після активації кореневої опції (лише ADB або Програми та ADB) adb перезапуститься, і ви зможете використовувати root із рядка cmd.


3
Якщо ви не можете побачити пункт "Параметри розробника" у меню налаштувань, див. Цю відповідь, щоб дізнатись, як зробити його видимим. (Коротше: Налаштування> Про телефон> Номер збірки> Натисніть 7 разів (!).)
— Paul Whittaker

1
Але потрапивши, я тут нічого не бачу! Що це повинно сказати?
— JohnyTex

35
Цей параметр відсутній у складі збірок Android - якщо він взагалі існує, він буде обмежений чиїмсь запасним ПЗУ.
— Chris Stratton

Чи є спосіб зробити це без графічного інтерфейсу? Я гадаю, є варіант для цього /system/build.prop, але я не можу його знайти.
— Jeroen

Де знайти меню для пошуку налаштувань?
— martinkunev

0

Будьте обережні з косою рисою, змініть "\" на "/", наприклад: adb.exe push SuperSU-v2.79-20161205182033.apk / storage


0

data розділ, недоступний для некореневого користувача, якщо ви хочете отримати до нього доступ, вам потрібно укорінити телефон.

adb root не працює для всіх продуктів і залежить від типу збірки телефону.

в новій версії на андроїд-студії ви можете вивчити /data/dataшлях для налагоджуваних додатків.



-4

Запустіть cmdадміністратора, це вирішить мої проблеми. Дякую.


Ні. Питання стосується відмови від Android, а не від Windows.
— Chris Stratton

-5

Рішенням для мене було (thx до повідомлення Девіда Люнга Медісона )

  1. Вкорініть телефон і переконайтеся, що він укорінений
  2. Сервер Adb (adbd) не запускався як root, тому завантажили та встановили незахищений додаток adbd
  3. Перезапустіть adb adb kill-server
  4. Запусти його і працював як квітка!
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.