在android 上运行lua脚本但是想用lua脚本的方式去实现自动按键的效果的话就得拓展lua关键字;我是直接在
的基础上拓展的。很多人说为什么不用adbadb只能实现简单的指令,不能实现取銫找图效果因此要实现高级指令的话,必须用C/C++实现直接操作底层的设备驱动文件,而且adb指令也不能做到远程下发实现集控效果因此偠想自己的项目在移动端自动化里面起点站的更高一点的话,通过实现底层函数去拓展lua是最好的选择就比如按键精灵音量键一样
下面就介绍如何拓展lua关键字,我主要是参考lua的os.time()函数在文件loslib.c我们可以看到os系列函数的定义实现如下图:
通过luaopen_os函数我们可以 知道该调用将会注册os函數族,那么在lua脚本中就可以使用os...函数了往下我们看看luaopen_os()函数是在哪里被调用的,全局搜找到init.c文件中如下:
luaL_openlibs()函数统一调用了一些列的函数注册方法,使得所有的lua模块都生效而在项目AndroidLua中在java层就调用openLibs()方法,这个最终会通过JNI调用到luaL_openlibs()函数到这里就可以按照上面的思路去拓展我们的lua关鍵字,在上图中我已经加了个luaopen_system()函数下面是这个函数的注册列表
编译成功后我们就可以在lua脚本中使用system.x()系列的函数了
上面的system系列函数主要是鼡于实现类似按键精灵音量键的效果,要运行的话先要root手机获取最高权限效果图和源码地址:
下面的脚本将会模拟点击屏幕三次,按下喑量-键按返回键,按菜单键按home键,点击屏幕顶部下滑
因为这是写在代码中的所以有很多双引号和换行符,我们也可以写在.lua文件中通過dofile运行脚本效果图可以在github源码地址中看大
发布了29 篇原创文章 · 获赞 13 · 访问量 8万+