简体   繁体   English

Gradle Crittercism内置映射上传不起作用

[英]Gradle Crittercism on-build mapping upload not working

I'm trying to upload to Crittercism on build, and I put this at the bottom of my gradle file. 我正在尝试在构建时上传到Crittercism,并将其放在gradle文件的底部。 However, it doesn't seem to be working when I build debug. 但是,当我构建调试时,它似乎不起作用。 What am I doing wrong? 我究竟做错了什么?

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'
}

The way you've done it, the task that you have defined, uploadMappingToProd , will if invoked by some reason also invoke assembleDebug . 完成此操作的方式,即定义的任务uploadMappingToProd如果由于某种原因被调用 ,还将调用assembleDebug Because you have asked uploadMappingToProd to depend on assembleDebug - not the reverse. 因为您已要求uploadMappingToProd依赖assembleDebug而并非相反。 Therefore assembleDebug will happily finish without getting anywhere close to uploadMappingToProd . 因此, assembleDebug会很乐意完成,而不会接近uploadMappingToProd

If you want the reverse dependency ie assembleDebug to depend on uploadMappingToProd then you need to add this line after defining your task. 如果要反向依赖,即assembleDebug依赖于uploadMappingToProd则需要在定义任务后添加此行。

afterEvaluate {       
    tasks.assembleDebug.dependsOn uploadMappingToProd
}

This will guarantee uploadMappingToProd is invoked everytime and before assembleDebug is invoked. 这将保证uploadMappingToProd被调用每次 assembleDebug被调用。

My solution is working fine.(local build and jenkins build) 我的解决方案工作正常。(本地构建和詹金斯构建)

for me, only working when build is from jenkins 对我来说,只有当构建来自詹金斯时才可以工作

make sure your APPID, APPKEY, and path(release_jenkins.... normally release) 确保您的APPID,APPKEY和路径(release_jenkins ....正常发布)

build.gradle (app) (add at the end) 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")
    }
}

sample project -> https://github.com/SinsangMarket/CrittercismMappingTXT 示例项目-> https://github.com/SinsangMarket/CrittercismMappingTXT

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM