Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk = 35

Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk = 35

在这里插入图片描述
三个报错信息如下
第一个

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

第二个

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
ERROR:D:\A_Unity\2022.3.26f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-35\android.jar: D8: java.lang.NullPointerException

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':launcher:desugarReleaseFileDependencies'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexFileDependenciesTask$DexFileDependenciesWorkerAction
   > Error while dexing.

* 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.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s

第三个

stderr[
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
ERROR:D:\A_Unity\2022.3.26f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-35\android.jar: D8: java.lang.NullPointerException

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':launcher:desugarReleaseFileDependencies'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexFileDependenciesTask$DexFileDependenciesWorkerAction
   > Error while dexing.

* 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.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
]
stdout[
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

错误原因:这个问题报错的原因是,我使用的 Unity2022.3.26,与之对应的 Android Gradle plugin 也就是 Gradle 版本是 7.1.2,这是Unity 官方给的对应关系
打包 APK 时配置Player Settings-> Android -> OthersSettings -> Identification -> Target API Level -> API Level 35

经测试 API Level 设置为 34/33/32 等低版本都是可以正常打包的

解决方案一
Unity 官方回答:这个问题影响Unity版本2021.3和2022.3 LTS。
目前,由于谷歌构建工具中AAPT2和SDK 35之间的兼容性错误,无法在Unity 2021.3和2022.3上构建SDK 35。我们已经向b谷歌报告了这个问题
我们正在Unity内提供修复,但与此同时,请遵循以下解决方案:
在 Unity 项目内 打开 gradleTemplate.properties ,这个文件 生成方式 Player Settings → Publish Settings → Check “Custom Gradle Properties Template” 在 Plugins/Android 文件夹下生成 gradleTemplate.properties 用文本编辑器打开,然后在最后添加一行 android.aapt2FromMavenOverride=<PATH_TO_YOUR_SDK>/build-tools/35.0.0/aapt2.exe
完整路径以Unity2022.3.26f1 为例安装路径 android.aapt2FromMavenOverride=2022.3.26f1/Editor\Data/PlaybackEngines/AndroidPlayer/SDK/build-tools/35.0.0/aapt2.exe
但是这个解决方案,我自己测试是无效的

解决方案二
错误原因中已经说了 API Level 设置低于 35 的都是可以正常打包的,那么如果不是必须要求设置 为 35 那么就降低版本,再打包

解决方案三
升级 Unity 版本,经过测试 Unity6 打包 APK 设置 API Level 35 打包正常

<think>好的,我现在需要处理用户遇到的Gradle构建错误。用户提供的日志中有几个警告和错误,我得逐一分析。 首先,用户的项目配置中有一个实验性选项的警告:'android.aapt2FromMavenOverride='。这可能是因为他们使用的Gradle插件版本较旧,或者这个选项已经被弃用了。我需要确认这个选项的作用,以及是否需要移除或者调整。 接下来是IronSource.androidlib模块的问题:minSdkVersion设置为26,而targetSdkVersion却是9,这显然不合理。因为minSdkVersion应该小于等于targetSdkVersion。用户需要检查这个模块的build.gradle文件,调整这两个值,确保minSdk不超过targetSdk。 然后是Gradle插件的版本问题。用户当前使用的是7.4.2,但compileSdk设置为34,而这个插件版本最高支持到33。建议用户升级到AGP 8.0或更高版本,或者暂时在gradle.properties中添加抑制警告的设置。不过升级插件会更彻底地解决问题。 还有一个关于Build-tool 34.0.0缺少AAPT2的错误。看起来Android SDK的build-tools 34.0.0目录下缺少aapt2.exe文件。可能用户没有正确安装这个版本的构建工具,或者安装过程中出了问题。需要检查SDK管理器,确认是否安装了34.0.0,如果没有就安装,或者尝试使用其他已安装的版本,比如34.0.0-rc4,并更新项目的build.gradle配置。 另外,XML解析错误可能是由于AAPT2缺失导致的资源处理失败。解决AAPT2的问题后,这个错误可能也会消失。 总结一下,用户需要处理三个主要问题:调整模块的SDK版本、升级Gradle插件或抑制警告、修复缺失的AAPT2工具。我应该分步骤说明这些解决方法,确保用户能一步步操作。同时,要提醒用户注意Gradle插件和Android Studio版本的兼容性,避免其他潜在问题。</think>好的,我帮你分析这个Gradle构建错误并逐步解决。以下是关键问题的整理和解决方案: --- ### **问题1:minSdkVersion > targetSdkVersion** ```log WARNING:minSdkVersion (26) > targetSdkVersion (9) for variant "debug" ``` **原因**:在 `:unityLibrary:IronSource.androidlib` 模块中,`minSdkVersion` 值大于 `targetSdkVersion`,这违背Android规范。 **解决步骤**: 1. 找到该模块的 `build.gradle` 文件(路径:`unityLibrary/IronSource.androidlib/build.gradle`) 2. 修改以下参数(示例): ```groovy android { defaultConfig { minSdkVersion 21 // 确保 <= targetSdkVersion targetSdkVersion 34 // 推荐设置为当前主流版本(如34) } } ``` --- ### **问题2:Android Gradle插件版本过旧** ```log WARNING:Android Gradle plugin (7.4.2) was tested up to compileSdk = 33 ``` **影响**:当前插件版本(7.4.2)未完全适配 `compileSdk 34`,可能导致兼容性问题。 **解决方案(二选一)**: 1. **推荐升级AGP版本**: 在项目根目录的 `build.gradle` 中更新插件: ```groovy dependencies { classpath "com.android.tools.build:gradle:8.0.0" // 或更高稳定版本 } ``` *注意:需同步升级Android Studio到最新版本* 2. **临时抑制警告(不推荐)**: 在 `gradle.properties` 中添加: ```properties android.suppressUnsupportedCompileSdk=34 ``` --- ### **问题3:缺失AAPT2工具** ```log Build-tool 34.0.0 is missing AAPT2 at ...\34.0.0\aapt2.exe ``` **原因**:Android SDK的 `build-tools;34.0.0` 未正确安装或文件损坏。 **解决步骤**: 1. 打开Android Studio → **Tools → SDK Manager** 2. 在 **SDK Tools** 标签页中: - ✔️ 勾选 **Show Package Details** - 找到 **Android SDK Build-Tools 34** → 安装子版本(如 `34.0.0-rc4`) 3. 修改项目的 `build.gradle`,指定已安装的版本: ```groovy android { buildToolsVersion "34.0.0-rc4" // 或实际安装的版本 } ``` --- ### **问题4:实验性参数警告** ```log WARNING:The option 'android.aapt2FromMavenOverride=' is experimental ``` **原因**:该参数用于覆盖AAPT2的下载来源,但已被标记为实验性且可能失效。 **建议**: - 移除 `gradle.properties` 中 `android.aapt2FromMavenOverride` 的配置(除非明确需要) --- ### **操作后验证** 1. 清理项目:执行 `File → Invalidate Caches / Restart` 2. 重新同步Gradle:点击 **Sync Project with Gradle Files** 3. 尝试重新构建项目 如果仍有问题,请检查Android SDK路径是否正确(Unity中路径设置:**Edit → Preferences → External Tools → Android**)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值