quick-cocos2d-x源文件编译及加密详解
2015-09-07 17:47
393 查看
quick-cocos2d-x是用lua脚本来写的,而lua是明文形式,如果不对脚本进行处理,那么我们所写的代码将可能暴露给别人(apk和ipa都是简单的zip包装)。
quick-cocos2d-x框架为我们提供了一个可编译和加密代码的工具compile_scripts.sh(目前只提供了mac版
),它位于quick-cocos2d-x/bin/
compile_scripts.sh 。下面将对其进行详细的介绍。
一、安装luajit
lua脚本的编译是通过luajit来执行的,如果你之前没有安装过luajit的话,运行compile_scripts.sh会出现下面的提示:
下面将介绍如何安装luajit。
1、运行<path>/quick-cocos2d-x/bin/install_luajit.sh
,<path>为你具体的路径,请自行替换。
这个时候会执行luajit的构建操作。
2、完成构建之后将进行安装,安装之前会叫你输入系统账户密码,如下图:
3、之后就是安装过程了,完成之后会出现下图这样的界面:
恭喜你完成了第一步。
二、示例
我们先来运行一个示例吧。这个将帮助你了解编译的过程。
我们做的很简单,就是把代码编译成一个zip包,并把它放置到res目录下(framework_precompiled.zip也在此目录)。
1、在bash下,设置当前工作目录到你游戏的目录下,如:
?
2、运行
compile_scripts.sh 。
?
生成会显示出具体的信息,如参数是什么、源代码文件夹地址、生成了什么文件,生成文件的位置等等,如下图:
之后就会看到game.zip在res目录下了,解压(不是必须操作,只是为了看看里面有什么)之后发现:
它生成了一个个的二进制文件,文件名已经包含了包名。
到这里你也一定会问,命令中-i,-o这些参数是什么意思啊?还有哪些其它的参数啊
?下面我们将对其进行详解。
三、参数详解
compile_scripts.sh中带有不少的参数,详情如下:
1、
-h 帮助。显示参数的解释及使用,英文的。
2、-i 源码目录。
3、-o 输出文件或目录。
4、-p 包前缀。
5、-x 不包含在内的包。如果你有些源文件不想被编译进去的话,将会用到这个参数,只能设置包(对应文件夹),不能指定到文件,多个包的话用,(逗号)隔开。示例:-x app.test,server,指的是app/test/.*,server/.*
这两个目录下的所有文件都不会被编译。
注:经测试,目前这个参数没有作用,已报告给作者,请等待修复。
6、-m 编译模式。有两个值
:
-m zip
默认,生成的是zip格式文件;
-m files
生成的是一个个文件,不打包,这个时候-o参数指的就是输出的目录。
7、-e 加密模式。可以对编译后的文件再进行
XXTEA 加密,有两个值:
-e xxtea_zip 对应-m zip,对打包后的zip格式文件进行加密,之后再打包成zip格式。
-e xxtea_chunk
对编译后的文件加密,最后打不打包取决于-m。
注:xxtea_zip一定要与-m zip编译模式对应,不然会提示出错。
8、-ek 加密密钥。对-e有效,且设置了-e之后一定要设置-ek。
9、-es 加密签名。对-e有效,默认值为"XXTEA",这个只是为了让引擎知道文件是否被加密过,意义不大,所以可不设置。
下面是一个编译及加密的例子:
?
10、-ex 编译后的文件的后缀名。对-m files有效,默认值为"lua"。
11、-c 从一个文件加载参数列表。
12、-q 生成过程不输出信息。
四、修改
AppDelegate .cpp
我们编译了代码,并且把main.lua文件也包含进去了,我们要修改c++中的代码才能让程序正常运行。这个在
AppDelegate .ccp文件中修改,把
applicationDidFinishLaunching
()方法改成如下:
?
注意:一直有朋友不太注意,
pStack->setXXTEAKeyAndSign("aaa", 3, "XT", 2);
这一句的第二和第四个参数都是前一个参数的长度,并不是固定值,如可以这样
pStack->setXXTEAKeyAndSign("abcd", 4, "SIGNCODE", 8);
最后需要注意的是:编译发布程序的时候要记得把源代码文件夹从项目中移除(不是删除,只是不包含进项目里),不然一切都白费了。
原: /article/2202102.html
quick-cocos2d-x框架为我们提供了一个可编译和加密代码的工具compile_scripts.sh(目前只提供了mac版
),它位于quick-cocos2d-x/bin/
compile_scripts.sh 。下面将对其进行详细的介绍。
一、安装luajit
lua脚本的编译是通过luajit来执行的,如果你之前没有安装过luajit的话,运行compile_scripts.sh会出现下面的提示:
下面将介绍如何安装luajit。
1、运行<path>/quick-cocos2d-x/bin/install_luajit.sh
,<path>为你具体的路径,请自行替换。
这个时候会执行luajit的构建操作。
2、完成构建之后将进行安装,安装之前会叫你输入系统账户密码,如下图:
3、之后就是安装过程了,完成之后会出现下图这样的界面:
恭喜你完成了第一步。
二、示例
我们先来运行一个示例吧。这个将帮助你了解编译的过程。
我们做的很简单,就是把代码编译成一个zip包,并把它放置到res目录下(framework_precompiled.zip也在此目录)。
1、在bash下,设置当前工作目录到你游戏的目录下,如:
?
compile_scripts.sh 。
?
之后就会看到game.zip在res目录下了,解压(不是必须操作,只是为了看看里面有什么)之后发现:
它生成了一个个的二进制文件,文件名已经包含了包名。
到这里你也一定会问,命令中-i,-o这些参数是什么意思啊?还有哪些其它的参数啊
?下面我们将对其进行详解。
三、参数详解
compile_scripts.sh中带有不少的参数,详情如下:
1、
-h 帮助。显示参数的解释及使用,英文的。
2、-i 源码目录。
3、-o 输出文件或目录。
4、-p 包前缀。
5、-x 不包含在内的包。如果你有些源文件不想被编译进去的话,将会用到这个参数,只能设置包(对应文件夹),不能指定到文件,多个包的话用,(逗号)隔开。示例:-x app.test,server,指的是app/test/.*,server/.*
这两个目录下的所有文件都不会被编译。
注:经测试,目前这个参数没有作用,已报告给作者,请等待修复。
6、-m 编译模式。有两个值
:
-m zip
默认,生成的是zip格式文件;
-m files
生成的是一个个文件,不打包,这个时候-o参数指的就是输出的目录。
7、-e 加密模式。可以对编译后的文件再进行
XXTEA 加密,有两个值:
-e xxtea_zip 对应-m zip,对打包后的zip格式文件进行加密,之后再打包成zip格式。
-e xxtea_chunk
对编译后的文件加密,最后打不打包取决于-m。
注:xxtea_zip一定要与-m zip编译模式对应,不然会提示出错。
8、-ek 加密密钥。对-e有效,且设置了-e之后一定要设置-ek。
9、-es 加密签名。对-e有效,默认值为"XXTEA",这个只是为了让引擎知道文件是否被加密过,意义不大,所以可不设置。
下面是一个编译及加密的例子:
?
11、-c 从一个文件加载参数列表。
12、-q 生成过程不输出信息。
四、修改
AppDelegate .cpp
我们编译了代码,并且把main.lua文件也包含进去了,我们要修改c++中的代码才能让程序正常运行。这个在
AppDelegate .ccp文件中修改,把
applicationDidFinishLaunching
()方法改成如下:
?
pStack->setXXTEAKeyAndSign("aaa", 3, "XT", 2);
这一句的第二和第四个参数都是前一个参数的长度,并不是固定值,如可以这样
pStack->setXXTEAKeyAndSign("abcd", 4, "SIGNCODE", 8);
最后需要注意的是:编译发布程序的时候要记得把源代码文件夹从项目中移除(不是删除,只是不包含进项目里),不然一切都白费了。
原: /article/2202102.html
相关文章推荐
- Android NDK: jni/Android.mk: Cannot find module with tag 'cocos2dx' in import path解决办法
- cocos2d-x v2 升级到 v3
- COCOS2D-X 3.0坐标系详解
- Cocos2d-X3.0bate_关于一些“无法解析的外部符号”的配置问题解决方法
- Cocos2d-x 3.x版本---创建项目
- cocos2d-x 之quick-ini
- Cocos Studio 数据编辑器新手使用教程
- Cocos Studio 学习指引
- Cocos Studio制作多分辨率UI布局
- COCOS2D-X 多分辨率适配完全解析
- 记录:捕鱼达人开发笔记
- cocos2d-x如何解决图片显示模糊问题
- cocos2dx-3.0 事件回调
- 使用Cocos2d-x 3.2和Cocos Studio做屏幕适配方案总结
- 认识 Cocos2dx 3.x
- Cocos2d-x 关于RotateBy在3D下的旋转不绕中心轴
- cocos植物大战僵尸(三)游戏场景:地图滚动
- cocos2dx骨骼动画Armature源码分析(二)
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第十一节:骨骼动画模型播放控制
- Cocos2d-x 屏幕适配新解