做TikTok Shop或TEMU的手机端运营,很多操作只能在App里完成。
问题:影刀主打浏览器自动化,手机App怎么控制?
答案:通过ADB命令连接安卓手机或模拟器,用影刀执行ADB指令实现点击、滑动、截屏。
一、ADB是什么
ADB(Android Debug Bridge)是安卓调试桥,通过电脑命令行控制安卓设备。
影刀结合方式:用“运行命令行”指令执行ADB命令,间接控制手机/模拟器。
能做什么:
- 打开App、点击坐标、滑动屏幕
- 输入文本、截屏、获取当前界面XML
- 安装卸载App、获取设备信息
不能做什么:
- 无法像浏览器那样捕获元素(需要用坐标或图像识别)
- 无法直接获取控件文本(需要解析UI XML)
💡 前置条件:电脑已安装ADB驱动,手机/模拟器开启USB调试。
二、ADB环境配置
步骤1:下载ADB工具
搜索“ADB platform tools”下载,解压到 C:\adb。
步骤2:配置环境变量
将 C:\adb 添加到系统Path,或在影刀中直接使用绝对路径。
步骤3:连接设备
- 安卓模拟器(雷电、夜神):启动后自动连接
- 真机:USB连接,开启开发者模式和USB调试
验证连接:在电脑命令行输入 adb devices,看到设备列表即成功。
步骤4:影刀中测试ADB
拖入“运行命令行”指令,命令内容:adb devices,输出到变量,看是否有设备。
三、常用ADB命令与影刀封装
| 操作 | ADB命令 | 影刀指令封装 |
|---|---|---|
| 查看连接设备 | adb devices | 运行命令行 |
| 点击坐标 | adb shell input tap x y | 运行命令行,参数拼接 |
| 滑动 | adb shell input swipe x1 y1 x2 y2 duration | 同上 |
| 输入文本 | adb shell input text "内容" | 需处理空格和特殊字符 |
| 截屏 | adb exec-out screencap -p > local.png | 保存到本地 |
| 按返回键 | adb shell input keyevent KEYCODE_BACK | 模拟按键 |
| 启动App | adb shell monkey -p 包名 1 | 需知道包名 |
| 获取UI XML | adb shell uiautomator dump | 复杂,不推荐新手 |
四、实战:用影刀控制抖音App刷视频
场景:自动刷TikTok/抖音视频,模拟人工观看。
步骤1:启动App
# 运行命令行指令
# 命令:adb shell monkey -p com.ss.android.ugc.aweme 1
# 抖音包名:com.ss.android.ugc.aweme
# 输出到 {result}
步骤2:等待加载(固定等待3秒)
步骤3:向上滑动(模拟刷视频)
# 滑动命令:adb shell input swipe 500 1200 500 400 200
# 参数说明:从(x1,y1)滑到(x2,y2),耗时200ms
# 分辨率1080x1920时,屏幕中心X=540,底部Y=1600,顶部Y=400
# 运行命令行
# 命令:adb shell input swipe 540 1500 540 500 300
步骤4:随机等待(4~8秒,模拟观看)
步骤5:循环步骤3-4共20次
步骤6:按返回键退出
# adb shell input keyevent KEYCODE_BACK
# 或 KEYCODE_HOME 回桌面
五、实战:采集手机屏幕截图并保存
场景:App界面出现某个元素(如图标),需要截图保存。
# 1. 截屏并保存到手机
# 运行命令行:adb shell screencap -p /sdcard/screen.png
# 2. 从手机拉取到电脑
# 运行命令行:adb pull /sdcard/screen.png C:\screenshots\screen_{时间戳}.png
# 3. 可选:删除手机上的截图
# 运行命令行:adb shell rm /sdcard/screen.png
影刀集成:
用“获取当前时间”生成时间戳,用“字符串拼接”组合命令,再用“运行命令行”执行。
六、坐标的获取方法
手机自动化最大的难题:不知道要点击的坐标。
方法1:开发者模式指针位置
手机开启“开发者选项” → “指针位置”,触摸屏幕会显示坐标。
记下坐标,写死在影刀命令中。
方法2:截图+画图工具
用ADB截屏,在电脑上用画图软件打开,鼠标移动到目标位置,看右下角坐标。
方法3:adb shell getevent(高级)
实时获取点击坐标,适合精确调试。
注意:不同分辨率手机的坐标不同。
解决:用 adb shell wm size 获取分辨率,动态计算相对坐标。
例如1080x1920的屏幕中心点是540,960。
七、影刀ADB指令封装技巧
技巧1:封装成子流程
把常用ADB操作封装成子流程,方便复用。
# 子流程:ADB_Click
# 输入参数:in_x, in_y
# 命令:adb shell input tap {in_x} {in_y}
# 输出参数:out_success
# 子流程:ADB_SwipeUp
# 输入参数:in_duration(默认300ms)
# 命令:adb shell input swipe 540 1500 540 500 {in_duration}
技巧2:自动获取分辨率
在流程开始时执行一次 adb shell wm size,解析出宽高,存入全局变量。
所有点击坐标按比例计算,适配不同设备。
# 获取分辨率
# 运行命令行:adb shell wm size
# 输出示例:Physical size: 1080x1920
# 用正则提取:(\d+)x(\d+)
# 存入 g_screen_width, g_screen_height
技巧3:处理输入文本中的空格和特殊字符
adb shell input text 不支持空格,需要用 %s 转义。
解决:用 adb shell input text "内容" 加引号,或用 keyevent 逐个字符。
# 简单写法(不支持空格)
# adb shell input test "hello world" 会失败
# 推荐:用adb shell am broadcast 方式,或每个字符单独发送
# 更简单:用“设置剪贴板文本” + 粘贴(需要App支持)
八、常见问题与避坑
| 问题 | 原因 | 解决方法 |
|---|---|---|
adb devices 看不到设备 | USB调试未开或驱动问题 | 重新插拔,确认手机授权 |
| 点击坐标无效 | 坐标超出屏幕范围 | 用分辨率校准 |
| 输入中文乱码 | input text不支持中文 | 用ADB Keyboard或剪贴板方式 |
| 运行命令行卡住 | 命令执行时间过长 | 加超时参数(影刀运行命令行可设置超时) |
| 多个设备连接 | adb devices显示多个 | 用 -s 设备号 指定设备 |
| 模拟器连接失败 | 模拟器ADB端口不对 | 夜神端口62001,逍遥21503 |
多设备指定写法:
adb -s emulator-5554 shell input tap 500 500
九、影刀专属操作清单
| 操作 | 精确指令 | 说明 |
|---|---|---|
| 运行ADB命令 | 运行命令行 | 填写完整adb命令 |
| 获取命令输出 | 运行命令行 → 输出到变量 | 输出是字符串,需解析 |
| 拼接命令 | 字符串拼接 | 把坐标、包名拼进去 |
| 固定等待 | 固定等待 | 给App加载时间 |
| 循环操作 | 固定次数循环 | 刷视频次数 |
| 异常捕获 | Try-Catch | ADB命令可能失败 |
版本差异:社区版“运行命令行”指令可用,但长时间运行可能超时。
建议在ADB命令后加 &(Windows)或设置超时参数。
推荐资源
- ADB命令大全:搜索“ADB常用命令速查表”
- 影刀社区:搜索“ADB手机自动化”,有模板参考
- 模拟器推荐:雷电模拟器(ADB兼容性好)
- 坐标获取工具:安卓开发者选项中的“指针位置”
最后一句:手机自动化比网页复杂,但ADB提供了基础能力。
建议先用模拟器调试(方便截图看坐标),调通后再上真机。
刷视频、点赞、关注这类简单操作,用ADB坐标点击完全够用。
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
