Posts objectbox 踩坑
Post
Cancel

objectbox 踩坑

ObjectBox 数据库

issues

  • DB’s last entity ID 2 is higher than 1 from model
    新老数据库不兼容会出现此问题,解决方法删除旧数据即可
    
  • new AndroidObjectBrowser(boxStore).start(context); 一直返回 false
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
      // 在子 module 目录下做如下配置
      buildscript {
          ext.objectbox_version = '2.3.1'
          repositories {
              jcenter()
          }
          dependencies {
              classpath "io.objectbox:objectbox-gradle-plugin:$objectbox_version"
          }
      }
      apply plugin: 'com.android.application'
      省略 ...
      dependencies {
          省略 ...
          debugImplementation "io.objectbox:objectbox-android-objectbrowser:$objectbox_version"
          releaseImplementation "io.objectbox:objectbox-android:$objectbox_version"
      }
    
      // 放到最后,不然会报一些奇怪的错误[类重复]
      apply plugin: 'io.objectbox'
    
    1
    2
    
    然后 `adb forward tcp:8090 tcp:8090`
    在手机浏览器打开 http://localhost:8090/index.html 即可查看数据库内容
    
  • 无法生成 MyObjectBox.java 类
    1
    
    // 最有可能的原因是没有先创建实体类,使用 @Entity 注解创建的实体类在 rebuild 工程试试
    
  • 其他高级配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    android {
      ...
      defaultConfig {
          ...
          javaCompileOptions {
              annotationProcessorOptions {
                  // 配置 MyObjectBox.java 生成目录[在子工程里配置貌似不生效]
                  arguments = ["objectbox.myObjectBoxPackage": "com.sleticalboy.objectbox"]
                  // 配置数据库配置 json 文件生成位置[在子工程里配置貌似不生效]
                  arguments = ["objectbox.modelPath": "$projectDir/schemas/objectbox.json".toString()]
                  // 开启 debug 模式
                  arguments = [ 'objectbox.debug' : 'true' ]
              }
          }
      }
    }
    
This post is licensed under CC BY 4.0 by the author.