2016-11-14 8 views
0

Я пытаюсь загрузить в Crittercism on build, и я положил это на дно моего файла gradle. Тем не менее, он не работает, когда я строю debug. Что я делаю не так?Gradle Crittercism on-build mapping upload not working

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', '[email protected]/outputs/mapping/production/release/mapping.txt', 
      '-F', "app_version=$appVersionName-$appVersionCode", 
      '-F', "key=$critterKey" 

    type Exec 
    dependsOn 'assembleDebug' 
} 

ответ

1

, как вы сделали это, задача, которую вы определили, uploadMappingToProd, будет если вызывается по какой-то причине также вызвать assembleDebug. Потому что вы задали uploadMappingToProd, чтобы зависеть от assembleDebug - не наоборот. Поэтому assembleDebug с радостью закончит, не приблизившись к uploadMappingToProd.

Если вы хотите, чтобы обратная зависимость, то есть assembleDebug, зависела от uploadMappingToProd, тогда вам нужно добавить эту строку после определения вашей задачи.

afterEvaluate {  
    tasks.assembleDebug.dependsOn uploadMappingToProd 
} 

Это будет гарантировать uploadMappingToProd вызывается каждый раз и перед темassembleDebug вызывается.

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", "[email protected]" + 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

 Смежные вопросы

  • Нет связанных вопросов^_^