Tentative d'extraction d'un seul fichier à l'aide de
adb pull /data/data/com.corp.appName/files/myFile.txt myFile.txt
échoue avec
failed to copy '/data/data/com.corp.appName/files/myFile.txt myFile.txt' to 'myFile.txt': Permission denied
malgré que le débogage USB soit activé sur l'appareil.
On peut contourner le problème par la voie archaïque
adb shell
run-as com.corp.appName
cat files/myFile.txt > myFile.txt
mais c'est compliqué pour plus d'un fichier.
Comment puis-je extraire le répertoire /data/data/com.corp.appName/files sur mon MacBook?
Faire cela directement ou via un transit dans `/ storage / sdcard0 / myDir (d'où je peux continuer avec Android File Transfer) est très bien.
Commentaire additionnel
C'est peut-être que courir
adb backup -f myFiles com.corp.appName
générera les fichiers que je recherche. Dans ce cas, je cherche un moyen de décompresser / décompresser la sauvegarde résultante!
Réponses:
adb backup écrira une archive spécifique à Android:
Cette archive peut être convertie au format tar en utilisant:
Référence:
http://nelenkov.blogspot.ca/2012/06/unpacking-android-backups.html
Recherchez «Mettre à jour» sur ce lien.
Vous pouvez également utiliser l' extracteur de sauvegarde Android pour extraire les fichiers du fichier de sauvegarde Android (
.ab
).la source
bs=24 skip=1
est beaucoup plus rapide quebs=1 skip=24
(sur mon système, 38,6 Mo / s contre 1,7 Mo / s) :)dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
(à partir de la source ci-dessus)dd
commande sur mon MacBook au travail. Au lieu de cela, j'utilisejava -jar ./abe.jar unpack data.ab data.tar
. Vous pouvez télécharger l'utilitaire abe depuis sourceforge.net/projects/adbextractor/files/?source=navbarandroid:allowBackup="false"
dd if=myAndroidBackup.ab bs=24 skip=1 | openssl zlib -d | tar -x
J'ai eu le même problème mais je l'ai résolu en suivant:
Après cela, vous pouvez courir
la source
Voici ce qui a fonctionné pour moi:
J'imprime la base de données directement dans le fichier local.
la source
adb shell
------ à l'intérieur du shell runrun-as com.example.test
------ à l'intérieur du shell runcat ...db > /mnt/sdcard/file.db
------adb pull /mnt/sdcard/file.db .
------ end (désolé, les sauts de ligne ne fonctionnent pas)adb shell
n'a pas fonctionné pour moi, mais suivre cette réponse et l'utiliseradb exec-out
a fonctionné!Sur MacOSX, en combinant les réponses de Calaf et d'Ollie Ford, ce qui suit a fonctionné pour moi.
Sur la ligne de commande (assurez-vous que adb est dans votre chemin, le mien était dans ~ / Library / Android / sdk / platform-tools / adb) et avec votre appareil Android branché et en mode de débogage USB, exécutez:
Votre appareil Android vous demandera la permission de sauvegarder vos données. Sélectionnez "SAUVEGARDER MES DONNÉES"
Attendez quelques instants.
La sauvegarde de fichier apparaîtra dans le répertoire où vous avez exécuté adb.
Maintenant, exécutez:
Vous avez maintenant un fichier backup.tar que vous pouvez décompresser comme ceci:
Et voyez tous les fichiers stockés par votre application.
la source
adb backup
et lesdd
étapes de conversion de goudron fournissent pas de statut tout en travaillant et peut prendre quelques minutes si vous avez beaucoup de données. Sois patient!Les nouvelles versions d'Android Studio incluent l' Explorateur de fichiers de périphériques que j'ai trouvé être une méthode GUI pratique pour télécharger des fichiers à partir de mon Nexus 7 de développement.
Vous devez vous assurer que vous avez activé le débogage USB sur l'appareil
Interagissez avec le contenu de l'appareil dans la fenêtre de l'explorateur de fichiers. Cliquez avec le bouton droit sur un fichier ou un répertoire pour créer un nouveau fichier ou répertoire, enregistrer le fichier ou répertoire sélectionné sur votre machine, télécharger, supprimer ou synchroniser. Double-cliquez sur un fichier pour l'ouvrir dans Android Studio.
Android Studio enregistre les fichiers que vous ouvrez de cette manière dans un répertoire temporaire en dehors de votre projet. Si vous apportez des modifications à un fichier que vous avez ouvert à l'aide de l'explorateur de fichiers de périphérique et que vous souhaitez enregistrer vos modifications sur le périphérique, vous devez télécharger manuellement la version modifiée du fichier sur le périphérique.
Documentation complète
la source
Vous pouvez utiliser ce script shell ci-dessous. Il est également capable d'extraire des fichiers du cache de l'application, contrairement à l'
adb backup
outil:Ensuite, vous pouvez l'utiliser comme ceci:
la source
rm /sdcard/
substituts, heureusement que ce n'est pas le cas-rf
.Si vous utilisez une machine Mac et un téléphone Samsung, voici ce que vous devez faire (car
run-as
ne fonctionne pas sur Samsung etzlib
ne fonctionne pas sur Mac)Faites une sauvegarde du répertoire de données de votre application
adb backup -f /Users/username/Desktop/data.ab com.example
Il vous sera demandé un mot de passe à crypter dans votre téléphone, n'en saisissez aucun. Appuyez simplement sur "Sauvegarder mes données". Voir Comment prendre BackUp?
Une fois la sauvegarde réussie, vous verrez le
data.ab
fichier sur votre bureau. Nous devons maintenant le convertir autar
format.Utilisez Android Backup Extractor pour cela. Télécharger | Code source
Téléchargez-le et vous verrez le
abe.jar
fichier. Ajoutez ceci à votre variable PATH.Exécutez ceci pour générer le fichier tar :
java -jar abe.jar unpack /Users/username/Desktop/data.ab /Users/username/Desktop/data.tar
Extrayez le fichier data.tar pour accéder à tous les fichiers
la source
data.tar
extraits justes à undata.tar.cpgz
@henryCette réponse est basée sur mon expérience avec d'autres réponses et des commentaires dans les réponses. J'espère que je peux aider quelqu'un dans une situation similaire.
Je fais cela sur OSX via un terminal.
Auparavant, la réponse de Vinicius Avellar fonctionnait très bien pour moi. J'avais seulement la plupart du temps besoin de la base de données de l'appareil à partir d'une application de débogage.
Aujourd'hui, j'ai eu un cas d'utilisation où j'avais besoin de plusieurs fichiers privés . Je me suis retrouvé avec deux solutions qui ont bien fonctionné pour ce cas.
Voici mon script pour extraire plusieurs fichiers privés que je partagerai avec vous, le lecteur, qui étudie également cette question géniale;):
Gist: https://gist.github.com/davethomas11/6c88f92c6221ffe6bc26de7335107dd4
Retour à la méthode 1 , décrypter une sauvegarde à l'aide d' Android Backup Extractor
Voici les étapes que j'ai suivies sur mon Mac et les problèmes que j'ai rencontrés:
J'ai d'abord mis une sauvegarde en file d'attente (et défini un mot de passe pour crypter ma sauvegarde, mon appareil en avait besoin):
Deuxièmement, j'ai téléchargé juste abe.jar à partir d'ici: https://sourceforge.net/projects/adbextractor/files/abe.jar/download
Ensuite, j'ai couru:
À ce stade, j'ai reçu un message d'erreur. Comme mon archive est chiffrée, java m'a donné une erreur dont j'avais besoin pour installer certaines bibliothèques de politiques de sécurité.
Enfin, je viens de courir ( après avoir réexécuté la commande précédente )
Maintenant, il est important de noter que si vous pouvez simplement courir en tant que chat, c'est beaucoup plus rapide. Premièrement, vous n'obtenez que les fichiers souhaités et non l'application entière. Deuxièmement, plus il y a de fichiers (+ cryptage pour moi), plus le transfert est lent. Il est donc important de savoir comment procéder de cette manière si vous ne disposez pas de run-as sur OSX, mais le script doit être utilisé en premier pour une application de débogage.
Remarquez que je viens de l'écrire aujourd'hui et de l'avoir testé quelques fois, alors veuillez me signaler tout bogue!
la source
Après avoir défini les bonnes autorisations en ajoutant le code suivant:
adb pull
fonctionne comme vous le souhaitez.voir File.setReadable ()
la source
À partir du script Dave Thomas, j'ai pu écrire ma propre solution pour surmonter 2 problèmes:
Ceci est mon script, qui copie les données de l'application sur sdcard, puis les extrait
la source
Semblable à la réponse de Tamas , voici une ligne unique pour Mac OS X pour récupérer tous les fichiers pour l'application avec
your.app.id
de votre appareil et les enregistrer (dans ce cas)~/Desktop/your.app.id
:-d
à tirer de l'émulateurla source
Sauvegarde des données du jeu avec apk . Nougat Oneplus 2.
la source
adb backup -f myapp.ab -apk com.myapp # backup on one device
adb restore myapp.ab # restore to the same or any other device
Oui, exactement. Curieusement, vous avez également besoin du fichier pour que le
x
bit soit défini. (au moins sur Android 2.3)chmod 755
tout en bas a travaillé pour copier un fichier (mais vous devez revenir sur les autorisations par la suite, si vous prévoyez de continuer à utiliser l'appareil).la source
tu peux faire:
la source