带有数据绑定的房间注释处理器

Dee*_*haV 7 android 2-way-object-databinding android-databinding annotation-processor android-room

我在现有代码中使用了数据绑定,现在我正在迁移到Room以进行持久化.我已经按照Florina博客中提到的步骤进行了访问

当我删除房间依赖时,我的代码构建正常,没有java代码错误或BR相关错误

 annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
Run Code Online (Sandbox Code Playgroud)

和它的运行,但给出运行时异常,说database_Impl不存在.因为它无法生成该文件.

但是在我把Annotation处理器放回去后,它给了我

 Error:(29, 37) error: cannot find symbol class BR
Run Code Online (Sandbox Code Playgroud)

我使用的gradle插件是 com.android.tools.build:gradle:3.0.1

他们似乎都没有合作

迄今采取的步骤:

  1. 将BaseObservable更改为Observable如此处所示
  2. 将Android Studio更新为3.0.1
  3. 尝试使用gradle最新插件金丝雀6
  4. 清除,清除缓存也完成了

有没有人使用Room和Data绑定在一起?

Dee*_*haV 9

经过4天的努力,我终于使我的代码正常运行.解决问题的步骤

数据绑定错误如 错误:包com.packagename.databinding不存在错误:找不到符号类CustomMainActivityBinding

应用程序gradle必须添加以下代码才能查看默认情况下出现的100多个错误

allprojects {
gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xmaxerrs" << "4000"
        options.compilerArgs << "-Xmaxwarns" << "4000"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Gradle对数据绑定和Room arch组件的依赖关系

annotationProcessor 'com.android.databinding:compiler:3.0.1'

implementation 'android.arch.lifecycle:extensions:1.0.0'
implementation 'android.arch.persistence.room:runtime:1.0.0'
annotationProcessor 'android.arch.lifecycle:compiler:1.0.0'
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
Run Code Online (Sandbox Code Playgroud)

注意:Gradle插件版本是3.0.1

我更改了所有虚拟机以实现Observable并调用

registry.notifyChange(this, BR.bar);
Run Code Online (Sandbox Code Playgroud)

在通知更改的情况下,还实现重写方法

@Override
public void addOnPropertyChangedCallback(OnPropertyChangedCallback    
callback) {
registry.add(callback);
}

@Override
public void removeOnPropertyChangedCallback(
OnPropertyChangedCallback callback) {
registry.remove(callback);
}
Run Code Online (Sandbox Code Playgroud)

这些东西使我的代码构建,但当我解决了Room查询相关的错误时,它运行没有例外.这是主要原因,代码正在构建但没有运行.当我再次重建项目时,我可以看到这些错误.

更新:

Android Studio 3.1.3之后,Message窗口消失了,现在所有构建错误都出现在Build视图下.虽然有可用于获取textview响应错误的切换,但对于数据绑定错误,这是不够的.

帮助我的解决方案:

  1. 在Command promt/Terminal中导航到项目根目录.
  2. 如果是Mac,则运行此命令"./gradlew build --stacktrace",如果是Windows,则运行".\ gradlew build --stacktrace".
  3. 现在搜索"error:"标记,编译时错误将显示出来.

我无法在IDE中获得这些错误.