在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
上一篇文章粗略的说了在Android中使用Lua脚本实现模拟按键的方法,之前做lua拓展用的方法都是把自己的拓展代码放到lua源码里面一块编译,自己一直想拓展部分代码单独的编译成一个so文件,然后通过require的方式去加载自己的拓展库,由于开始对lua不熟悉,所以只能暂时把代码放一块编译了。 现在终于找到解决办法,require函数调用是会去对应package.path和package.cpath定义好的目录下寻找对应名字的.lua或者.so文件,查看源码知道这两个属性定义的目录如下: 但是Android的应用安装的后,so文件一般会存放在/data/app/应用包名/lib/下面,这个路径我们可以通过 获取到。要使得脚本调用require函数是能搜索到我们的so库,就要把nativeLibraryDir设置到package.cpath中去,代码如下: 这样lua就能搜索到我们的拓展的so文件了。运行脚本后lua能找到我们自定义的so文件,但是爆出了新的错误: "dynamic libraries not enabled; check your Lua installation",查找了资料后发现是因为require函数会调用dlopen,所以我们在编译时设置cFLAGS把定义的宏打开就行了,Android studio gradle设置cFLAGS如下: 查看源码是可以看到"LUA_USE_DLOPEN"和“LUA_USE_POSIX”的说明: 大概的意思是要使得lua能动态链接,就要编译选项加上 -DLUA_USE_DLOPEN
|
请发表评论