主要是資源加密和腳本加密舶赔。cocos2dx版本3.10扫倡。
腳本加密
腳本加密主要是用cocos2dx自帶的加密方法,把js腳本轉(zhuǎn)換成jsc二進(jìn)制文件竟纳。
主要是利用cocos jscompile命令進(jìn)行轉(zhuǎn)換可以輸入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]
對(duì) js 文件進(jìn)行加密和壓縮處理镊辕。
optional arguments:
-h, --help show this help message and exit
-v, --verbose 更多輸出信息。
-s SRC_DIR_ARR, --src SRC_DIR_ARR
指定需要編譯的 js
文件路徑蚁袭,支持指定多個(gè)路徑征懈。
-d DST_DIR, --dst DST_DIR
指定輸出文件的路徑。
-c, --use_closure_compiler
使用 closure 編譯器將所有 js
文件壓縮為一個(gè)大的文件揩悄。
-o COMPRESSED_FILENAME, --output_compressed_filename COMPRESSED_FILENAME
指定壓縮為一個(gè)大的 js
文件名稱卖哎。只有當(dāng)使用了 '-c'
參數(shù)時(shí)起效。
-j COMPILER_CONFIG, --compiler_config COMPILER_CONFIG
指定 json 格式的 closure
編譯器配置删性,請(qǐng)參考
compiler_config_sample.json亏娜。
-m CLOSURE_PARAMS, --closure_params CLOSURE_PARAMS
傳給 closure 編譯器的擴(kuò)展參數(shù)。會(huì)覆蓋
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
這兩個(gè)命令對(duì)src和js-binding下面的js文件進(jìn)行加密维贺。然后可以把js文件刪除。直接使用jsc就可以巴帮。也可以把這個(gè)命令做個(gè)配置溯泣,配在build_native.py下面,每次打包都自動(dòng)轉(zhuǎn)換了
資源加密
具體可以看這里
資源加密主要是利用TexturePacker把小圖轉(zhuǎn)化成大圖榕茧,然后利用TexturePacker對(duì)圖片進(jìn)行加密操作垃沦。需要導(dǎo)出pvr.czz文件,然后選擇Content protection對(duì)圖片生成密鑰進(jìn)行加密用押≈荆可以選擇生成系統(tǒng)密鑰,然后保存32位二進(jìn)制數(shù),然后直接publish就可以池充。
我們可以先導(dǎo)出xx.plist和xx.png在cocostudio中使用桩引,然后導(dǎo)出xx.plist和xx.pvr.czz文件在 工程中。
然后在AppDelegate中添加如下:
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
..............
// 2528bd78 112d53ef fa5e5fb2 b7a5b25a (加密的 必須是32位十六進(jìn)制值)
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);