Ich werde mich von einer anderen Antwort wiederholen :
Ab API-Ebene 8 (Android 2.2) können Sie, wenn Sie die Anwendung als debuggbar erstellen, mit dem Shell- run-as
Befehl einen Befehl oder eine ausführbare Datei als bestimmten Benutzer / eine bestimmte Anwendung ausführen oder einfach zu UID
Ihrer Anwendung wechseln, um auf deren Daten zuzugreifen Verzeichnis.
Wenn Sie also Ihre Anwendungsdatenbank vom Gerät abrufen möchten, sollten Sie den Debug-Build der Anwendung adb shell
ausführen , eine Verbindung mit dem folgenden Befehl herstellen und diesen ausführen:
run-as com.yourpackage sh -c "cat ~/databases/db-file" > /sdcard/db-file.sqlite
Dadurch wird Ihre Datei db-file
in das Stammverzeichnis Ihrer SD-Karte / Ihres externen Speichers kopiert . Jetzt können Sie es einfach von dort mit dem Dateimanager adb pull
oder was auch immer Sie möchten. Beachten Sie, dass bei diesem Ansatz KEINE WRITE_EXTERNAL_STORAGE
Berechtigung für Ihre App erforderlich ist , da das Kopieren vom Shell-Benutzer durchgeführt wird, der jederzeit in den externen Speicher schreiben kann.
Auf Linux / Mac-Systemen besteht die Möglichkeit, eine Datenbank mit dem folgenden Befehl direkt auf Ihren Computer zu kopieren, ohne die adb-Shell aufzurufen:
adb shell 'run-as com.yourpackage sh -c "cat ~/databases/db-file"' > db-file.sqlite
Dies funktioniert jedoch unter Windows aufgrund der Konvertierung von CR / LF-Symbolen nicht richtig. Verwenden Sie dort die erstere Methode.
SQLite format 3
Zeichenfolge beginnt, um grob zu überprüfen, ob die Datenbank korrekt heruntergeladen wurde .sqlite
Stellen Sie außerdem sicher, dass Sie eine korrekte Version haben (dh Sie versuchen nicht, die sqlite3-Datenbank mit der ausführbaren Datei sqlite2 zu öffnen). Sie können auch andere SQLite-Clients ausprobieren (z. B. SQLiteStudio ). Ich hoffe es hilft.permission denied
Ich verwende dieses Shell-Skript auf meinem MAC, das die Datenbank direkt in meinen Home-Ordner kopiert. Einfache Ein-Klick-Lösung, ändern Sie einfach den Paketnamen (com.example.app) und den Datenbanknamen (database.sqlite).
Einfaches Skript
Skript, das Argumente akzeptiert [Paketname] [Datenbank]
quelle
Der beste Weg, um Ihre Android-App-Datenbank anzuzeigen und zu verwalten, ist die Verwendung dieser Bibliothek https://github.com/sanathp/DatabaseManager_For_Android
Mit dieser Bibliothek können Sie Ihre App SQLite-Datenbank von Ihrer App selbst aus verwalten. Sie können die Tabellen in Ihrer App-Datenbank anzeigen, aktualisieren, löschen und Zeilen in Ihre Tabellen einfügen. Alles aus Ihrer App.
Es ist eine einzelne Java-Aktivitätsdatei. Fügen Sie die Java-Datei einfach Ihrem Quellordner hinzu. Wenn die Entwicklung abgeschlossen ist, entfernen Sie die Java-Datei aus Ihrem src-Ordner.
Es hat mir sehr geholfen. Ich hoffe, es hilft dir auch.
Sie können die 1-minütige Demo hier ansehen: http://youtu.be/P5vpaGoBlBY
quelle
Obwohl es eine alte Frage ist, denke ich, dass sie immer noch relevant ist und eine aktuelle Antwort verdient. Es stehen Tools zur Verfügung, mit denen Sie Datenbanken direkt überprüfen können (ohne sie vom Gerät oder Emulator abrufen zu müssen).
Das Tool, das ich zuletzt entdeckt habe (und das ich am meisten bevorzuge), ist die Android-Debug-Datenbank .
Sie müssen nur diese Abhängigkeit hinzufügen:
Es ist kein weiterer Code erforderlich. Nachdem Sie Ihre App gestartet haben, öffnen Sie logcat und filtern Sie nach "DebugDB". Daraufhin wird eine Meldung angezeigt
Es funktioniert mit jedem Browser und Sie können Ihre Datenbanktabellen und freigegebenen Einstellungen überprüfen.
Es funktioniert auch mit den Standard- und Genymotion-Emulatoren.
Das Werkzeug, das ich vorher benutzt habe, ist Stetho .
Nachteil: Sie müssen ein wenig Code hinzufügen und sind an den Chrome-Browser gebunden.
Vorteil: Sie haben die Möglichkeit, auch den Netzwerkverkehr zu überprüfen.
quelle
In meiner Anwendung exportiere ich die Datenbank auf die SD-Karte. Sobald sich die Datenbank auf der SD-Karte befindet, können Sie darauf zugreifen, indem Sie das Gerät an Ihren Computer anschließen.
Schauen Sie sich diesen Beitrag an: Erstellen einer Datenbanksicherung auf SDCard unter Android
quelle
Wenn du bekommst
Versuchen
Beachten Sie das doppelte Anführungszeichen!
quelle
Ich habe einfach getan:
Dann kann ich eine SQLite-Datenbank oder was auch immer ich tun möchte, aus einer Shell mit den richtigen Berechtigungen debuggen.
quelle
Es gibt eine Möglichkeit, wenn ein apk debuggbar ist, ein Programm namens run-as aus der (Nicht-Root-) ADB-Shell zu verwenden, um die private Datei einer Anwendung zu kopieren.
quelle
Hier finden Sie schrittweise Anleitungen - meist aus einer Kombination der anderen Antworten. Dies funktioniert mit Geräten, die nicht entsperrt sind.
Schließen Sie Ihr Gerät an und starten Sie die Anwendung im Debug-Modus.
Kopieren Sie die Datenbankdatei aus Ihrem Anwendungsordner auf Ihre SD-Karte: Ausführen:
./adb -d shell 'run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite> /sdcard/filename.sqlite'
Ziehen Sie die Datenbankdateien auf Ihren Computer: Führen Sie Folgendes aus:
./adb pull / sdcard / execute: ./adb
Installieren Sie Firefox SQLLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
Öffnen Sie Firefox SQLLite Manager und öffnen Sie Ihre Datenbankdatei ab Schritt 3 oben.
Genießen!
quelle
Android Studio 4.1 Es wurde eine neue Funktion zum Anzeigen / Bearbeiten von Android SQLite-Datenbanken hinzugefügt.
So öffnen Sie den Datenbankinspektor
Um den Datenbankinspektor in Android Studio zu öffnen, müssen Sie
View > Tool Windows > Database Inspector
aus der Menüleiste auswählen .Außerdem müssen Sie die App auf einem Gerät ausführen, auf dem API-Level 26 oder höher ausgeführt wird.
Mit diesem Tool können Sie
Fragen Sie Ihre Datenbanken ab
Ändern und debuggen Sie Ihre Datenbank
quelle
Im neuen Android Studio 4.1 gibt es den neuen Database Inspector .
Sie können die folgenden Optionen aus der Menüleiste auswählen
View > Tool Windows > Database Inspector
, um sie zu öffnen. Nähere Anweisungen finden Sie in diesem Blog .Eine andere Möglichkeit besteht darin, Stetho dafür zu verwenden. Sie fügen die Abhängigkeit hinzu und können dann die Chrome DevTools (chrome: // inspect) verwenden, um die Datenbank zu überprüfen, wenn das Gerät angeschlossen ist.
quelle
Sie müssen adb als root ausführen oder auf einem gerooteten Telefon verwenden.
Verwenden Sie, um adb als root auszuführen
adb root
Siehe auch: Warum wird mir bei Verwendung von adb der Zugriff auf den Datenordner verweigert?
quelle
Keine der
run-as
-and-cat-to-sdcard-Lösungen funktionierte für mich unter Android 4.4.2. Ich bin mir nicht sicher, aber ich vermute, dass dies daran liegt, dass dasrun-as
Tool die neuensdcard_r
undsdcard_rw
Berechtigungen nicht richtig verarbeitet .Ich musste zuerst die Datenbankdatei
/files
in den privaten internen Speicher meiner Anwendung kopieren :Dann habe ich
/sdcard/Android/data/com.example.myapp/files
in Javaland kopiert (dies erfordert dieWRITE_EXTERNAL_STORAGE
Erlaubnis):Schließlich habe ich die Datei auf meinen Laptop kopiert:
quelle
Mein Gerät hatte keine SD-Karte
Die erste Lösung hat bei mir also nicht funktioniert.Wenn Sie ein ähnliches Problem haben, versuchen Sie Folgendes:
quelle
/sdcard
ist nicht unbedingt eine SD-Karte. Auf meinem Telefon zeigt es auf internen Speicher, wenn keine physische SD-Karte vorhanden ist.Probieren Sie diese App aus: SQLiteWeb ( https://play.google.com/store/apps/details?id=br.com.cm.sqliteweb ). Es bietet Remotezugriff auf Ihre Datenbank, ohne sie herauszuziehen.
In der kostenpflichtigen Version hat es Root-Zugriff für die private Datenbank (/ data / data / package-name ...) oder implementiert einen Inhaltsanbieter, um eine Verbindung mit SQLiteWeb herzustellen (Anweisungen in der App).
Wenn Sie jedoch bei der kostenlosen Version bleiben möchten, können Sie Ihre Datenbank in einem externen Speicher erstellen:
quelle
Verwenden Sie unter OSX die Antwort von @Tadas mit Automator und sqllitebrowser ( https://github.com/sqlitebrowser/sqlitebrowser ):
Öffnen Sie Automator und erstellen Sie einen neuen Workflow.
Fügen Sie die Aktion "Shell-Skript ausführen" hinzu.
Fügen Sie Folgendes ein:
source ~ / .bash_profile adb shell 'run-as cat /data/data/your_app_uid/databases/db.name> /tmp/db.name' adb pull /tmp/db.name ~ / open -a sqlitebrowser ~ / db. Name
Klicken Sie auf Ausführen, um die Datenbank auf sqlitebrowser zu aktualisieren.
quelle
cd <ANDROID_SDK_PATH>
(für mich unter Windowscd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(Dies funktioniert nur, wenn nur ein Emulator ausgeführt wird.)cd data/data
su
(Superuser-Berechtigungen erhalten)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
, andernfalls wird die Anweisung nicht ausgegeben und bricht stattdessen in eine neue Zeile ein.)Hinweis: Verwenden Sie
ls
(Linux) oderdir
(Windows), wenn Sie Verzeichnisinhalte auflisten müssen.quelle