Gradle/Android:非平面布局目录结构

Gradle/Android:非平面布局目录结构,android,gradle,Android,Gradle,在我的Android应用程序中,我希望在res/layout中有子目录。当然Android本身不支持这一点,所以我尝试配置Gradle来实现这一点 我的项目结构: src/ /package_with_java_source res/ /drawable /layout /someLayDir 现在,我想为我渐变合并此子曲面并构建项目: sourceSets { main { manifest.srcFile 'Androi

在我的Android应用程序中,我希望在res/layout中有子目录。当然Android本身不支持这一点,所以我尝试配置Gradle来实现这一点

我的项目结构:

src/
    /package_with_java_source
res/
    /drawable
    /layout
           /someLayDir
现在,我想为我渐变合并此子曲面并构建项目:

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        assets.srcDirs = ['assets']
        res.srcDirs =
                [
                        'res/layout/someLayDir',
                        'res/layout',
                        'res'
                ]
    }
}
不幸的是,当我尝试构建项目时,我遇到了错误:

Error:(29, 60) Gradle: error: cannot find symbol variable app_bar
app_bar是我的布局id(R.id.app_bar)。请帮助我:(

附言。
如果很重要,我使用Intellij Idea 14
res.srcdir
指向一个资源根目录数组。无论是
res/layout/
还是
res/layout/someDir
都不是资源根目录

这里所说的“资源根目录”,我的意思是构建工具将期望看到典型的资源目录(例如,
drawable mdpi/
layout/
)作为根目录的直接子目录。在您的情况下:

  • res/layout/
    没有
    res/layout/draawable mdpi
    /,或
    res/layout/layout/
    或类似的内容

  • res/layout/someDir/
    没有
    res/layout/someDir/drawable mdpi
    /,或
    res/layout/someDir/layout/
    或类似的内容


不要这样做。
layout/
下的结构是由Android本身定义的,而不是由gradle定义的。Android会解释它,所以任何配置到gradle中的东西都不会让Android理解你到底在做什么。最好描述一下你试图实现的目标。@JeffreyBlattman:我试图定义一些层次结构在我的布局文件中。类似于:那么我如何定义布局文件的层次结构呢?@kubut:我不知道你在寻找什么(“我想在res/layout中有子目录”)。那么,也许是管理布局文件的另一种方法吗?真的,我必须将所有内容都放在同一目录中吗?这听起来不是一个很好的解决方案……但当然,我可能错了,因为我没有安卓开发经验…@kubut:“真的,我必须将所有内容放在同一目录中吗?”——这绝对是最简单的解决方案。“那么,管理布局文件的另一种方法可能是什么?”--典型的解决方案是在文件名上使用命名约定,例如前缀,以帮助将相关文件聚集在一起。