Я подключился к своему живому устройству с помощью adb и следующих команд:
C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied
Я был удивлен, увидев, что мне отказано в доступе. Почему я не могу просматривать каталоги с помощью командной строки?
Как получить root-доступ на телефоне?
Решение проблемы
Начиная с уровня API 8 (Android 2.2), для отлаживаемого приложения (которое создается Android Studio все время, если не запрашивалась сборка выпуска), вы можете использовать команду оболочки run-as
для запуска команды или исполняемого файла от имени конкретного пользователя/приложения. или просто переключитесь на UID вашего приложения, чтобы вы могли получить доступ к его каталогу данных.
Список содержимого каталога вашего приложения:
run-as com.yourapp ls -l /data/data/com.yourapp
Переключитесь на UID com.yourapp и выполните все дальнейшие команды, используя этот uid (пока не вызовете exit
):
run-as com.yourapp
cd /data/data/com.yourapp
ls -l
exit
Примечание 1. С некоторыми телефонами HTC Desire связана известная проблема. Из-за нестандартного владельца/прав доступа к /data/data
каталогу run-as
команда не запускается на этих телефонах.
Примечание 2. Как указано в комментариях @Avio:
run-as
также возникают проблемы с телефонами Samsung Galaxy S, на которых работает Cyanogenmod в любой версии (от 7 до 10.1), потому что на этой платформе /data/data
есть символическая ссылка на /datadata
. Один из способов решить эту проблему — заменить символическую ссылку фактическим каталогом (к сожалению, для этого обычно требуется root-доступ).
Комментариев нет:
Отправить комментарий