gpt4 book ai didi

android - 如何从 productflavor 调用 gradle 任务

转载 作者:行者123 更新时间:2023-11-29 01:18:14 27 4
gpt4 key购买 nike

我需要为不同的构建环境启用 Fabric,并且还要考虑在我们的案例中 apk 是使用 Android Studio 还是 CI 服务器 (jenkins) 构建的。我正在考虑使用的方法是:

defaultConfig {
applicationId "com.pack.proj"
minSdkVersion 19
targetSdkVersion 23
versionCode 12
ext.buildNumber = System.getenv("BUILD_NUMBER") ?: "dev"
versionName "1.2.$buildNumber"
signingConfig signingConfigs.inspection
}

productFlavors {
dev1 {
resValue 'string', 'app_name', 'App Name'
resValue 'string', 'base_url', 'http://dev1.server.in/'
buildConfigField 'boolean', 'USE_FABRIC', 'true'

}
dev2 {
resValue 'string', 'app_name', 'App Name'
resValue 'string', 'base_url', 'http://dev2.server.in/'
// ********HOW DO I CALL THE TASK 'enableFabric' FROM HERE*********
}
}

task enableFabric{
if(versionName.contains('dev'))
buildConfigField 'boolean', 'USE_FABRIC', 'false'
else
buildConfigField 'boolean', 'USE_FABRIC', 'true'
}

现在我的问题是

  1. 如何从 dev1 和 dev2 产品调用任务 enableFabric口味?
  2. 当我运行 gradle 脚本时,我收到错误消息,即 versionName is unrecognized property in task enableFabric?
  3. 还有 buildConfigField 'boolean', 'USE_FABRIC', 'true' 在 defaultConfig 中使用时对我不起作用。当我使用

    if(BuildConfig.USE_FABRIC == true){ //做一点事}

在 Java 代码中。

最佳答案

将 if else 直接放在 dev2 中。或者如果您打算多次使用它,请将它变成一个函数而不是任务

例子:

productFlavors {
dev1 {
resValue 'string', 'app_name', 'App Name'
resValue 'string', 'base_url', 'http://dev1.server.in/'
buildConfigField 'boolean', 'USE_FABRIC', 'true'

}
dev2 {
resValue 'string', 'app_name', 'App Name'
resValue 'string', 'base_url', 'http://dev2.server.in/'
buildConfigField 'boolean', 'USE_FABRIC', useFabric()
}
}

在你的 android block 之外,做一些像

def useFabric() {
if (versionName.contains('dev'))
return false;
else return true;
}

关于android - 如何从 productflavor 调用 gradle 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38392840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com