在android 上运行lua脚本,但是想用lua脚本的方式去实现自动按键的效果的话就得拓展lua关键字;我是直接在 AndroLua的基础上拓展的。很多人说为什么不用adb,adb只能实现简单的指令,不能实现取色找图效果,因此要实现高级指令的话,必须用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手机获取最高权限,效果图和源码地址:

https://github.com/MHuangXin/AndroidLua.git

下面的脚本将会模拟点击屏幕三次,按下音量-键,按返回键,按菜单键,按home键,点击屏幕顶部下滑,


因为这是写在代码中的所以有很多双引号和换行符,我们也可以写在.lua文件中通过dofile运行脚本,效果图可以在github源码地址中看大

更多相关文章

  1. C语言函数的递归(上)
  2. Android之分享篇(配图适合新人):腾讯分享(QQ空间,好友,群)
  3. Android中View.setPressed是怎么出现按压效果的
  4. android手机定位不准的问题
  5. android 如何监听自身应用被卸载
  6. [置顶] Android开机铃声教程,所有Rom,不论CM还是官方,不论是2.3还是
  7. Android(安卓)使用动画效果后的控件位置处理 类似系统通知栏下拉
  8. Android(安卓)使用shape来优化界面效果
  9. Android(安卓)ColorMatrix类图像颜色处理-黑白老照片、泛黄旧照

随机推荐

  1. 在 JavaScript 中对象的深拷贝(及其工作原
  2. Android(安卓)存储之文件存储
  3. 企业级JavaScript:机遇,威胁与解决方案[每
  4. 『互联网架构』软件架构-软件环境的持续
  5. 互联网发展的四个阶段
  6. Spring Data JPA 最佳实践
  7. 芋道 Spring Boot MyBatis 入门(三)之 MyBa
  8. 芋道 Spring Boot 缓存 Cache 入门
  9. Map 集合怎么也有这么多坑?一不小心又踩了
  10. 芋道 Spring Boot Redis 入门(下)