【转】使用cocos2d-console工具转换脚本为字节码
从Cocos2D-X v2.1.4版本开始,增加了Cocos2D-console命令行工具,该工具的其中一个功能是:把.js文件转换为.jsc文件,该文件是字节码格式,可以提高代码的安全性。
使用这个工具的方式很简单。以引擎自带的TestJavaScript项目为例:
首先我们cd到Cocos2D-console的目录
|
1
|
goldliontekiMacBook-Pro:~ goldlion$ cd /Users/goldlion/Documents/developer/cocos2d-x-3.0beta/tools/cocos2d-console/console |
然后可以看到里面有很多.py脚本
cocos2d_jscompile.py
cocos2d_version.py
cocos2d.py
cocos2d_new.py
其中cocos2d.py是我们要使用的主脚本文件。使用命令./cocos2d.py jscompile --help查看编译字节码的命令格式
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
goldliontekiMacBook-Pro:console goldlion$ ./cocos2d.py jscompile --helpUsage: cocos2d.py jscompile -s src_dir -d dst_dir [-c -o COMPRESSED_FILENAME -j COMPILER_CONFIG]Options: -h, --help show this help message and exit -s SRC_DIR_ARR, --src=SRC_DIR_ARR source directory of js files needed to be compiled, supports mutiple source directory -d DST_DIR, --dst=DST_DIR destination directory of js bytecode files to be stored -c, --use_closure_compiler Whether to use closure compiler to compress all js files into just a big file -o COMPRESSED_FILENAME, --output_compressed_filename=COMPRESSED_FILENAME Only available when '-c' option was True -j COMPILER_CONFIG, --compiler_config=COMPILER_CONFIG The configuration for closure compiler by using JSON, please refer to compiler_config_sample.json |
参数非常简单,一个输入目录,一个输出目录,后面加一组可选参数。该工具在遍历.js文件时支持文件夹递归访问,在输出.jsc文件时支持按照源文件夹的结构全部新建文件夹。易用性还是不错的。
对TestJavaScript其中一个文件夹ExtensionsTest使用Cocos2D-console工具进行加密来测试。输出路径设置为桌面
|
1
|
./cocos2d.py jscompile -s /Users/goldlion/Documents/developer/cocos2d-x-3.0beta/samples/Javascript/Shared/tests/ExtensionsTest -d /Users/goldlion/Desktop/ExtensionsTest |
打开输出的ExtensionsTest文件夹看到,所有.js都变成了.jsc,并且体积都大幅度减小。
下面说一下可选参数,可选参数的意思是使用closure compiler工具压缩代码为一个文件。
COMPRESSED_FILENAME是压缩后的文件名,最好使用xxx.js,因为工具会自动再后面加个c
COMPILER_CONFIG是压缩时调用的配置文件,需要根据项目需求自己填写,在bin目录下有一个做好的缺省例子可以使用,compiler_config_sample.json
我并不建议使用这种做法,因为:
1.如果将所有脚本都压缩为一个文件,那么每次更新都要重新下载这个文件,对于一些对省流量要求很高的公司不适合。
2.压缩的目的是隐藏文件目录结构,但是这个工具只压缩了脚本部分,对于图片,动画,数据,音频视频等等都是不考虑的。而一般开发的方式需要把所有资源都压缩成一个文件,然后在游戏在线更新时只下载更新档,通过程序将更新档中的文件打入到大文件中。注意这涉及到二进制级别的比较删除以及合并,需要做非常仔细的设计
=====================================
把自己的js脚本按照上面说法混淆之后,会遇到类似"this._super is not a function "的问题 ,借鉴这篇帖子:http://www.cocos2d-x.org/forums/20/topics/40090
就是要把cocos框架目录--->scripting--->javascript--->bindings--->js里的js文件也都jsc一下并且放到自己js脚本的根目录中
【转】使用cocos2d-console工具转换脚本为字节码的更多相关文章
- 手把手教你如何使用Cocos2d Console 进行html5项目发布
手把手教你如何使用Cocos2d Console 进行html5项目发布 1.首先需要先安装Cocos2d Console运行需要的工具. 详情参见 这篇文章 http://www.cocoach ...
- Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap
Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap 1.1. 虚拟机的构成 java虚拟机--处理器.堆栈.寄存器.指令系统. 1 1.2. 虚拟机执行过程 ...
- Python的top-level脚本为什么在磁盘上没有对应的字节码?
在Python中,如果你使用python script.py这样的方式运行Python脚本,那么script.py就被称为top-level脚本.对于Python来说,这个脚本的字节码是不会写入到磁盘 ...
- JavaScript 图片与Base64数据互相转换脚本
JavaScript 图片与Base64数据互相转换脚本 注: 转换过程中注意跨域问题.测试页是否支持相关标签创建.dom结构. 方法一:非Html 5使用FileReader 使用XMLHttpRe ...
- PHP Console工具使用分享
PHP Console工具使用分享 http://www.open-open.com/lib/view/open1416193590414.html 您的评价: 不错 收藏该经验 ...
- Pytorch | BERT模型实现,提供转换脚本【横扫NLP】
<谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读>,上周推送的这篇文章,全面解读基于TensorFlow实现的BERT代码.现在,PyTorch用户的福利来了:一个名为Huggi ...
- URL转换成二维码
转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6685804.html 二维码已经成为我们日常生活中的一个不可获取的产物,火车票上,景区门票,超市付款等等都 ...
- javassist:字节码编辑器工具
简介: javassist是一款可以在运行时生成字节码的工具,可以通过它来构造一个新的class对象.method对象,这个class是运行时生成的.可以通过简短的几行代码就可以生成一个新的class ...
- curl命令转换成php源码
curl命令转换成php源码 获取状态: curl -X GET -H "Content-Type:application/json" -H "Authorization ...
随机推荐
- HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
答案:在将WebDataHelper升级到VS2013是出现的这个错误,这个程序使用了URL重写的技术, 解决方法是:需要将重写的配置,迁移到system.webServer配置节中
- 使用VideoView播放视频
为了在Android应用中播放视频,Android提供了VideoView组件,它就是一个位于android.widget包下的组件,它的作用与ImageView类似,只是ImageView用于显示图 ...
- GFS: Evolution on Fast-forward
GFS: Evolution on Fast-forward by Marshall Kirk McKusick, Sean Quinlan | August 7, 2009 A discussion ...
- KMP算法中next函数的理解
首先要感谢http://blog.csdn.net/v_july_v/article/details/7041827以及http://blog.chinaunix.net/uid-27164517-i ...
- hdu 1035 (usage of sentinel, proper utilization of switch and goto to make code neat) 分类: hdoj 2015-06-16 12:33 28人阅读 评论(0) 收藏
as Scott Meyers said in his book Effective STL, "My advice on choosing among the sorting algori ...
- Openstack Swift中间件编写
关于openstack swift的资料可以看这里,这里还有这里. 准备环境 从零开始接触的同学可以先从swift的all in one部署开始学习,在本机搭建好swift环境就可以进行简单的测试了. ...
- C语言与MATLAB接口 编程与实例 李传军编着
罗列一下以前自己学习C语言与MATLAB混编的笔记,顺便复习一遍. <C语言与MATLAB接口 编程与实例 李传军编着>(未看完,目前看到P106) 目录P4-8 ************ ...
- Volatile vs VolatileRead/Write?
You should never use Thread.VolatileRead/Write(). It was a design mistake in .NET 1.1, it uses a ful ...
- vi notes
x = wqqq!, quit without save. movej,h,k,l^ or 0: start of line$: end of line:0, start of file:$, end ...
- ImageLoder配置以及使用(个人阅读使用)
http://blog.csdn.net/vipzjyno1/article/details/23206387 在gradle添加: compile 'com.nostra13.universalim ...