Cocos2d-x html5/ javascript binding is a very popular engine for developer to develop game quickly and convenient.
But the published javascript game is nearly naked for everybody can see it. the good way is to do Obfuscated code.
Cocos2d-x engine already had some tools to make your javascript code safe. so today let me show you How to convert
“js” to “jsc” for code security .
Firstly , we go to see some documents for jsc security‘s introduct:
You can always find the latest command for converting “js” to “jsc” in the documents under this path “/Users/UserName/cocos2d-x-2.2.2Test/tools/cocos2d-console/console/README.md”.
As the document “README.md” said:
# Will generate bytecode files
$ cocos2d jscompile -d output_dir -s cocos2dx_root/scripting/javascript/bindings/js -s cocos2dx_root/samples/Javascript/Shared/tests -o game.min.js -j compiler_config_sample.json -c
wow! it’s scared。
Do not worried! I attend to tell you what happened in this command step by step.
h1.Step1:
I made a simple javascript “Hello World” Game called “MyGame”. in 2.2.**V
if you do not know how to create a game. please read the tutorial “How to create a”Hello World" C++ project with cocos2d-x2.2.2 or 3.0"
http://www.cocos2d-x.org/forums/6/topics/43031
and if want to create a 2.2.**V javascript game just using
python create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language javascript
If you are using stable version 3.*
python create_project.py -p GameName -k Test -t org.cocos2dx.gameName -l javascript
Step2:
We can find a “.json” format file under this path: “/Users/UserName/cocos2d-x-2.2.2/tools/cocos2d-console/console/bin/compiler_config_sample.json”
“compiler_config_sample.json” can help us to add/skip any javascript’s files. in this case we just need to modify this file like:
And copy it to this path:“/Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources”
Step3:
Under this path:
cd /Users/UserName/cocos2d-x-2.2.2Test/tools/cocos2d-console/console
We can find the “cocos2d.py” script. Here is a tools for convert “js” to “jsc” for code security by python . (you can find many tools in the tools folder).
So if you had already prepared running python environment. you can just perform it like this way:
python cocos2d.py funtionName -argumentName1 (argument) ...
Now you can perform this command like this :
python cocos2d.py jscompile ~~d /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/~~s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/ s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/srco game.cocos2d.js j /Users/UserName/cocos2d-x-2.2.2Test/projects/MyGame/Resources/compiler_config_sample.jsonc
Then you can remove the all files under the path :“/Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/src”,and run your “Hello world game”. if it performed ok. congratulation! you did a great job for your code security.
h1.Now we can see what happan what happened in below’s command step by step.
In the command “$ python cocos2d.py jscompile …”we have 6 arguments.
- “~~d output_dir"*
In this argument required the output direction for converted file.
i.e:
<pre>
~~d /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/
</pre>
**“~~s cocos2dx_root/scripting/javascript/bindings/js”*
In this argument required the output direction for converted file.
i.e:
<pre>
~~s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/
</pre>
If you javascript code under many folders. then you can declare like this way
i.e:
<pre>
~~s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/~~s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/src
</pre>
**(3)”~~o game.min.js“*
In this argument required the converted file’s name.
**"~~j compiler_config_sample.json"*
In this argument required the direction of compiler_config_sample.json.
i.e:
<pre>
~~j /Users/UserName/cocos2d-x-2.2.2Test/projects/MyGame/Resources/compiler_config_sample.json
</pre>
**(5)”~~c“*
In this argument required nothing.
if you added”~~c" it means to compress all js files into just a big file
i.e:
<pre>
~~j /Users/UserName/cocos2d-x-2.2.2Test/projects/MyGame/Resources/compiler_config_sample.json
</pre>
If you don not want to compress all js files into just a big file. you can input the command like this way:
python cocos2d.py jscompile -d /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/ -s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/ -s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/src
Just ignore the j xxxo xxx ~~c
h1. In the end:
You can using command
<pre>
python cocos2d.py jscompile —help
</pre>