关于tolua在arm64位的加密

在热更新方面,lua脚本确实给我们开发者带了极大的便利。但最近我却在lua的加密遇到了很大的问题,那就是我利用tolua官方下载的lua加密方式加密后,在android与pc上运行正常,在ios上死活报错,就是bytecode不对。在网上查找各种解决方式都说可以在luajit官网上下载luajit源码,并在lj_arch.h文件的前面添加一句#define LUAJIT_ENABLE_GC64(表示开启64位模式编码),可最后编译的lua脚本死活在ios上运行不了。后来在经过不断的试验,才发现还是有一些网上没有说,可能是大神觉得这些很easy吧,但却是很关键的操作。我在这里给大家说一下吧:

1.由于平台的差异性,对lua进行二进制编码的话,android和windows的编码可以混用,ios的编码却不一样。因此如果你想让lua脚本加密后既能在android上跑 又要在ios上跑,对不起,目前我没找到这种方式,都只能各编各的。

2.在luajit官网上下载最新的源码,我下载的是luajit-2.1.0-beta2版本,http://luajit.org/download.html

3.将下载下来的解压出来,至于放在哪随你,

4.在src目录下的lj_arch.h文件的前面添加一句#define LUAJIT_ENABLE_GC64(表示开启64位模式编码)

5.对src目录下的msvcbuild.bat文件进行编辑:将第一个 @set DASMFLAGS=  这一行设置为 @set DASMFLAGS=-D WIN  -D FFI -D P64

   将其中的vm_x86.dasc设置为vm_x64.dasc 设置这个就代表用这个x64的文件进行lua编码转换

6.然后利用vs2015的x64命令行工具(记住哦vs有两个命令行工具 一个是x86的 一个是x64的)我最开始也是这里选错 导致最后编译出的lua代码还是运行不了

7.编译成功后将生成的luajit.exe以及jit文件夹拷贝到tolua的编译lua脚本的地方,(原来的那个 文件你最好保留,因为android下的lua编译要用原来那个哦)

8.现在就可以方向对lua进行编码在ios下面跑啦,本人亲测的,因为我也是在这上面折腾了很久,很清楚对于新手来说这是多么的无奈,所以就写了这个。

友情提示:因为大家很多都是用unity在线安装工具来安装的vs2015,因此可能没有命令行工具,所以可通过vs2015的扩展和更新中去下载这个命令行工具,如果不懂的话可以网上搜一下

本人参考教程:http://www.cnblogs.com/quicklyslow/p/4794430.html感谢大神

你可能感兴趣的:(ios)