介绍
ObjectBox Data Browser是一个object box数据库可视化的一个工具,在调试中非常有用,能够让你形成数据库的视觉模型,所以我觉得是非常有用的,但是为了使用这个工具也是折腾了我很久,一个原因是我对Gradle不熟,一个是我英语不够好,人家注意事项写在哪里,但我就是理解错误了.
引入
为了使用object box只要引入插件就可以了
在project的build.gradle中引入插件
buildscript {
ext.objectboxVersion = '2.1.0'
dependencies {
classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
}
}
在app模块的bulid.gradle应用插件
apply plugin: 'io.objectbox' // after applying Android plugin
为了使用这个工具还必须引入两个东西
debugImplementation "io.objectbox:objectbox-android-objectbrowser:2.1.0"
releaseImplementation "io.objectbox:objectbox-android:2.1.0"
这两个东西一个是在debug的时候也就是开发的时候引入,一个是正式发布时才应用.
直接这样引入时候造成重复文件冲突的
Otherwise the build will fail with a duplicate files error (like Duplicate files copied in APK lib/armeabi-v7a/libobjectbox.so) because the ObjectBox plugin will add the objectbox-android library again.
解决办法是把apply plugin放在gradle.build的最后,这样build的时候会最后应用插件,就不会造成文件冲突了,就像这样
// 为了使用objectbox data browser
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "me.tinuv.doubanclient"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxjava
// 引入RxJava2,版本:2.1.10
implementation group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.10'
// https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxandroid
// 引入RxAndroid 版本:2.0.1
implementation group: 'io.reactivex.rxjava2', name: 'rxandroid', version: '2.0.1'
// https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit
// 引入retrofit2 版本:2.2.0
implementation group: 'com.squareup.retrofit2', name: 'retrofit', version: '2.2.0'
// https://mvnrepository.com/artifact/com.squareup.retrofit2/adapter-rxjava2
// 引入adpter-rxjava2 版本:2.2.0
implementation group: 'com.squareup.retrofit2', name: 'adapter-rxjava2', version: '2.2.0'
// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
// 引入okhttp3 版本:3.5.0
implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.5.0'
// https://mvnrepository.com/artifact/com.google.code.gson/gson
// 引入json 版本:2.8.0
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.0'
// https://mvnrepository.com/artifact/com.squareup.retrofit2/converter-gson
// 引入converter-gson 版本:2.2.0
implementation group: 'com.squareup.retrofit2', name: 'converter-gson', version: '2.2.0'
// 引入RecyclerView
implementation 'com.android.support:recyclerview-v7:27.1.1'
// 引入SmartrefreshLayout
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-12'
debugImplementation "io.objectbox:objectbox-android-objectbrowser:2.1.0"
releaseImplementation "io.objectbox:objectbox-android:2.1.0"
}
apply plugin: 'io.objectbox'
之前不使用objectbox data browser
apply plugin: 'com.android.application'
apply plugin: 'io.objectbox'
android {
compileSdkVersion 27
defaultConfig {
applicationId "me.tinuv.doubanclient"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxjava
// 引入RxJava2,版本:2.1.10
implementation group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.10'
// https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxandroid
// 引入RxAndroid 版本:2.0.1
implementation group: 'io.reactivex.rxjava2', name: 'rxandroid', version: '2.0.1'
// https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit
// 引入retrofit2 版本:2.2.0
implementation group: 'com.squareup.retrofit2', name: 'retrofit', version: '2.2.0'
// https://mvnrepository.com/artifact/com.squareup.retrofit2/adapter-rxjava2
// 引入adpter-rxjava2 版本:2.2.0
implementation group: 'com.squareup.retrofit2', name: 'adapter-rxjava2', version: '2.2.0'
// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
// 引入okhttp3 版本:3.5.0
implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.5.0'
// https://mvnrepository.com/artifact/com.google.code.gson/gson
// 引入json 版本:2.8.0
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.0'
// https://mvnrepository.com/artifact/com.squareup.retrofit2/converter-gson
// 引入converter-gson 版本:2.2.0
implementation group: 'com.squareup.retrofit2', name: 'converter-gson', version: '2.2.0'
// 引入RecyclerView
implementation 'com.android.support:recyclerview-v7:27.1.1'
// 引入SmartrefreshLayout
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-12'
}
使用objectbox data browser
之后就可以使用这个工具,官方推荐在Application或者它的子类初始化
@Override
public void onCreate() {
super.onCreate();
boxStore = MyObjectBox.builder().androidContext(MyApplication.this).build();
if (BuildConfig.DEBUG) {
boolean started = new AndroidObjectBrowser(boxStore).start(this);
Log.i("ObjectBrowser", "Started: " + started + " " + boxStore.getObjectBrowserPort());
}
}
默认只能在手机上的浏览器查看,如果想在电脑上查看数据库,可以使用这个命令
adb forward tcp:8090 tcp:8090
然后在电脑和手机输入地址就可以访问了