剖析Cocos Creator的构成
强大的跨平台Cocos Creator
使用过cocos creator的同学肯定知道,其是非常强大的跨平台的开源引擎,但是其到底是怎么做到跨平台,支持IOS、Android、Wed等多平台呢?今天我们就将通过剖析cocos creator的构成,了解其各部分对应的功能,从而更好的理解其是怎么做到跨平台的。
本文是基于2.4.x版本讨论,对应3.x版本,设计思路没有改,但是对应组成的命名有改动。
creator的组成
js引擎
直接从creator开始接触cocos的同学,可能会认为其是强大的H5游戏引擎,用的TS(JS)语言,使用chrome于web环境进行绝大部分的开发、调试。
这个认知是对的,我们称这部分的为js引擎,其能够独自完成web的开发,至于js引擎内部的组成,今天这个就不再阐述,本篇文章,大家只要认知到这个维度即可。
cocos2dx引擎
早期接触过cocos的同学肯定对cocos2dx非常熟悉,那还是一个手游兴旺的年代,cocos更多的设计都是基于移动端(IOS、Android)平台,其核心底层代码都是基于c++实现,这部分代码因为移动端的兼容性、安全性、性能等各方面考虑,会被编译成对应的静态库,是不能够用脚本语言来实现的,为了适配移动端,这部分代码在creator中仍然需要保留,我们称这部分为cocos2d-x引擎。
Adapter
出于各种原因,cocos后面把更多的重心放在web端,希望我们的游戏开发者,用TS这个脚本语言,更专注于游戏逻辑本身的开发,而不是各种平台都要写大量的适配逻辑。
出于这个设计,那creator引擎必须给使用者提供统一的基于Web环境的API,其内部根据实际运行的平台,在引擎层,对API进行适配,而这个适配模块,我们称之为Adapter。
Adapter又细分为2块,一个是jsb-engine.js,负责js引擎相关的适配,另一个是jsb-builtin.js,负责对cocos2d-x引擎的适配。
以上的总结是基于个人理解,主要是把cocos2dx当成一个很纯粹的原生平台的适配模块,如果要细说,这个理解肯定是非常粗糙的,如果有兴趣的小伙伴,可以自行细化,这里也转述一下官方的描述:
解剖Android-apk
我们用creator-2.4.x版本,生成一个android空项目,对齐apk进行解压,观察其组成
一个10.6M大小的apk,会发现其重要的组成部分如上图红框所示,通过上文的描述,大家应该也能知道对对应的功能勒,这里简略一下对应关系:
文件名 | 组成模块 |
---|---|
libcocos2djs.so | cocos2dx引擎 |
cocos2d-jsb.js | js引擎 |
jsb-builtin.js | Adapter - cocos2dx适配层 |
jsb-engine.js | Adapter - js引擎适配层 |