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

发布于:2025-05-13 ⋅ 阅读:(9) ⋅ 点赞:(0)

问题

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 也能正常打包:
在这里插入图片描述

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


网站公告

今日签到

点亮在社区的每一天
去签到