对于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 技术交流 欢迎您