【问题标题】:Gradle Crittercism on-build mapping upload not workingGradle Crittercism 构建映射上传不起作用
【发布时间】:2016-11-14 22:18:11
【问题描述】:

我正在尝试在构建时上传到 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'
}

【问题讨论】:

    标签: android gradle groovy crittercism


    【解决方案1】:

    您完成它的方式,您定义的任务uploadMappingToProd,将如果被调用由于某种原因也会调用assembleDebug。因为您要求uploadMappingToProd 依赖assembleDebug - 而不是相反。因此assembleDebug 会很高兴地完成,而不会接近uploadMappingToProd

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

    afterEvaluate {       
        tasks.assembleDebug.dependsOn uploadMappingToProd
    }
    

    这将保证uploadMappingToProd 被调用每次 并且之前 assembleDebug 被调用。

    【讨论】:

      【解决方案2】:

      我的解决方案运行良好。(本地构建和詹金斯构建)

      对我来说,只有在构建来自 jenkins 时才能工作

      确保你的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

      【讨论】:

        猜你喜欢
        • 2021-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-13
        • 2013-04-26
        • 2014-07-19
        • 2011-09-07
        • 2012-01-14
        相关资源
        最近更新 更多