【问题标题】:Databinding class not generated for multiple layout folders未为多个布局文件夹生成数据绑定类
【发布时间】:2020-06-13 05:09:13
【问题描述】:

在 Android Studio 3.6 中,创建新项目后,我无法为多个文件夹创建绑定生成类。

我有多个布局文件夹:

res/layout
res/layouts/dashboard
res/layouts/notifications

我可以为

创建绑定类

分辨率/布局

但它不适用于其他布局文件夹。

应用 gradle 文件:

dataBinding{
        enabled = true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
    sourceSets {
        main {
            manifest.srcFile 'src/main/AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            res.srcDirs =
                    [
                            'src/main/res/layouts/notification',
                            'src/main/res/layout/dashboard',
                            'src/main/res/layouts',
                            'src/main/res/layout',
                            'src/main/res'
                    ]
            assets.srcDirs = ['src/main/assets', 'src/main/assets/']
        }
    }

资源文件夹结构:

我附上了我在 android studio 3.6 中创建的示例项目。 Source code link

【问题讨论】:

  • 我们面临同样的问题。
  • 仍在寻找这样的解决方案

标签: android data-binding android-databinding android-studio-3.6 android-sourcesets


【解决方案1】:

这是 android studio 中的一个 bug,已在 android studio 4.0 beta 和 4.1 canary 中修复。谷歌将发布 3.6 的修补程序来修复它。

【讨论】:

  • 有问题可以链接到吗?我在 3.6.1 上使用 ViewBinding 并且正在生成绑定类,但 linter 无法识别它们
【解决方案2】:

快速修复,直到在 Android Studio 中修复:

将生成的绑定文件的输出添加到您的 gradle 文件中(这适用于视图绑定和数据绑定):

android {
    sourceSets {
        main {
            java.srcDirs += 'build/generated/data_binding_base_class_source_out/debug/out'## Heading ##
        }
    }
}

感谢https://stackoverflow.com/a/60521114/792853

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多