使用tasks.getByName找不到名称的任务

时间:2018-01-25 09:25:34

标签: android gradle android-gradle build.gradle

我想创建具有任务顺序的任务

task fabricUploadDebug(type: Exec) {
dependsOn 'clean'
dependsOn 'compileDebugSources'
dependsOn 'assembleDebug'
dependsOn 'installDebug'
dependsOn 'crashlyticsUploadDistributionDebug'
tasks.getByName('compileDebugSources').mustRunAfter('clean')
tasks.getByName('assembleDebug').mustRunAfter('compileDebugSources')
tasks.getByName('installDebug').mustRunAfter('assembleDebug')
tasks.getByName('crashlyticsUploadDistributionDebug').mustRunAfter('installDebug')}

我试图从右侧面板运行任务" Gradle",但错误是

Gradle sync failed: Task with name 'compileDebugSources' not found in project ':app'. // // Consult IDE log for more details (Help | Show Log) (2s 87ms) (moments ago)

这是关于 https://stackoverflow.com/a/32909428/2425851

更新 我试图输出我拥有的所有任务:

 for(item in tasks){
        println "group= "+item.group+" ,path= "+item.path
    }

但我只有这个:为什么我无法访问其他任务?

group= build ,path= :app:assemble
group= build ,path= :app:assembleAndroidTest
group= build ,path= :app:buildDependents
group= build ,path= :app:buildNeeded
group= verification ,path= :app:check
group= build ,path= :app:cleanBuildCache
group= null ,path= :app:compileLint
group= verification ,path= :app:connectedCheck
group= null ,path= :app:consumeConfigAttr
group= verification ,path= :app:deviceCheck
group= null ,path= :app:extractProguardFiles
group= null ,path= :app:fabricUploadDebug
group= null ,path= :app:lint
group= null ,path= :app:preBuild
group= null ,path= :app:resolveConfigAttr
group= Android ,path= :app:sourceSets
group= Install ,path= :app:uninstallAll

enter image description here

2 个答案:

答案 0 :(得分:1)

首先,gradle会动态生成具有不同构建变体的android任务(很可能是 debug release )。 因此,要查看生成的所有任务,您可以使用命令assembleDebugCompileDebugSources查看仅适用于您的应用程序的任务。

其次,似乎task fabricUploadDebug(type: GradleBuild) { tasks = ['clean', 'assembleDebug', 'installDebug', 'crashlyticsUploadDistributionDebug'] } 任务仅取决于{{1}}(正如您在the documentation上看到的那样),因此对{{1}}的调用似乎不会是必要的。

最后,您似乎想要创建GradleBuild task,您可以将其定义为:

{{1}}

答案 1 :(得分:0)

This should work for you :

task fabricUploadDebug(type: Exec), dependsOn : ['clean',
                                                 'compileDebugSources',
                                                 'assembleDebug',
                                                 'installDebug',
                                                 'crashlyticsUploadDistributionDebug'] {

    compileDebugSources.dependsOn clean
    assembleDebug.dependsOn compileDebugSources
    installDebug.dependsOn assembleDebug
    crashlyticsUploadDistributionDebug.dependsOn installDebug
}