Ich entwickle eine App und weiß, dass meine Datenbank *.db
in angezeigt wirddata/data/com.****.***
Ich kann mit Hilfe von SQLite Manager von AVD in Eclipse auf diese Datei zugreifen
Ich kann jedoch auf meinem Android-Handy nicht auf diese Datei zugreifen.
Ich google es und es heißt, ich muss mein Telefon rooten, um es zu tun, aber ich möchte es nicht tun. (Neues Telefon, Garantieprobleme und Sicherheitsprobleme)
Hier ist meine Frage: Wie kann ich auf mein data/data/.....
Verzeichnis in meinem Android-Handy zugreifen, " ohne es zu rooten "?
Kann ich die Benutzerberechtigungen für das Verzeichnis ändern, data/data.....
ohne es zu rooten?
android
android-emulator
android-sqlite
adb
Naveen Prinz P.
quelle
quelle
Antworten:
Der direkte Zugriff auf die Dateien auf Ihrem Telefon ist schwierig, aber Sie können sie möglicherweise auf Ihren Computer kopieren, wo Sie alles tun können, was Sie wollen. Ohne Rooting haben Sie 2 Möglichkeiten:
Wenn die Anwendung debuggbar ist, können Sie den
run-as
Befehl in der ADB-Shell verwendenAlternativ können Sie die Backup-Funktion von Android verwenden.
Sie werden nun aufgefordert, Ihr Gerät zu entsperren und den Sicherungsvorgang zu bestätigen. Es ist am besten, KEIN Passwort anzugeben, da es sonst schwieriger wird, die Daten zu lesen. Klicken Sie einfach auf "Meine Daten sichern". Die resultierende 'backup.ab'-Datei auf Ihrem Computer enthält alle Anwendungsdaten im Android-Backup-Format. Im Grunde ist es eine komprimierte TAR-Datei. Auf dieser Seite wird erläutert, wie Sie den Befehl zlib von OpenSSL zum Dekomprimieren verwenden können. Mit dem
adb restore backup.db
Befehl können Sie die Sicherung wiederherstellen.quelle
adb backup -f \location\on\local\drive -noapk app.package.name
arbeitete für mich ohne rootdd if=backup.ab bs=24 skip=1|openssl zlib -d > backup.tar
adb backup -noapk com.your.packagename
wird die ab-Datei im aktuellen Verzeichnis gespeichert.cd Desktop..
android:allowBackup="false"
im Manifest deaktiviert hat .Wenn Sie Android Studio 3.0 oder eine neuere Version verwenden, führen Sie die folgenden Schritte aus.
Sie können nur Pakete erweitern, die im Debug-Modus auf nicht gerooteten Geräten ausgeführt werden.
quelle
3.0.1
. Ist sie verschoben worden?Sie können auch versuchen, die Datenbank mit der Root-Explorer-App abzurufen. Und wenn das nicht funktioniert, können Sie Folgendes versuchen:
adb shell
' einsu
chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/*
Danach sollten Sie in der Lage sein, die Dateien auf dem gerooteten Gerät zu durchsuchen.
quelle
Um einen der oben genannten Schritte auszuführen (dh von Ihrem Telefon aus auf geschützte Ordner zuzugreifen), benötigen Sie weiterhin root. (Dazu gehört das Ändern der Mount-Berechtigungen für den Ordner / data und der Zugriff darauf.)
Ohne root ist ein
/data
direkter Zugriff auf das zu lesende Element nur innerhalb Ihrer Anwendung per Code möglich. Sie können also versuchen, diese Datei auf eine SD-Karte oder an einen Ort zu kopieren, auf den Sie zugreifen können, und dann sollten Sie normal darauf zugreifen können.Durch das Rooten erlischt Ihre Garantie nicht, wenn Sie ein Entwicklergerät haben. Es tut mir leid, es gibt keinen anderen Weg AFAIK.
quelle
adb pull
wie in der folgenden Antwort erwähnt.Der einfachste Weg (nur ein einfacher Schritt), eine Datei aus Ihrem debuggbaren Anwendungsordner (z. B.
/data/data/package.name/databases/file
) auf einem nicht gerooteten Android 5.0+ Gerät abzurufen, ist die Verwendung des folgenden Befehls:quelle
adb -d shell
run-as com.your.packagename cat databases/database.db > /sdcard/database.db
cd /sdcard
um sicherzustellen, dassdatabase.db
es vorhanden ist.adb pull /sdcard/database.db
oder Sie können einfach database.db vom Gerät kopieren.quelle
Verwenden Sie den Datei-Explorer in Eclipse. Wählen Sie Windows => Show View => Other ... => File Explorer.
Eine andere Möglichkeit ist das Abrufen der Datei über adb:
quelle
Ich hatte auch einmal das gleiche Problem. Es gibt keine Möglichkeit, direkt auf die Datei auf Android-Geräten zuzugreifen, außer auf die ADB-Shell oder das Root-Gerät.
Daneben gibt es 02 Alternativen:
1)
2) Versuchen Sie Folgendes: https://github.com/sanathp/DatabaseManager_For_Android
quelle
So sichern Sie von Android auf den Desktop
Öffnen Sie die Befehlszeile cmd und führen Sie Folgendes aus: adb backup -f C: \ Intel \ xxx.ab -noapk your.app.package . Geben Sie kein Passwort ein und klicken Sie auf Meine Daten sichern. Stellen Sie sicher, dass Sie nicht auf Laufwerk C root speichern. Sie können abgelehnt werden. Deshalb habe ich auf C: \ Intel gespeichert.
So extrahieren Sie die * .ab-Datei
quelle
Auf einem gerooteten Gerät lautet die richtige Lösung:
Die ursprüngliche Lösung funktionierte, aber der chmod gab ein unbekanntes Verzeichnis zurück. Durch Ändern des Befehls chmod in / data / data / * wurde über DDMS in Intellij auf alle Unterordner im Datenverzeichnis zugegriffen. Ich gehe davon aus, dass die gleiche Lösung für Eclipse DDMS gilt.
UPDATE Also, was ich gefunden habe, ist seltsam. Ich verwende ein Nexus 6 mit DDMS in IntelliJ (Android Device Monitor). Ich habe eine kleine Starter-App erstellt. Diese App speichert Daten in einer CSV-Datei in data / data / com.example.myapp / files
Als ich zum ersten Mal versuchte, auf diese Datei auf meinem Nexus 6 zuzugreifen, stellte ich fest, dass ich das Gerät rooten musste. Ich konnte den Datenordner sehen, aber der Versuch, ihn zu öffnen, funktionierte nicht. Wie an anderen Stellen online erwähnt, würde das expand + verschwinden und kurz darauf wieder angezeigt werden (Hinweis: Es gibt Lösungen im Web, die behaupten, den Zugriff auf diese Ordner ohne Rooting zu ermöglichen. Ich habe sie erst zu spät gefunden und bin es auch Ich bin mir nicht sicher, ob ich es sowieso vorziehen würde, nicht zu rooten ((ich würde es lieber manuell tun können, als mich auf eine App oder eine Eingabeaufforderung zu verlassen, um mir meine Lösungen zu geben)). Ich habe meine 6 gerootet und DDMS erneut versucht.
Zu diesem Zeitpunkt zeigte es mir den Datenordner und ich konnte den Ordner erweitern und die com sehen. Verzeichnisse, aber ich konnte keines von ihnen öffnen. Dann entdeckte ich die obige Lösung. Die anfänglichen Anweisungen würden in diesem Teil nicht funktionieren:
Zu diesem Zeitpunkt habe ich die von mir veröffentlichte Lösung ausprobiert:
Diese Lösung schien zu funktionieren, aber nur für bestimmte Ordner. Ich konnte jetzt meinen myapp-Ordner erweitern, aber das Dateiverzeichnis darin nicht erweitern.
Zu diesem Zeitpunkt habe ich eine Weile herumgespielt und dann herausgefunden, warum ich es nicht einfach in dem Verzeichnis versuche, das ich brauche, anstatt diese Platzhaltereinträge auszuprobieren.
Gefolgt von:
Mit diesen Befehlen konnte ich die Dateien im Verzeichnis meiner App erweitern und anzeigen, um zu bestätigen, dass die CSV-Datei korrekt gespeichert wurde.
Hoffe das hilft jemandem. Ich hatte stundenlang damit zu kämpfen!
(Um dies noch ein bisschen weiter zu verschärfen, wurden die Berechtigungen seltsamerweise nicht an die CSV-Datei übergeben, die an das Dateiverzeichnis übergeben wurde. Meine Dateiverzeichnisberechtigungen lauten drwxrwxrwx und meine log.csv-Dateiberechtigungen lesen -rw-rw --- - .. Nur zu deiner Information)
quelle
Sie können eine Sigle-Datei wie folgt herunterladen:
adb exec-out run-as debuggable.app.package.name cat files/file.mp4 > file.mp4
Vor dem Herunterladen möchten Sie möglicherweise nicht die Dateistruktur in Ihrem App-Verzeichnis überprüfen. Führen Sie dazu die
THelper
oben genannten Schritte aus :Die erwähnte Android-Studio- Methode
Shahidul
( https://stackoverflow.com/a/44089388/1256697 ) funktioniert ebenfalls. Für diejenigen, die dieDeviceFile Explorer
Option nicht im Menü sehen: Öffnen Sie unbedingt das Verzeichnis / android-Directory in Android Studio. Beispielsweise haben reaktionsnative Benutzer dies in ihrem Projektordner direkt auf derselben Ebene wie das / ios-Verzeichnis.quelle
Eine der einfachen Möglichkeiten besteht darin, Ihre Datenbank auf einer SD-Karte zu erstellen. Weil Sie keinen Zugriff auf den Datenordner Ihres Telefons im internen Speicher erhalten, es sei denn, Sie rooten Ihr Telefon. Warum also nicht einfach Ihre Datenbank auf SD-Karte erstellen?
Wenn Sie möchten, können Sie außerdem einen Dateikopiercode schreiben, um Ihre vorhandene Datenbankdatei (vom internen Speicher) in den externen Speicher zu kopieren, ohne dass Root erforderlich ist.
quelle
File
Für den Zugriff auf diesen Ordner benötigen Sie möglicherweise Administratorrechte.
Sie haben also zwei Möglichkeiten: -
ps: Wenn Sie eine der beiden oben genannten Optionen verwenden, können Sie mit den folgenden Schritten auf diesen Ordner zugreifen
und von dort aus können Sie Ihre Datei aufrufen
quelle
adb backup
hat bei mir nicht funktioniert, also habe ich Folgendes getan (Xiaomi Redmi Note 4X, Android 6.0):1. Gehen Sie zu Einstellungen> Zusätzliche Einstellungen> Sichern & Zurücksetzen> Lokale Sicherungen .
2. Tippen Sie unten auf dem Bildschirm auf "Sichern".
3. Deaktivieren Sie die Kontrollkästchen "System" und "Apps".
4. Tippen Sie rechts in der Zelle "Apps" auf die Schaltfläche zur Offenlegung von Details, um zum App-Auswahlbildschirm zu navigieren.
5. Wählen Sie die gewünschte App aus und tippen Sie auf OK.
6. Nach Abschluss der Sicherung muss die eigentliche Datei irgendwie gefunden werden. Meins konnte unter / MIUI / backup / AllBackup / _FOLDER_NAMED_AFTER_BACKUP_CREATION_DATE_ gefunden werden .
7. Dann folgte ich den Schritten aus dieser Antwort von RonTLVUm die Sicherungsdatei (in meinem Fall .bak) tatsächlich in tar zu konvertieren (Duplizieren von der ursprünglichen Antwort):
"
a) Gehen Sie hier und laden Sie Folgendes herunter: https://sourceforge.net/projects/adbextractor/
b) Extrahieren Sie die heruntergeladene Datei und Navigieren Sie zu dem Ordner, in den Sie extrahiert haben.
c) Führen Sie diesen mit Ihren eigenen Dateinamen aus: java -jar abe.jar entpacken c: \ Intel \ xxx.ab c: \ Intel \ xxx.tar
"
quelle
Sie können diese Datenbankdatei an eine beliebige Stelle im Eclipse-Explorer kopieren (z. B. SD-Karte oder PC), und Sie können SQLite verwenden, um auf diese Datenbankdatei zuzugreifen und diese zu aktualisieren.
quelle
Die Frage ist: Wie-auf-Daten-Daten-Ordner-in-Android-Gerät zugreifen?
Wenn Android-Gerät Bluestacks ist * Root Browser APK zeigt Daten / Daten / ..
Versuchen Sie, den Root-Browser von https://apkpure.com/root-browser/com.jrummy.root.browserfree herunterzuladen
Wenn es sich bei der Datei um eine Textdatei handelt, müssen Sie auf "Öffnen als", "Textdatei", "Öffnen als", "RB-Texteditor" klicken.
quelle
Sie können auch versuchen, die Datei in den SD-Kartenordner zu kopieren, der ein öffentlicher Ordner ist. Anschließend können Sie die Datei auf Ihren PC kopieren, wo Sie mit SQLite darauf zugreifen können.
Hier ist ein Code, mit dem Sie die Datei von Daten / Daten in einen öffentlichen Speicherordner kopieren können:
Manifest:
quelle
Die SQLlite-Datenbank wird auf dem Telefon des Benutzers gespeichert und unter folgendem Pfad versteckt:
Sie haben hier 2 Möglichkeiten:
quelle