先做个简介,luac和luajit是干什么的?

他们是将lua源码文件,生成为二进制01编码的文件,这样做的好处是1,安全,2机器识别速度快。原来读lua文件要经过一遍语义分析等,现在省掉了中间几个步骤。

luac是lua官方自带的,luajit是第三方的,从我们测试效率上来说,luajit更快,lua最慢。

先说luac

接入luac时最好是下载源码编译,因为如果是现成的.a文件,首先安全先不说,兼容就可能有问题,毕竟那是在别人的机器上编译好的文件。另外注意点是makefile里默认的编译环境是linux,如果是在mac上编译,一定要改makefile(注意看makefile里的注释,都写清楚了),否则编译出来的二进制文件是无法被lua解释器识别的。在cocos2d的解释器里,代码是不用修改的,因为lua官方都支持好了。编译完成之后,生成了一个luac的命令(windows下是luac.exe),这个命令可以将lua文件转换为二进制文件。(命令怎么敲,自行搜索解决吧)将这个文件替代原来的lua文件,没报错,就表示成功了。

再说luajit

同样建议自己编译,同样要修改makefile文件,mac下用xcode编译还有修改pagezero参数等等bug,(遇到的话自行网上搜索吧),同样会生成一个luajit文件,执行这个命令可以将lua转换为二进制,但是这里要多一步,就是cocos2d里的头文件和二进制文件,要替换为luajit官方的头文件和二进制。

接入的时候注意版本对应,lua和luajit都可以查看当前版本,cocos2d里的lua头文件里也有宏记录了lua版本,一定要对应好。

我的项目最终选择了luac,为什么,因为luajit不支持ios的64位,而苹果要求必须支持。而且luajit官方好久都没更新了。

不过luac有一些反编译的工具,所以最后还要再进行一次加密才比较保险。luajit的反编译目前还没看到。