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

在android的build.gradle中创建和访问productFlavor变量,第1张

概述我有一个由CI构建并发布到HockeyApp的多风味项目. 每个flavor都有一个applicationId和一个apiToken,它存储在flavor本身中(将所有重要变量保存在一个地方): def token = null productFlavors { prod { applicationId "de.example.appname" @H_301_6@ 我有一个由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','"1"'        buildConfigFIEld 'String','"987654321"'        token = "p0o9i8u7z6t5r4e3w2q1"    }}

在像“productFlavors”这样的级别上有hockeyApp-settings:

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

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

./gradlew uploadProdReleasetoHockeyApp [...]

不幸的是,prod-flavor的变量标记总是被demo-value覆盖.因此,在每次上传过程后,我都会遇到错误

Error response from HockeyApp: App Could not be created.

因为gradle尝试使用demo-token上传prod-flavor.

这里有一些额外的基本数据

compileSdkVersion 24buildToolsversion "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-variables并以显示的方式访问它们?

解决方法 在这个特例中,我找到了以下答案:

添加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的build.gradle中创建和访问productFlavor变量全部内容,希望文章能够帮你解决在android的build.gradle中创建和访问productFlavor变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1128145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存