8 votes

adb push ... Permission refusée

J'essaie de pousser un fichier vers un répertoire sur un appareil Android physique, mais je rencontre l'erreur suivante.

>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

Je pense que adb a des privilèges suffisants.

>adb root
adbd is already running as root

Voici les détails de la permission pour le chemin : /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

Je ne suis pas sûr de ce qu'il faut faire ici. Je m'y prends peut-être mal, mais je veux simplement pousser le fichier data.db dans le répertoire /data/data/com.me.app/databases de l'appareil.

Quelqu'un sait-il ce que je fais mal ou ce que je devrais envisager ? Merci.

6voto

yohosuff Points 211

Edit : J'ai trouvé une solution de contournement : AirDroid me permet de télécharger le fichier, mais les permissions sur le fichier sont définies comme ceci :

-rw-------

L'exécution des commandes suivantes résout ce problème (à partir de l'invite de commande de Windows 7).

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

5voto

JeffK Points 271

J'ai eu une variante de ce problème et je vais le laisser ici au cas où quelqu'un d'autre le chercherait sur Google :

./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)

Cependant, dans mon cas, le problème était de fonctionner adb à partir du shell Git bash (MinGW64). L'exécution à partir du shell Windows normal a fonctionné correctement.

4voto

Alexey Romanov Points 255

L'approche habituelle, qui ne nécessite aucune application supplémentaire :

  1. Pousser pour /data/tmp/ ;

  2. Copie sur l'appareil en utilisant adb shell en utilisant cp s'il est disponible sur votre appareil ou cat si ce n'est pas le cas.

     > 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

Se souvenir de changer com.me.app au nom de paquet correct pour votre application.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X