adb push ... Berechtigung verweigert

Ich versuche, eine Datei in ein Verzeichnis auf einem physischen Android-Gerät zu verschieben, aber ich stoße auf den folgenden Fehler.

>adb push data.db /data/data/com.me.app/databases
failed to copy 'data.db' to '/data/data/com.me.app/databases/data.db': Permission denied

Ich glaube, adb hat ausreichende Privilegien.

>adb root
adbd is already running as root

Hier sind die Berechtigungsdetails für den Pfad: /data/data/com.me.app/databases

drwxrwxrwx system   system            2014-01-14 10:31 data
drwxrwxrwx system   system            2015-05-23 16:06 data
drwxrwxrwx u0_a224  u0_a224           2015-05-23 15:26 com.me.app
drwxrwxrwx u0_a224  u0_a224           2015-05-23 15:30 databases

Ich bin mir nicht sicher, was ich hier tun soll. Vielleicht gehe ich das falsch an, aber ich möchte nur die Datei data.db in das Verzeichnis /data/data/com.me.app/databases auf dem Gerät verschieben.

Weiß jemand was ich falsch mache oder was ich beachten sollte? Vielen Dank.

Geben Sie hier Ihre Problemumgehung als Antwort ein und akzeptieren Sie Ihre eigene Antwort, damit Personen, die nach einem ähnlichen Problem suchen, eine Antwort sehen, wenn sie danach suchen.

Antworten (3)

Bearbeiten: Ich habe eine Problemumgehung gefunden: AirDroid erlaubt mir, die Datei hochzuladen, aber die Berechtigungen für die Datei sind so eingestellt:

-rw-------

Das Ausführen der folgenden Befehle löst dieses Problem (über die Windows 7-Eingabeaufforderung).

>adb shell
# su
# chmod 777 /data/data/com.me.app/databases/data.db

Ich hatte eine Variation dieses Problems, also werde ich es hier lassen, falls jemand anderes danach googelt:

./adb push update.zip /sdcard
[  0%] C:/Users/Alex/AppData/Local/Programs/Git/sdcard
adb: error: failed to copy 'update.zip' to 'C:/Users/Alex/AppData/Local/Programs/Git/sdcard':
remote secure_mkdirs failed: No such file or directory
update.zip: 0 files pushed. 41.6 MB/s (131072 bytes in 0.003s)

In meinem Fall wurde das Problem jedoch adbvon Git Bash Shell (MinGW64) ausgeführt. Das Ausführen über die normale Windows-Shell funktionierte einwandfrei.

Der übliche Ansatz, der keine zusätzlichen Apps erfordert:

  1. Drücken Sie auf /data/tmp/;

  2. Kopieren Sie auf dem Gerät mit adb shell, verwenden cpSie ob es auf Ihrem Gerät verfügbar ist oder catnicht.

     > adb push data.db /data/tmp/data.db
     > adb shell
     # su # or run-as com.me.app
     # cp /data/tmp/data.db /data/data/com.me.app/databases/data.db
    

Denken Sie daran com.me.app, zum richtigen Paketnamen für Ihre App zu wechseln.

Dieser Ansatz hat bei mir funktioniert. Der Vollständigkeit halber habe ich tatsächlich eine obb-Datei verschoben /sdcard/und dann adb shellohne Root-Berechtigungen verwendet, um diese Datei in den richtigen Paketordner für diese Datei zu kopieren (in /sdcard/Android/obb/packagename/dem packagenamegeändert werden muss, damit sie mit dem Ihrer Android-App übereinstimmt.
Ich musste es zuerst erstellen:adb shell mkdir /data/tmp/ ; adb shell chmod 777 /data/tmp/ ; adb push file /data/tmp/