每个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变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)