cocos2d-html5的jsb模式下如何在编译时自动将js编译为jsc
cocos2d-html5是一个用JS来开发游戏的框架,通过javascript Binding的方式可以将游戏编译到手机上。这对前端开发人员来说非常方便,开发效率也比使用c++开发要快的多。
jsb模式下是通过打包spidermonkey来运行JS代码的。由于JS是一个解释型的语言,所以是把js当作assets直接拷贝进去的。带来的问题就是将apk包解压后就可以直接拿到js的源代码。
幸好官方出了一个cocos2d-console的工具,通过该工具可以将js编译为字节码。该工具在官方发布包的tools目录下。
那如何在发布的时候自动调用该工具,将js编译为jsc呢?
android
由于android下先要执行pro.android/build_native.sh脚本,所以我们可以在脚本里加入自动编译的功能,代码如下:
1
2
3
4
5
6
7
|
#定义console的目录 COCOS2D_CONSOLE=$COCOS2DX_ROOT/tools/cocos2d-console/console/ python $COCOS2D_CONSOLE/cocos2d.py jscompile -s assets/script/ -d assets/script/; cd assets/script; #删除js源文件 find . -type f -name "*.js" | xargs rm -rf; cd ../../; |
以上代码要放在调用NDK编译之前。
ios
由于ios下编译没有对应的build_native.sh脚本,所以就没法使用类似的方式了。幸好xcode下编译时可以添加自定义的run script
选择 项目 -> TARGETS -> Build Phases -> Add Build Phases -> Add Run Script,添加如下的内容:
1
2
3
4
5
6
7
8
9
|
source ~/.bash_profile CONSOLE_PATH=$COCOS2DX_ROOT "/tools/cocos2d-console/console/" ; TARGET_DIR=$BUILT_PRODUCTS_DIR "/" $PRODUCT_NAME ".app/" ; JS_DIR=$TARGET_DIR "/script/" ; /usr/bin/python $CONSOLE_PATH/cocos2d.py jscompile -s $JS_DIR -d $JS_DIR; find $JS_DIR -type f -name "*.js" | xargs rm -rf; |
这样在编译时就会自动调用该脚本。(需要在.bash_profile里定义cocos2dx的根目录,并且变量名为COCOS2DX_ROOT)
将js编译为字节码发布,就不用担心别人可以拿到js源代码了。