# robot-tools **Repository Path**: vnool/robot-tools ## Basic Information - **Project Name**: robot-tools - **Description**: 本项目为uni-app的应用程序,提供模拟点击控制安卓手机的能力 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 23 - **Forks**: 13 - **Created**: 2020-11-24 - **Last Updated**: 2025-03-15 ## Categories & Tags **Categories**: cross-platform-mobiledev **Tags**: None ## README ## 本项目为uni-app的应用程序,提供模拟点击控制安卓手机的能力。 ## 安装 ``` npm i robot-tools ``` ### 更详细的文档,请查看: [更详细的文档](https://yooge.github.io/robot-docs/autojs-vue.html) https://yooge.github.io/robot-docs/autojs-vue.html ## 1. 更新/下载基座 ```js robot-tools init ``` Hbuilder的菜单:运行 -> 手机或模拟器 -> 运行基座选择 -> 自定义基座(勾选) ## 2. 在项目中使用 ```js var {robot} = require('robot-tools'); var param = { file: 'demo.js', //机器人脚本(static/robots/目录下),或绝对路径/sdcard/xxx.js,或远程URL(也可以用发布的打包加密代码) vue: this, //可选, 将本vue对象传递给机器人 arguments: {}, //可选, json,传递给机器人的参数。[提示]如果不传递,则系统会默认使用'当时'的vue的data数据 onMessage: ()=>{} //回调函数,机器人给VUE发送消息, 感觉快淘汰了 } robot.stop(); //启动机器人 robot.start(param); ``` ```js /* file: //1. 脚本脚本(static/robots/目录下的demo.js), //2. 或绝对路径/sdcard/xxx.js, //3. 或远程URL(也可以用发布的打包加密代码) arguments: //可选, json,传递给脚本的参数。 //可以在控制脚本脚本中用app.args获取 //如果不传递参数,则系统会默认传递'当时'的vue的$data数据; //如果控制脚本想动态获取vue的$data的数据,请往下看 */ //启动脚本 autojs.start(param); //停止脚本 autojs.stop(); //仅设置初始化参数,不执行代码 autojs.init(param); //根据上面设置好的参数,执行代码; 也可以在悬浮脚本上点启动按钮 autojs.start(); autojs.menu.show(); //显示悬浮脚本图标 autojs.menu.move(x,y); //移动悬浮脚本图标 autojs.menu.close(); //隐藏悬浮脚本图标 autojs.showMenu(param); //执行脚本并显示脚本图标 var isEnabled = autojs.permission();//检查是否启动了无障碍 //在当前已经运行的脚本的上下文中执行 autojs.eval(代码或函数); //在新是脚本上下文执行 autojs.exec(代码或函数); ``` #### 机器人脚本,请参考 https://github.com/yooge/robot . . #### 机器人获取VUE发过来的参数(启动机器人时传递的) ```js app.args //json对象 app.arguments ``` #### 机器人给VUE层发消息 ```js app.post2host("message"); //机器人用这个方法给VUE层发消息 ``` #### 机器人脚本直接访问VUE页面对象 ```js app.vue //机器人直接访问vue的对象,上面传递进来的对象this(或别的对象) app.vue.abc //访问data里的abc变量 app.vue.abc = 999; //给data里面的abc赋值 app.vue.test() //访问methods里面的 test函数。 此用法可以淘汰上面的onMessage回调 ``` ## 3. 发布项目 默认使用本项目的热更新服务器 ```js robot-tools deploy //生成apk robot-tools deploy apk=false //不生成apk ``` 过程: * 1. 压缩,混淆,(将你的工程代码进行压缩,混淆) * 2. 加密,将代码进行加密操作 * 3. 制作热补丁并上传 #### 3.2 自定义热更新服务器 打包发布时执行: ```js robot-tools deploy apk=false server=default robot-tools deploy apk=false server=http://abc.com/ ``` 请上传upload.php 到你的服务器位置 http://abc.com/app-store/upload.php wgt文件就会存到你的服务器上 然后在代码中使用 version.install(callback, url_wgt); ## 4. 热更新 (从客户端升级app) ### 4.1 直接升级 ```js //1. 直接升级 const {version} = require('robot-tools'); //如果你的包,存到了自定义服务器上,则设置如下,(如果没有请忽略) version.server = "http://abc.com/"; //运行远程的APP版本(直接从网络上运行) version.run({ show: true, //是否显示加载对话框 title: "启动中..", //对话框的标题 appid : "__appid__", //1.直接安装app。如果不指定,则默认是自己 wgt: "http://", //2.从指定的路径安装指定的app version_code: "仅最新版本", //安装指定的版本 }) //简单的升级 version.checkThenInstall(); //检查版本,并安装, 有等待窗口 version.install(()=>{}); //功能同上, 无弹窗提示 version.install(()=>{}, wgt_url); //功能同上, 安装指定远程的 项目/热更新 version.install(()=>{}, appid); //功能同上, 安装指定远程的 项目/热更新 //安装远程版本 version.upgrade({ show: true, //是否显示对话框 title: "下载更新中..", //对话框的标题 appid : "__appid__", //1.直接安装app。如果不指定,则默认是自己 wgt: "http://", //2.从指定的路径安装指定的app version_code: "仅最新版本", //安装指定的版本 }); ``` `参数 appid, wgt 如果不指定,则是指自己的最近的热更新版本` ### 4.2 举例:检查然后升级 ```js const {version} = require('robot-tools'); uni.showLoading({ title: '加载中...' }); version.checkVersion((res) => { console.log('current version: ' + version.name); console.log('remote version: ' + res.version); if (version.name != res.version) { //准备更新 // plus.nativeUI.confirm("是否安装更新?", function(e){ // console.log("Close confirm: "+e.index); // }); //console.log(res.download); //需要安装的url version.install((status) => { // // }); } else { uni.hideLoading(); } }); ``` ## 5. API ```js robot.start(startOption); ``` #### 4.1 startOption | 属性| 类型 | 是否必须 | 描述 | | :-----| :----- | :----- | :----- | | file | string | 是 | 脚本文件路径文件路径(机器人脚本(static/robots/目录下),或绝对路径/sdcard/xxx.js,或远程URL, 可以用发布的打包加密代码) | | httpCacheType | HttpCacheType | 否 | 远程url执行脚本缓存类型 | | arguments | {} | 否 | json,传递给机器人的参数 | | header | Object | 否 | HTTP 请求 Header, header | | onCacheFile | () => string | 否 | 缓存地址回调 | | onMessage | () => any | 否 | 回调函数,机器人给VUE发送消息 | #### 4.1.1 HttpCacheType类 ```js HttpCacheType.NONE: 0, // 无缓存 HttpCacheType.GENERAL: 1, // 有缓存(只储存不强制执行缓存,每次还是会下载) HttpCacheType.COMPEL: 2 // 有缓存(如果发现缓存强制执行缓存不进行下载) ```