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

多模块项目升级Gradle后Manifest合并出现uninitialized.application.id错误

异常包名uninitialized.application.id的来源

这个占位符是Android Gradle Plugin(AGP) 7.0及以上版本内置的特殊标记,当Manifest合并阶段无法读取到合法的applicationId赋值时,就会用这个值填充。触发场景通常有以下几种:

  • AGP 7.0+调整了applicationId的读取时机,如果你在build.gradle中把applicationId的赋值放在了afterEvaluate等执行阶段的代码块中,会晚于Manifest合并任务的执行,导致合并时无法读取到正确值
  • 多模块中混淆了namespace和applicationId的配置,library模块错误配置了applicationId,或者主模块没有正确完成applicationId的赋值
  • 自定义的manifestPlaceholders配置中,对${applicationId}相关的占位符使用了未初始化的变量做替换
解决方案
  • 修正applicationId赋值时机:将主app模块的applicationId配置放在android.defaultConfig、productFlavors或者buildTypes块中,不要放在afterEvaluate等执行阶段的闭包里,确保配置阶段就能读取到明确的applicationId值
  • 规范多模块配置:所有library模块只需要在android块中配置namespace参数即可,不要添加applicationId配置;AGP 7.0+已经废弃AndroidManifest.xml中的package属性,所有模块统一用build.gradle中的namespace声明包名
  • 检查占位符配置:如果项目中自定义了manifestPlaceholders,确保所有和applicationId相关的替换变量都在配置阶段完成初始化,不要用延迟赋值的属性
  • 快速验证:可以先在主模块的defaultConfig中写死固定的applicationId,同步Gradle后重新构建,如果报错消失,即可定位是原有动态applicationId的赋值逻辑时机错误,再针对性调整逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:36:02