Skip to content

解决升级 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

此错误会导致构建失败,主要由于:

  1. 资源表条目偏移量与实际数据重叠
  2. 无法加载 Android 35 SDK 中的资源文件 (android.jar)
  3. 通常发生在刚更新 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

完整版本组合参考

组件要求版本
AGP8.4.2
Gradle8.6

重要提示

必须同时升级两个组件,仅更新一项可能无效。执行修改后需清除缓存:

bash
./gradlew cleanBuildCache

问题原因解析

此错误的根本原因在于:

  1. Android 35 SDK 采用了新的资源表结构
  2. 旧版 AGP 无法正确处理新格式的资源表
  3. AGP 8.4.2 包含针对此问题的官方修复

版本兼容性建议

始终参考 Android Gradle 插件官方兼容性表

  • Android 15 (API 35) 至少需要 AGP 8.4+
  • 不同 AGP 版本对应特定 Gradle 版本要求

后续维护建议

  1. 定期检查更新:每月查看 AGP 发布说明
  2. 分阶段升级
    • 先更新 Gradle 包装器
    • 再更新 AGP 版本
    • 最后升级 compileSdkVersion
  3. 预防缓存问题:升级后执行:
bash
./gradlew clean && ./gradlew --stop

按此方案升级构建工具后,资源表重叠问题即可解决,项目可正常构建 Android 15 应用。若仍遇冲突问题,需检查项目依赖中的 SDK 组件是否完整更新。