Mac M1运行Flutter项目报错Execution failed for task ':app:processDebugResources'
错误根因
AAPT: error: unexpected element
<queries>found in<manifest>报错的核心原因是:项目依赖的appauth:0.10.0包使用了Android 11(API 30)新增的<queries>清单标签,而当前项目使用的Android Gradle Plugin(AGP)版本低于3.6.0,低版本AGP无法识别该标签,导致资源链接失败。
标准解决方案
- 第一步:升级Android Gradle Plugin版本
打开项目根目录下的android/build.gradle文件,修改dependencies代码块中的AGP版本,至少升级到3.6.0及以上,示例配置:dependencies { // 替换原有低版本AGP配置,也可根据项目需求选择更高兼容版本 classpath 'com.android.tools.build:gradle:3.6.4' } - 第二步:匹配对应Gradle版本
打开android/gradle/wrapper/gradle-wrapper.properties文件,修改distributionUrl配置为AGP版本对应的Gradle版本,AGP 3.6.4匹配Gradle 5.6.4及以上,示例配置:
注意:AGP与Gradle版本必须匹配,不可随意跨版本搭配,否则会出现兼容错误distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip - 第三步:M1设备适配优化(可选,推荐操作)
你使用的是M1架构设备,建议直接将AGP升级到4.2.0以上,对应Gradle版本升级到7.0.2以上,原生支持arm64架构,不需要Rosetta转译,构建效率更高。 - 第四步:清理缓存重新构建
依次执行以下命令完成构建:flutter clean flutter pub get cd android && ./gradlew clean cd .. && flutter run
临时应急方案(不推荐长期使用)
如果暂时无法升级AGP版本,可以临时在android/app/src/main/AndroidManifest.xml的根<manifest>标签中添加<queries>的命名空间声明绕过报错:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" <!-- 新增下面这行命名空间声明 --> xmlns:queries="http://schemas.android.com/apk/res/android">
内容的提问来源于stack exchange,提问作者arcthurus
相关产品推荐
相关产品推荐

