Versuch, eine einzelne Datei mit zu ziehen
adb pull /data/data/com.corp.appName/files/myFile.txt myFile.txt
scheitert mit
failed to copy '/data/data/com.corp.appName/files/myFile.txt myFile.txt' to 'myFile.txt': Permission denied
Trotzdem ist das USB-Debugging auf dem Gerät aktiviert.
Wir können das Problem auf dem archaischen Weg umgehen
adb shell
run-as com.corp.appName
cat files/myFile.txt > myFile.txt
Dies ist jedoch für mehr als eine Datei unhandlich.
Wie kann ich das Verzeichnis /data/data/com.corp.appName/files auf mein MacBook ziehen?
Dies entweder direkt oder über einen Transit in `/ storage / sdcard0 / myDir (von wo aus ich mit der Android-Dateiübertragung fortfahren kann) zu tun, ist in Ordnung.
Zusätzlicher Kommentar
Es kann sein, dass nur läuft
adb backup -f myFiles com.corp.appName
generiert die Dateien, die ich suche. In diesem Fall suche ich nach einer Möglichkeit, das resultierende Backup zu entpacken / entpacken!
Antworten:
adb backup schreibt ein Android-spezifisches Archiv:
Dieses Archiv kann mithilfe von:
Referenz:
http://nelenkov.blogspot.ca/2012/06/unpacking-android-backups.html
Suchen Sie unter diesem Link nach "Update".
Alternativ können Sie den Android Backup Extractor verwenden , um Dateien aus der Android backup (
.ab
) Datei zu extrahieren .quelle
bs=24 skip=1
ist viel schneller alsbs=1 skip=24
(auf meinem System 38,6 MB / s vs 1,7 MB / s) :)dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
(von oben Quelle)dd
Befehl auf meinem MacBook bei der Arbeit. Stattdessen benutze ichjava -jar ./abe.jar unpack data.ab data.tar
. Sie können das Dienstprogramm abe von sourceforge.net/projects/adbextractor/files/?source=navbarandroid:allowBackup="false"
dd if=myAndroidBackup.ab bs=24 skip=1 | openssl zlib -d | tar -x
Ich hatte das gleiche Problem, löste es aber wie folgt:
Danach können Sie laufen
quelle
Folgendes hat bei mir funktioniert:
Ich drucke die Datenbank direkt in eine lokale Datei.
quelle
adb shell
------ innerhalb des Shell-Laufsrun-as com.example.test
------ innerhalb des Shell-Laufscat ...db > /mnt/sdcard/file.db
------adb pull /mnt/sdcard/file.db .
------ end (Entschuldigung, Zeilenumbrüche funktionieren nicht)adb shell
bei mir nicht funktioniert, aber es hat funktioniert , dieser Antwort zu folgen undadb exec-out
sie zu verwenden!Unter MacOSX funktionierte das Folgende für mich, indem ich die Antworten von Calaf und Ollie Ford kombinierte.
In der Befehlszeile (stellen Sie sicher, dass sich adb in Ihrem Pfad befindet, meins befand sich unter ~ / Library / Android / sdk / platform-tools / adb) und führen Sie mit angeschlossenem Android-Gerät und im USB-Debugging-Modus Folgendes aus:
Ihr Android-Gerät bittet Sie um Erlaubnis zum Sichern Ihrer Daten. Wählen Sie "MEINE DATEN SICHERN"
Warten Sie einige Momente.
Die Dateisicherung wird in dem Verzeichnis angezeigt, in dem Sie adb ausgeführt haben.
Führen Sie jetzt aus:
Jetzt haben Sie eine backup.tar-Datei, die Sie wie folgt entpacken können:
Und sehen Sie alle von Ihrer Anwendung gespeicherten Dateien.
quelle
adb backup
und diedd
Teerkonvertierungsschritte bieten während der Arbeit keinen Status und können Minuten dauern, wenn Sie über viele Daten verfügen. Sei geduldig!Neuere Versionen von Android Studio enthalten den Gerätedateie-Explorer, der sich als praktische GUI-Methode zum Herunterladen von Dateien aus meinem Entwicklungs-Nexus 7 herausgestellt hat.
Sie müssen sicherstellen, dass Sie das USB-Debugging auf dem Gerät aktiviert haben
Interagieren Sie mit dem Geräteinhalt im Datei-Explorer-Fenster. Klicken Sie mit der rechten Maustaste auf eine Datei oder ein Verzeichnis, um eine neue Datei oder ein neues Verzeichnis zu erstellen, die ausgewählte Datei oder das ausgewählte Verzeichnis auf Ihrem Computer zu speichern, hochzuladen, zu löschen oder zu synchronisieren. Doppelklicken Sie auf eine Datei, um sie in Android Studio zu öffnen.
Android Studio speichert Dateien, die Sie auf diese Weise öffnen, in einem temporären Verzeichnis außerhalb Ihres Projekts. Wenn Sie Änderungen an einer Datei vornehmen, die Sie mit dem Gerätedateie-Explorer geöffnet haben, und Ihre Änderungen wieder auf dem Gerät speichern möchten, müssen Sie die geänderte Version der Datei manuell auf das Gerät hochladen.
Vollständige Dokumentation
quelle
Sie können dieses Shell-Skript unten verwenden. Es ist auch in der Lage, Dateien aus dem App-Cache zu ziehen, nicht wie das
adb backup
Tool:Dann können Sie es so verwenden:
quelle
rm /sdcard/
ersetzen, zum Glück nicht-rf
.Wenn Sie einen Mac und ein Samsung-Telefon verwenden, müssen Sie dies tun (da
run-as
dies bei Samsungzlib
nicht funktioniert und bei Mac nicht funktioniert ).Erstellen Sie eine Sicherungskopie des Datenverzeichnisses Ihrer App
adb backup -f /Users/username/Desktop/data.ab com.example
Sie werden nach einem Passwort zum Verschlüsseln in Ihrem Telefon gefragt. Geben Sie kein Passwort ein. Tippen Sie einfach auf "Daten sichern". Siehe Wie nehme ich BackUp?
Nach erfolgreicher Sicherung wird die
data.ab
Datei auf Ihrem Desktop angezeigt. Jetzt müssen wir dies in dastar
Format konvertieren .Verwenden Sie dazu Android Backup Extractor . Herunterladen | Quellcode
Laden Sie es herunter und Sie werden die
abe.jar
Datei sehen. Fügen Sie dies Ihrer PATH-Variablen hinzu.Führen Sie dies aus, um die TAR- Datei zu generieren :
java -jar abe.jar unpack /Users/username/Desktop/data.ab /Users/username/Desktop/data.tar
Extrahieren Sie die Datei data.tar , um auf alle Dateien zuzugreifen
quelle
data.tar
nur Auszüge zu einemdata.tar.cpgz
@henryDiese Antwort basiert auf meinen Erfahrungen mit anderen Antworten und Kommentaren in den Antworten. Ich hoffe, ich kann jemandem in einer ähnlichen Situation helfen.
Ich mache das unter OSX via Terminal.
Zuvor hat die Antwort von Vinicius Avellar für mich hervorragend funktioniert. Ich brauchte die meiste Zeit nur die Datenbank vom Gerät aus einer Debug-Anwendung.
Heute hatte ich einen Anwendungsfall, in dem ich mehrere private Dateien benötigte . Am Ende hatte ich zwei Lösungen, die für diesen Fall gut funktionierten.
Hier ist mein Skript zum Abrufen mehrerer privater Dateien, die ich mit Ihnen, dem Leser, teilen werde, der auch diese großartige Frage untersucht;):
Inhalt: https://gist.github.com/davethomas11/6c88f92c6221ffe6bc26de7335107dd4
Zurück zu Methode 1 : Entschlüsseln eines Backups mit Android Backup Extractor
Hier sind die Schritte, die ich auf meinem Mac unternommen habe, und die Probleme, auf die ich gestoßen bin:
Zuerst habe ich ein Backup in die Warteschlange gestellt (und ein Kennwort zum Verschlüsseln meines Backups festgelegt, mein Gerät hat es benötigt):
Zweitens habe ich nur abe.jar von hier heruntergeladen: https://sourceforge.net/projects/adbextractor/files/abe.jar/download
Als nächstes rannte ich:
Zu diesem Zeitpunkt erhielt ich eine Fehlermeldung. Da mein Archiv verschlüsselt ist, gab mir Java einen Fehler, den ich zum Installieren einiger Sicherheitsrichtlinienbibliotheken benötigte.
Zuletzt bin ich gerade gelaufen ( nachdem ich den vorherigen Befehl erneut ausgeführt habe )
Jetzt ist es wichtig zu beachten, dass es viel viel schneller geht, wenn Sie nur als Katze laufen können. Erstens erhalten Sie nur die gewünschten Dateien und nicht die gesamte Anwendung. Zweitens, je mehr Dateien (+ Verschlüsselung für mich), desto langsamer wird die Übertragung. Daher ist es wichtig zu wissen, wie dies zu tun ist, wenn Sie unter OSX kein Run-as haben, das Skript jedoch zuerst für eine Debug-Anwendung aufgerufen werden sollte.
Wohlgemerkt, ich habe es heute geschrieben und ein paar Mal getestet. Bitte benachrichtigen Sie mich über Fehler!
quelle
Nachdem Sie die richtigen Berechtigungen festgelegt haben, fügen Sie den folgenden Code hinzu:
adb pull
funktioniert wie gewünscht.siehe File.setReadable ()
quelle
Ausgehend vom Dave Thomas-Skript konnte ich meine eigene Lösung schreiben, um zwei Probleme zu lösen:
Dies ist mein Skript, das App-Daten auf SD-Karte kopiert und dann abruft
quelle
Ähnlich wie bei Tamas ist hier ein Einzeiler für Mac OS X, mit dem Sie alle Dateien für die App
your.app.id
von Ihrem Gerät abrufen und in (in diesem Fall) speichern können~/Desktop/your.app.id
:-d
vom Emulator zu ziehenden ausquelle
Spieldaten mit apk gesichert . Nougat Oneplus 2.
quelle
adb backup -f myapp.ab -apk com.myapp # backup on one device
adb restore myapp.ab # restore to the same or any other device
Ja genau. Seltsamerweise benötigen Sie auch die Datei, um das
x
Bit gesetzt zu haben . (zumindest unter Android 2.3)chmod 755
Der ganze Weg nach unten hat funktioniert, um eine Datei zu kopieren (aber Sie sollten die Berechtigungen danach zurücksetzen, wenn Sie das Gerät weiterhin verwenden möchten).quelle
du kannst tun:
quelle