解决升级 Android 15 后 RES_TABLE_TYPE_TYPE 资源表重叠错误
问题描述
当将 Android 项目的 compileSdkVersion
升级到 Android 35 (Android 15) 时,构建过程中会出现以下关键错误:
none
ERROR:: AAPT: aapt2.exe E 06-27 15:30:04 3616 2980 LoadedArsc.cpp:96] RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data.
aapt2.exe E 06-27 15:30:04 3616 2980 ApkAssets.cpp:149] Failed to load resources table in APK 'C:\...\android.jar'
error: failed to load include path C:\...\android.jar
此错误会导致构建失败,主要由于:
- 资源表条目偏移量与实际数据重叠
- 无法加载 Android 35 SDK 中的资源文件 (
android.jar
) - 通常发生在刚更新 SDK 后且未同步升级构建工具的情况下
解决方案
该问题由 Android Gradle 插件(AGP)版本不兼容导致,请按以下步骤修复:
步骤 1:更新 Android Gradle 插件版本
在项目的根级 build.gradle
文件中修改依赖版本:
groovy
// 文件位置:项目根目录/build.gradle
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:8.4.2' // 更新到 8.4.2
}
}
步骤 2:更新 Gradle 分发版本
设置 gradle-wrapper.properties
使用兼容的 Gradle 版本:
properties
# 文件位置:项目根目录/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
完整版本组合参考
组件 | 要求版本 |
---|---|
AGP | 8.4.2 |
Gradle | 8.6 |
重要提示
必须同时升级两个组件,仅更新一项可能无效。执行修改后需清除缓存:
bash
./gradlew cleanBuildCache
问题原因解析
此错误的根本原因在于:
- Android 35 SDK 采用了新的资源表结构
- 旧版 AGP 无法正确处理新格式的资源表
- AGP 8.4.2 包含针对此问题的官方修复
后续维护建议
- 定期检查更新:每月查看 AGP 发布说明
- 分阶段升级:
- 先更新 Gradle 包装器
- 再更新 AGP 版本
- 最后升级
compileSdkVersion
- 预防缓存问题:升级后执行:
bash
./gradlew clean && ./gradlew --stop
按此方案升级构建工具后,资源表重叠问题即可解决,项目可正常构建 Android 15 应用。若仍遇冲突问题,需检查项目依赖中的 SDK 组件是否完整更新。