在使用 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

posted @ 2023-10-26 13:35  不是豆豆  阅读(3730)  评论(0编辑  收藏  举报
友情链接:迷途