升级Gradle与AGP7.x后App构建Release版本报repo.url不能为空错误
异常触发原因
AGP 7.0及以上版本默认在Release构建流程中引入了collect[FLAVOR]Dependencies系列依赖元数据收集任务,Debug构建默认不会触发该任务,因此会出现Debug构建正常、Release构建报错的差异。
该报错的核心根因是:任务遍历项目所有配置的Maven仓库时,检测到至少一个未配置url属性的仓库实例,触发AGP内置的非空校验抛出异常。
排查方向
- 优先检查
settings.gradle/settings.gradle.kts中dependencyResolutionManagement.repositories块的配置,排查是否存在条件分支下仅声明了maven节点、未配置url的情况,比如url通过环境变量、自定义属性赋值时,Release构建场景下变量未正确初始化导致为空。 - 检查根目录
build.gradle/build.gradle.kts的allprojects { repositories {} }块,以及各子模块单独配置的repositories块,尤其注意区分构建类型、产品风味的条件配置逻辑,是否存在仅在Release场景下生效的空url仓库。 - 排查项目引入的自定义Gradle插件、全局初始化脚本(init.gradle)是否存在动态注入Maven仓库的逻辑,动态注入时容易遗漏url的非空判断,导致注入了无url的无效仓库。
- 可临时添加配置验证问题根因:在
gradle.properties中添加android.enableDependencyVerification=false关闭依赖校验逻辑,或添加任务禁用配置:
tasks.whenTaskAdded { task -> if (task.name.matches("collect.*Dependencies")) { task.enabled = false } }
如果禁用后Release构建正常,即可确认属于仓库配置问题,再针对性排查即可。
内容的提问来源于stack exchange,提问作者AresM
相关产品推荐
相关产品推荐

