我正在尝试在构建时上传到Crittercism,并将其放在gradle文件的底部。但是,当我构建调试时,它似乎不起作用。我究竟做错了什么?

task uploadMappingToProd() << {
    def critterAppId = "abcde"
    def appVersionName = "1.0.1"
    def appVersionCode = "DEBUG"
    def critterKey = "12345"

    commandLine 'curl',
            "https://app.crittercism.com/api_beta/proguard/$critterAppId",
            '-F', 'proguard=@build/outputs/mapping/production/release/mapping.txt',
            '-F', "app_version=$appVersionName-$appVersionCode",
            '-F', "key=$critterKey"

    type Exec
    dependsOn 'assembleDebug'
}

最佳答案

完成此操作的方式,即定义的任务uploadMappingToProd,如果由于某种原因而被调用,也会调用assembleDebug。因为您已要求uploadMappingToProd依赖assembleDebug-而非相反。因此,assembleDebug将愉快地完成而不会接近uploadMappingToProd

如果您希望反向依赖关系即assembleDebug依赖uploadMappingToProd,则需要在定义任务后添加此行。

afterEvaluate {
    tasks.assembleDebug.dependsOn uploadMappingToProd
}

这将确保uploadMappingToProd每次都在assembleDebug被调用之前被调用。

09-04 22:10