Android res 资源 分包

2,040 阅读1分钟

提出背景

随着项目不断变大,layout等资源目录下可能会有上百个文件,查找效率低, strings.xml等key-value型文件多人修改时冲突频繁。

解决思路

将 res 像 src code 一样根据业务模块分包,不同开发成员负责维护不同的包,结构清晰,冲突少。

具体操作

  1. 新建res_xxx目录
    image.png

在 main 目录下新建 res_core, res_feed(根据业务模块命名)等目录,在res_core中新建res目录中相同的文件夹如:layout、drawable-xxhdpi、values等。

注意细节: 为了避免资源重名,建议不同模块下的资源文件名加上模块名前缀,如core_icon_xxx.png, core_activity_xxx。 在strings.xml这类文件,为资源的key加上模块名前缀。

<resources>
    <string name="core_demo">demo</string>
    <string name="core_app_name">demo_0221_res</string>
</resources>
  1. 配置res_xx目录
android {
    //...
    sourceSets {
        main {
            res.srcDirs(
                    'src/main/res',
                    'src/main/res_core',
                    'src/main/res_feed',
            )
        }
    }
}