我有一个Android项目,其中我想拥有2个(可能更多)资源文件夹(每个不同的外观一个),核心功能是相同的但它们之间的唯一区别是颜色,主题和值字符串等(它们都具有相同的资源id,只有不同的内容/值) 我希望能够指定我想要编译的文件夹。
之前我曾尝试在productFlavours中指定res.srcDirs,但它无法正常工作。
答案 0 :(得分:1)
使用这些依赖项:
android{
.....
sourceSets {
main.res.srcDirs += ['src/main/res', 'src/main/res_apt2']
}
}
编辑:首先在main /文件夹中手动添加“res_apt2”文件夹,然后添加此行
答案 1 :(得分:1)
这正是口味的含义。定义与flavor相同名称的flavor和source文件夹。这将与" main"处于同一水平。并且会有" res"在里面。
productFlavors {
look1 {}
look2 {}
}
然后,您的项目的文件夹look1
和look2
与main相同,包含您需要的所有资源,例如look1/res/values/strings.xml
答案 2 :(得分:1)
阅读本页,它非常详细:Using flavours to build multiple editions of an application
但简而言之:
Flavors可以覆盖你的主要代码和文件,所以如果你有一个res文件夹并且想要修改应用程序的外观,你只需要在main上面有一个文件夹,其名称与新res文件夹的风格相同,同名但修改内容。
这是您的gradle文件。
productFlavors {
vanilla {
packageName "com.example.multiflavorapp"
}
strawberry {
packageName "com.example.multiflavorapp.strawberry"
}
}
这是你的目录(不执行它,我不能发布图像)
app/
|--libs/
|--src/
|--vanilla/
| |--java/
| |--com/example/
| |--Flavor.java
|--strawberry/
| |--java/
| |--com/example/
| |--Flavor.java
|--main/
|--java/
| |--...
|--res/
| |--...
|--AndroidManifest.xml
示例如果您的代码中引用了一个字符串app_name =“vanilla”,并希望在另一种风格中使用不同的值来修改该值,请说app_name =“strawberry”就是这样。