Unity2019使用Gradle打包Apk的问题

Unity2019提供了全套的Android打包工具,使用UnityHub安装时把这些工具全选就行了,但是gradle插件是需要在打包时自动下载的,因此打包时可能会因为各种原因出现错误。

关于打包时Gradle出错的问题

首先最主要的问题就是gradle联网下载插件是连接的谷歌,解决方案是科学上网,如果没有科学上网工具的话也可以使用阿里提供的仓库来下载,这需要修改一下gradle的配置文件,配置文件的目录为:Unitys\2019.2.0f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates(Unitys是我自己定义的目录,UnityHub在安装时会在该文件夹下产生对应的版本目录),GradleTemplates目录下的文件在不同Unity版本可能会有区别,修改方法:将GradleTemplates下所有的文件有repositories的语句下添加一下代码

maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}

修改之后的文件格式大体如下

    repositories {**ARTIFACTORYREPOSITORY**
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        google()
        jcenter()
    }

其中 maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/’} 语句必须写在 google()前面,并且需要需要修改所有有repositories的地方。

使用已经下载好的Gradle

上面的解决办法网上比较普遍,但是笔者的公司电脑比较特殊,使用上面的方法都没有成功,打包apk仍然失败,控制台报错提示 > Could not resolve all artifacts for configuration ‘:classpath’. 家里的电脑反而成功了,可能是因为使用过AndroidStudio的原因,公司电脑里已经存在Gradle文件
gradle插件下载时会自送生成C:\Users\Administrator\.gradle目录,下载好的gradle插件会存储在C:\Users\Administrator\.gradle\wrapper\dists路径下:
Unity2019使用Gradle打包Apk的问题_第1张图片
可以看到我的电脑其实是已经下载好了一个gradle插件了,版本是4.10.1(当时是根据AndroidStudio使用离线gradle的方法下载的,然而笔者对于AndroidStudio的学习还没深入),该版本是gradle插件的版本,gradle版本和gradle插件版本的对应关系如下
Unity2019使用Gradle打包Apk的问题_第2张图片如果把 .gradle 这个文件夹删除,Unity2019在打包安卓的时候也会自动的生成该文件夹,因此Unity的gradle文件应该和AndroidStudio使用的gradle文件是一致的,根据上面的版本对应关系,Unity可以指定使用3.3.0的gradle版本,就能够使用这个已经下载好的gradle插件,因此笔者对D:\Unitys\2019.2.0f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates 路径下的文件做了如下更改

    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
    }

该段代码决定了使用哪个gradle版本构建apk,将GradleTemplates 目录下所有涉及到gradle版本的代码更改成了3.3.0版本,保存后再次打包就成功了。

由于笔者未从事过Android开发,在使用Unity开发时一直使用 internal 的构建模式,而Unity2019版本的构建时基于gradle,对于这方面还不太了解,如有错误请看官指正,不过Unity开发还是经常涉及到安卓和ios的技术,仍需继续学习。

你可能感兴趣的:(Android,Unity引擎)