AndroidX迁移后找不到符号DataBindingComponent

时间:2018-09-27 20:10:39

标签: android android-databinding androidx

将整个项目迁移到android x之后,我无法再对其进行编译了。

我收到100个以下错误:

e: M:\tmp\EverywhereLauncher\app\generated\data_binding_base_class_source_out\devWithoutTestWithAccessibilityDebug\dataBindingGenBaseClassesDevWithoutTestWithAccessibilityDebug\out\com\my\app\databinding\ActivityMainBinding.java:52: error: cannot find symbol
      @Nullable ViewGroup root, boolean attachToRoot, @Nullable DataBindingComponent component) {
                                                                ^
  symbol:   class DataBindingComponent
  location: class ActivityMainBinding

我不知道从哪里继续。

我现在有两个问题。

  • 我只看到100个错误
  • 所有错误都是相同的,并且可能隐藏了真正的错误

我尝试过的事情:

  • 我在我的项目build.gradle中关注将打印错误的数量增加到10000:

    gradle.projectsEvaluated {
            tasks.withType(JavaCompile) {
                options.compilerArgs << "-Xmaxerrs" << "10000"
            }
        }
    

    这始终有效,但是在这种情况下,它不会增加打印的错误

有什么想法我接下来可以做什么?

其他

  • 我使用以下

    android.enableJetifier=true
    android.useAndroidX=true
    
  • 我将Android Studio 3.2与kotlin 1.2.613.3.0-alpha01 gradle构建工具一起使用

  • 我使用3.3.0-alpha01 gradle构建工具是因为我还使用了Evernote com.evernote:android-state,否则就不会这样做-问题在这里进行了解释:https://github.com/evernote/android-state/issues/56

2 个答案:

答案 0 :(得分:5)

解决方案-增加记录的错误

过去,在broject的build.gradle文件中,仅需关注以下内容:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile.class) {
        options.compilerArgs << "-Xmaxerrs" << "10000"
    }
}

使用kotlin,以下操作会有所帮助:

afterEvaluate {
    if (project.plugins.hasPlugin("kotlin-kapt")) {
        kapt {
            javacOptions {
                option("-Xmaxerrs", 10000)
            }
        }
    }
}

真正的问题

在我的情况下,我将类从Java转换为kotlin,其中包含以下字段:

@Arg
Integer someValue;

转换器创建了以下内容:

@Arg
internal var someValue: Int? = null

问题:

internal不适用于注释,因此失败,但是日志仅显示数据绑定错误...

示例项目build.gradle

https://gist.github.com/MFlisar/eca8ae6c2e6a619913ab05d503a4368f

答案 1 :(得分:1)

更新到androidx后,我也遇到了这个错误,尝试了一些堆栈溢出帖子中建议的所有内容,最后更新到了gradle插件3.3.0-beta03起作用了