it-swarm.com.de

ist es möglich, die Anwendungsdaten von adb Shell auf dieselbe Weise zu sehen, wie ich es sehe, wenn die SD-Karte montiert wird?

Ich teste eine Android-Anwendung.
.__ Ich möchte den Inhalt von 

/sdcard/Android/data/com.myapplication   

während die App läuft.
.__ Meine App funktioniert jedoch nicht richtig, wenn die SD-Karte als Laufwerk auf dem PC eingehängt ist (auf Bilder und Videos zugreift).
Ich dachte, ich könnte Adb Shell verwenden. Ich kann jedoch nicht auf denselben Ordner zugreifen: 

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

Mit Blick auf Stack Overflow habe ich auf folgende Weise die Anwendungsdaten über die Adb-Shell angezeigt: 

run-as com.myapplication

und so finde ich mich in der Mappe 

/data/data/com.myapplication

Ich bin verwirrt über die Tatsache, dass sich die Daten, die ich hier sehe, von den Daten unterscheiden, die ich beim Sichten der SD-Karte über den PC sehe. 

$ ls
ls
files
databases
shared_prefs
lib

Ich sehe unter Dateien etwas, das sich auch unter dem Ordner sdcard Android/data/com.myapplication befand, aber nicht das, wonach ich gesucht habe. Außerdem sind alle anderen Ordner unterschiedlich.
Gibt es einen Zusammenhang zwischen diesem 

/data/data/com.myapplication

ordner über ADB und die

/sdcard/Android/data/com.myapplication 

ordner über PC erreichbar?
Gibt es eine Möglichkeit, in adb Shell die darin enthaltenen Dateien zu sehen?

25
Ele

In der Regel stehen Dateien, die sich im Internal storage befinden und von Ihrer App gespeichert werden (standardmäßig nicht WORLD_READABLE), nur Ihrer Anwendung zum Lesen zur Verfügung. Wenn Sie versuchen, diese Dateien mit adb pull zu pull zu machen, wird die Berechtigung auf einem NICHT gerooteten Gerät verweigert. Es gibt einen Weg, das zu umgehen, werde ich später erklären. Dateien in External storage stehen dem Benutzer und allen anderen Apps zum Lesen zur Verfügung. Es kommt also darauf an, was Sie suchen. 

Um Dateien in Ihrem internal storage (/data/data/com.app.name) zu lesen, können Sie diese Dateien jetzt nicht direkt lesen. Sie können sie jedoch in das external storage verschieben und dann so lesen. 

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

Dann können Sie die Datei ohne Berechtigungsprobleme aus dem externen Speicher ziehen. 

adb pull /sdcard/Downloads/myfile.txt

Wenn Sie nicht sicher sind, welche Datei Sie verwenden möchten, oder Sie alle Dateien durchsuchen möchten, verwenden Sie die Shell, um alle Ihre App-Dateien zu durchsuchen.

adb Shell
run-as yourappPackageName
cd /data/data/youappPackageName
ls -all
63
Has AlTaiar

Mit diesem Adb-Befehl konnte ich die Sqlite-Datenbank abrufen, die die App verwendet:

adb exec-out run-as xxx.xxx.xxx.xxx cat "/data/data/xxx.xxx.xxx.xxx/databases/databasefile.db" > %userprofile%\Desktop\databasefile.db

Dabei ist xxx.xxx.xxx.xxx die BundleId Ihrer Android-App und databasefile.db der Name der SQLite-Datenbank

Ich kann mir vorstellen, dass Sie jede vorhandene Datei der App abrufen können, wissen, wo sie sich befindet und den Befehl adb exec-out run-as xxx.xxx.xxx.xxx verwenden

0
rtrujillor