Flutter无法构建AppBundle 报manifest存在意外<queries>元素错误
问题现象
更新应用后出现崩溃,既无法回退原有配置,也无法完成应用升级,构建时抛出如下错误:
* What went wrong: Execution failed for task ':app:processDebugResources'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > Android resource linking failed /Users/... AAPT: error: unexpected element <queries> found in <manifest>.
执行flutter clean、清除IDE缓存重启等操作均无效,甚至基础Flutter示例项目也无法正常运行,无法完成AppBundle构建。
当前环境配置
- Gradle Wrapper配置:
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-bin.zip
- 项目根目录build.gradle依赖配置:
dependencies { classpath 'com.android.tools.build:gradle:3.5.0' classpath 'com.google.gms:google-services:4.3.3' }
- Flutter版本:1.22.6(空安全特性推出前的旧版本)
问题根因
<queries>是Android 11(API 30)新增的清单文件元素,用于声明应用需要访问的其他应用包名。当前使用的Android Gradle Plugin(AGP)3.5.0版本未对该元素做适配,资源链接阶段无法识别该标签就会抛出上述错误。
哪怕开发者没有手动在清单文件中添加这个标签,引入的第三方依赖、Flutter框架嵌入层在适配Android 11后,也会自动将该标签合并到最终生成的清单文件中,因此新建的基础示例项目也会触发同类报错。
解决方案
以下两个方案可根据实际需求选择,优先推荐改动最小的方案一:
方案一:小版本升级AGP和对应Gradle版本(推荐,无需升级Flutter版本)
- 修改
gradle-wrapper.properties中的Gradle分发地址,将原有distributionUrl替换为:distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip - 修改项目根目录build.gradle中的AGP依赖版本,将3.5.0替换为3.5.4:
AGP 3.5.x分支从3.5.4版本开始正式加入对classpath 'com.android.tools.build:gradle:3.5.4'<queries>标签的兼容支持,升级后不会影响Flutter 1.22.6版本的正常编译,整体改动量极小。 - 重新执行构建即可,无需修改业务层代码。
方案二:锁死全量依赖版本(不推荐)
如果完全不想调整Gradle和AGP版本,可以将所有Android端依赖、Flutter SDK依赖全部锁到适配Android 11之前的版本,避免依赖合并时带入<queries>标签。但这种方式后续无法升级任何依赖,维护成本极高,非极端场景不建议使用。
注意事项
- 不要直接将AGP升级到4.0及以上版本,高版本AGP和Flutter 1.22.6存在已知兼容问题,会触发其他编译错误
- 修改配置后如果仍触发相同报错,可以删除项目根目录下的
.gradle缓存文件夹后再重新同步构建
内容的提问来源于stack exchange,提问作者Nitneuq
相关产品推荐
相关产品推荐

