11 Stimmen

Wie greift man auf die Datenbank zu, wenn man auf einem Android-Handy entwickelt?

Ich habe Probleme beim Zugriff auf die Datenbank, während ich am Telefon entwickle. Wenn ich ausführe

cd /data/data/com.mycompck/databases

und führen Sie dann ls Ich verstehe: "opendir failed, Permission denied"

Oder wenn ich eintippe sqlite3 Ich verstehe: "sqlite3: permission denied"

Was mache ich falsch?

Gibt es Anwendungen, die mir dabei helfen können, einen Überblick über die Werte von Inhaltsauflösern und/oder SQLite-Datenbanken zu erhalten?

17voto

Idolon Punkte 27701

Sehen Sie sich meine Antwort im folgenden Thread an: Warum wird mir der Zugriff auf den Datenordner verweigert, wenn ich adb verwende?

Ab API-Ebene 8 (Android 2.2) können Sie, wenn Sie die Anwendung als debuggingfähig erstellen, die Shell run-as Befehl, um einen Befehl oder eine ausführbare Datei als bestimmten Benutzer/Anwendung auszuführen oder einfach zum UID Ihrer Anwendung, damit Sie auf deren data Verzeichnis.

Grundsätzlich müssen Sie also einen Debug-Build erstellen (der aus automatisch wenn Sie die Anwendung von Android Studio aus starten, es sei denn, Sie fordern den Release-Build an) und führen Sie die folgenden Befehle aus:

run-as com.mycompck
cd /data/data/com.mycompck/databases
ls
sqlite3 ./yourdatabase.db

Beachten Sie jedoch, dass sqlite3 binary ist auf vielen Telefonen nicht standardmäßig vorhanden. Daher müssen Sie es vielleicht irgendwo herunterladen (z. B. aus dem SuperOneClick-Archiv unter http://shortfuse.org/ ), auf der SD-Karte speichern und ausführbar machen (was allerdings ein wenig schwierig ist):

run-as com.mycompck
cd /data/data/com.mycompck/
cat /sdcard/sqlite3 >./sqlite3
chmod 744 ./sqlite3
./sqlite3 ./databases/yourdatabase.db

0 Stimmen

Sie kopieren also sqlite3 in das Verzeichnis der Anwendung und ändern dann die Berechtigungen auf ausführbar. Ich nehme an, dass dies bedeutet, dass eine Kopie von sqlite3 in diesem Verzeichnis lebt, bis die App vom Telefon gelöscht wird. Meine Frage ist also: Löscht die Neuinstallation der App die ausführbare Datei (z. B. durch Klicken auf RUN in Eclipse)?

1 Stimmen

@styfle Ihre Anwendungsdatenbank und die gemeinsamen Einstellungen werden nicht gelöscht, wenn Sie in Eclipse auf "Ausführen" klicken, oder? Genauso wie die ausführbare Datei sqlite3. Nur adb uninstall (ohne -k Option) wird sie gelöscht (oder die Anwendung wird manuell über den Anwendungsmanager des Geräts deinstalliert).

0 Stimmen

Muss ich in Idea13CE (Community Edition) etwas tun, um sicherzustellen, dass ein Debug-Build erstellt wird?

1voto

Dan Lew Punkte 83507

Um den ersten Teil Ihrer Frage zu beantworten, lesen Sie diese Antwort . Grundsätzlich muss Ihr Telefon Root-Zugriff haben, und Sie müssen adb im Root-Modus ausführen (mit "adb Root").

Was den zweiten Teil betrifft, so verwende ich SQLite-Datenbank-Browser um meine SQLite-Datenbanken einzusehen (allerdings nur, wenn sich die Datenbank auf meinem Computer befindet; ich kenne keine geräteinternen Browser). Ich kenne keine Möglichkeit, eine menschliche Ansicht der Inhaltsauflöser zu erhalten.

0 Stimmen

Warum benötige ich Root-Zugriff? Ich möchte auf die Daten meiner Anwendungen zugreifen, da ich der Entwickler bin und gerne Zugriff darauf hätte.

0 Stimmen

Adbd kann in Produktions-Builds nicht als Root laufen

4 Stimmen

Fügen Sie eine Export- oder Sicherungsfunktion in Ihre Anwendung ein, die die Datenbank auf die SD-Karte kopiert.

0voto

Cristian Punkte 195886

Sie müssen Root sein, um auf jede Datenbankdatei zugreifen zu können. Also, Sie können entweder Root auf Ihrem Telefon (suchen Sie nach Informationen auf Google) oder Debuggen der Datenbank nur aus dem Emulator (die Sie Root-Zugriff immer gibt).

Auf Wiedersehen!

0 Stimmen

Leider kann ich die Datenbank nicht vom Emulator aus debuggen, da der Emulator nicht über die von mir verwendeten Anwendungen verfügt (Agenda, Bluetooth, Wifi).

0 Stimmen

Aber Sie können diese Anwendungen auf dem Emulator installieren: adb install appname.apk Wie auch immer, ich empfehle dringend, Ihr Telefon zu rooten :) google.com.co/search?q=Root+Android

0voto

sanath_p Punkte 2106

Der beste Weg, Ihre Android-App-Datenbank anzuzeigen und zu verwalten, ist die Verwendung dieser Bibliothek https://github.com/sanathp/DatabaseManager_For_Android

Es ist eine einzelne Java-Aktivitätsdatei, fügen Sie einfach die Java-Datei zu Ihrem Quellordner können Sie die Tabellen in Ihrer App-Datenbank zu sehen, zu aktualisieren, zu löschen, fügen Sie Zeilen zu Ihnen Tabelle.

Wenn die Entwicklung abgeschlossen ist, entfernen Sie die Java-Datei aus Ihrem src-Ordner, das war's.

Es hat mir sehr geholfen, ich hoffe, es hilft auch Ihnen.

Sie können sich die 1-minütige Demo hier ansehen: http://youtu.be/P5vpaGoBlBY

-1voto

Feddex Punkte 43

Ich habe ein wenig darüber gelesen, und der Zugriff auf Ihre Datenbankdateien für Mobiltelefone scheint ziemlich mühsam zu sein.

Schauen Sie sich das an. Damit können Sie Ihre Datenbank innerhalb Ihrer Anwendung anzeigen. Datenbank-Manager

Bei mir hat das gut funktioniert. Es hängt natürlich auch davon ab, was du vorhast zu tun.

Ich hoffe, es hilft.

0 Stimmen

Auch wenn dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzuführen und den Link als Referenz anzugeben. Antworten, die nur einen Link enthalten, können ungültig werden, wenn sich die verlinkte Seite ändert. - Aus der Rezension

0 Stimmen

Guter Punkt. Aber es ist immer noch eine großartige Möglichkeit, Ihre mobilen Datenbanken zu verwalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X