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
