乔人尹 - 脚本
type: channel
link: https://underestimated.cn/tag/%E8%84%9A%E6%9C%AC/
items: 如何编写一个手机自动化脚本

如何编写一个手机自动化脚本
type: item
date: 2025-12-27T00:00:00+00:00
description: 前言：一个咸鱼玩家的觉醒事情是这样的。某天我下载了一款叫《咸鱼之王》的游戏。作为一个放置类游戏，它的核心玩法是——点点点。每日任务要点领奖励要点打副本要点抽卡要点合成要点……玩了一周后，我的手指已经开始抗议了。作为一个程序员，我陷入了深深的思考：我玩游戏，还是游戏玩我？于是，"猫吃鱼"项目诞生了——让脚本替我吃掉这条咸鱼。第一章：技术选型——为什么是 Auto.js1.1 安卓自动化方案对比方案优点缺点Auto.js无需 root，基于无障碍服务，JavaScript 语法官方版已下架，需要用开源版Tasker功能强大，生态丰富学习曲线陡峭，自动化能力有限ADB + Python灵活，可电脑控制需要连接电脑，不够便携按键精灵简单易用功能有限，很多要付费Root + 触摸模拟权限最高，啥都能干需要 root，有变砖风险最终选择 Auto.js（准确说是开源版 AutoX.js），原因：无需 root：基于安卓无障碍服务（Accessibility Service）JavaScript 语法：前端出身的我表示很亲切开源免费：AutoX.js 是社区维护的开源版本功能全面：控件操作、图色识别、悬浮窗、定时任务一应俱全1.2 环境搭建# 1. 下载 AutoX.js # GitHub: https://github.com/autox-community/AutoX # 下载 APK 安装到手机 # 2. 开启无障碍服务 # 设置 -> 无障碍 -> AutoX.js -> 开启 # 3. 开启悬浮窗权限 # 设置 -> 应用管理 -> AutoX.js -> 悬浮窗权限 # 4. 关闭电池优化（重要！） # 设置 -> 电池 -> AutoX.js -> 不优化 # 否则后台运行会被杀掉踩坑提醒：不同手机厂商的设置路径不一样，MIUI、ColorOS、EMUI 各有各的"特色"。有时候需要在"自启动管理"、"后台运行"等多个地方设置。第二章：无障碍服务——脚本的灵魂2.1 什么是无障碍服务无障碍服务（Accessibility Service）本来是安卓为视障人士设计的功能，可以：读取屏幕内容：获取当前界面所有控件的信息模拟用户操作：点击、滑动、输入文字监听系统事件：界面变化、通知到达等简单说，开启无障碍服务后，你的脚本就像一个"看得见屏幕的机器人"，可以知道屏幕上有什么，然后去操作它。2.2 控件 vs 坐标Auto.js 有两种主要的操作方式：方式一：基于控件（推荐） // 通过文字找到按钮并点击 click("领取奖励"); // 通过 id 找到控件 id("btn_claim").findOne().click(); // 通过描述找到控件 desc("关闭").findOne().click();方式二：基于坐标 // 直接点击屏幕坐标 click(540, 1200); // 滑动 swipe(500, 1500, 500, 500, 500);对比：特性控件操作坐标操作适配性好，不同分辨率通用差，换手机就废稳定性高，控件存在才操作低，可能点到别的地方速度稍慢，需要查找控件快，直接点适用场景原生应用、有控件信息的界面游戏画面、Canvas 渲染的界面《咸鱼之王》的尴尬在于——它是个混合应用，部分界面有控件信息，部分界面是纯游戏渲染，需要两种方式结合使用。2.3 布局分析——找到控件的"身份证"Auto.js 自带布局分析功能，可以查看当前界面的控件树： // 方法一：悬浮窗里点"布局分析" // 方法二：代码打印 auto.waitFor(); // 等待无障碍服务启动 let root = className("android.widget.FrameLayout").findOne(); log(root); // 打印控件树布局分析会显示每个控件的：text：显示的文字desc：描述（contentDescription）id：资源 IDclassName：控件类型bounds：位置和大小技巧：优先用 text 和 id，它们最稳定。第三章：项目架构——"猫吃鱼"的设计3.1 功能规划作为一个有追求的脚本，"猫吃鱼"要实现：猫吃鱼 ├── 日常任务 │ ├── 一键领取所有奖励 │ ├── 自动完成日常任务 │ └── 自动观看广告 ├── 战斗系统 │ ├── 自动挂机刷副本 │ ├── 自动打竞技场 │ └── 自动参与活动 ├── 资源管理 │ ├── 自动合成装备 │ ├── 自动强化英雄 │ └── 自动使用体力 └── 辅助功能 ├── 防检测（随机延迟） ├── 异常处理（弹窗、卡顿） └── 运行日志3.2 代码结构cat_eat_fish/ ├── main.js # 主入口 ├── confi…