Wie kann man die (privaten) Daten der eigenen Android-App abrufen?


97

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!


5
Wenn das Gerät nicht gerootet ist, können Sie das einfach nicht tun.
323go

Ich hoffe, Sie liegen falsch, aber für alle Fälle verschieben Sie bitte Ihren Kommentar, um eine Antwort zu erhalten. Könnten Sie eine Art Referenz hinzufügen, um zu belegen, warum Sie so denken? Ich möchte alle Junk-Dateien speichern, die die fehlerhaften Versionen meines Programms gespeichert haben, um sicherzustellen, dass mein Programm, das näher an der Veröffentlichung liegt, alle Arten von Eingabedateien ordnungsgemäß verarbeitet.
Calaf

1
Bedeutet das, dass man das Verzeichnis von world: - x to world: rx lange genug ändern kann, um die Dateien abrufen zu können?
Calaf

1
@Knossos Ist es nicht legitim, dass Benutzer eine Kopie der privaten Daten speichern können, die eine App auf ihren Geräten gespeichert hat, obwohl es sich um meine App handelt? Schließlich gehören die Daten vermutlich dem Gerätebesitzer, nicht dem App-Autor.
Calaf

1
Das Problem besteht darin, wie Sie zwischen dem Eigentümer und einer schädlichen App / einem böswilligen Programm unterscheiden, die bzw. das versucht, mit den privaten Daten Ihrer Apps zu kommunizieren. (die persönliche Daten eines Benutzers haben könnten)
Knossos

Antworten:


101

adb backup schreibt ein Android-spezifisches Archiv:

adb backup  -f myAndroidBackup.ab  com.corp.appName

Dieses Archiv kann mithilfe von:

dd if=myAndroidBackup.ab bs=4K iflag=skip_bytes skip=24 | openssl zlib -d > myAndroidBackup.tar

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 .


5
bs=24 skip=1ist viel schneller als bs=1 skip=24(auf meinem System 38,6 MB / s vs 1,7 MB / s) :)
Netvope

18
Python-Alternative für wo openssl nicht mit zlib kompiliert wurde: 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)
OJFord

6
Ich hatte noch nie Erfolg mit dem ddBefehl auf meinem MacBook bei der Arbeit. Stattdessen benutze ich java -jar ./abe.jar unpack data.ab data.tar. Sie können das Dienstprogramm abe von sourceforge.net/projects/adbextractor/files/?source=navbar
Someone Somewhere

3
Außerdem habe ich festgestellt, dass ich die App, deren Daten ich sichern möchte, zwangsweise schließen musste, da sonst die Sicherung leer ist! (Android 4.4.2) Welches ist der gleiche Effekt wie wenn das Manifest zeigtandroid:allowBackup="false"
Jemand irgendwo

2
Noch besser, extrahieren Sie die Dateien direkt in das lokale Verzeichnis:dd if=myAndroidBackup.ab bs=24 skip=1 | openssl zlib -d | tar -x
mreichelt

50

Ich hatte das gleiche Problem, löste es aber wie folgt:

$ adb shell
$ run-as {app-package-name}
$ cd /data/data/{app-package-name}
$ chmod 777 {file}
$ cp {file} /mnt/sdcard/

Danach können Sie laufen

$ adb pull /mnt/sdcard/{file}

1
Danke, Mann! Sie müssen auch "cp -r" verwenden, um eine rekursive Kopie zu erstellen. stackoverflow.com/questions/39961621/…
朱 西西

31

Folgendes hat bei mir funktioniert:

adb -d shell "run-as com.example.test cat /data/data/com.example.test/databases/data.db" > data.db

Ich drucke die Datenbank direkt in eine lokale Datei.


3
Genau dieser Befehl hat dazu geführt, dass meine Datenbankdatei beschädigt wurde. Aber ich habe es geschafft, mit den folgenden Schritten zu arbeiten: ------ adb shell ------ innerhalb des Shell-Laufs run-as com.example.test ------ innerhalb des Shell-Laufs cat ...db > /mnt/sdcard/file.db------ adb pull /mnt/sdcard/file.db .------ end (Entschuldigung, Zeilenumbrüche funktionieren nicht)
Kirill Oficerov

@ KirillOficerov es wäre gut, wenn diese Befehle in einer Zeile geschrieben werden können
emen

Großartig, wenn Sie 1 Datei benötigen. Ich habe dies für die Datenbank verwendet. Angesichts des Falls, in dem ich mehrere Dateien benötige.
Dave Thomas

Aus irgendeinem Grund hat die Verwendung adb shellbei mir nicht funktioniert, aber es hat funktioniert , dieser Antwort zu folgen und adb exec-outsie zu verwenden!
EpicPandaForce

21

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:

 adb backup -f backup com.mypackage.myapp

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:

dd if=backup bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" > backup.tar

Jetzt haben Sie eine backup.tar-Datei, die Sie wie folgt entpacken können:

 tar xvf backup.tar

Und sehen Sie alle von Ihrer Anwendung gespeicherten Dateien.


Ihre Mac-Version funktioniert! HINWEIS: Beide adb backupund die ddTeerkonvertierungsschritte bieten während der Arbeit keinen Status und können Minuten dauern, wenn Sie über viele Daten verfügen. Sei geduldig!
MechEthan

2
Ich erhalte folgende Meldung: "zlib.error: Fehler -3 beim Dekomprimieren von Daten: falsche Header-Prüfung" Mein Backup fordert jedoch ein Kennwort zum Verschlüsseln an. Diese Python-Methode fordert kein Kennwort zum Entschlüsseln der Sicherung an. Das abe.jar in den Kommentaren im obigen Beispiel fragt nach dem Passwort, aber ich habe nicht alle Dateien erhalten, nachdem ich mit dieser Methode das Tarieren aufgehoben habe.
Dave Thomas

Mein zweiter Versuch mit abe.jar bei einem verschlüsselten Backup hat funktioniert.
Dave Thomas

7

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

  1. Klicken Sie auf Ansicht> Werkzeugfenster> Gerätedateie-Explorer oder klicken Sie in der Symbolleistenleiste auf die Schaltfläche Gerätedatei-Explorer, um den Gerätedateie-Explorer zu öffnen.
  2. Wählen Sie ein Gerät aus der Dropdown-Liste.
  3. 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.

Dateimanager

Vollständige Dokumentation


6

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 backupTool:

#!/bin/sh

if [ -z "$1" ]; then 
    echo "Sorry script requires an argument for the file you want to pull."
    exit 1
fi

adb shell "run-as com.corp.appName cat '/data/data/com.corp.appNamepp/$1' > '/sdcard/$1'"
adb pull "/sdcard/$1"
adb shell "rm '/sdcard/$1'"

Dann können Sie es so verwenden:

./pull.sh files/myFile.txt
./pull.sh cache/someCachedData.txt

10
Das Beste ist, wenn Sie keine Argumente angeben und dann rm /sdcard/ersetzen, zum Glück nicht -rf.
TWiStErRob

3
Sie können einfach direkt in eine Datei auf dem Host katzen: "adb shell run-as com.whatever.Fnord cat /data/data/com.whatever.Fnord/databases/logging.db> / tmp / foo" (where / tmp / foo ist eine Datei auf dem Host-Computer, nicht auf dem Android-Gerät)
James Moore

Gerade erkannt, dass @ dave-thomas das Problem vor einiger Zeit behoben hat. Mein Downvote entfernen.
Don Hatch

Oder nicht :-( "Ihre Stimme ist jetzt gesperrt, es sei denn, diese Antwort wird bearbeitet."
Don Hatch

TBH Ich verstehe die Aufregung darüber nicht. Das (ursprüngliche) Skript hätte das Verzeichnis niemals gelöscht (fehlender -rf-Schalter), es sei denn, es wäre leer. Ich habe nicht überprüft, aber selbst wenn das Verzeichnis leer ist, bezweifle ich, dass das Skript das Verzeichnis löscht, da es ein Mountpunkt ist. Das Drehbuch sah gefährlich aus, aber es war nie ...
Tamas

5

Wenn Sie einen Mac und ein Samsung-Telefon verwenden, müssen Sie dies tun (da run-as dies bei Samsung zlib nicht funktioniert und bei Mac nicht funktioniert ).

  1. Erstellen Sie eine Sicherungskopie des Datenverzeichnisses Ihrer App adb backup -f /Users/username/Desktop/data.ab com.example

  2. 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?

  3. Nach erfolgreicher Sicherung wird die data.abDatei auf Ihrem Desktop angezeigt. Jetzt müssen wir dies in das tarFormat konvertieren .

  4. Verwenden Sie dazu Android Backup Extractor . Herunterladen | Quellcode

  5. Laden Sie es herunter und Sie werden die abe.jarDatei sehen. Fügen Sie dies Ihrer PATH-Variablen hinzu.

  6. 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

  7. Extrahieren Sie die Datei data.tar , um auf alle Dateien zuzugreifen


2
Befolgte dies genau und die data.tarnur Auszüge zu einem data.tar.cpgz@henry
user-44651

2

Diese 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.

  1. Verwenden Sie die akzeptierte Antwort zusammen mit den OSX-spezifischen Kommentaren von Someone Somewhere. Erstellen Sie ein Backup und verwenden Sie die Drittanbieterlösung sourceforge.net/projects/adbextractor/files/?source=navbar , um sie in einen Teer zu entpacken. Ich werde am Ende dieser Antwort mehr über meine Erfahrungen mit dieser Lösung schreiben. Scrollen Sie nach unten, wenn Sie danach suchen.

  2. Eine schnellere Lösung, mit der ich mich abgefunden habe. Ich habe ein Skript zum Abrufen mehrerer Dateien erstellt, ähnlich der Antwort von Tamas. Ich kann dies auf diese Weise tun, da meine App eine Debug-App ist und ich Zugriff auf Run-As auf meinem Gerät habe. Wenn Sie keinen Zugriff auf run-as haben, funktioniert diese Methode unter OSX nicht.

Hier ist mein Skript zum Abrufen mehrerer privater Dateien, die ich mit Ihnen, dem Leser, teilen werde, der auch diese großartige Frage untersucht;):

#!/bin/bash
#
# Strict mode: http://redsymbol.net/articles/unofficial-bash-strict-mode/
set -euo pipefail
IFS=$'\n\t'

# 
# Usage: script -f fileToPull -p packageName
# 

# This script is for pulling private files from an Android device
# using run-as. Note: not all devices have run-as access, and
# application must be a debug version for run-as to work.
# 
# If run-as is deactivated on your device use one of the
# alternative methods here:
# http://stackoverflow.com/questions/15558353/how-can-one-pull-the-private-data-of-ones-own-android-app
# 
# If you have encrypted backup files use:
# sourceforge.net/projects/adbextractor/files/?source=navbar 
# From comments in the accepted answer in the above SO question
# 
# If your files aren't encrypted use the accepted answer 
# ( see comments and other answers for OSX compatibility )
# 
# This script is open to expansions to allow selecting 
# device used. Currently first selected device from
# adb shell will be used.

#Check we have one connected device
adb devices -l | grep -e 'device\b' > /dev/null

if [ $? -gt 0 ]; then
    echo "No device connected to adb."
    exit 1
fi

# Set filename or directory to pull from device
# Set package name we will run as
while getopts f:p: opt; do
    case $opt in
        f)
            fileToPull=$OPTARG
            ;;
        p)
            packageName=$OPTARG
            ;;
    esac
done;

# Block file arg from being blank
if [ -z "$fileToPull" ]; then
    echo "Please specify file or folder to pull with -f argument"
    exit 1
fi

# Block package name arg from being blank
if [ -z "$packageName" ]; then
    echo "Please specify package name to run as when pulling file"
    exit 1
fi

# Check package exists
adb shell pm list packages | grep "$packageName" > /dev/null
if [ $? -gt 0 ]; then
    echo "Package name $packageName does not exist on device"
    exit 1
fi

# Check file exists and has permission with run-as
fileCheck=`adb shell "run-as $packageName ls $fileToPull"`
if [[ $fileCheck =~ "Permission denied" ]] || [[ $fileCheck =~ "No such file or directory" ]]; then
    echo "Error: $fileCheck"
    echo "With file -> $fileToPull"
    exit 1
fi

# Function to pull private file
#
# param 1 = package name
# param 2 = file to pull
# param 3 = output file
function pull_private_file () {

    mkdir -p `dirname $3`

    echo -e "\033[0;35m***" >&2
    echo -e "\033[0;36m Coping file $2 -> $3" >&2
    echo -e "\033[0;35m***\033[0m" >&2

    adb shell "run-as $1 cat $2" > $3
}

# Check if a file is a directory
# 
# param 1 = directory to check
function is_file_dir() {

    adb shell "if [ -d \"$1\" ]; then echo TRUE; fi"
}

# Check if a file is a symbolic link
# 
# param 1 = directory to check
function is_file_symlink() {

    adb shell "if [ -L \"$1\" ]; then echo TRUE; fi"
}

# recursively pull files from device connected to adb
# 
# param 1 = package name
# param 2 = file to pull
# param 3 = output file
function recurse_pull_private_files() {

    is_dir=`is_file_dir "$2"`
    is_symlink=`is_file_symlink "$2"`

    if [ -n "$is_dir" ]; then

        files=`adb shell "run-as $1 ls \"$2\""`

        # Handle the case where directory is a symbolic link
        if [ -n "$is_symlink" ]; then
            correctPath=`adb shell "run-as $1 ls -l \"$2\"" | sed 's/.*-> //' | tr -d '\r'`
            files=`adb shell "run-as $1 ls \"$correctPath\""`
        fi

        for i in $files; do

            # Android adds nasty carriage return that screws with bash vars
            # This removes it. Otherwise weird behavior happens
            fileName=`echo "$i" | tr -d '\r'` 

            nextFile="$2/$fileName"
            nextOutput="$3/$fileName"
            recurse_pull_private_files "$1" "$nextFile" "$nextOutput"
        done
    else

        pull_private_file "$1" "$2" "$3"
    fi
}

recurse_pull_private_files "$packageName" "$fileToPull" "`basename "$fileToPull"`"

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):

adb backup -f myAndroidBackup.ab  com.corp.appName

Zweitens habe ich nur abe.jar von hier heruntergeladen: https://sourceforge.net/projects/adbextractor/files/abe.jar/download

Als nächstes rannte ich:

java -jar ./abe.jar unpack myAndroidBackup.ab myAndroidBackup.tar

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.

  • Also ging ich zu http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html und lud die benötigten Sicherheitsrichtlinien-Jars herunter. In meinem Fall haben mir die Installationsanweisungen den falschen Speicherort für die JAR-Dateien mitgeteilt. Es heißt, dass der richtige Speicherort <java-home> / lib / security ist . Ich habe sie zuerst dort abgelegt und trotzdem die Fehlermeldung erhalten. Also habe ich nachgeforscht und auf meinem Mac mit Java 1.8 war der richtige Ort, um sie zu platzieren: <java-home> / jre / lib / security . Ich habe dafür gesorgt, dass die ursprünglichen Richtliniengläser gesichert und dort abgelegt wurden. Vola Ich konnte mit abe.jar ein Passwort eingeben und in eine TAR-Datei entschlüsseln.

Zuletzt bin ich gerade gelaufen ( nachdem ich den vorherigen Befehl erneut ausgeführt habe )

tar xvf myAndroidBackup.tar

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!


1
Dank Ihrer Antwort mit Methode 1 konnte ich eine Paketsicherung von einer Debug-Ziel-App abrufen und untersuchen, die auf einem nicht gerooteten Produktionsgerät installiert ist. Die Sicherung enthält jedoch nur die Manifestdatei. Mit Methode 2 habe ich alle Daten der App heruntergeladen, aber Binärdateien (dh SQLite-Dateien) sind nicht lesbar. Ich füge eine Lösung hinzu, die auf Ihrem Skript basiert und für mich funktioniert hat.
Paolone

1

Nachdem Sie die richtigen Berechtigungen festgelegt haben, fügen Sie den folgenden Code hinzu:

File myFile = ...;
myFile.setReadable(true, false); // readable, not only for the owner

adb pull funktioniert wie gewünscht.

siehe File.setReadable ()


Es ist in Ordnung, die Berechtigungen während des Debuggens zu ändern, aber irgendwann in der Nähe der Veröffentlichung würde dies den standardmäßig angebotenen Schutz zunichte machen (um zu verhindern, dass andere Apps auf die Dateien zugreifen oder diese durcheinander bringen). Daher ist eine Möglichkeit für den Entwickler wünschenswerter, auf die Dateien zuzugreifen, obwohl sie nur vom Benutzer lesbar / beschreibbar sind.
Calaf

1

Ausgehend vom Dave Thomas-Skript konnte ich meine eigene Lösung schreiben, um zwei Probleme zu lösen:

  1. Mein Backup enthielt nur die Manifestdatei
  2. Binärdateien wurden mit Dave Thomas unlesbar

Dies ist mein Skript, das App-Daten auf SD-Karte kopiert und dann abruft

#Check we have one connected device
adb devices -l | grep -e 'device\b' > /dev/null

if [ $? -gt 0 ]; then
    echo "No device connected to adb."
    exit 1
fi

# Set filename or directory to pull from device
# Set package name we will run as
while getopts f:p: opt; do
    case $opt in
        f)
            fileToPull=$OPTARG
            ;;
        p)
            packageName=$OPTARG
            ;;
    esac
done;

# Block package name arg from being blank
if [ -z "$packageName" ]; then
    echo "Please specify package name to run as when pulling file"
    exit 1
fi

# Check package exists
adb shell pm list packages | grep "$packageName" > /dev/null
if [ $? -gt 0 ]; then
    echo "Package name $packageName does not exist on device"
    exit 1
fi

    adb shell "run-as $packageName cp -r /data/data/$packageName/ /sdcard/$packageName"
    adb pull /sdcard/$packageName
    adb shell rm -rf /sdcard/$packageName

1

Ähnlich wie bei Tamas ist hier ein Einzeiler für Mac OS X, mit dem Sie alle Dateien für die App your.app.idvon Ihrem Gerät abrufen und in (in diesem Fall) speichern können ~/Desktop/your.app.id:

(
    id=your.app.id &&
    dest=~/Desktop &&
    adb shell "run-as $id cp -r /data/data/$id /sdcard" &&
    adb -d pull "/sdcard/$id" "$dest" &&
    if [ -n "$id" ]; then adb shell "rm -rf /sdcard/$id"; fi
)
  • Schließen Sie den -dvom Emulator zu ziehenden aus
  • Stampft nicht auf Ihre Sitzungsvariablen
  • Sie können den gesamten Block in Terminal.app einfügen (oder bei Bedarf Zeilenumbrüche entfernen).

0

Spieldaten mit apk gesichert . Nougat Oneplus 2.

**adb backup "-apk com.nekki.shadowfight" -f "c:\myapk\samsung2.ab"**

adb backup -f myapp.ab -apk com.myapp # backup on one device adb restore myapp.ab # restore to the same or any other device
Steven Linn

0

Bedeutet das, dass man das Verzeichnis von world: - x to world: rx lange genug ändern kann, um die Dateien abrufen zu können?

Ja genau. Seltsamerweise benötigen Sie auch die Datei, um das xBit 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).


0

du kannst tun:

adb pull / storage / emulated / 0 / Android / data //


2
Versteh mich nicht falsch, aber hast du die Frage richtig gelesen? OP bittet darum, die "privaten" Daten NICHT "öffentlich"
abzurufen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.