gpt4 book ai didi

android - 在 android 的 build.gradle 中创建和访问 productFlavor 变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:10 25 4
gpt4 key购买 nike

我有一个由 CI 构建并发布到 HockeyApp 的多风格项目。每个 flavor 都有一个 applicationId 和一个 apiToken,它们存储在 flavor 本身中(以将所有重要变量保存在一个地方):

    def token = null

productFlavors {

prod {
applicationId "de.example.appname"

buildConfigField 'String', 'FLAVOR_ID', '"0"'
buildConfigField 'String', 'HOCKEY_APP_ID', '"1234567890"'

token = "1q2w3e4r5t6z7u8i9o0p"
}

demo {
applicationId "de.example.appname.demo"

buildConfigField 'String', 'FLAVOR_ID', '"1"'
buildConfigField 'String', 'HOCKEY_APP_ID', '"987654321"'

token = "p0o9i8u7z6t5r4e3w2q1"
}
}

在与“productFlavors”相同的级别上,有 hockeyApp 设置:

    hockeyapp {
apiToken = token
releaseType = 0
notify = 0
status = 1
notesType = 1
notes = "Uploaded with gradle"
}

为了调试代码,我构建并通过终端上传了 .apk 文件:

./gradlew uploadProdReleaseToHockeyApp [...]

不幸的是,prod-flavor 的变量 token 总是被 demo-value 覆盖。所以在每次上传过程后我都会收到类似

的错误

Error response from HockeyApp: App could not be created.

因为 gradle 尝试使用演示 token 上传 prod-flavor。

这里是一些额外的基本数据:

compileSdkVersion 24
buildToolsVersion "24.0.1"
compile 'net.hockeyapp.android:HockeySDK:4.0.0'
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'de.felixschulze.gradle:gradle-hockeyapp-plugin:3.5'

根据我的要求,是否有定义 flavor 变量并以所示方式访问它们的解决方案?

最佳答案

在这种特殊情况下,我找到了以下答案:

根据需要修改添加 hockeyapp-task

hockeyapp {
apiToken = "not_required"
releaseType = 0
notify = 0
status = 2
teams = 1234
notesType = 1
}

在下一步中添加基于 flavor 的 gradle 任务来修改 hockeyapp 的 apiToken:

task setDevReleaseApiToken << {
hockeyapp.apiToken = "1234567890abcdefghijklmnopqrstuvwxyz"
}

task setProdReleaseApiToken << {
hockeyapp.apiToken = "1234567890abcdefghijklmnopqrstuvwxyz"
}

这些任务在 gradle 的 whenTaskAdded-task 中被调用,您可以像这样简单地“覆盖”它:

tasks.whenTaskAdded { task ->
if (task.name == 'uploadDevReleaseToHockeyApp') {
task.dependsOn 'setDevReleaseApiToken'
} else if (task.name == 'uploadProdReleaseToHockeyApp') {
task.dependsOn 'setProdReleaseApiToken'
}
}

每次调用任务 uploadDevReleaseToHockeyApp(手动或通过 CI..),调用任务 setDevReleaseApiToken 并分配相关的 apiToken。

如果需要,将此模式扩展到所有其他口味!

关于android - 在 android 的 build.gradle 中创建和访问 productFlavor 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39911965/

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