Unity 2022.3 打包 Android 失败:AAPT2 error failed to load resources table in android-35/android.jar

A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction See the Console for details.

WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 35
This Android Gradle plugin (7.1.2) was tested up to compileSdk = 32
This warning can be suppressed by adding
android.suppressUnsupportedCompileSdk=35
to this project's gradle.properties
The build will continue, but you are strongly encouraged to update your project to
use a newer Android Gradle Plugin that has been tested with compileSdk = 35
Exception while marshalling C:\Program Files\Unity\Hub\Editor\2022.3.14f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\build-tools\34.0.0\package.xml. Probably the SDK is read-only
Exception while marshalling C:\Program Files\Unity\Hub\Editor\2022.3.14f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools\package.xml. Probably the SDK is read-only
解决方案:
2026.08.01更新最新方案
Unity 2022.3 打包 Android 失败:AAPT2 error failed to load resources table in android-35/android.jar (RES_TABLE_TYPE_TYPE entry offsets overlap)
【问题描述】
将 Android SDK/JDK/NDK 从旧电脑复制到新电脑后,Unity 打包 Android 报错。Gradle 构建失败,任务卡在 :launcher:processReleaseResources。
【环境信息】
- Unity 版本: 2022.3.34f1c1
- Android Gradle Plugin: 7.1.2
- compileSdk 目标: 35
- JDK: 11
【重现步骤】
直接通过 Unity 编辑器执行 Build,Gradle 执行 assembleRelease 任务。
【完整报错日志(已脱敏处理)】
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details
WARNING: We recommend using a newer Android Gradle plugin to use compileSdk = 35
This Android Gradle plugin (7.1.2) was tested up to compileSdk = 32
This warning can be suppressed by adding android.suppressUnsupportedCompileSdk=35 to gradle.properties
(中间编译任务执行省略,均为 UP-TO-DATE 或 NO-SOURCE,未报错)
> Task :launcher:processReleaseMainManifest
[com.android.support:animated-vector-drawable:28.0.0] ...\AndroidManifest.xml Warning:
Package name 'android.support.graphics.drawable' used in: com.android.support:animated-vector-drawable:28.0.0, com.android.support:support-vector-drawable:28.0.0.
> Task :launcher:processReleaseResources FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':launcher:processReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
> Android resource linking failed
ERROR:AAPT: aapt2.exe E 08-01 10:17:40 14080 17964 LoadedArsc.cpp:94] RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data.
aapt2.exe E 08-01 10:17:40 14080 17964 ApkAssets.cpp:149] Failed to load resources table in APK '[SDK_ROOT]\platforms\android-35\android.jar'.
error: failed to load include path [SDK_ROOT]\platforms\android-35\android.jar.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
BUILD FAILED in 26s
UnityEditor.Android.Command.WaitForProgramToRun...
Rethrow as GradleInvokationException: Gradle build failed
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
解决方案(按推荐顺序)
建议:直接使用方案1即可,从别处断网安装的unity使用方案1是最方便的。
方案一:降低 compileSdk 版本(最快速)
将编译目标 API 等级降为 32(或 33),避免使用有问题的 android-35 平台。
-
在 Unity 编辑器中打开 Player Settings(菜单:
Edit > Project Settings > Player)。 -
切换到 Android 平台标签,展开 Other Settings。
-
找到 Target API Level,将其设为 Android 12 (API 32)(或更低稳定版本)。
-
重新构建项目。
如果您的项目明确需要 Android 14 特性,则继续采用方案二。
方案二:修复或重新安装 Android SDK Platform 35
步骤 1:删除损坏的平台文件
手动删除 C:\tool\20223.34_jdk_sdk_ndk\SDK\platforms\android-35\ 文件夹。
步骤 2:通过 SDK Manager 重新下载
-
如果您独立安装了 Android Studio,打开 SDK Manager,找到 Android SDK Platform 35,取消勾选再重新勾选安装。
-
如果仅使用 Unity 自带的 SDK,您可以:
-
在 Unity 中打开 External Tools(
Edit > Preferences > External Tools),确保 Android SDK 路径指向正确。 -
使用 Unity 内置的 SDK Manager(菜单
Window > Android > SDK Manager)下载缺失的平台。
-
步骤 3:验证文件完整性
安装完成后,检查 android.jar 大小是否正常(通常几十 MB),并尝试在命令行中运行 aapt2 测试(可选)。
方案三:升级 Android Gradle Plugin(不推荐,风险较高)
警告提示当前插件(7.1.2)仅测试到 compileSdk 32,升级到更高版本(如 8.x)可解决兼容性,但 Unity 2022.3 对较新插件支持可能不稳定,可能导致其他问题。建议仅在前两种方案无效时考虑,并需手动修改导出的 Gradle 文件。
额外建议
-
在项目根目录的
gradle.properties中添加android.suppressUnsupportedCompileSdk=35可以消除警告,但不能修复资源链接错误。 -
日志中的
com.android.support警告表示引用了旧版 Support Library,建议迁移到 AndroidX,但此警告不影响构建结果。
后续操作
完成上述任一方案后,请执行以下清理:
-
删除项目中的
Library/Bee缓存文件夹(或使用 Unity 菜单Assets > Refresh后再次构建)。 -
在 Unity 中执行
Build > Clean Build(如果有该选项)或手动删除Assets/../Temp下的临时文件。
如果问题依然存在,请检查您的 Java 环境(JDK 11)是否正常,并确保环境变量 JAVA_HOME 指向 C:\tool\20223.34_jdk_sdk_ndk\jdk-11(日志已设置正确)。
建议优先尝试 方案一,因为调整 Target API Level 最为简便且安全,大多数情况下无需使用最新的 API 35。若需使用新 API,再执行方案二修复 SDK。
更多推荐

所有评论(0)