cocos luacompile
Overview
Compile the .lua
files to .luac
.
Usage
Available Arguments
arg | available value | sample | description | necessary |
---|---|---|---|---|
-h, --help | - | - | Show the help message and exit | no |
-s, --src | source directory | ./projects/MyLuaGame/src |
Specify source directory of lua files needed to be compiled. | yes |
-d, --dst | destination directory | ./projects/MyLuaGame/src |
Specify destination directory bytecode files to be stored. | yes |
-e, --encrypt | - | - | Enable the encrypting of lua files. | no |
-k, --encryptkey | any string | MyLuaKey |
Specify the encrypt key for the encrypting of lua scripts. It's only take effect when-e, --encrypt is enabled. Default value is2dxLua . |
no |
-b, --encryptsign | any string | MyLuaSign |
Specify the encrypt sign for the encrypting of lua scripts. It's only take effect when--encrypt is enabled. Default value isXXTEA . |
no |
Samples
cocos luacompile -h
. Show the help message.cocos luacompile -s ./projects/MyLuaGame/src -d ./projects/MyLuaGame/src -e -k MyLuaKey -b MyLuaSign
Compile the*.lua
in directory./projects/MyLuaGame/src
to*.luac
. Then encrypt the luac files with key isMyLuaKey
and sign isMyLuaSign
.
我們在實驗的過程中出現了一些問題,支持64位的解決方式:
cocos luacompile -s src/ -d out/ -e -k testKey123456 -b testSign123456 --disable-compile
以下給出全過程與測試project
1.0 cocos luacompile 使用方法
我用的普通的cocos2d lua,沒用quick,quick好像能夠對整個資源包含圖像和音頻都加密。打包成zip。但我沒用quick.看了下luacompile 的 help,比較簡單啊。
先在項目根文件夾下建立了一個out的文件夾,然后就用這個命令試了下:
cocos luacompile -s src/ -d out/
比預想的順利。在out文件夾下看到了非常多luac文件。
正如命令里說的,支持子文件夾。網上說luac還是會被反編譯。就加上了key。
cocos luacompile -s src/ -d out/ -e -k testKey123456 -b testSign123456
他用的是XXTEA加密算法,能夠看這篇文章 《XXTEA 可逆加密解密算法 C++ C#兼容版本號》
還須要在AppDelegate.cpp文件的 applicationDidFinishLaunching方法中增加setXXTEAKeyAndSign。這點它那個luacompile 的help就沒提了,這是第一個坑。
LuaStack* stack = engine->getLuaStack(); stack->setXXTEAKeyAndSign("testKey123456", strlen("testKey123456"), "testSign123456", strlen("testSign123456")); if (engine->executeScriptFile("src/main.lua")) { return false;
2.不支持64bit
第二個坑立即來了:剛開始在IPhone4S模擬器執行好好的。IPhone5s就漆黑一片了。原來這樣把lua編譯后。盡管速度變快了,但還未支持64位系統,據說cocos2d 年底會給出luajit 64位解決方式,由於蘋果要求的啊。
然后由於這個問題我卡了一會兒。網上搜了了也沒什么結果。都推薦使用Quick。游戲都寫完了。轉Quick有點麻煩。
突然注意到luacompile help中最后一個選項:–disable-compile ,然后把命令改成以下這樣的:
cocos luacompile -s src/ -d out/ -e -k testKey123456 -b testSign123456 --disable-compile
也是出來luac文件,但僅僅是簡單用XXTEA加密。這樣小游戲全然夠用了。



項目測試:
/// decode:
const char * key = "testKey123456";
int keylen = (int)strlen(key);
const char * sign = "testSign123456";
int signlen = (int)strlen(sign);
Data srcInfo = FileUtils::getInstance()->getDataFromFile("BugAnt.luac");
//decode:
xxtea_long len = 0;
unsigned char * result = xxtea_decrypt(srcInfo.getBytes() + signlen,
(xxtea_long)srcInfo.getSize() - signlen,
(unsigned char* )key,
(xxtea_long)keylen,
&len);
printf("\n result: %s \n len; %ld",result,len);
讀取正常;