You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Gradle任务同步失败:找不到compileDebugSources任务求助

问题分析与解决方案

首先,你遇到的compileDebugSources任务找不到的问题,本质是Android Gradle Plugin(AGP)版本更新带来的任务结构变化——在较新的AGP版本中,像compileDebugSources这类细分编译任务已经被封装为内部任务,不再对外暴露,自然无法直接通过名称引用。

为什么打印任务列表看不到这些任务?

AGP为了优化构建效率、实现增量构建,把很多底层细分任务(比如编译、资源处理等)隐藏了,只对外暴露语义化的顶层任务(比如assembleDebug、installDebug)。你打印出的任务列表都是AGP公开的顶层任务,那些细分任务属于内部实现逻辑,不会出现在tasks集合里。

修正后的任务配置方案

你想要的是按clean→编译→打包→安装→上传Crashlytics的顺序执行流程,其实不需要依赖那些隐藏的细分任务,直接用公开的顶层任务就能实现,而且AGP本身已经维护了这些任务的依赖关系,我们只需要保证自定义任务的执行顺序即可:

task fabricUploadDebug {
    // 依赖顶层任务,AGP会自动处理它们的内部依赖链
    dependsOn 'clean', 'installDebug', 'crashlyticsUploadDistributionDebug'
    
    // 明确执行顺序:clean先执行,然后是installDebug(它会自动触发assembleDebug、编译等前置任务),最后执行上传
    tasks.getByName('installDebug').mustRunAfter('clean')
    tasks.getByName('crashlyticsUploadDistributionDebug').mustRunAfter('installDebug')
}

如果你的fabricUploadDebug确实需要是Exec类型(比如要执行额外命令),可以补充commandLine配置,示例如下:

task fabricUploadDebug(type: Exec) {
    dependsOn 'clean', 'installDebug', 'crashlyticsUploadDistributionDebug'
    
    tasks.getByName('installDebug').mustRunAfter('clean')
    tasks.getByName('crashlyticsUploadDistributionDebug').mustRunAfter('installDebug')
    
    // 这里添加你需要执行的自定义命令,比如打印日志
    commandLine 'echo', 'Fabric上传流程执行完成!'
}

额外说明

  • assembleDebug已经包含了所有编译、打包的完整流程,installDebug又默认依赖assembleDebug,所以不需要单独依赖compileDebugSources和assembleDebug,AGP会自动按顺序执行它们。
  • 如果需要更细粒度的构建控制,可以参考AGP官方文档,使用它提供的公开任务和Provider API来关联任务,避免直接引用内部任务。

内容的提问来源于stack exchange,提问作者NickUnuchek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:15:52