Warum kann ich ohne Root eine bestimmte apk mit adb ziehen, aber nicht alles in /data/app. Android 4+?

Verwendung: Droid Bionic 4.04 ohne Root.

Ich kann die ADB verwenden, um beispielsweise eine bestimmte APK-Datei auf meinen PC zu ziehen,

     adb pull /data/app/com.google.android.gm-1.apk C:\my-hacks

die die APK-Datei von Google Mail ziehen. Aber wenn ich versuche, das gesamte Verzeichnis /data/app mit zu kopieren

     adb pull /data/app C:\myhacks

Die Befehlszeile lautet
Pull: Dateiliste erstellen... 0 Dateien gezogen. 0 Dateien übersprungen.

Ich verstehe nicht, warum ich die Berechtigung habe, bestimmte Dateien aus /data/ zu ziehen, aber nicht alles.

Antworten (2)

Es ist eine "Erlaubnis und Privatsphäre" Sache. Während das .apkkeine Bedenken hinsichtlich des Datenschutzes hat (und daher jedem Leseberechtigung erteilen kann), tun dies die Daten, und daher ist das Verzeichnis nur für Besitzer, Gruppe und Root lesbar (nicht für "andere", was Sie tun würden need -- "other" hat nur eXecute-Berechtigungen).

ls -l / | grep data
drwxrwx--x   25 system   system  4096 Jan 28 17:51 data

Das bedeutet: Wenn Sie die Datei direkt angeben, können Sie sie ziehen (da sie die erforderlichen Dateiberechtigungen hat und das Verzeichnis es cdaufgrund des gesetzten eXecute-Bits zulässt). Die Angabe des Verzeichnisses schlägt stattdessen fehl, da dies erfordern würde, ( ) in das Verzeichnis zu wechseln cd(was funktioniert) und eine Liste der enthaltenen Dateien zu erstellen - was aufgrund der fehlenden Leseberechtigung für den Verzeichniseintrag selbst unmöglich ist.

Izzys Antwort ist gut und gut erklärt. Darauf aufbauend können Sie als Root den Root-Explorer öffnen, zum App-Ordner navigieren /data/und die Berechtigungen für den App-Ordner ändern.

Drücken Sie einfach lange auf die App, tippen Sie auf Permissionsund aktivieren Sie neben anderen die entsprechenden Kästchen.