Недавно я изменил свое приложение для 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), поэтому мне интересно, могло ли это вызвать мою проблему.
Любая помощь приветствуется.
Я тестировал приложение (API 19 и 26) на том же устройстве Oreo (API 26).
Это странно. Но в любом случае у вас вообще не должно было получиться это сделать, даже из ADB. К сожалению, вы использовали ошибку в своем рабочем процессе.
Вы используете эмулятор?
На устройствах с root-доступом вы можете получить доступ к этой папке, в противном случае вы не сможете. Я думаю, начиная с Lollipop, эмуляторы genymotion по умолчанию не имеют root-доступа.
Я использую настоящее устройство (Google Pixel) с Android Oreo.
Для доступа к этой папке у вас должен быть root-доступ (рутированное устройство). Это не связано с разрешениями времени выполнения.
Внутреннее хранилище приложения является частным для приложения и не может быть доступно из других приложений, если оно не является системным или у вас нет прав root.
Чтобы получить доступ к внутреннему хранилищу приложения через adb, либо устройство должно быть рутировано, либо приложение должно быть отлаживаемым.. Убедитесь, что вы не пытаетесь получить доступ к внутреннему хранилищу приложения, которое невозможно отладить.
И нет ничего общего с новой моделью разрешений Android, представленной в Android 6. Это скорее разрешение, связанное с файловой системой Linux.
Когда у вас была цель на 19, вы также тестировали на 19 устройстве? Это не должно иметь ничего общего с разрешениями приложения, а скорее с разрешениями, которые есть у пользователя
shell
.