美文网首页
资源加密和脚本加密

资源加密和脚本加密

作者: 咸鱼而已 | 来源:发表于2017-02-10 19:34 被阅读391次

主要是资源加密和脚本加密。cocos2dx版本3.10。

脚本加密

脚本加密主要是用cocos2dx自带的加密方法,把js脚本转换成jsc二进制文件。
主要是利用cocos jscompile命令进行转换可以输入cocos jscompile -h查看一下主要功能:

usage: cocos jscompile [-h] [-v] [-s SRC_DIR_ARR] [-d DST_DIR] [-c]
                       [-o COMPRESSED_FILENAME] [-j COMPILER_CONFIG]
                       [-m CLOSURE_PARAMS]

对 js 文件进行加密和压缩处理。

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         更多输出信息。
  -s SRC_DIR_ARR, --src SRC_DIR_ARR
                        指定需要编译的 js
                        文件路径,支持指定多个路径。
  -d DST_DIR, --dst DST_DIR
                        指定输出文件的路径。
  -c, --use_closure_compiler
                        使用 closure 编译器将所有 js
                        文件压缩为一个大的文件。
  -o COMPRESSED_FILENAME, --output_compressed_filename COMPRESSED_FILENAME
                        指定压缩为一个大的 js
                        文件名称。只有当使用了 '-c'
                        参数时起效。
  -j COMPILER_CONFIG, --compiler_config COMPILER_CONFIG
                        指定 json 格式的 closure
                        编译器配置,请参考
                        compiler_config_sample.json。
  -m CLOSURE_PARAMS, --closure_params CLOSURE_PARAMS
                        传给 closure 编译器的扩展参数。会覆盖
                        closure 编译器的已有配置。

主要使用:

cocos jscompile -s xxxgame/frameworks/cocos2d-x/cocos/scripting/js-bindings/script -d xxxgame/frameworks/cocos2d-x/cocos/scripting/js-bindings/script
cocos jscompile -s xxxgame\src  -d xxxgame\src 

这两个命令对src和js-binding下面的js文件进行加密。然后可以把js文件删除。直接使用jsc就可以。也可以把这个命令做个配置,配在build_native.py下面,每次打包都自动转换了

资源加密

具体可以看这里
资源加密主要是利用TexturePacker把小图转化成大图,然后利用TexturePacker对图片进行加密操作。需要导出pvr.czz文件,然后选择Content protection对图片生成密钥进行加密。可以选择生成系统密钥,然后保存32位二进制数,然后直接publish就可以。

我们可以先导出xx.plist和xx.png在cocostudio中使用,然后导出xx.plist和xx.pvr.czz文件在 工程中。

然后在AppDelegate中添加如下:

bool AppDelegate::applicationDidFinishLaunching() {  
    // initialize director  
  
    ..............  
  
    // 2528bd78 112d53ef fa5e5fb2 b7a5b25a (加密的 必须是32位十六进制值)  
    ZipUtils::setPvrEncryptionKeyPart(0, 0x76bcbb68);  
    ZipUtils::setPvrEncryptionKeyPart(1, 0x3a89c4f1);  
    ZipUtils::setPvrEncryptionKeyPart(2, 0xa9dfbac2);  
    ZipUtils::setPvrEncryptionKeyPart(3, 0x65a46419);  
  
    // 或者按照这种方式添加  
    //ZipUtils::setPvrEncryptionKey(0x2528bd78, 0x112d53ef, 0xfa5e5fb2, 0xb7a5b25a);  
  
    auto scene = TexturePackageEnvryption::scene();  
    // run  
    director->runWithScene(scene);  
  
    return true;  
}

然后就可以在程序中使用了,如下:

cc.spriteFrameCache.addSpriteFrames("ddz_font.plist", "ddz_font.pvr.ccz");
//ui文件中使用
var ui = ccs.load(res.MainScene_json);
var node = ui.node; 

//脚本中直接使用
var img_1 = new ccui.ImageView();
node.addChild(img_1);
img_1.setPosition(cc.p(cc.winSize.width/2, cc.winSize.height/2));
img_1.loadTexture("bisaixiangqing.png", ccui.Widget.PLIST_TEXTURE);

this.addChild(ui.node);

相关文章

网友评论

      本文标题:资源加密和脚本加密

      本文链接:https://www.haomeiwen.com/subject/okhnittx.html