0

ビルド時に 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'
}
4

2 に答える 2

1

あなたがそれを行った方法、あなたが定義したタスクは、何らかの理由で呼び出された場合uploadMappingToProd、も呼び出します。あなたが依存するように頼んだからです- 逆ではありません。したがって、 に近づくことなく、楽しく終了します。assembleDebuguploadMappingToProdassembleDebugassembleDebuguploadMappingToProd

assembleDebug逆の依存関係、つまり依存したい場合はuploadMappingToProd、タスクを定義した後にこの行を追加する必要があります。

afterEvaluate {       
    tasks.assembleDebug.dependsOn uploadMappingToProd
}

これにより、毎回uploadMappingToProd呼び出され、呼び出される前に保証されます。 assembleDebug

于 2016-11-15T02:50:50.143 に答える
0

私のソリューションは正常に動作しています.(ローカルビルドとジェンキンスビルド)

私にとっては、ビルドがジェンキンスからのものである場合にのみ機能します

APPID、APPKEY、およびパス(release_jenkins ....通常はリリース)を確認してください

build.gradle (アプリ) (最後に追加)

task uploadPro << {
    logger.error("Uploading mapping.txt file to crittercism")
    String temp = projectDir;
    temp = temp.replace("\\", "/");
    String[] cmd = ["curl", "-k", "https://app.crittercism.com/api_beta/proguard/AppIDSting",
                 "-F", "proguard=@" + temp + "/build/outputs/mapping/release_jenkins/mapping.txt",
                 "-F", "app_version=" + VERSION_NAME + '-' + VERSION_CODE,
                 "-F", "key=API_KEY"]
    logger.error("CMD : " + cmd)
    ProcessBuilder builder = new ProcessBuilder(cmd);
    Process process = builder.start();
    process.waitFor()
    println process.err.text
    println process.text
    }

gradle.buildFinished {
    //check your build type. I am not sure it's the best way to do it.
    logger.error("JSC : 이름 ! - " + gradle.startParameter.taskNames);
    if (gradle.startParameter.taskNames.contains("assembleRelease_jenkins")) {
        logger.error("JSC : 올리기 시작 ! - " + gradle.startParameter.taskNames);
        tasks.uploadPro.execute()
    } else {
        logger.error("JSC : PASS")
    }
}

サンプルプロジェクト -> https://github.com/SinsangMarket/CrittercismMappingTXT

于 2017-02-01T04:08:07.270 に答える