微信号:CocosEngine

介绍:Cocos引擎官方账号,第一时间为您送上引擎动态、精品教程、达人专访等干货,还会定期举办有奖活动喔!

Cocos Creator v1.7 JSB 2.0 支持讨论帖

2017-10-12 00:00 panda

背景


大家应该已经注意到了,我们在最近热议的Cocos Creator v1.7这个版本中更新了 JSB 2.0 的底层实现。得益于此,v1.7 在 iOS 平台的性能将得到大幅度优化,同时,安卓平台的稳定性也更好。具体的性能表现可以看看节前官微曾经发布的 colinsusie 大大的测试反馈帖: 《Cocos Creator v1.7剧透:性能提升大大超出期望!》


JSB2.0


专门开文是希望能给大家普及一下 JSB 2.0 的一些背景知识,同时鼓励发布原生版本的用户都去尝试一下 v1.7 内测版本,如果发现任何问题,文末或者社区都可以跟我们反馈。


首先,Cocos Creator 原生平台的基础架构和 Cocos2d-x 一脉相承,虽然使用了不同的仓库,但是框架上是没变化的:在 Cocos2d-x C++ 引擎的基础上,通过 JS Virtual Machine 来支持 JS 脚本的执行,同时通过 JSB 绑定技术暴露 C++ API 到 JS 层使得 JS 代码可以调用引擎 API。


在 v1.6 以及之前版本中,Cocos Creator 一直使用 Spidermonkey 作为内置的 JS VM,并且一直直接使用 Spidermonkey 的 API 来实现绑定层代码。这点在 v1.7 中发生了重大的改变,我们将内置的 JS VM 切换为 V8 以及 JavaScriptCore(JSC),根据发布平台自动切换,并且抽象统一了绑定层的 API,让不同的 JS VM 可以无缝切换。

(如果有人不清楚这三者的区别,Spidermonkey 是 Firefox 中的 JS VM,V8 是 Chrome 的,JSC 是 Safari 的)


Cocos Creator v1.7 JSB 2.0 架构图


如图中所示,v1.7 中,发布 Windows, Android 平台的时候我们将自动使用 V8 作为底层 JS 引擎,发布 iOS Mac OS X 的时候将使用 JSC。另外,图中的 Abstract Binding APIs 就是我们抽象的绑定层 API,所有的绑定代码都基于这套 API 来实现,与实际用哪种 JS 引擎没有关系。


优势


在这样的重构之后,我们获得了很多前所未有的优势:

  1. JSC 是苹果的亲儿子,内部支持 JIT,性能提升立竿见影

  2. JSC 是 iOS 提供的系统库,游戏包中将不再包含 JS VM,缩小包体

  3. V8 以及 JSC 的垃圾回收机制都比 Spidermonkey 更稳定高效

  4. 抽象出统一的绑定层 API 之后,不仅抹平了不同 JS 引擎的差异,而且升级 JS 引擎的时候不会再影响到用户代码,用户可以无负担享受 JS 引擎不停升级带来的性能优化(V8, JSC 等 JS 引擎的迭代更新非常快)


总的来说,这种架构将是未来很长一段时间內 Creator 原生引擎的根基,支持我们快速得迭代引擎功能,稳步提升引擎质量。


绑定层API文档



测试注意事项


我建议原生项目都尝试升级到 v1.7,当然,目前仍然是内测版本,如果测试过程中遇到任何问题,我们都会尽全力解决。


需要注意的是,如果你之前的项目有做过原生引擎定制,或者自己生成过绑定代码,需要仔细阅读上面的绑定层 API 文档,使用工具重新生成绑定,或者重写手动绑定代码。


遇到任何问题,请文末回复或者戳「阅读原文」进社区帖子留言,我和 dumganhar 都会尽力处理。


最后,愿意帮助我们测试的,麻烦移步社区内测版发布帖下载,感激不尽!



戳原文,发表感受!
 
COCOS 更多文章 Cocos Creator几大重要组件教学视频来啦! Cocos2d-x v3.16正式版发布! 「深圳站」Cocos开发者沙龙,报名今火热开启! 十一长假,C姐告诉你,去哪里人少还便宜? 社区人工智能下线,未来八天将开启人工智障通道!
猜您喜欢 有赞支付微服务实践【7.29 热门分享回顾】 【视频+音频】测试的最佳切入时机你知道吗? 【云端起舞】Oracle技术嘉年华主会场报道 头条丨人工智能研究竞争激烈 中美领跑日本落后 LTR(Learning To Rank)在个性化电商搜索领域的应用