Подтвердить что ты не робот

Можно ли увидеть данные приложения из оболочки adb так же, как я вижу, что она монтирует SD-карту?

Я тестирую приложение для Android.
Я хотел бы следить за содержанием

/sdcard/Android/data/com.myapplication   

пока приложение запущено.
Но мое приложение работает неправильно, если SD-карта смонтирована как диск на ПК (обращается к изображениям и видео).
Поэтому я подумал, что могу использовать оболочку adb. Но он не позволяет мне получить доступ к той же папке:

ls /sdcard/Android/data/com.myapplication  
/sdcard/Android/data/com.myapplication: Permission denied

Глядя на переполнение стека, я нашел этот способ увидеть данные приложения через оболочку adb:

run-as com.myapplication

и поэтому я попадаю в папку

/data/data/com.myapplication

Я смущен тем, что данные, которые я вижу здесь, отличаются от данных, которые я просматриваю при просмотре содержимого sdcard с помощью ПК.

$ ls
ls
files
databases
shared_prefs
lib

Я вижу под файлами что-то, что также было в папке sdcard Android/data/com.myapplication, но не то, что я искал. Кроме того, все другие папки отличаются.
Существует ли корреляция между этим

/data/data/com.myapplication

доступная через adb, и

/sdcard/Android/data/com.myapplication 
папка

доступная через ПК?
Есть ли способ увидеть в оболочке adb файлы, присутствующие в последнем?

4b9b3361

Ответ 1

Как правило, файлы, находящиеся в Internal storage и хранящиеся в вашем приложении (по умолчанию не WORLD_READABLE), будут доступны только для чтения вашего приложения. Когда вы пытаетесь выполнить pull эти файлы с помощью adb pull, вы получите разрешение, отклоненное на некотором корневом устройстве. Есть способ обойти это, я объясню позже. Файлы в External storage, с другой стороны, доступны для пользователя и для всех других приложений для чтения. так что это зависит от того, что вам нужно.

Теперь, чтобы читать файлы в хранилище internal (/data/data/com.app.name), вы не можете читать эти файлы напрямую, но то, что вы можете сделать, это переместить их на хранилище external, а затем читайте их там.

adb shell "run-as com.yourappName cat /data/data/com.yourappName/files/myfile.txt > /sdcard/Downloads/myfile.txt"

Затем вы можете вытащить файл из внешнего хранилища без каких-либо проблем с разрешением.

adb pull /sdcard/Downloads/myfile.txt

Если вы не уверены в том, какой файл или хотите просмотреть все файлы, то пользовательский оболочка просматривает все ваши файлы приложений.

adb shell
run-as yourappPackageName
cd /data/data/youappPackageName
ls -all

Ответ 2

Вы можете получить доступ к нему через утилиту, которая была опубликована ранее в блоге. Это утилита java, через которую вы можете получить все папки в папке с данными приложения, просто указав имя пакета вашего приложения. Просто приложение должно быть отлаживаемым.

Извлечь файлы Android

Действительно работает