hermit,是一款支持多种语言的轻量级的安卓操作软件,支持快速的点击、滑动、读取与设置剪切板、模拟输入、寻找控件并点击等。
下载 APK安装包并安装,启动应用并给予权限后,hermit会向外开放HTTP API。
默认运行端口: 9999, 局域网内设备可直接打开 内网ip:9999,进行相关操作。
模拟器用户,需要做一次端口映射,打开终端执行如下操作:
# 通过adb 连接模拟器
adb connect 127.0.0.1:7555
# 将模拟器的9999端口转发到本机的 9999端口
adb forward tcp:9999 tcp:9999
# 看到返回 9999, 就是成功了。
本项目为hermit app,基本安装后就结束了,如果你想通过此APP操作安卓手机, 方法有二:
- 通过 各个语言的hermit模块来操作, 这些模块是对hermit API的封装
- 使用您擅长的语言,直接对api操作
**其中,我已经将hermit api做了对应python版本的封装,如果你会使用python语言,那么下面的API说明则可以忽视,直接移步至 **
https://github.com/LookCos/hermit-py 从 release中下载对应的python包,进行操作。
路径 | 方式 | 是否需要root | 说明 |
---|---|---|---|
/data/nodes | GET | 否 | 获取当前布局信息 |
{
"code":0,
"count":1,
"data":[
{
"bounds":"(27, 65 - 131, 111)",
"boundsInParent":"(0, 0 - 104, 46)",
"checked":false,
"class":"android.widget.TextView",
"clickable":false,
"package":"com.lookcos.hermit",
"scrollable":false,
"resource-id":"android:id/statusBarBackground",
"content-desc":"用户头像",
"text":"Hermit"
}
],
"msg":"ok!"
}
参数名 | 类型 | 说明 |
---|---|---|
code | int | 0:正常,其他为异常 |
msg | str | 信息 |
count | int | 节点数统计 |
data | list | 节点信息列表 |
- data的每个item中 resource-id、content-desc、text较为重要,可以作为点击来源。
- 无障碍的方式
路径 | 方式 | 是否需要root | 说明 |
---|---|---|---|
/click/id | GET | 否 | 通过 resource-id点击 |
/click/text | GET | 否 | 通过 text点击 |
/click/desc | GET | 否 | 通过 desc点击 |
它们都需要一个参数obj ,例如 /click/text?obj=酷安 |
- root的方式操作
路径 | 方式 | 是否需要root | 说明 |
---|---|---|---|
/shell/tap | GET | 是 | 通过 坐标点击 |
参数 x 与y , 也即点击屏幕中 (x,y) |
路径 | 方式 | 是否需要root | 说明 |
---|---|---|---|
/shell/swipe | GET | 是 | 通过 坐标滑动 |
需要四个参数 x1 , y1 , x2 , y2 ,对应的操作是从坐标 (x1, y1)滑动到(x2, y2) |
路径 | 方式 | 是否需要root | 说明 |
---|---|---|---|
/data/cliBoard | GET | 否 | 获取剪切板信息 |
/data/cliBoard | PUT | 否 | 设置剪切板信息 |
/input | GET | 否 | 模拟输入 |
其中用put 方法设置剪切版内容时,参数为 content ,对应为要设置的内容。 |
|||
模拟输入需要三个参数 |
字段 | 类型 | 默认 | 注释 |
---|---|---|---|
by | str | 否 | 通过何种方式选择输入框控件, 可选 text、id、desc |
obj | str | 否 | 对应选择控件方式的对应值 |
text | str | 否 | 要设置的输入框内容 |
例如 /input?by=text&obj=搜索&text=张三 ,则会自动寻找text=搜索
的控件,并在其中输入 张三
路径 | 方式 | 是否需要root |
---|---|---|
/action | GET | 否 |
参数名 obj , |
参数值 | 操作 |
---|---|
back | 按下返回键 |
home | 按下home键 |
recents | 显示最近任务 |
noticefications | 显示通知栏 |
quick_settings | 下拉栏快速设置 |
power | 长按电源键 |
lock_screen | 锁屏 (安卓9.0+ 适用) |
screen_shot | 截屏(安卓9.0+ 适用) |
-
检查root权限
路径 /check/root -
发送一个keyevent
路径 | 方式 | 是否需要root | 说明 |
---|---|---|---|
/shell/keyevent | GET | 是 | 发送一个keyevent |
参数名称 keycode ,对应的值值,例如 3对应 home键,4对应返回键, |
|||
其他的映射请自行搜索,关键词: Android keyevent |
- 启动一个应用
路径 | 方式 | 是否需要root |
---|---|---|
/shell/start | GET | 是 |
参数 packageName
, 必须是完整的包名, 如 com.tencent.mm
- 获取屏幕的长宽
路径为: /data/screen - 获取已安装的包列表 路径为:/data/packages,需要root权限