我创建了一个使用以下树结构的应用程序(根据the documentation修改了应用程序级别的build.gradle-您可以在此问题的结尾找到这些更改):
有几捆。所有值目录(每个分发包一个,在全局文件夹中一个)包含文件strings.XML
。 我的应用程序确实可以正确编译并执行。
但是,Android文档指出:
注意:如果两个或多个资源目录包含相同的资源文件,则在资源合并期间会发生错误。
(https://developer.android.com/studio/write/add-resources#change_your_resource_directory)
因此,由于我使用相同的文件strings.xml
,为什么没有显示错误? (当然,这些strings.xml
文件的内容会根据它们所在的目录-捆绑包目录或全局目录而变化)
应用程序级build.gradle
为使其正常运行(例如,使Android Resolver能够解析符号),我添加了以下几行:
android {
sourceSets {
main {
res.srcDirs = [
'src/main/bestheme/global',
'src/main/bestheme/bundles/a_bundle'
]
}
}
}
答案 0 :(得分:2)
strings.xml
(和任何values
资源)在某种意义上是不同的,即资源标识符不是基于文件名而是实际上是在文件内部指定的。
资源合并发生在资源标识符级别。如果在同一源集级别上的资源标识符没有冲突,则合并可以正常进行。
文档注释对于其中资源ID源自文件名的资源类型有效。例如,布局或可绘制资源。