Acabo de descubrir Realm y quería explorarlo con más detalle, así que decidí crear una aplicación de muestra y tener un lío con ella. Hasta aquí todo bien.
Sin embargo, una cosa que aún no he podido resolver es cómo ver mi base de datos en el navegador Realm. ¿Cómo se puede hacer esto?
Respuestas:
Actualmente, Realm Browser no admite el acceso a bases de datos directamente en el dispositivo, por lo que debe copiar la base de datos del emulador / teléfono para verla. Eso se puede hacer usando ADB:
adb pull /data/data/<packagename>/files/ .
Ese comando extraerá todos los archivos Realm creados con
Realm.getInstance(new RealmConfiguration.Builder().build())
. Se llama a la base de datos predeterminadadefault.realm
.Tenga en cuenta que esto solo funcionará en un emulador o si el dispositivo está rooteado.
fuente
Ahora puede ver Realm DB en el navegador Chrome con Stetho , desarrollado por Facebook. De manera predeterminada, Stetho permite ver Sqlite, red, preferencias compartidas, pero con un complemento adicional aquí también permite ver Realm.
Después de configurar su
Application
clase con las bibliotecas anteriores, mientras la aplicación se está ejecutando y conectada, abra el navegador Chrome y naveguechrome://inspect
para verLuego
Resources->Web Sql->default.realm
fuente
https://github.com/uPhyca/stetho-realm/raw/master/maven-repo
como se muestra aquí github.com/uPhyca/stetho-realmTambién puede extraer su archivo desde cualquier dispositivo NO rooteado utilizando el shell ADB y el comando run-as.
Puede usar estos comandos para extraer del almacenamiento privado de su aplicación una base de datos llamada your_database_file_name ubicada en la carpeta de archivos:
fuente
adb exec-out run-as package.name cat files/your_database_file_name < your_database_file_name
Si eres perezoso para obtener el archivo de base de datos del reino cada vez con adb, puedes agregar una función de exportación a tu código de Android, que te envía un correo electrónico con el archivo de la base de datos del reino como archivo adjunto.
Aquí un ejemplo:
No olvide agregar este permiso de usuario a su archivo de manifiesto de Android:
fuente
Para Android (no es necesario rootear su dispositivo)
Para obtener una copia de cualquiera de las bases de datos de Realm en su dispositivo, vaya a Device File Explorer en Android Studio.
Navega hasta
/data/data/your.package.name/files/
.Allí encontrará sus archivos * .realm. Haga clic derecho, luego Guardar como . Asegúrese de sincronizar antes de guardarlos.
Use Realm Browser o cualquiera de estos para ver archivos * .realm:
fuente
Hay una solución alternativa. Puede acceder directamente al archivo desde el monitor del dispositivo. Puede acceder a este directorio solo cuando está utilizando un emulador o dispositivo rooteado.
En Android Studio:
Seleccione
Herramientas de menú → Android → Monitor de dispositivo Android → Explorador de archivos → datos → datos → (Nombre del paquete) → archivos → * db.realm
Extraiga este archivo del dispositivo:
Desde Android Studio 3 canary 1, se ha introducido Device File Explorer. Necesitas mirar el archivo del reino aquí. Luego, (seleccione su paquete) → seleccione el archivo de reino → Haga clic derecho y guarde.
Y abra el archivo en el navegador Realm. Puedes ver tus datos ahora.
fuente
Puede acceder al archivo de reino directamente. Aquí hay una solución que he usado.
Primero puede copiar el archivo de dominio que se encuentra en '/ data / data / packagename / files' en Environment.getExternalStorageDirectory () + '/ FileName.realm':
En segundo lugar, use la herramienta ADB para extraer ese archivo de esta manera:
Ahora puede abrir el archivo en el navegador Realm.
fuente
Aquí hay una solución que no requiere que su teléfono esté rooteado, haciendo uso del
run-as
comando presente dentroadb
del shell. La única condición previa es que debe tener una versión de depuración de su aplicación instalada en el teléfono de destino.Tendrá una copia de la base de datos desde cualquier teléfono dentro de su directorio local, que luego puede cargar en el navegador Realm.
fuente
Ahora puede acceder directamente si está utilizando un emulador.
Primero, registre la ruta donde está el archivo en el emulador como @bmunk dice:
Log.d(TAG, "path: " + realm.getPath());
Segundo búscalo y haz clic derecho en el archivo y elige "Guardar como", en el cuadro de diálogo aparecerá la ruta donde realmente está el archivo en tu sistema.
Y luego, simplemente pegue la ruta en el cuadro de diálogo "Abrir archivo local" de Realm Studio.
(He probado esto solo en Windows)
fuente
Aquí está mi script de shell listo para usar. Simplemente cambie el nombre del paquete y sus rutas adb, luego el script hará lo necesario.
Más detalles en esta publicación de blog: http://medyo.github.io/2016/browse-populate-and-export-realm-database-on-android/
fuente
Manteniéndolo simple:
Explicación:
adb
instalación. Si está utilizando Android Studio, mire Archivo> Estructura del proyecto> Ubicación del SDK> Ubicación del SDK de Android y agregueplatform-tools
esa ruta.run-as
argumentoNB: el archivo se llama default.realm porque no he cambiado su nombre al configurarlo; el tuyo puede ser diferente.
fuente
Tiene pocas opciones para ver sus archivos de reino de Android:
Como @Christian Melchior dijo que puede extraer su base de datos de dominio del dispositivo y abrirla en su Mac usando OSX Realm Browser
Puede usar el navegador Realm de Android de terceros que creé para hacer que el desarrollo de Android con el reino sea un poco más fácil. La aplicación le mostrará todos los archivos de dominio en su dispositivo, y puede ver todos sus archivos de dominio en tiempo real mientras prueba su aplicación.
Puede usar el navegador Chrome Stetho La descripción completa de cómo usar Setho es proporcionada por la respuesta de @Jemshit Iskendero.
fuente
Aquí hay una concha para gente perezosa como yo :)
El
.realm
archivo se almacenará dentro de latmpRealm/
carpeta al lado del.sh
archivo.O si prefieres dejar
tmpRealm/
estar en la tarjeta SD:Referencia:
fuente