能否使用多个产品风味(product flavor)构建apk?
比如: 我有一个项目,包含3个不同的风味(App1 - App2 - App3), 每个应用都有自己的配置,例如applicationId等。
现在,我想要构建不同的模板(不同的XML布局),并且用户应该能够从应用内切换到另一个布局。
我的问题是res文件夹会变得非常庞大,而且很难维护,因此我正在寻找一种将不同布局分离并尽可能保持简洁的方法。
如果可以这样做,那么如何启动或重新启动应用程序以加载其他风味的构建版本?
我还考虑过在主res中构建所有XML文件,并选择不同的限定符,就像我们在创建不同屏幕大小(sm-larg等)时所做的那样,但我找不到添加自定义限定符的方法。
我的Gradle
代码如下:
flavorDimensions "default"
productFlavors {
demo {
applicationId "test.demo"
versionCode 2
versionName "1.1.2"
resValue "string", "backage_name_file", "test.demo.fileprovider"
resValue "string", "bc", "com.demo"
resValue "string", "bc_e", "extra_data.com.demo"
resValue "string", "default_hostname", "demo.test.com"
resValue "string", "default_username", "demo"
resValue "string", "default_password", "demo"
}
AppOne {
applicationId "test.AppOne"
versionCode 2
versionName "1.1.2"
resValue "string", "backage_name_file", "test.AppOne.fileprovider"
resValue "string", "bc", "com.AppOne"
resValue "string", "bc_e", "extra_data.com.AppOne "
resValue "string", "default_hostname", "AppOne.test.com"
resValue "string", "default_username", "AppOne"
resValue "string", "default_password", "AppOne"
}
AppTwo {
applicationId "test.AppTwo"
versionCode 2
versionName "1.1.2"
resValue "string", "backage_name_file", "test.AppTwo.fileprovider"
resValue "string", "bc", "com.AppTwo"
resValue "string", "bc_e", "extra_data.com.AppTwo"
resValue "string", "default_hostname", "demoAppTwotest.com"
resValue "string", "default_username", "AppTwo"
resValue "string", "default_password", "AppTwo"
}
}
if
语句轻松实现。 - theapache64