• 【转】使用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脚本的根目录中

  • 相关阅读:
    相对布局(下)
    html5-微格式-时间的格式
    html5-新元素新布局模板
    html5-section元素
    html5-article元素
    html5-新布局元素header,footer
    html5-基本知识小结及补充
    html5-常用的通用元素
    html5-div布局
    html5-块元素和内联元素
  • 原文地址:https://www.cnblogs.com/JD85/p/3778402.html
Copyright © 2020-2023  润新知