如何生成自带空res目录及多模式colors.xml的Android模块?
解决Android Feature模块自动生成多模式资源文件的问题
一、自定义Android Studio模块模板(一劳永逸)
直接修改IDE的模块生成模板,让新建的Feature模块自动包含所需的资源目录和文件:
- 找到模板路径:
- Windows:
C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidModule - Mac:
/Applications/Android Studio.app/Contents/plugins/android/lib/templates/gradle-projects/NewAndroidModule
- Windows:
- 进入模板的
root/res目录,手动创建以下结构:values/colors.xml(空资源文件)values/strings.xml(空资源文件)values-night/colors.xml(空资源文件)
- 打开模板目录下的
recipe.xml.ftl,参考已有资源的复制逻辑,添加复制上述文件的指令,确保新建模块时自动同步这些文件 - 重启Android Studio,之后新建Feature模块就会自带这些资源结构
二、手动创建多模式资源文件的正确方式
如果不想修改模板,每次创建模块后可以用IDE内置功能快速生成:
- 右键模块的
res目录 → New → Android Resource File - 在弹窗中配置:
- 文件名填
colors - 资源类型选择
Color - 在「Available qualifiers」列表中选中
Night mode,点击>>添加到「Chosen qualifiers」 - 点击OK,系统会自动创建
values-night/colors.xml,若普通模式的values/colors.xml不存在,也会一并生成
- 文件名填
- 重复上述步骤可创建
strings.xml等其他多模式资源文件
三、Gradle脚本自动生成(无需修改IDE模板)
在模块的build.gradle(Module)中添加以下脚本,让构建时自动生成所需的空资源文件:
task createDefaultResources { doLast { // 创建普通values目录及基础资源文件 def valuesDir = file("src/main/res/values") valuesDir.mkdirs() new File(valuesDir, "colors.xml").text = """<?xml version="1.0" encoding="utf-8"?> <resources> </resources>""" new File(valuesDir, "strings.xml").text = """<?xml version="1.0" encoding="utf-8"?> <resources> </resources>""" // 创建夜间模式values-night目录及colors.xml def valuesNightDir = file("src/main/res/values-night") valuesNightDir.mkdirs() new File(valuesNightDir, "colors.xml").text = """<?xml version="1.0" encoding="utf-8"?> <resources> </resources>""" } } // 绑定到预构建任务,首次创建后自动执行 afterEvaluate { preBuild.dependsOn(createDefaultResources) }
同步Gradle后,执行一次构建(Build → Make Project),所需资源文件会自动生成,后续构建也会确保这些文件存在。
内容的提问来源于stack exchange,提问作者JustSightseeing
相关产品推荐
相关产品推荐

