jsb安装包模块缩减说明--Android&IOS平台

jsb安装包模块缩减说明–Android&IOS平台

本文的重点在于使用Cocos2d-JS引擎,使用jsb的方式打包到本地之后,如何缩减安装包的大小。需要注意的是,只有即将到来的Cocos2d-JS 3.2版本或3.1版本的基础上更新了本文提供的pr,才能支持jsb安装包缩减哦。未来将会在Cocos2d-JS新版本中进行支持。下面我们进入正文。 已sample中的js-moonwarriors为例

1、不缩减的情况下编译JSMoonwarriors我们先进入sample中的js-moonwarriors,使用cocos compile -p android 编译出不缩减情况下的JSMoonwarriors,安装包大小约为10.5MB。如下图所示

2、开始缩减JSMoonwarriors打开 samples\js-moonwarriors\project\Classes 目录下的 AppDelegate.cpp文件,可以看到53行-65行代码都是jsb的注册代码。模块缩减就从这里入手

sc->addRegisterCallback(register_all_cocos2dx);
sc->addRegisterCallback(register_cocos2dx_js_core);
sc->addRegisterCallback(register_cocos2dx_js_extensions);
sc->addRegisterCallback(jsb_register_system);

// extension can be comment reduce the packagesc->addRegisterCallback(register_all_cocos2dx_extension);
sc->addRegisterCallback(register_all_cocos2dx_extension_manual);

// chipmunk can be comment reduce the packagesc->addRegisterCallback(jsb_register_chipmunk);
// opengl can be comment reduce the packagesc->addRegisterCallback(JSB_register_opengl);

// builder can be comment reduce the packagesc->addRegisterCallback(register_all_cocos2dx_builder);
sc->addRegisterCallback(register_CCBuilderReader);

// ui can be comment reduce the package, attension studio need ui modulesc->addRegisterCallback(register_all_cocos2dx_ui);
sc->addRegisterCallback(register_all_cocos2dx_ui_manual);

// studio can be comment reduce the package, sc->addRegisterCallback(register_all_cocos2dx_studio);
sc->addRegisterCallback(register_all_cocos2dx_studio_manual);

// spine can be comment reduce the packagesc->addRegisterCallback(register_all_cocos2dx_spine);
sc->addRegisterCallback(register_all_cocos2dx_spine_manual);

// XmlHttpRequest can be comment reduce the packagesc->addRegisterCallback(MinXmlHttpRequest::_js_register);
// websocket can be comment reduce the packagesc->addRegisterCallback(register_jsb_websocket);
// sokcet io can be comment reduce the packagesc->addRegisterCallback(register_jsb_socketio);

以上代码和注释是采用新模块方案的时候才有,大家看以上的代码的时候会发现,可以被注释的代码模块都有注释, 而不是同一个模块的都用空行隔开了。同样以js-moonwarriors为例。这个游戏中只是用了核心模块。所以除核心代码外可以全部注释掉。哈哈

sc->addRegisterCallback(register_all_cocos2dx);
sc->addRegisterCallback(register_cocos2dx_js_core);
sc->addRegisterCallback(register_cocos2dx_js_extensions);
sc->addRegisterCallback(jsb_register_system);

// extension can be comment reduce the package//sc->addRegisterCallback(register_all_cocos2dx_extension);
//sc->addRegisterCallback(register_all_cocos2dx_extension_manual);

// chipmunk can be comment reduce the package//sc->addRegisterCallback(jsb_register_chipmunk);
// opengl can be comment reduce the package//sc->addRegisterCallback(JSB_register_opengl);

// builder can be comment reduce the package//sc->addRegisterCallback(register_all_cocos2dx_builder);
//sc->addRegisterCallback(register_CCBuilderReader);

// ui can be comment reduce the package, attension studio need ui module//sc->addRegisterCallback(register_all_cocos2dx_ui);
//sc->addRegisterCallback(register_all_cocos2dx_ui_manual);

// studio can be comment reduce the package, //sc->addRegisterCallback(register_all_cocos2dx_studio);
//sc->addRegisterCallback(register_all_cocos2dx_studio_manual);

// spine can be comment reduce the package//sc->addRegisterCallback(register_all_cocos2dx_spine);
//sc->addRegisterCallback(register_all_cocos2dx_spine_manual);

// XmlHttpRequest can be comment reduce the package//sc->addRegisterCallback(MinXmlHttpRequest::_js_register);
// websocket can be comment reduce the package//sc->addRegisterCallback(register_jsb_websocket);
// sokcet io can be comment reduce the package//sc->addRegisterCallback(register_jsb_socketio);

然后再使用cocos compile -p android 编译出优化后的JSMoonwarriors,安装包大小约为只有8.14MB。缩小了2.36MB,如下图所示

如果使用 cocos compile -p android -m release 命令编译出来的发布版本更是将安装包缩小到了7.02MB

而新建的工程helloworld,使用cocos compile -p android -m release 编译出来的安装包原大小 6.08MB

经过缩减后,安装包只有4.42MB

而在ios上也是同样的情况哦,使用cocos compile -p ios -m release 编译出原来的JSMoonwarriors有11.6MB

而缩减后的的JSMoonwarriors只有8.5MB

另外ios中使用xcode编译,也是跟上面一样的方法,注释代码直接编译即可达到缩减效果。
大家可以开始尝试了哦。 有问题可以跟帖留言,我会一 一解答的哦。

附:
pr地址:https://github.com/cocos2d/cocos2d-js/pull/1095/files
关于Cocos2d-JS 3.2的版本, 我们将会再下个月发布,敬请期待

大家如果觉得。改动列表太多的话,可以直接到github地址下载最新的代码。覆盖进3.1版本即可使用
github地址:https://github.com/cocos2d/cocos2d-js

非常好!喵哈哈

竟然没人顶 我来占个首页

NB 期待已久

终于不用写个hello world就7mb多了,这个必须顶啊,期待3.2版本!!!

1赞

各位在3.1的版本上做过更新吗?能成功吗?

想要使用jsb减包的话,有一个更简单的方法。直接到github下下载一个cocos2d-js,覆盖进3.1版本就可以了。

3.2版本能不能绑定一些box2d,不喜欢chipmunk

这个好,一些运营商,一看到小游戏的包超过5M,掉头就跑了。。。命苦啊。。。

我的游戏减少了5M,可还是很大

很简单的应用,资源加在一起不到3M,提交appstore 23.5M
使用cocos2d(OC)不到10M

不过帮我减少了一些,还是很不错的
期待更N的方法

不错,希望能更小:2::2:

我用的是3.3版本的,这样优化也会有效果吗?不知道是什么原理导致apk包变小的啊?求版主解答~~~

不明显,发布到app store不是只看ipa包大小的

3.8.1版本的js, 缩减前为6.4M, 缩减后为5.2M, 不知大家的情况如何呢?

为什么我把模块注释了包体大小也没减少