(若使用unity2019.3.x以后的版本,可直接看最后的附录)
关键词
安卓 android unity 2019 gradle 失败
问题背景
unity2019自带了构建安卓包的一切工具,可谓是非常方便(估计国外是这样),但这个构建过程(即gradle)需要临时从国外网上抓取一些资源,当这些资源抓不来的时候,整个构建过程会卡很长时间并以失败告终(错误信息会告诉你哪些资源没搞到)
解决方案 A
由于需要的资源国内是有镜像的,所以解决这个问题只需要将国内镜像添加到构建过程中即可。
具体实施
将2019自带的安卓构建工具安装好后,可以找到类似如下目录:
Unity/Hub/Editor/2019.2.0b1/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates
主要是找到GradleTemplates这个目录(里面的文件就是Unity采用Gradle构建安卓包时采用的模版文件,这些文件中表达了资源从哪里获取)。
由于2019.1到2019.3在这个目录中组织文件到方式有些差异,所以这里没有统一的改法,但只需要遵循一条原则即可:
只要这个目录中的文件中含有repositories,就替换这个区块中的google()及jcenter()为
maven{ url 'https://maven.aliyun.com/repository/google'}
,maven{ url 'https://maven.aliyun.com/repository/jcenter'}
这就是国内镜像,构建时,会优先从这里获取资源。
大概像下面的样子:
repositories {**ARTIFACTORYREPOSITORY**
maven{ url 'https://maven.aliyun.com/repository/google'}
//google()
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
//jcenter()
}
注意:一定把那个目录中所有文件相关的地方都插上那个镜像。
附加:阿里云镜像站https://developer.aliyun.com/mirror/
解决方案 B
具体实施
- 勾选ProjtectSetting->Player->Publishing Settings->Build->Custom Template
- 根据提示会得到一个gradle配置文件位于Assets/Plugins/Android/mainTemplate.gradle,将此文件中的repositories都按解决方案A修改即可。
附录 2019.3.x修改方案
找到PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/baseProjectTemplate.gradle,修改其内容如下:
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
allprojects {
buildscript {
repositories {**ARTIFACTORYREPOSITORY**
maven{ url 'https://maven.aliyun.com/repository/google'}
//google()
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
//jcenter()
}
dependencies {
// If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity
// See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html
// See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
// To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle version
classpath 'com.android.tools.build:gradle:3.4.0'
**BUILD_SCRIPT_DEPS**
}
}
repositories {**ARTIFACTORYREPOSITORY**
maven{ url 'https://maven.aliyun.com/repository/google'}
//google()
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
//jcenter()
flatDir {
dirs "${project(':unityLibrary').projectDir}/libs"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}