我的应用有两种风格,简称为flavora
和flavorb
。
productFlavors {
flavora {
resValue "string", 'app_name', "App Name Flavor A"
applicationIdSuffix ".flavora"
}
flavorb {
resValue "string", 'app_name', "App Name Flavor B"
applicationIdSuffix ".flavorb"
}
}
我希望这两种口味使用所有相同的布局,所有相同的Java代码,所有相同的资源等,除了我希望flavora
和flavorb
使用布局文件{{的不同实现1}}和Java类flavor_dependent_layout.xml
。
这是正确的方法:
FlavorDependentJavaClass
然后我只是创建必要的文件夹来放置相应的文件,它们自然会在那里工作吗?如果我尝试执行一个方法,它是如何知道我已经包含了两种风格的类,例如它只存在于一种风格中?
(另外,我是否必须明确提及资产文件夹?因为我还有`/ src / main / assets')
答案 0 :(得分:1)
这是正确的方法:
没有
只需创建src/flavora/res/
,src/flavora/java/
,src/flavorb/res/
和src/flavorb/java/
,然后将内容放入其中。它们将自动添加到适当的构建路径中。您无需调整srcDirs
。
如果我尝试执行某个方法并且仅存在一种风格,它是如何知道我已经包含了两种风味的类?例如?
这是构建错误。使用Java代码,如果你想要它的风格:
main
main
引用的任何内容都必须同时存在flavora
和flavorb
因此,举例来说,如果AdStrategy
内某处src/flavora/java/
以及src/flavorb/java/
内某处有AdStrategy
类,则 <\ n> src/main/java/
在main
中。 AdStrategy
flavora
引用的任何内容(构造函数,方法等)都必须存在于flavorb
和AdStrategy
{{1}的实现中}}。在构建时,当您构建flavora
时,会自动使用src/main/java/
和src/flavora/java/
树,而main
中提到的任何内容都需要解析(同样适用于{{ 1}}构建)。