Fix Android Studio DataBinding cannot resolve symbol 'databinding' bug

Android DataBinding 使起来还是蛮有趣的,但是 Android Studio 总是不时莫名其貌的出状况,找不着生成的 databinding classes。构建的时候会出现如下提示:

构建提示

Google 了一些方法都不灵。最后只有以下这样将生成的 java 文件 copy 到正确位置解决问题。

1
// fix for dataBinder: Source folders generated at incorrect location
android.applicationVariants.all { variant ->
    def variantName = variant.name.capitalize()
    def inputDir    = "${buildDir}/intermediates/classes/${variant.dirName}"
    def sourceDir   = "${buildDir}/generated/source/dataBinding/${variant.dirName}"
    def copyTask    = tasks.create(name: "dataBindingFix${variantName}", type: Copy) {
        from inputDir
        into sourceDir
        include '**/*.java'
    }
    tasks["generate${variantName}Sources"].dependsOn copyTask
    variant.addJavaSourceFoldersToModel new File(sourceDir)
}

遇上同样问题的同学,将以下脚本加到 app build.gralde 就可以了。