Flutter APK构建失败:针对android-35的AAPT2错误——"RES_TABLE_TYPE_TYPE条目偏移与实际条目数据重叠"
兄弟,我前阵子打包Flutter APK时也踩过一模一样的坑!你用flutter build apk时碰到的这个AAPT2错误,核心原因就是Android SDK 35(也就是API 35)的资源编译工具做了底层校验升级,和一些旧版插件的资源表格式不兼容,尤其是flutter_plugin_android_lifecycle这个插件出问题的情况特别多。给你几个亲测有效的解决办法,按顺序试就行:
先试试降级Android SDK版本:
打开项目里的android/build.gradle文件,把compileSdkVersion和targetSdkVersion从35改成34,很多时候这一步就能直接搞定问题:android { compileSdkVersion 34 // 其他配置... defaultConfig { targetSdkVersion 34 // 其他配置... } }然后更新所有Flutter插件到最新版:
旧插件的资源处理逻辑往往跟不上新SDK的要求,在项目根目录运行这两个命令,确保所有插件都是最新状态:flutter pub upgrade flutter pub outdated用第二个命令检查有没有漏更的插件,手动把
pubspec.yaml里的插件版本号更到最新就行。如果上面两步还没解决,清理项目缓存和构建文件再试:
有时候旧的缓存文件会搞事情,运行这几个命令彻底清理:flutter clean rm -rf android/.gradle flutter pub get清理完再重新运行
flutter build apk试试。最后一招:强制所有插件统一使用指定的Android SDK版本:
有些第三方插件内部硬编码了旧的SDK依赖,你可以在android/build.gradle里加一段配置,强制所有子项目用统一的编译版本:subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> // 强制统一AndroidX版本 if (details.requested.group == 'androidx.core') { details.useVersion '1.10.1' } // 强制匹配SDK 34的Gradle插件版本 if (details.requested.group == 'com.android.tools.build' && details.requested.name == 'gradle') { details.useVersion '7.4.2' } } } project.android { compileSdkVersion 34 buildToolsVersion '34.0.0' } }
简单说下为啥会出这个错:Android 14.1(API 35)的AAPT2工具加强了资源表的校验规则,旧插件生成的资源表在新规则下被判定为“条目偏移和实际数据重叠”,所以要么降级SDK避开新校验,要么更新插件适配新规则,这俩思路都能解决问题。
备注:内容来源于stack exchange,提问作者yash gupta

