Cocos Android打包教程1:环境介绍

154 阅读4分钟

如果你一直在使用Android Studio,从来没有使用过命令行打包,可能会非常困惑:应该如何使用命令行打包Android 项目

为了方便理解,我先介绍下命令行打包的流程:

  1. 使用Creator构建出来Android工程,要完成这一步,就需要配置好JAVA,SDK,NDK

  2. 在Android工程目录下进入命令行,执行gradlew build,如果一切顺利,就会产生apk

真的就是以上2个步骤,你不需要通过AndroidStudio就能打包出apk,而大部分问题,其实都集中在第二步。

这篇文章暂且不展开讲解第二步,先解释下打包Android需要的环境及其作用,了解这些会让你更加清楚的定位问题所在。

这些是基础知识,现如今我看来却非常重要,但是我刚入行的时候,却从来没有形成体系,导致对各种名词术语一知半解,导致出现问题全靠猜。

JAVA

Android是基于JAVA开发,没有JAVA环境,Android代码就无法编译。

SDK

因为长时间都习惯了缩写,导致根本不知道SDK到底是什么,全拼是:Software Development Kit。

因为Android是一个基于JAVA开的框架,我们要基于Android开发APP,就要安装他的软件开发包。

换而言之,Cocos Engine也是一个框架,我们要基于Cocos开发游戏,肯定要安装好Cocos Engine,一样的道理。

NDK

Native Development Kit,是 Android的一个工具开发包,用来快速开发C、 C++的动态库,并自动将so和应用一起打包成 APK。

使用Cocos开发的游戏能够跨平台,其核心就是C++能够跨平台编译,要想让C++编写的逻辑运行在Android上,这里面就需要NDK进行编译链接C++部分的代码。

题外话,不使用NDK行吗?

答案是可以,但是Cocos的所有实现就必须使用JAVA,而在iOS上就必须采用Object/Swift实现,相当于在不同的平台上使用不同的平台语言重新实现一遍,这样也能使用跨平台,但是很明显,这是一个非常糟糕的跨平台解决方案。

Gradle

是一个构建工具,类似CMake、Make、Webpack等。

因为要生成一个程序有编译、链接、打包等步骤,如果没有构建工具辅助,打包就非常繁琐,构建工具主要也是为了简化并降低打包的难度。

一般来说,所有的构建工具都是基于配置驱动的,你可能认为是json之类的配置,这么理解只是入门级别,像Android这种庞大的系统,如果仅仅靠json配置,基本上是满足不了灵活多变的构建需求的,因为json仅仅是单纯的静态数据,无法动态组织打包逻辑。

所以成熟的构建工具都会一门语言,让用户组织构建逻辑,这样子就可以让构建过程更加灵活自由,比如以上提到的几个构建工具,都是有自己的构建语言的,Webpack是采用现有的JS编程语言,而CMake/Gradle采用的是自己的语言。

至于为啥有的构建工具要单独再造一门语言,更多的是自己构建工具的一个定位问题,导致现有的计算机语言无法满足自己的需求,比如CMake的目标是跨平台,如果采用的计算机语言不能跨平台就是一个问题,其次是有些构建工具希望采用的语言简单轻量易学习,现有的成熟计算机语言虽然强大,但是对于构建工具来说过于庞大复杂,还有对于性能的考虑。(扯远了,多了解下也不是坏处)

知道背景后,我们再看最早期Android构建采用的是ApacheAnt,这下是不是知道Ant的角色定位了,但是为啥后来又换成Gradle呢?

早期Android采用ApacheAnt是因为当时ApacheAnt是一个成熟的构建工具,如果换做是你,也会考虑一下使用Ant,但是随着Android的发展,Ant已经满足不了更加复杂的构建需求,所以后续就采用了Gradle。

下一篇,详细介绍使用Gradle打包Android的细节。