Ich habe gerade Realm entdeckt und wollte es genauer untersuchen, also habe ich beschlossen, eine Beispielanwendung zu erstellen und damit herumzuspielen. So weit, ist es gut.
Eine Sache, die ich bisher noch nicht herausfinden konnte, ist das Anzeigen meiner Datenbank im Realm Browser. Wie kann das gemacht werden?
Antworten:
Derzeit unterstützt der Realm Browser den Zugriff auf Datenbanken nicht direkt auf dem Gerät. Sie müssen die Datenbank daher vom Emulator / Telefon kopieren, um sie anzuzeigen. Dies kann mithilfe von ADB erfolgen:
adb pull /data/data/<packagename>/files/ .
Dieser Befehl ruft alle Realm-Dateien ab, die mit erstellt wurden
Realm.getInstance(new RealmConfiguration.Builder().build())
. Die Standarddatenbank wird aufgerufendefault.realm
.Beachten Sie, dass dies nur auf einem Emulator funktioniert oder wenn das Gerät gerootet ist.
quelle
Jetzt können Sie Realm DB im Chrome-Browser mit Stetho anzeigen , das von Facebook entwickelt wurde. Standardmäßig erlaubt Stetho das Anzeigen von SQLite-, Netzwerk- und gemeinsam genutzten Einstellungen, aber mit einem zusätzlichen Plugin können Sie hier auch Realm anzeigen.
Application
Öffnen Sie nach dem Konfigurieren Ihrer Klasse mit den oben genannten Bibliotheken, während die App ausgeführt und verbunden wird, den Chrome-Browser und navigieren Sie, umchrome://inspect
zu sehenDann
Resources->Web Sql->default.realm
quelle
https://github.com/uPhyca/stetho-realm/raw/master/maven-repo
wie hier gezeigtSie können Ihre Datei auch mit der ADB-Shell und dem Befehl run-as von jedem Gerät ohne Rootberechtigung abrufen.
Mit diesen Befehlen können Sie eine Datenbank mit dem Namen your_database_file_name aus dem privaten Speicher Ihrer App abrufen, die sich im Ordner files befindet:
quelle
adb exec-out run-as package.name cat files/your_database_file_name < your_database_file_name
Wenn Sie faul sind, die Realm-Datenbankdatei jedes Mal mit adb abzurufen, können Sie Ihrem Android-Code eine Exportfunktion hinzufügen, die Ihnen eine E-Mail mit der Realm-Datenbankdatei als Anhang sendet.
Hier ein Beispiel:
Vergessen Sie nicht, diese Benutzerberechtigung zu Ihrer Android Manifest-Datei hinzuzufügen:
quelle
Für Android (Sie müssen Ihr Gerät nicht rooten)
Um eine Kopie einer Realm-Datenbank auf Ihrem Gerät zu erhalten, rufen Sie den Gerätedateie- Explorer in Android Studio auf.
Navigieren Sie zu
/data/data/your.package.name/files/
.Dort finden Sie Ihre * .realm-Dateien. Klicken Sie mit der rechten Maustaste und dann auf Speichern unter . Stellen Sie sicher, dass Sie synchronisieren, bevor Sie sie speichern.
Verwenden Sie Realm Browser oder einen dieser Browser , um * .realm-Dateien anzuzeigen:
quelle
Es gibt eine Problemumgehung. Sie können direkt vom Gerätemonitor aus auf die Datei zugreifen. Sie können nur dann auf dieses Verzeichnis zugreifen, wenn Sie einen Emulator oder ein gerootetes Gerät verwenden.
In Android Studio:
Wählen
Menü Extras → Android → Android-Gerätemonitor → Datei-Explorer → Daten → Daten → (Ihr Paketname ) → Dateien → * db.realm
Ziehen Sie diese Datei vom Gerät:
Ab Android Studio 3 Canary 1 wurde der Device File Explorer eingeführt. Sie müssen die Realm-Datei hier ansehen. Dann (wählen Sie Ihr Paket aus) → wählen Sie die Realm-Datei aus → Klicken Sie mit der rechten Maustaste und speichern Sie sie.
Und öffnen Sie die Datei im Realm Browser. Sie können Ihre Daten jetzt sehen.
quelle
Sie können direkt auf die Realm-Datei zugreifen. Hier ist eine Lösung, die ich verwendet habe.
Zuerst können Sie die Realm-Datei, die sich in '/ data / data / packagename / files' befindet, nach Environment.getExternalStorageDirectory () + '/ FileName.realm' kopieren:
Verwenden Sie zweitens das ADB-Tool, um diese Datei wie folgt abzurufen:
Jetzt können Sie die Datei im Realm Browser öffnen.
quelle
Hier ist eine Lösung, bei der Ihr Telefon nicht gerootet werden muss, indem Sie den
run-as
Befehl inadb
der Shell verwenden. Einzige Voraussetzung ist, dass Sie einen Debug-Build Ihrer App auf dem Zieltelefon installiert haben.Sie haben eine Kopie der Datenbank von jedem Telefon in Ihrem lokalen Verzeichnis, die Sie dann in den Realm Browser laden können.
quelle
Sie können jetzt direkt darauf zugreifen, wenn Sie einen Emulator verwenden.
Erste Log der Pfad , in dem sich die Datei im Emulator ist als @bmunk sagt:
Log.d(TAG, "path: " + realm.getPath());
Zweitens Suchen Sie es und klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie "Speichern unter". Im Dialogfeld wird die Route angezeigt, auf der sich die Datei tatsächlich in Ihrem System befindet.
Fügen Sie dann einfach die Route in das Dialogfeld "Lokale Datei öffnen" von Realm Studio ein.
(Ich habe dies nur in Windows getestet)
quelle
Hier ist mein gebrauchsfertiges Shell-Skript. Ändern Sie einfach den Paketnamen und Ihre ADB-Pfade, dann erledigt das Skript die erforderlichen Schritte.
Weitere Details zu diesem Blog-Beitrag: http://medyo.github.io/2016/browse-populate-and-export-realm-database-on-android/
quelle
Einfach halten:
Erläuterung:
adb
Installation. Wenn Sie Android Studio verwenden, gehen Sie zu Datei> Projektstruktur> SDK-Speicherort> Android SDK-Speicherort und hängen Sieplatform-tools
diesen Pfad an.run-as
ArgumentNB: Die Datei heißt default.realm, da ich ihren Namen bei der Konfiguration nicht geändert habe - Ihre kann anders sein.
quelle
Sie haben nur wenige Möglichkeiten, um Ihre Android Realm-Dateien anzuzeigen:
Wie @Christian Melchior sagte, können Sie Ihre Realm-Datenbank vom Gerät abrufen und mit dem OSX Realm Browser auf Ihrem Mac öffnen
Sie können den von mir erstellten Android Realm Browser von Drittanbietern verwenden , um die Android-Entwicklung mit Realm ein wenig zu vereinfachen. Die App zeigt Ihnen alle Realm-Dateien auf Ihrem Gerät an und Sie können alle Ihre Realm-Dateien in Echtzeit anzeigen, während Sie Ihre App testen.
Sie können den Chrome-Browser Stetho verwenden. Die vollständige Beschreibung zur Verwendung von Setho finden Sie unter @Jemshit Iskendero answer.
quelle
Hier ist eine Shell für faule Leute wie mich :)
Die
.realm
Datei wird imtmpRealm/
Ordner neben der.sh
Datei gespeichert.Oder wenn Sie es vorziehen,
tmpRealm/
auf der SD-Karte zu sein:Referenz:
quelle