Gradle:资源合并优先级(Android)

Víc*_*tos 4 android gradle android-gradle-plugin

我们想将我们的代码库分成几个 android 库模块。其中之一包含公共共享资源(字符串、绘图等)。

当其中一个资源(比方说app_name)也在另一个外部库中定义时,就会出现问题。在这种情况下,当所有模块合并时,app_name会从外部库中选择具有 id 的资源(随机?),丢弃我们自己的本地库模块中定义的资源。

在合并资源以支持特定库或至少本地定义的模块时,是否有办法设置优先级?

Mig*_*cia 5

我过去遇到过这个问题,这就是我解决它的方法:

在您的app模块(您的主模块)中将其添加到build.gradle文件中:

sourceSets {
    main {
        res.srcDirs =
                [
                        '../my-module/src/main/res',
                        'src/main/res'
                ]
    }
}
Run Code Online (Sandbox Code Playgroud)
  • ../my-module/src/main/res-> 通过这种方式,您将引用存储在库模块相对路径中的资源 ( my-module)
  • src/main/res-> 需要引用app模块中的其他资源

安卓文档: