Приложение Android, ориентированное на Android SDK версии 26 - невозможно получить доступ к каталогу данных приложения через ADB

Недавно я изменил свое приложение для Android на Android SDK версии 26 (ранее - 19). Когда я установил приложение на устройство Oreo, я попытался использовать ADB для проверки каталога данных приложения (/ data / data / app-package-name) с помощью команды оболочки ADB. Но командная строка вернула:

cd: /data/data/app-package-name: Permission denied

Раньше я мог получить доступ к этому каталогу, когда мое приложение было ориентировано на Android SDK версии 19.

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

Я заметил, что из API 23 Google представил новую модель разрешений (https://developer.android.com/about/versions/marshmallow/android-6.0-changes), поэтому мне интересно, могло ли это вызвать мою проблему.

Любая помощь приветствуется.

Когда у вас была цель на 19, вы также тестировали на 19 устройстве? Это не должно иметь ничего общего с разрешениями приложения, а скорее с разрешениями, которые есть у пользователя shell.

TheWanderer 07.09.2018 17:09

Я тестировал приложение (API 19 и 26) на том же устройстве Oreo (API 26).

JackyK 07.09.2018 17:16

Это странно. Но в любом случае у вас вообще не должно было получиться это сделать, даже из ADB. К сожалению, вы использовали ошибку в своем рабочем процессе.

TheWanderer 07.09.2018 17:17

Вы используете эмулятор?

Bek 07.09.2018 17:23

На устройствах с root-доступом вы можете получить доступ к этой папке, в противном случае вы не сможете. Я думаю, начиная с Lollipop, эмуляторы genymotion по умолчанию не имеют root-доступа.

Bek 07.09.2018 17:26

Я использую настоящее устройство (Google Pixel) с Android Oreo.

JackyK 07.09.2018 17:32
0
6
47
2

Ответы 2

Для доступа к этой папке у вас должен быть root-доступ (рутированное устройство). Это не связано с разрешениями времени выполнения.

Внутреннее хранилище приложения является частным для приложения и не может быть доступно из других приложений, если оно не является системным или у вас нет прав root.

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

И нет ничего общего с новой моделью разрешений Android, представленной в Android 6. Это скорее разрешение, связанное с файловой системой Linux.

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