如何识别正在编译的当前风味。我只是在编译某种产品风味时尝试添加文件进行编译。
buildTypes {
android.applicationVariants.all { variant ->
variant.productFlavors.each() { flavor ->
if (flavor.name.equals(currentFlavorName)) {
问题在于,我似乎无法找到我当前正在构建的味道的currentFlavourName所在的位置。
答案 0 :(得分:0)
将flavor1所需的字符串放入:
src/flavor1/res/values/strings.xml
和flavor2的字符串:
src/flavor2/res/values/strings.xml
无需将逻辑放入您的gradle文件
答案 1 :(得分:0)
Android使用针对不同风格的资源的独特构建过程,并且非常容易控制。
如果您设置主要来源:
project-name
------------/app
---------------/src
-------------------/main
------------------------/res
----------------------------/values
------------------------/java
-------------------/development
-------------------------------/res
-----------------------------------/values
-------------------------------/java
-------------------/production
------------------------------/res
----------------------------------/values
------------------------------/java
这将是从产品风味到主要风格的自下而上的方法。这意味着如果你有一个strings.xml,其中包含在development / res / values中存在同名的项,并且main / res / values / strings.xml中也存在这些值,那么这些将被覆盖(同样适用于生产味道)基于gradle文件中定义的构建变体。
android {
productFlavors {
production {
applicationId "com.test.prod"
versionName "1.0.0"
}
development {
applicationId "com.test.dev"
versionName "1.0.0"
}
}
答案 2 :(得分:-1)
我不知道是否退出获取currentFlavor的方法。我还没找到。
丑陋的解决方案可以
variant.productFlavors.each() { flavor ->
if (flavor.name.equals("flavor1")) {
//..........
}
}
但是,如果您希望能够控制正在使用的strings.xml,则可以通过不同方式实现它。
首先,您可以在flavor文件夹中定义一个xml文件。
app/src/main/res/values/ -> for common resources
app/src/flavor1/res/values -> resources for flavor1
app/src/flavor2/res/values -> resources for flavor2
这不需要build.gradle
脚本中的任何配置。
第二种选择是使用build.gradle
定义资源值。
类似的东西:
productFlavors {
flavor1 {
resValue "string", "app_name", "IRCEnterprise"
}
//....
}
另一种选择是使用这种脚本在BuildConfig类中创建一些字段。
productFlavors {
flavor1 {
buildConfigField "String", "name", "\"MY FLAVOR NAME\""
}
}