在使用 Unity 2022 打包安卓项目时,遇到 gradle 无法访问或下载超级慢最终超时出错的问题解决
一般表现是打包最后一步会等待超长时间,最后报错,错误信息:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'Gradle'. > Could not resolve all artifacts for configuration ':classpath'. > Could not download fastutil-8.4.0.jar (it.unimi.dsi:fastutil:8.4.0) > Could not get resource 'https://plugins.gradle.org/m2/it/unimi/dsi/fastutil/8.4.0/fastutil-8.4.0.jar'. > Premature end of Content-Length delimited message body (expected: 19,052,190; received: 6,553,552) * 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 Settings 左下角打开 Player Settings,在 Android 平台图标选项卡下找到 Publishing Settings 区域
勾选 Custom Gradle Settings Template
根据下面提示的路径打开 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/
如果想要全局配置镜像源地址,可以找到模板文件
# 参考路径,请根据自己实际安装的 Unity 版本和路径进行查找 C:\Program Files\Unity\Hub\Editor\2022.3.8f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates\settingsTemplate.gradle
修改该路径的文件内容即可。
另外如果通过这步以后,还提示以下错误:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 D:\Develop\Unity\HRVTest\Library\Bee\Android\Prj\Mono2x\Gradle\unityLibrary\src\main\java\com\unity\androidnotifications\UnityNotificationManager.java:164: 错误: 找不到符号 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) ^ 符号: 变量 TIRAMISU 位置: 类 VERSION_CODES D:\Develop\Unity\HRVTest\Library\Bee\Android\Prj\Mono2x\Gradle\unityLibrary\src\main\java\com\unity\androidnotifications\UnityNotificationManager.java:165: 错误: 找不到符号 permissionGranted = mContext.checkCallingOrSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED; ^ 符号: 变量 POST_NOTIFICATIONS 位置: 类 permission 注: D:\Develop\Unity\HRVTest\Library\Bee\Android\Prj\Mono2x\Gradle\unityLibrary\src\main\java\com\unity3d\player\UnityPlayerActivity.java使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 2 个错误 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':unityLibrary:compileReleaseJavaWithJavac'. > Compilation failed; see the compiler error output for details. * 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
TIRAMISU 是 Android 13 的代号 提拉米苏,应该是本地的 SDK 版本较低,请升级到相应的最新版本即可解决此错误
# 参考命令(也可使用管理员身份运行 Unity,在安卓平台的 Target API Level 配置中选择 33 进行 Build 时,会自动提示需要升级 SDK,以下命令就提取自其错误提示) # 进入 sdk 安装目录 cd "C:\Program Files\Unity\Hub\Editor\2022.3.8f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\cmdline-tools\6.0\bin" # 执行升级指令(Android 13 对应 sdk 版本为 33) sdkmanager.bat "platforms;android-33"
参考:https://blog.csdn.net/linxinfa/article/details/118553713
https://blog.csdn.net/qq_38217990/article/details/129257106
输了你,赢了世界又如何...