/Realm-Stetho-Viewer-Master

android realm browser

Primary LanguageJavaApache License 2.0Apache-2.0

Realm-Stetho-Viewer-Master

android realm browser

####android开发使用chrome浏览器开发者工具查看 realm 数据

依赖: Stetho Stetho官网

关于如何配置只在debug模式时启用Stetho,请看这里 stetho-for-android-debug-builds-only

gradle

  repositories {
      jcenter()
      maven {
          url 'https://github.com/zscgrhg/Realm-Stetho-Viewer-Master/raw/master/maven-repo'
      }
  }

 dependencies { 
    compile 'com.facebook.stetho:stetho:1.4.1' 
    debugCompile 'com.zscgrhg:tools:1.1'
  } 

然后我们需要把想导出的real数据库注册成ContentProvider 假如有如下realm配置:

public class RealmSchemas {
    public static final RealmConfiguration SCHEMA_1=new RealmConfiguration.Builder()
            .name("schema1.realm")
            .schemaVersion(2)
            .deleteRealmIfMigrationNeeded()
            .build();
}

简单注册1个ContentProvider即可

public class Schema1CP extends RealmContentProvider {
    /**
    *如果同时有多个数据库,这里应返回一个全局唯一的名字,不然Chrome无法正确显示,
    *这个方法也可以不重写,默认取数据库的文件名
    */
    @Override
    public String getDbName() {
        return "realmDB1";
    }

    @Override
    public RealmConfiguration getConfiguration() {
        return RealmSchemas.SCHEMA_1;
    }

    @Override
    public String getAuthorities() {
        return "com.example.think.realm_stetho_viewer.schema1";
    }
}

debug清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.think.realm_stetho_viewer">

    <application
        android:name=".MyDebugApplication"
        tools:replace="android:name">
        <provider
            android:name=".Schema1CP"
            android:authorities="com.example.think.realm_stetho_viewer.schema1"
            android:enabled="true"
            android:exported="true"
            android:label="hello"
            ></provider>
    </application>

</manifest>

debug Application类初始化Stetho

public class MyDebugApplication extends MyApplication {



    @Override
    public void onCreate() {
        super.onCreate();



        IMPBuilder impBuilder=new IMPBuilder(this);
        InspectorModulesProvider imp
                = impBuilder
                .addSchemas(new Schema1CP())
                .build();

        Stetho.initialize(
                Stetho.newInitializerBuilder(this)
                        .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
                        .enableWebKitInspector(imp)
                        .build());
    }
}

启动模拟器,运行app

打开chrome浏览器,地址栏键入chrome://inspect/#devices

找到连接的设备,点inspect连接打开inspector UI 窗口 墙内用户第一次打开时需要翻墙,否则你只会看到一个白板窗口

在 Web SQL 标签下面就可以看到realm数据库内容了

chrome截图1 chrome截图2