升级Gradle构建工具版本后Flutter Android构建报processReleaseResources错误
问题原因
android:usesPermissionFlags是Android 12(API等级31)新增的Manifest属性,你当前项目的compileSdkVersion配置为30,低于该属性要求的最低编译版本,AAPT资源编译时无法识别该属性就会抛出链接错误。- 你自己编写的AndroidManifest里没有这个属性,是因为升级AGP 4.1.3后,依赖的第三方库/Flutter插件的Manifest在合并时带入了该属性,报错指向的build目录下的中间产物Manifest就是合并后的结果。
解决方案
方案1(推荐):升级编译和目标SDK版本到31及以上
修改app模块build.gradle的android配置块:
android { // 将compileSdkVersion从30改为31或更高版本 compileSdkVersion 31 defaultConfig { // 同步将targetSdkVersion从30改为和compileSdkVersion相同的版本 targetSdkVersion 31 // 其余配置保持不变 } }
修改后执行flutter clean清除缓存,重新构建即可。
方案2:强制移除Manifest合并时带入的usesPermissionFlags属性
如果你暂时不想升级SDK版本,可以通过Manifest的合并规则移除该属性:
- 首先在AndroidManifest的根
节点添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.myapp">
- 找到报错行对应的权限声明,给对应的
节点添加属性移除规则:
<uses-permission android:name="对应报错的权限名称" tools:remove="android:usesPermissionFlags" />
方案3:升级适配的第三方依赖
排查项目中引入的Flutter插件,将版本过旧、引入高版本权限属性的插件升级到和你当前compileSdkVersion 30适配的版本,这个方案适配成本较高,仅作为备选。
内容的提问来源于stack exchange,提问作者Scorb
相关产品推荐
相关产品推荐

