How to convert "js" to "jsc" for code security --(Tutorial by YUYE)

How to convert "js" to "jsc" for code security --(Tutorial by YUYE)
0.0 0


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/”.

As the document “” 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.

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"

and if want to create a 2.2.**V javascript game just using

python -project MyGame -package com.MyCompany.AwesomeGame -language javascript

If you are using stable version 3.*

python -p GameName -k Test -t org.cocos2dx.gameName -l javascript


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”

Under this path:

       cd /Users/UserName/cocos2d-x-2.2.2Test/tools/cocos2d-console/console

We can find the “” 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 funtionName -argumentName1 (argument) ...

Now you can perform this command like this :
python 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 jscompile …”we have 6 arguments.

  • “~~d output_dir"*
    In this argument required the output direction for converted file.
    ~~d /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/
    **“~~s cocos2dx_root/scripting/javascript/bindings/js”*
    In this argument required the output direction for converted file.
    ~~s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/
    If you javascript code under many folders. then you can declare like this way
    ~~s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/~~s /Users/UserName/cocos2d-x-2.2.2/projects/MyGame/Resources/src
    **(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.
    ~~j /Users/UserName/cocos2d-x-2.2.2Test/projects/MyGame/Resources/compiler_config_sample.json
    In this argument required nothing.
    if you added”~~c" it means to compress all js files into just a big file
    ~~j /Users/UserName/cocos2d-x-2.2.2Test/projects/MyGame/Resources/compiler_config_sample.json

If you don not want to compress all js files into just a big file. you can input the command like this way:

python 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
python jscompile —help

Usage: jscompile~~s src_dir ~~d dst_dir
~~h, —help show this help message and exit
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
~~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
The configuration for closure compiler by using JSON,
please refer to compiler_config_sample.json


Hey, buddy, all images are dead links…
But it’s great to have some tutorials!