易语言ADB脚本开发

开发者模式控制手机

哔哩哔哩:https://www.bilibili.com/video/BV1TTfWYYEJk/

1、什么是ADB脚本

ADB脚本是指使用ADB(Android Debug Bridge)工具编写的脚本,用于与Android设备进行交互。

ADB是一个命令行工具,允许开发者与Android设备(如手机、平板等)进行调试和管理。

通过ADB,用户可以执行命令来安装和卸载应用、访问设备的文件系统、运行 shell 命令、获取设备信息等。

ADB脚本通常以批处理文件(例如在Windows上使用 .bat 文件)或Shell脚本(在Linux或MacOS上使用 .sh 文件)的形式存在,脚本中包含一系列ADB命令,可以自动化执行某些任务。

2、ADB环境搭建

3、使用ADB进行简单脚本开发

// 启动adb服务
adb start-server
// 关闭adb服务
adb kill-server
// 获取设备
adb devices
// 点击坐标
adb shell input tap x y
// 滑动坐标
adb shell input swipe x1 y1 x2 y2 time
// 输入文本
adb shell input text 英文文本

4、易语言调用ADB功能

运行 (“cmd /c adb start-server”, 假, 1)

cmd /c 命令行   :执行完毕后关闭窗口
cmd /k 命令行   :执行完毕后不关闭窗口

5、封装点击坐标函数

// 点击坐标
adb shell input tap x y
// 长按坐标
adb shell input swipe x y x y time

6、封装滑动操作函数

// 滑动坐标
adb shell input swipe x1 y1 x2 y2 time

7、模拟按键操作

keycode含义
3HOME 键
4返回键
5打开拨号应用
6挂断电话
24增加音量
25降低音量
26电源键
27拍照(需要在相机应用里)
64打开浏览器
82菜单键
85播放/暂停
86停止播放
87播放下一首
88播放上一首
122移动光标到行首或列表顶部
123移动光标到行末或列表底部
126恢复播放
127暂停播放
164静音
176打开系统设置
187切换应用
207打开联系人
208打开日历
209打开音乐
210打开计算器
220降低屏幕亮度
221提高屏幕亮度
223系统休眠
224点亮屏幕
231打开语音助手
276如果没有wakelock 则让系统休眠
adb shell input keyevent 键值

8、ADB基于控件的操作的原理

adb shell uiautomator dump /sdcard/ui.xml

9、获取控件文件

1、获取ui.xml

adb shell uiautomator dump /sdcard/ui.xml

2、拉取ui.xml到电脑

adb pull /sdcard/ui.xml <电脑路径>

10、读取解析XML

编码_utf8到gb2312 (到文本 (读入文件("ui.xml")))

正则表达式

<node index="(.*?)" text="(.*?)" resource-id="(.*?)" class="(.*?)" package="(.*?)" content-desc="(.*?)" checkable="(.*?)" checked="(.*?)" clickable="(.*?)" enabled="(.*?)" focusable="(.*?)" focused="(.*?)" scrollable="(.*?)" long-clickable="(.*?)" password="(.*?)" selected="(.*?)" bounds="(.*?)"

11、创建控件对象数据类型

.版本 2

.数据类型 控件对象, 公开
  .成员 id, 文本型
  .成员 text, 文本型
  .成员 desc, 文本型
  .成员 class, 文本型
  .成员 clickable, 文本型
  .成员 bounds, 文本型

12、查找控件

.版本 2
.支持库 spec

.子程序 查找控件, 整数型
.参数 控件数组, 控件对象, 数组
.参数 选择器, 文本型, , id text desc class clickable
.参数 值, 文本型
.参数 返回控件, 控件对象
.局部变量 i, 整数型

.计次循环首 (取数组成员数 (控件数组), i)
  调试输出 (控件数组 [i].text)

  .判断开始 (选择器 = “id” 且 控件数组 [i].id = 值)
      返回控件 = 控件数组 [i]
      返回 (1)
  .判断 (选择器 = “text” 且 控件数组 [i].text = 值)
      返回控件 = 控件数组 [i]
      返回 (1)
  .判断 (选择器 = “desc” 且 控件数组 [i].desc = 值)
      返回控件 = 控件数组 [i]
      返回 (1)
  .判断 (选择器 = “class” 且 控件数组 [i].class = 值)
      返回控件 = 控件数组 [i]
      返回 (1)
  .判断 (选择器 = “clickable” 且 控件数组 [i].clickable = 值)
      返回控件 = 控件数组 [i]
      返回 (1)
  .默认

  .判断结束

.计次循环尾 ()
返回 (0)

13、获取控件坐标

[346,648][539,689]

正则

局_正则.创建 (“\[(.*?),(.*?)\]\[(.*?),(.*?)\]”, bounds)
局_left = 局_正则.取子匹配文本 (1, 1)
局_top = 局_正则.取子匹配文本 (1, 2)
局_right = 局_正则.取子匹配文本 (1, 3)
局_bottom = 局_正则.取子匹配文本 (1, 4)

14、查找点击控件坐标

.版本 2
.支持库 spec

获取xml ()
拉取xml ()
解析xml (控件数组)
.如果真 (查找控件 (控件数组, “text”, “微信”, 指定控件) = 1)
  局_控件坐标 = 获取坐标 (指定控件.bounds)
  调试输出 (局_控件坐标.x)
  调试输出 (局_控件坐标.y)

15、获取adb执行结果

// 阻塞函数
系统_取DOS执行结果()

16、查找控件并点击

17、自动开启无障碍服务

.版本 2

查找点击 (“text”, “设置”, , -50)
程序_延时 (3000)
查找点击 (“text”, “更多设置”)
查找点击 (“text”, “无障碍”)
查找点击 (“text”, “已下载的应用”)
查找点击 (“text”, “Auto.js”)
查找点击 (“text”, “使用Auto.js”)
查找点击 (“text”, “我已知晓可能存在的风险,并自愿承担可能导致的后果”)
程序_延时 (10000)
查找点击 (“text”, “确定”)
下载权限
查看
  • 免费下载
    评论并刷新后下载
    登录后下载
  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧