Realm数据库可视化工具,windows+chrome+stetho_realm

因为要将greenDao替换掉,研究了下用什么数据库,后来选用Realm!

GreenDao由商业公司greenrobot维护,但该公司在3年前就将重心转移到新的数据库ObjectBox,
在最近一年已经停止维护GreenDao。
该项目仅开源了SDK部分的代码,Gradle插件部分代码并未开源。由于没有源码,
大量bug出现了数年都无法修复,在最新的开发环境下已经难以编译。预期2019年以后,
Android官方在Android Plugin 4.0删除废弃API后,GreenDAO将彻底不能使用。
greenrobot官方以无时间处理为由拖延拒绝提供插件源码,导致该项目无法被社区维护。
Gradle团队官方也曾介入,但greenrobot仍然无任何回应。
开发过程中遇到查看数据库问题!之前都是用greendao时用facebook的stetho特别好用!
因为Realm和Objectbox都是NoSql的,所以以前那种xx.db形式查看不了了
Realm官方是有介绍的,因为他们的数据库格式是是xxx.realm,所以需要使用他们自己的工具查看
Realm Studio mac,linux,windows都有支持
但是不得不吐槽下,我是windows7系统,realm studio只支持windows8.1以上系统

Realm数据库可视化工具,windows+chrome+stetho_realm
文章图片
image.png
所以在windows7上使用Realm Studio只能放弃了
这里使用stetho_realm+chrome
但是git:stetho-realm最新更新时间是2年前了,接入还是有各种问题,中间差点放弃使用Realm
可能会报各种错误,如
java.lang.NoClassDefFoundError Lio/realm/internal/SharedRealm$Durability java.lang.NoClassDefFoundError: Failed resolution of: Lio/realm/internal/LinkView; java.lang.NoClassDefFoundError Lio/realm/internal/SharedGroup

不过还是解决了,只是不知道随着时间的推移,后面会不会再出现问题
好了正式介绍如何接入stetho_realm+chrome
1.在你的根build.gradle下,或者app的build.gradle下都可以
maven { url 'https://github.com/WickeDev/stetho-realm/raw/master/maven-repo' }

以免遇到各种问题,我是在app的build.gradle下加入的
repositories { maven { url 'https://github.com/WickeDev/stetho-realm/raw/master/maven-repo' } } dependencies { debugApi 'com.facebook.stetho:stetho:1.5.1' debugApi 'com.uphyca:stetho_realm:2.3.0' }

注意:url地址,不是 maven {url 'https://github.com/uPhyca/stetho-realm/raw/master/maven-repo' }
顺便说下,我用的Realm是:
classpath "io.realm:realm-gradle-plugin:5.11.0"

2.在application的onCreate下执行:
Stetho.initialize( Stetho.newInitializerBuilder(this) .enableDumpapp(Stetho.defaultDumperPluginsProvider(this)) .enableWebKitInspector(RealmInspectorModulesProvider.builder(this).build()) .build())

网上也有如下配置的:(看注释应该就知道什么意思了,但是我按照如下接入的时候chrome中还是打不开,然后把withDeleteIfMigrationNeeded(true)去掉就可以了,大家可以自己测试)
Stetho.newInitializerBuilder(this) .enableDumpapp(Stetho.defaultDumperPluginsProvider(this)) .enableWebKitInspector( RealmInspectorModulesProvider.builder(this) .withDeleteIfMigrationNeeded(true) //if there is any changes in database schema then rebuild bd. .withMetaTables() //extract table meta data .withLimit(10000) //by default limit of data id 250, but you can increase with this .build() ) .build());

完成之后,运行你的代码,触发数据存储之后
在chrome浏览器中输入:chrome://inspect

Realm数据库可视化工具,windows+chrome+stetho_realm
文章图片
image.png
选中你自己项目的那一项

Realm数据库可视化工具,windows+chrome+stetho_realm
文章图片
image.png 注意:有时候确定已经接入没有问题,但是在Web SQL下就是看不到xxx.realm,我也遇到过这个问题,弄了半天!
我是如下解决的:
1.代码中修改xxx.realm的名字或者version之后,应用卸载重装
2.换手机等等
【Realm数据库可视化工具,windows+chrome+stetho_realm】总会出现的!!

    推荐阅读