對於quick-lua打包問題,在網上有很多文章介紹。可到了quick-lua 3.5 框架有很大的變化,以前的都不適用了。
最近從網上找了一些資料,總結記錄下來 ,僅供個人參考
###加密###
quick-lua 3.5
1. quick2.2.6和quick 3.3使用lua 5.1.5
2. 2dx的方案是,64位iOS使用lua 5.1.5,其他的平臺都使用luajit,所以如果編譯lua代碼,需要兩套
3. quick 3.5可以看做是2dx 3.5之上的一個插件,所以在這方面和2dx的方案是一樣的
首先,爲什麼要用luajit呢?我能想到的原因有兩個,一是效率,二是加密。用luajit之後執行效率會有很大的提升,特別是在android下,另外呢luajit之後得到的文件是二進制的bytecode,基本無法反編譯,因此對於商業產品來說,提高了被反解的成本。
那麼luajit與lua到底有什麼區別呢?從使用上來說沒有區別,因爲頭文件都是一致的,所以將lua換成luajit來說,有兩個步驟,一個是將頭文件換成luajit的,另外一個是將動態鏈接庫或者靜態鏈接庫也換成luajit的
加密命令
1.windows,android ios 確保不編譯代碼,只加密不編譯,安全性未知cocos luacompile -s src/ -d out/src/ -e -k key123 -b sign123 --disable-compile
2.未驗證通過(無法實現)
WIN:
compile_scripts.bat -i D:\MyGame\src -o D:\MyGame\res\game.zip -e xxtea_zip -es key123 -ek sign123
MAC:
./compile_scripts.sh -i /Developer/MyGame/src -o /Developer/MyGame/res/game.zip -e xxtea_zip -es key123 -ek sign123
AppDelegate.cpp 修改
stack->loadChunksFromZIP("res/game.zip");
stack->executeString("require 'main'");解決辦法:待解決
1.修改quick-3.5框架,只使用lua不使用luajit,然後使用quick-3.3的加密工具加密 (犧牲性能,較可行)
2.更新quick-3.5 luajit庫 使用2.1版本支持ios 64位(目前只是alph版本)
3.升級到3.7支持ios 64 bytecode (這個行不通,已經驗證)
QQ羣:239759131 cocos 技術交流 歡迎您