Unity2019使用Gradle命令行(编译)出安卓包

摘要:
在我所经历的项目组中有这几种方法来生成APK直接在Unity生成APK,可以接入SDK使用Unity导出AndroidStudio工程手动生成APK使用Unity导出AndroidStudio工程命令行离线生成APK这里记录一下我在项目组使用AndroidStudio出包的笔记。

在我所经历的项目组中有这几种方法来生成APK

  1. 直接在Unity生成APK,可以接入SDK

  2. 使用Unity导出Android Studio工程手动生成APK

  3. 使用Unity导出Android Studio工程命令行离线生成APK

这里记录一下我在项目组使用Android Studio出包的笔记。

使用Unity导出Android Studio工程前建议查看我之前的文章《Unity2019及Unity2020打包android的环境配置》,主要介绍替换或修改Unity安装目录下的baseProjectTemplate.gradle,把链接指向国内能加快速度。

说明:我把Android Studio简称为AS,AS生成APK使用gradle来构建。

Gradle简介

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。Gradle 构建脚本使用的是 Groovy 或 Kotlin 的特定领域语言来编写的,而不是传统的XML。

当前官方支持的语言为Java、Groovy、Scala、C++、Swift、JavaScript等以及Spring框架。

使用 Gradle 的优势

  1. 自动处理包相依关系 - 取自 Maven Repos 的概念
  2. 自动处理布署问题 - 取自 Ant 的概念
  3. 条件判断写法直觉 - 使用 Groovy 语言

过去 Java 开发者常用 Maven 和 Ant 等工具进行封装布署的自动化,或是两者兼用,不过这两个包彼此有优缺点,如果频繁改变相依包版本,使用 Ant 相当麻烦,如果琐碎工作很多,Maven 功能不足,而且两者都使用 XML 描述,相当不利于设计 if、switch 等判断式,即使写了可读性也不佳,而 Gradle 改良了过去 Maven、Ant 带给开发者的问题,至今也成为 Android Studio 内置的封装布署工具。

下载和配置

Gradle下载:https://gradle.org/releases/

配置方法:需要把gradle解压后的bin路径配置到环境变量的Path中,示例:D:gradle-7.1in

Unity导出AS工程文档:https://docs.unity3d.com/Manual/android-gradle-overview.html

我打包使用的软件环境:

准备知识:

命令行生成APK

在开始生成APK前需要做一些准备工作:在 AS 的 Terminal 中使用命令 gradlew --warning-mode all 可以打印出当前 gradle 存在的所有警告信息

检查签名信息

检查AndroidStuiod工程根目录下的build.gradle文件中的keystore,alias,密码配置是否正确:

    signingConfigs{
        release{
            keyAlias 'xxxxxx'
            keyPassword 'xxxxxx'
            storeFile file('D:/android_sdk/android.keystore')
            storePassword 'xxxxxx'
            v2SigningEnabled true
        }
		debug{
			keyAlias 'xxxxxx'
			keyPassword 'xxxxxx'
			storeFile file('D:/android_sdk/android.keystore')
			storePassword 'xxxxxx'
			v2SigningEnabled true
		}
    }

运行命令

在CMD中进入到AS工程的根目录,然后在命令行输入:gradle assembleRelease,就会生成APK。

可以生成release和debug两种APK,命令如下:

radle clean
gradle assembleRelease
  1. gradle clean 下载Gradle的一些依赖
  2. gradle assembleDebug 在buildOutput中生成debug签名的apk
  3. gradle assembleRelease 在buildOutput中生成Release签名的apk
  4. 当CMD中出现BUILD SUCCESSFUl恭喜你!Gradle打包成功啦!

如果在CMD中build失败,可以尝试在AS的命令行窗口中,输入:gradle assembleRelease

PS. 下面这个方法过时了,在android 的官网上已经去掉此部分了

​ 在AS2.3及更高版本且minsdkVersion>21时,AS会使用新版的dex打包,速度更快

​ 在命令行也调用新版本的打包:./gradlew -Pandroid.injected.build.api=26 assembleDevDebug

离线生成apk

在项目的根目录下有gradlew.bat文件,执行命令如下:

cd %~dp0
gradlew.bat clean
gradlew.bat assembleRelease --offline

遇到问题

build出错

首次出包时未安装好依赖,会报依赖找不到的问题,日志如下:

解决办法:通过Android Stuio打开项目,AS会自动下载依赖,下载完依赖之后,使用命令行还是报一样的错误,现在是使用AS手动操作来出包。

PS E:AndroidExport
esTestTtzg001_20210621v000
esTestTtzg001> gradle assembleRelease

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'resTestTtzg001'.
> Could not resolve all dependencies for configuration ':classpath'.
   > Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven2(http://maven.aliyun.com/nexus/content/repositories/jcenter)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.1/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details.

不支持在存储库中使用不安全的协议,没有显式的选择。

重定向到安全协议(如HTTPS)或允许不安全协议

allowInsecureProtocol:指定是否可以接受通过不安全的HTTP连接与存储库通信

两种办法解决:

  1. 在build.gradle 中添加这行配置即可
repositories {
	...
    maven {
	    url = uri("http://example.com")
        allowInsecureProtocol = true
        ...
    }
}
  1. 把上述出问题的阿里云链接可以把http改成https也一样可以访问。

AS无法访问host

Unknown host 'mirrors.opencas.cn'. You may need to adjust the proxy settings in Gradle

  1. 在AS中将Settings 下的Http Proxy 设置为 No Proxy 记得Apply

  2. 打开用户目录下的:C:Usersqing.gradlegradle.properties,删除里面配置的mirrors.opencas.cn

gradlew 和 gradle命令的区别

gradlew:gradle wrapper的简写,在Android studio的指定是在gradle/wrapper/gradle-wrapper.properties 中

gradle:对于系统gradle其存放在 ~/.gradle 下面

免责声明:文章转载自《Unity2019使用Gradle命令行(编译)出安卓包》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JavaScript 中的四舍五入Gvim —— win 7 下 vim 环境配置 及python开发常用设置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法

转 http://blog.sina.com.cn/s/blog_5b6cb9500101ai9h.html   此贴会持续更新,都是项目中常会遇到的问题,总结成贴,提醒自己和方便日后检查,也能帮到有需要的同学。 若各位有啥好BUG好异常好警告好崩溃可以分享的话,请多多指教。xuzhiping7#qq.com。   1.U3D经常莫名奇妙崩溃。   一般是...

【转】Linux 下从命令行打开pdf文件和html文件的命令

【转】 Linux 下从命令行打开pdf文件和html文件的命令 转自:http://hipercomer.blog.51cto.com/4415661/900926 如果你经常工作在终端下,某个时刻需要查看一些文档的时候(比如pdf或者html文档),是不是经常需要切换到文件系统中打开这些文件。事实上,你只需要敲一个命令就可以打开这个文件了,完全没有必要...

Android学习——隐式Activity

使用隐式的Intent 含蓄,不指名道姓,不会指明那个Activity必须被哪个Activity所启动。 一个Activity2如何被另一个Activity1所启动,关键取决于AndroidManifest.xml中对于Activity2定义的两个标签的信息,分别是action和category。 1 <activity android:name="...

unity优化一些总结 (长期更新)

unity优化一些总结 (长期更新) UI: 1:尽量不要使用动态文本 2: 使用更多画布 拆分画布 ​ 我开始使用3幅画布。一个用于我的背景图像,一个用于我的主要UI元素,另一个用于需要放置在其他所有元素顶部的元素。 我了解到,每当画布中的某些内容发生变化时,整个画布都会被重新评估并重新绘制。因此,除了最简单的UI之外,将UI分成多个画布的好处可能非常重...

完整版QQ(腾讯)开放平台操作指南(包含:qq登录能力获取等等)

之前我和大家提过,我要购买第三方的APP服务,就相当于有自己的APP了,现在APP对接上线之前需要做大量的准备工作,在此把步骤分享给大家,这样可以节省大家很多时间。 完整版QQ(腾讯)开放平台操作指南(包含:账号注册,移动应用申请,qq登录能力获取,上传更新安装包) 前期资料填写阶段需完成 一、进入应用宝开发者平台(地址:http://open.qq.co...

Unity Job System

  参考链接 :    http://esprog.hatenablog.com/entry/2018/05/19/150313   https://blogs.unity3d.com/2018/10/22/what-is-a-job-system/   Job系统作为一个多线程系统, 它因为跟ECS有天生的融合关系所以比较重要的样子, 我也按照使用类型的...