Unity3d 打包安卓平台(Android apk)报错Gradle build failed解决方法

问题

Unity3d 版本为2022.3.*版本,而且工程内部没有包含比较特殊的插件,安卓模块(module)也是随编辑一起安装,JDK、Android SDK Tools、Android NDK和Gradle都是默认安装。打包设置Project Settings也是默认设置,打包的工程不包含中文目录或者文件。然而打包却报错Gradle build failed。
详细报错如下:
在这里插入图片描述
在这里插入图片描述

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 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

ERROR:D:\Program Files\Unitys\2022.3.14f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-35\android.jar: D8: java.lang.NullPointerException Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
CommandInvokationFailure: Gradle build failed. D:\Program Files\Unitys\2022.3.14f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin\java.exe -classpath “D:\Program Files\Unitys\2022.3.14f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-7.2.jar” org.gradle.launcher.GradleMain “-Dorg.gradle.jvmargs=-Xmx4096m”
“assembleDebug” Build completed with a result of ‘Failed’ in 45 seconds (44996 ms) 3 errors UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

在网上搜索排查了多次,仍然未解决问题,特记录一下解决过程。

解决方法

清理项目

首先尝试了清理项目的方法,网上的方式是:

在 Unity 中,您可以尝试清理项目来解决 Gradle Build Failed 问题。在 Unity Editor 中,选择“File”->“Build Settings”->“Clean Project”,然后重新构建项目。这将清除构建缓存并重新生成项目文件,可能解决潜在的构建问题。

然而,我并没有找到对应的操作, 所以,手动删除了工程内的Library、Logs、Temp等文件夹,然后重新打开工程,重新打包,发现未解决该问题。

修改Gradle 镜像

这里考虑的是,使用国内的镜像源,比如阿里云或者腾讯云,以加快依赖库的下载速度,尤其是在国内访问Google的Maven仓库可能会很慢或者被屏蔽。
在 Build Settings 左下角打开 Player Settings,在 Android 平台图标选项卡下找到 Publishing Settings 选项的Build选项,勾选 Custom Gradle Settings Template。
在这里插入图片描述

工程内多出这么一个文件“Assets/Plugins/Android/settingsTemplate.gradle”。将settingsTemplate.gradle文件内容替换如下:

pluginManagement {
    repositories {
        **ARTIFACTORYREPOSITORY**
        maven {
          url 'https://mirrors.huaweicloud.com/repository/maven/'
        }
        //gradlePluginPortal()
        //google()
        //mavenCentral()
    }
}

include ':launcher', ':unityLibrary'
**INCLUDES**

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {
        **ARTIFACTORYREPOSITORY**
        maven {
          url 'https://mirrors.huaweicloud.com/repository/maven/'
        }
        //google()
        //mavenCentral()
        flatDir {
            dirs "${project(':unityLibrary').projectDir}/libs"
        }
    }
}

也可以选用其他的备用源:

阿里云:http://maven.aliyun.com/
中央仓库:https://repo1.maven.org/maven2/
网易:http://maven.netease.com/repository/public/
华为云:https://repo.huaweicloud.com/repository/maven/
腾讯云:https://mirrors.cloud.tencent.com/repository/maven/
中国科技大学:http://mirrors.ustc.edu.cn/maven/maven2/
南京大学:http://maven.nju.edu.cn/repository/
清华大学:https://repo.maven.apache.org/maven2/
北京理工大学:http://mirror.bit.edu.cn/maven/
东软信息学院:https://mirrors.neusoft.edu.cn/maven2/
中国科学院开源协会:http://maven.opencas.cn/maven/
北京交通大学:http://maven.bjtu.edu.cn/maven2/

不过修改后,我这里还提示错误。

在这里插入图片描述

修改API Level

这里一直忽略了上面的警告提示:

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

也是就是:警告:我们建议使用更高版本的 Android Gradle 插件以适配 compileSdk = 35。当前使用的 Android Gradle 插件(7.1.2)最高仅支持到 compileSdk = 32。

也就是Android Gradle 插件最高支持32,而这里设置了35。按照这个提示,查看Project Settings > Player > Other Settings > Identification 的Target API Level其默认值为Automatic (highest installed)(自动按已安装的最高版本):
在这里插入图片描述

手动设置一个版本即可:
在这里插入图片描述

这里我的Gradle 版本其实是7.2:
在这里插入图片描述

所以设置为API level 33 也能正常打包:
在这里插入图片描述

以上为个人解决该问题的过程,可能前两步对此无帮助。

这个错误通常是由于 Gradle 构建过程中出现了错误导致的。以下是一些可能的解决方法: 1. 清理 Gradle 缓存 在 Unity 中打开 Build Settings 窗口,点击 Player Settings 按钮,进入 Player Settings 界面。在 Android Settings 标签页中,找到 Other Settings 部分,将 "Custom Gradle Template" 选项取消勾选。然后在 Build Settings 窗口中选择 Android 平台,点击 "Export" 按钮,导出 Android 项目。然后在 Android Studio 中打开导出的项目,选择 "File" -> "Invalidate Caches / Restart...",清理 Gradle 缓存。然后重新构建 APK。 2. 升级 Gradle 版本 在 Unity 中打开 Build Settings 窗口,选择 Android 平台,点击 "Player Settings" 按钮,进入 Player Settings 界面。在 Android Settings 标签页中,找到 "Publishing Settings" 部分,在 "Gradle Version" 中选择最新版本的 Gradle。然后重新构建 APK。 3. 检查依赖项 在 Unity 中打开 Build Settings 窗口,选择 Android 平台,点击 "Player Settings" 按钮,进入 Player Settings 界面。在 Android Settings 标签页中,找到 "Publishing Settings" 部分,检查 "Custom Gradle Template" 是否包含正确的依赖项。如果缺少某些依赖项,可以手动添加到 Gradle 文件中。然后重新构建 APK。 4. 检查 Android SDK 和 JDK 版本 在 Unity 中打开 Build Settings 窗口,选择 Android 平台,点击 "Player Settings" 按钮,进入 Player Settings 界面。在 Android Settings 标签页中,找到 "Publishing Settings" 部分,检查 "Minimum API Level" 和 "Target API Level" 是否正确。然后检查是否安装了正确版本的 Android SDK 和 JDK。如果没有安装,可以手动下载并安装。然后重新构建 APK。 5. 检查 AndroidManifest.xml 文件 在 Android 项目中,检查 AndroidManifest.xml 文件是否包含正确的权限和组件声明。如果缺少某些声明,可以手动添加到 AndroidManifest.xml 文件中。然后重新构建 APK。 希望以上方法能够帮到您解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十幺卜入

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值