如何在编译时自动将js编译为jsc
来源:互联网 发布:现货交易app软件排名 编辑:程序博客网 时间:2024/05/21 04:19
本文来自:http://www.welefen.com/js-to-jsc-on-cocos2d-html5-jsb-mode.html ,经笔者亲自在项目中试验,在cocos2dx 2.1.4下面,成功加密运行,所以记录一笔,这个问题也困扰了笔者大半天的时间,希望可以帮助一部分开发者。
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脚本,所以我们可以在脚本里加入自动编译的功能,代码如下:
#定义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,添加如下的内容:
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源代码了。
注:笔者在项目中按照此配置在cocos2dx 2.1.4的版本中添加, 发现程序并不能按照实际的进行, 由于2.1.4的版本是先查找js文件再查找jsc文件,所以一直会再某一个地方崩溃(如果单独测试main.js文件,则一切正常), 具体原因,由于笔者能力有限,未能追查出来; 在这里,笔者提供一个解决方案, 就是修改cocos2dx 的源码, 使其先查找jsc文件,再查找js文件,则程序就能正常运行, 至此笔者的项目正常运行, 得以发布.
- 如何在编译时自动将js编译为jsc
- Cocos2D-html5 发布游戏js编译为jsc
- js 加密 为jsc
- winform程序在编译时,如何自动将文件生成到debug目录下?
- 编译facebook/android-jsc时NDK找不到问题解决
- 如何将py文件编译为pyc
- egret如何编译ts为js
- cocos2d js 编译jsc 报错this._super is not a function
- 如何在编译过后自动签名apk
- 如何在webstorm上自动编译es6
- Scala.js:将Scala编译为JavaScript的编译器
- 如何将任意文件编译为.o文件?
- 【Cocos2d-js3.0Alpha2加密js文件】CH5混淆打包及JSB编译字节码jsc文件
- 如何将动态编译改成静态编译?
- 如何将ffmpeg在windows编译和使用
- 如何将ffmpeg在windows编译和使用
- cocos2d-x 将js代码混淆成jsc
- Cocos2d 3.X将JS转成JSC文件
- LwIP 协议栈源码详解 ——TCP/IP 协议的实现(五:pbuf 释放)
- C# 随机产生一定长度数组并对其排序
- 二叉树的非递归遍历
- 连接雅虎财经API获取股票信息
- 非阻塞connect
- 如何在编译时自动将js编译为jsc
- VC注册表文件关联,图标关联
- Linux源码安装mysql 5.6.12(cmake编译)
- 使用 Alchemy 技术编译 C 语言程序为 Flex 可调用的 SWC
- Linux系统下,CPU信息详解(cpuinfo,多核,多线程)
- 进程与线程的一个简单解释
- TortoiseSVN中分支和合并实践
- ASP.NET大文件上传设置maxRequestLength无效的情况
- 大话设计模式--原型模式 Prototype -- C++实现