为特定风格和 buildType 定义 buildconfigfield

新手上路,请多包涵

我有 2 种口味,比如说香草和巧克力。我也有 Debug 和 Release 构建类型,我需要 Vanilla Release 有一个字段为 true,而其他 3 个组合应该为 false。

 def BOOLEAN = "boolean"
def VARIABLE = "VARIABLE"
def TRUE = "true"
def FALSE = "false"

    VANILLA {

        debug {

            buildConfigField BOOLEAN, VARIABLE, FALSE

        }

        release {

            buildConfigField BOOLEAN, VARIABLE, TRUE

        }

    }

    CHOCOLATE {
        buildConfigField BOOLEAN, VARIABLE, FALSE
    }

我有一个错误,所以我猜调试和发布技巧不起作用。有可能这样做吗?

原文由 JesusS 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 430
2 个回答

循环变体并检查它们的名称:

 productFlavors {
    vanilla {}
    chocolate {}
}

applicationVariants.all { variant ->
    println("Iterating variant: " + variant.getName())
    if (variant.getName() == "chocolateDebug") {
        variant.buildConfigField "boolean", "VARIABLE", "true"
    } else {
        variant.buildConfigField "boolean", "VARIABLE", "false"
    }
}

原文由 Simas 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是我在 Simas answer 下描述的一个解决方案

buildTypes {
    debug {}
    release {}
}

productFlavors {
    vanilla {
        ext {
            variable = [debug: "vanilla-debug value", release: "vanilla-release value"]
        }
    }
    chocolate {
        ext {
            variable = [debug: "chocolate-debug value", release: "chocolate-release value"]
        }
    }
}

applicationVariants.all { variant ->
    def flavor = variant.productFlavors[0]
    variant.buildConfigField "boolean", "VARIABLE", "\"${flavor.variable[variant.buildType.name]}\""
}

原文由 Alex Kucherenko 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题