安卓自动化:Web方式实现某音未读消息检查采集

作者:技术拾光时间:2026-06-04 08:33:02浏览:330

这篇文章完整记录了一个 Android 自动化实现过程:通过 Web 项目编写自动化逻辑,并在 AssistsX 中运行,完成某音 App 的未读消息检查与未读消息列表采集。 最终要实现的目标清晰明确: 自动打开某音 App 检查底部消息 Tab 是否存在未读红点 进入消息列表,逐页抓取未读会话 解

这篇文章完整记录了一个 Android 自动化实现过程:通过 Web 项目编写自动化逻辑,并在 AssistsX 中运行,完成某音 App 的未读消息检查与未读消息列表采集。

最终要实现的目标清晰明确:

  • 自动打开某音 App
  • 检查底部消息 Tab 是否存在未读红点
  • 进入消息列表,逐页抓取未读会话
  • 解析出昵称、未读数量、最后一条消息内容及时间
  • 在日志浮窗中实时展示执行结果
安卓自动化:Web方式实现某音未读消息检查采集

Web 方式开发 Android 自动化需要什么

需要明确的是,这里并非要求你编写原生 Android 应用,而是开发一个 Web 插件,由 AssistsX 在 Android 端加载并执行。下面先梳理所需资源,再逐步展开实现步骤。

需要准备的两个平台

整个流程涉及两个端:

  • 电脑端:用于开发 Web 项目,启动 Vite 开发服务器
  • Android 手机端:安装 AssistsX,并开启无障碍服务

整体链路是这样的:Vue 页面和 assistsx-js 逻辑运行在 AssistsX 的 WebView 中,随后 AssistsX 调用 Android 的无障碍能力来操作某音 App。

需要集成哪些核心库

核心依赖是 assistsx-js,它负责桥接 Web 端代码与 Android 自动化能力。常用的功能包括:

  • 查找节点:findById、findByTags
  • 操作节点:点击、滚动
  • 步骤编排:Step.run、step.next
  • 浮窗与日志:用于展示执行过程

Web 项目选用什么框架

本项目采用 Vue 3、Vite、TypeScript、Vue Router 以及 assistsx-js。本质上仍是一个前端项目,只不过运行环境是 AssistsX 内部的 WebView,而非普通浏览器。

创建 Web 项目并配置自动化环境

从零搭建一个 assistsx-js 项目,直接使用脚手架即可快速完成:

npx create-assistsx-vue@latest my-app
cd my-app
npm run dev

上述命令会生成一个 Vue 3 + Vite + TypeScript 项目,并已集成 assistsx-js、路由、日志浮窗、测试面板及基础 Step 代码。后续只需将默认步骤替换为自己的自动化逻辑即可。

若想在当前目录初始化,也可执行:

mkdir my-app && cd my-app
npx create-assistsx-vue@latest --here
npm run dev

本文涉及的某音未读消息功能,正是在类似的项目结构上继续实现的。

如果已拉取本文源码,进入项目后先安装依赖:

npm install

然后启动开发服务:

npm run dev

项目已将 Vite 配置为局域网可访问,因此手机与电脑处于同一 Wi-Fi 时,手机可直接访问 http://电脑IP:5173。

配置插件信息

AssistsX 加载插件时会读取 public/config.json,其中包含插件名称、入口文件、图标等信息:

{
  "name": "Message Automation",
  "packageName": "com.dy.automation.example",
  "index": "index.html",
  "icon": "icon.png"
}

其中 index 指向 Web 项目的入口页面,packageName 是插件自身的包名标识,并非目标 App 的包名。

安装 AssistsX 平台并加载插件

手机端需先安装 AssistsX,安装后开启无障碍服务,并确保手机与电脑处于同一局域网。

在 AssistsX 中通过局域网加载插件,操作步骤如下:

  1. 电脑执行 npm run dev,手机与电脑连接同一 Wi-Fi
  2. 打开 AssistsX,点击首页的「+」号
  3. 选择「扫描局域网」,等待扫描结果
  4. 找到本项目的开发地址(http://电脑IP:5173),点击「安装」
  5. 返回首页即可看到插件,点击启动

分析某音页面节点结构

编写 Android 自动化最关键的步骤并非急于写代码,而是先观察页面节点。

例如,要点击底部的「消息」按钮,或判断某一行是否为未读消息,都需要了解这些控件在无障碍节点中的具体表现。这里可使用 AssistsX 的节点分析功能。

常规做法如下:

  1. 在手机上打开某音,停留在待分析的页面,如首页或消息列表页
  2. 在 AssistsX 中开启节点分析
  3. 通过电脑浏览器访问 AssistsX 提供的局域网分析地址
  4. 在节点树中找到目标控件

分析时需重点关注以下字段:

  • className:控件类型,例如 android.widget.Button、android.widget.TextView
  • text:界面显示的文字,如底部消息 Tab 上的未读数字
  • des:无障碍描述,某音消息行中常将昵称、未读数、最后一条消息拼接在此
  • id:资源 ID,某些页面可直接用它定位

掌握这些信息后,代码中即可使用 findByTags、findById、filterDes 等方法查找节点。这种方式比写死坐标更稳定,页面尺寸或手机分辨率变化时也不易失效。

安卓自动化:Web方式实现某音未读消息检查采集

实现功能入口

插件主页仅放置两个入口:

  • 检查未读消息
  • 获取未读消息列表

点击按钮后会打开日志浮窗,并将待执行的动作通过 query 参数传递:

void float.open(`/examples/log-panelaction=${action}`, {
  showBottomOperationArea: true,
})

日志浮窗承担两项职责:一边实时显示执行日志,一边启动自动化流程。

启动流程的代码大致如下:

await Step.run(appLaunch.launch, {
  data: {
    appName: "DY",
    packageName: "com.ss.android.ugc.aweme",
    finishMethod: douyinMain.checkMainPage,
    ...flowData,
  },
});

此处从 appLaunch.launch 开始,负责拉起某音应用。启动成功后,进入 douyinMain.checkMainPage,继续判断当前是否处于某音首页。

实现自动化流程

代码主要位于 src/steps/ 目录下。并未将所有逻辑塞入一个函数,而是拆分为多个步骤,通过 step.next() 依次推进。

整体流程如下:

启动某音
  ↓
确认回到某音首页
  ↓
检查底部消息 Tab 未读数
  ↓
如需收集列表,点击消息 Tab
  ↓
消息列表滚动到顶部
  ↓
逐页收集未读消息

检查未读消息较为直接:找到底部导航中的「消息,按钮」,再查看其附近是否存在纯数字的 TextView。有数字即表示存在未读。

收集未读消息列表稍显复杂。进入消息列表后,先找到屏幕内的 RecyclerView,再遍历其中的消息行。消息行通常为 android.widget.Button,未读角标位于右侧,具体内容包含在该行的 des 属性中。

例如,节点描述可能如下:

早上好咸鱼翻面,未读1条消息,hgff8分钟前
互动消息,未读1条消息,咸鱼翻面 近期访问过你的主页05/13

需要从中解析出四个字段:

  • nickname:昵称
  • unreadCount:未读数量
  • lastMessage:最后一条消息内容
  • time:消息时间,最终转换为时间戳

若 des 中不包含 未读X条消息,则说明该行并非未读消息,直接跳过。

列表滚动时存在一个小问题:上下页之间可能重复扫到同一条消息。因此收集时会将已获取的数据存储在类变量中,若 nickname、unreadCount、lastMessage、time 四个字段均相同,则视为重复数据并跳过。

日志中最终呈现的效果类似:

【未读消息】
  昵称:早上好咸鱼翻面
  未读:1 条
  内容:hgff
  时间:2026-05-30 08:12:00

运行功能

运行前的准备条件不多:

  • Android 手机已安装 AssistsX,并开启无障碍服务
  • 手机已安装某音 App
  • 电脑与手机处于同一局域网
  • 本机具备 Node.js 环境

启动项目:

npm install
npm run dev

插件安装完成后,在 AssistsX 首页打开即可。进入插件后,点击「检查未读消息」或「获取未读消息列表」开始运行。

运行过程中,日志浮窗会持续显示当前执行进度。若流程出现偏差或需手动终止,可点击浮窗中的「停止」按钮,内部调用的是:

Step.stop()

合规说明

本文内容仅用于学习如何通过 Web 方式开发 Android 自动化。实际应用时,请严格遵守相关平台规则与法律法规,避免用于违规采集、骚扰或其他不合规场景。