【转】使用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 --help

Usage: 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工具转换脚本为字节码,布布扣,bubuko.com

时间: 2024-08-27 04:37:41

【转】使用cocos2d-console工具转换脚本为字节码的相关文章

Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap

Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap 1.1. 虚拟机的构成 java虚拟机--处理器.堆栈.寄存器.指令系统. 1 1.2. 虚拟机执行过程1 1.3. 约有250个指令2 2. JVM指令助记符 分类2 2.1. 变量到操作数栈:2 2.2. 算数指令3 2.3. 移位指令3 2.4. 逻辑指令4 2.5. 流程跳转指令4 2.6. Oo指令4 2.7. 运算指令 5 3. 查看指令反编译工具6 3.1.   分析java语言特性的一

PHP Console工具使用分享

作者:zhanhailiang 日期:2014-10-28 PHP Console:https://github.com/barbushin/php-console#php-console-server-library 功能介绍 PHP Console工具和FirePHP功能相似,提供以下功能: Handle PHP errors, dump variables, execute PHP code remotely in Google Chrome Demo 首先在Chrome中安装PHP Co

linux程序包安装、管理工具rpm、yum和源码安装

rpm包管理器: 应用程序要想成为机器可识别的二进制机器码,必须经过一下步骤: rpm包管理器的功能就是将这一切过程自动管理,成为易于普通人使用,可简化应用程序安装的工具. 人们将源码经过编译执行后将程序打包成rpm格式的包,所有使用rpm包安装时必须与提供rpm包的作者使用相同的操作系统平台环境.因此出现了不同的包管理器,rpm知识其中一个. rpm包的命名格式: rpm包命名方式:name-version-arch.rpm version :主版本号.次版本号.平台号 arch :表示平台,

iOS开发-博客导出工具开发教程(附带源码)

前言: 作为一名学生, 作为一名iOS开发学习者, 我个人浏览信息包括博客, 更多的选择移动终端.然而, csdn并没有现成的客户端(不过有个web版的). 之前曾经看到一款开源的导出工具, 但是它是基于Windows平台的.导出的也仅仅是PDF格式.而且, 对于文章的导出, 需要精确URL.无法做到边浏览别导出. 另外, 我想实现的是, 可以在没有网络的情况下, 浏览自己收藏的文章.并且, 对于自己收藏的文章, 可以分类管理. 最关键的是, 对于自己的文章, 可以做一个备份.我曾经遇到过这样一

字节序转换以及判断字节序

在网络信息跨主机传输过程中,不同主机的字节序问题可能不同,因此必须进行字节序的转换. 本地字节序--> 网络字节序 -->本地字节序 字节序转换函数: htons和htonl是将本地字节序转换为网络字节序,htons是对16位整数进行转换,htonl是对32位正数进行转换,ntohs和ntohl恰好相反. 判断主机字节序和网络字节序: #include<arpa/inet.h> #include<stdio.h> //judge host endian void jud

python注释、脚本参数、字节码

python注释.脚本参数.字节码 --道心 python安装 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机]-->[属性]-->[高级系统设置]-->[高级]-->[环境变量]-->[在第二个内容框中找到 变量名为Path 的一行,双击] --> [Python安装目录追加到变值值中,用 : 分割] 如:原来的值;C:\python27,切记前面有分号

转换成流字节,输出浏览器下载

//转换成流字节,输出浏览器下载var byti = file.SaveToStream().GetBuffer(); ////通知浏览器保存文件,其实也就是输出到浏览器Response.Clear();Response.ContentType = "application/octet-stream";Response.AppendHeader("Content-Disposition", "attachment;filename=" + fil

C#字母转换成数字/数字转换成字母 - ASCII码转换

字母转换成数字 byte[] array = new byte[1];   //定义一组数组arrayarray = System.Text.Encoding.ASCII.GetBytes(string); //string转换的字母int asciicode = (short)(array[0]); ASCII码 = Convert.ToString(asciicode); //将转换一的ASCII码转换成string型 数字转换成字母byte[] array = new byte[1];ar

利用无效字节码指令引发逆向工具崩溃(二)

上一节我们介绍了一种利用无效字节码指令引发逆向工具崩溃的方法.可惜的是大部分反编译工具已经修复了该bug.但是如果我们插入有效的字节码指令,但是后跟无效的数据引用,结果会是怎么样呢? 使用C32asm,以十六进制的方式打开dex文件.按快捷键"Ctrl + G",定位到"0003A2A4" 把"62 00 02 04 1A 01 8E 07 6E 20 19 10 10 00"改为"12 01 38 01 03 00 1A 00 FF