Skip to content

TonyJiangWJ/Ant-Forest

Repository files navigation

GitHub forks GitHub stars GitHub issues Page Views Count

蚂蚁森林自动收能量脚本

基于 Auto.js 实现的蚂蚁森林自动化脚本。

觉得本项目好用的话请给个 Star 吧~

⚠️ 重要提示:依赖与环境

  • 核心依赖: 本脚本基于 AutoJS Modify困鱼 (AutoJS.fake) 开发和运行。
    • 不兼容: 不再支持原版 4.1.1(已删库且问题多)、官方 Pro 版(限制无障碍、代码审查)。
    • 更多版本下载: https://wwxs.lanzouq.com/b042le51i (密码: b034)
    • 修改版 Auto.js 源代码: TonyJiangWJ/Auto.js
  • 系统要求:
    • 安卓 7.0 及以上版本 (无需 ROOT)。
    • 安卓 5.0 - 6.x 版本 (需要 ROOT 权限)。
  • 显示要求: 脚本依赖图像识别,请关闭手机的护眼模式深色模式 (暗色模式) 等可能影响屏幕颜色的功能。
  • 项目渊源: 本项目是在 Nick-Hopps/Ant-Forest-autoscript (原作者 Nick-Hoops 已不再维护) 的基础上发展而来,虽然代码已大幅重构,但仍感谢原作者的开创性工作。解锁模块参考自 e1399579/autojs

✨ 主要功能

  • 自动收能量:
    • 通过“逛一逛”高效收集好友能量。
    • 识别并跳过开启能量护罩的好友。
    • 识别能量球倒计时,智能安排下次收取时间。
  • 多种运行模式:
    • 计时模式: 根据识别到的最小倒计时启动,可设置最大等待时间。
    • 循环模式: 按设定次数不间断执行。
    • 永不停止模式: 无倒计时或超过设定时间则按设定间隔启动,实现全天候运行。
  • 智能解锁:
    • 自动识别屏幕锁定方式 (图形、PIN、密码)。
    • 支持支付宝手势解锁。
    • 支持扩展自定义解锁方式。
  • 多账号支持:
    • 自动切换小号进行能量收集、能量雨、同步步数。
    • 能量雨自动按顺序赠送机会给配置的其他账号。
  • 辅助功能:
    • 自动使用双击卡 (可配置时间段)。
    • 自动浇水回馈 (可配置阈值、数量、黑名单)。
    • 自动执行能量雨 (支持赠送好友机会)。
    • 自动执行保护地巡护。
    • 自动收集神奇海洋能量 (需关闭 3D 模式)。
  • 高级特性:
    • YOLO 目标检测: (实验性) 更智能地识别能量球 (需下载模型)。
    • Shizuku 支持: (实验性) 通过 Shizuku 获取更高权限 (如自动开启无障碍)。
    • 可视化配置: 通过 可视化配置.js 轻松管理所有设置。
    • 配置导入/导出: 方便备份和恢复配置。
    • 自定义扩展: 支持添加自定义解锁和锁屏逻辑。
    • 运行状态显示: 悬浮窗实时展示脚本状态和收集结果。
    • 运行控制: 音量键可延迟或终止脚本。
    • 能量统计: 图表化展示每日/每小时能量收集情况。
  • 健壮性:
    • 通话状态监听 (来电时自动延迟)。
    • 设备姿态检测 (防止锁屏状态下误触)。
    • 自动开启无障碍服务 (需 ADB 或 Shizuku 授权)。

🚀 使用入门

  1. 环境准备:
    • 下载并安装 AutoJS Modify困鱼
    • 将整个脚本项目文件夹放置到设备的 /sdcard/脚本/ 目录下。
  2. 授权与设置:
    • 打开 AutoJS 应用,下拉刷新列表,找到本项目。
    • 授予 AutoJS 后台弹出界面显示悬浮窗自启动电量无限制 等必要权限。
    • 保持 AutoJS 应用在后台运行(加入电池优化白名单)。
    • (可选) 通过 ADB 授权脚本自动开启无障碍权限
  3. 首次配置 (重要!):
    • 必须: 首次运行前,请务必运行 可视化配置.js 进行个性化设置,特别是图像相关的配置,否则脚本很可能无法正常工作。详见 配置 小节。
  4. 运行脚本:
    • 直接运行项目或 main.js
  5. 定时任务:
    • 如需定时自动运行,点击 main.js 右侧的菜单按钮,选择 更多 -> 定时任务 进行配置。
  6. 单脚本运行:
    • 如果遇到提示“有任务正在队列中”,请运行 可视化配置.js -> 高级设置 -> 勾选 单脚本运行

⚙️ 配置

通过运行 可视化配置.js 进行所有设置。

  • 基本操作:
    • 配置项按类别分组,点击进入相应菜单。
    • 列表项可 左滑 进行删除或修改。
    • 部分输入框 (如区域、颜色) 可 左滑 触发高级编辑控件。
    • 右上角菜单可 重置所有配置 为默认值。
  • 配置管理:
    • 右上角菜单可 导出/导入 配置到 local_config.cfg 文件。
    • 默认使用设备 Android ID 加密,仅本机可用。
    • 跨设备或跨版本同步,需手动获取 device.getAndroidId() (运行 setClip(device.getAndroidId()) 复制) 并在导入时输入。
    • 运行时数据 (如统计) 的导出/导入方式同上。
  • 图像识别配置 (核心):
    • 注: 当开启YOLO识别后,可以跳过该配置,但是也可以配置部分图片用于YOLO识别失败时的保底
    • 重要: 由于手机分辨率和界面差异,必须 前往 查找图片设置,按照说明截取你手机上对应的图片,特别是 逛一逛按钮 等关键识别点。
    • 好友能量球区域: 前往 图像识别相关配置 进行设置。
      • 点击 实时查看可视化配置信息 按钮可预览当前框选区域。
      • 运行 test/全局悬浮窗显示-配置信息.js 可在支付宝界面上叠加显示配置区域,方便调整。
      • 可在 resources 目录下放置截图 region_check.jpg 作为 可视化配置.js 的背景参考。
      • 区域输入框可左滑使用拖动控件调整。
    • 一键收能量: 需要自行配置对应图片才能生效。
  • OCR 配置:
    • 用于识别倒计时等文字信息。
    • 优先级: mlkit-ocr (需插件或修改版AutoJS) > PaddleOCR (需修改版AutoJS且耗电) > 百度OCR (需API Key且有次数限制)。
    • mlkit-ocr: 速度快,准确性尚可,基本满足需求。
    • PaddleOCR: 准确性高,速度慢,必须使用修改版 AutoJS 并设置电量无限制。
    • 可在 可视化配置.js 中调整 OCR 相关设置。

🧩 功能详解

核心运行模式说明

  • 计时模式 (默认):
    • 关闭 循环模式永不停止模式 时启用。
    • 识别好友列表中的倒计时,取最小值。
    • 如果最小值 < 最大等待时间 (可在配置中修改,默认60分钟),则按最小值等待后启动。
    • 否则,脚本停止执行 (等待下一次定时任务)。
  • 循环模式:
    • 在配置中启用 循环模式 并设置次数。
    • 脚本会不间断地执行指定次数后停止。
  • 永不停止模式:
    • 关闭 循环模式 并启用 永不停止模式
    • 需要设置 重新激活时间 (可设为固定值或随机范围)。
    • 如果识别到的最小倒计时 < 重新激活时间,则按倒计时等待。
    • 如果识别到的最小倒计时 >= 重新激活时间 (或无倒计时),则按 重新激活时间 等待后启动。
    • 实现全天候不间断运行。
  • 自定义模式脚本:
    • unit 目录下提供了预设模式的快捷启动脚本,执行后会中断当前任务并按新模式启动:
      • 自定义1永不停止.js: 25-35分钟随机轮询,适合白天 (如设置每天9点定时任务)。
      • 自定义2计时停止.js: 按倒计时执行 (最长等60分钟),适合早晚收尾 (如设置7点、23点、0点定时任务)。
      • 自定义3循环千次只收自己.js: 循环收自己能量,适合能量生成前运行 (如生成前1分钟定时启动,2分钟后用 自定义2 停止)。
    • 可参考这些文件创建自己的模式。

多账号功能

  1. 配置: 运行 可视化配置.js -> 多账号管理,添加支付宝账号并设置 昵称 (用于能量雨赠送),并勾选一个 主账号。确保添加的账号在当前设备可免密登录切换。
  2. 运行脚本:
    • 自动收集: unit/循环切换小号并收集能量.js (支持小号给大号浇水)。
    • 自动能量雨: unit/循环切换小号并执行能量雨收集.js (建议关闭主脚本的自动能量雨)。能量雨会按 A->B->C->A 的顺序自动赠送机会。
    • 自动同步步数: unit/循环切换小号用于同步数据.js
    • 森林集市: unit/循环切换小号执行森林集市.js
  3. 定时任务: 为需要的脚本设置定时任务。

能量雨收集

  • 手动启动: 运行 unit/能量雨收集.js (或在可视化配置中开启对应开关),然后进入能量雨界面手动点击开始,脚本会自动接管。
  • 自动启动 (无小号): 对 unit/自动启动并执行能量雨.js 创建定时任务。
  • 自动启动 (有小号): 使用 unit/循环切换小号并执行能量雨收集.js 的定时任务。
  • 配置:
    • 可配置自动赠送好友机会 (支持正则匹配好友名)。
  • 效果: 暴力点击,基本保证满分。

自动巡护

  • 运行: 运行 unit/自动巡护.js 或为其创建定时任务。
  • 功能: 自动将当日步数兑换为 5 次巡护机会,并执行巡护 (每日保底 3+5 次)。

森林集市

  • 运行: 运行 unit/森林集市.js 或为其创建定时任务。
  • 功能: 自动浏览森林集市中的商品以获取相应的奖励能量

神奇海洋收集

  • 运行: 对 unit/神奇海洋收集.js 创建每天 7 点后的定时任务。
  • 配置:
    • 可视化配置 -> 图像识别相关配置 -> 神奇海洋相关配置,按提示配置 OCR 区域、垃圾球角标位置等。
    • 需要 OCR 支持 (至少安装 MlKitOCR 插件或使用修改版 AutoJS)。
  • 重要: 默认无法通过无障碍点击收集,请务必在支付宝的神奇海洋设置中 关闭 3D 模式 (入口: 神奇海洋右上角三点菜单 -> 设置 -> 关闭“3D模式”)。
  • 脚本会尝试 Shizuku 点击,若已关闭 3D 模式,忽略日志中的相关提示即可。

自动开启无障碍权限

  • 需要 ADB 或 Shizuku 授权 WRITE_SECURE_SETTINGS 权限给 AutoJS。

  • ADB 命令 (请将包名替换为你使用的 AutoJS 版本,可通过 context.getPackageName() 获取):

    adb shell pm grant org.autojs.autojs.modify android.permission.WRITE_SECURE_SETTINGS
  • 详细教程: 通过ADB授权脚本自动开启无障碍权限

能量统计

  • 脚本会自动记录能量收集数据。
  • 可在 可视化配置.js 中查看图表化的统计信息。
  • hourly_summary daily_summary

🔧 高级定制

在脚本根目录下新建 extends 文件夹,进行以下自定义:

自定义设备解锁

  • 获取控件信息: 运行 unit/获取锁屏界面控件信息.js,根据提示操作获取布局信息。
  • 创建文件: extends/ExternalUnlockDevice.js
  • 编写代码: 参考 extends/ExternalUnlockDevice-demo.js 实现 unlock 方法。
  • 测试: 运行 test/测试解锁.js
// ExternalUnlockDevice.js 示例结构
module.exports = function (obj) {
  this.__proto__ = obj; // 继承原型

  this.unlock = function(password) {
    // 在此处编写你的设备解锁逻辑代码
    // 例如:滑动、输入密码等

    // 必须返回解锁检查结果
    return this.check_unlock();
  };
};

自定义锁屏代码

  • 前提: 非 ROOT 设备安卓 9 以上通常可通过无障碍服务锁屏,无需此定制。若无障碍锁屏失败,可使用此方法。
  • 创建文件: extends/LockScreen.js
  • 编写代码: 参考 extends/LockScreen-demo.js 实现自定义锁屏逻辑。
  • 测试: 运行 test/TestLockScreen.js
// LockScreen.js 示例结构
let { config: _config } = require('../config.js')(runtime, global); // 注意 global 可能需要根据上下文调整

module.exports = function () {
  // 在此处编写你的锁屏逻辑代码
  // 例如:下拉通知栏点击锁屏按钮
  // swipe(800, 10, 800, 1000, 500); // 示例:下拉
  // sleep(500);
  // click(parseInt(_config.lock_x), parseInt(_config.lock_y)); // 示例:点击锁屏按钮坐标
};

分享你的配置

  • 欢迎将你的自定义扩展代码 (如解锁脚本) 提交到 share_configs 分支extends 目录下。
  • 命名建议: ExternalUnlockDevice-手机型号.js
  • 其他用户可前往该分支下载使用。

💡 实验性功能

YOLO 目标检测

  • 优势: 理论上可以更智能地识别能量球,减少对固定图片和区域配置的依赖。
  • 前提:
    • 使用最新版 AutoJS Modify困鱼
    • 运行 独立工具/模型下载.js 下载 YOLO 模型 (forest_lite.onnx)。若下载失败,请手动下载 (https://wwxs.lanzoup.com/b042le51i 密码: b034) 并解压到 ./config_data/ 目录下。
  • 启用: 可视化配置 -> 图像识别相关配置 -> 打开 使用YOLO模型识别能量球。若环境不支持或模型未下载,将自动降级。
  • 性能: YOLO 识别速度约 100ms,传统方案约 30-40ms,请自行取舍。默认关闭。

Shizuku 支持

  • 优势: 可通过 Shizuku 获取更高权限,实现如自动授权无障碍等功能。
  • 前提:
    • 安装并激活 Shizuku (详见 Shizuku 官方文档)。
    • 使用最新版 修改版 AutoJS困鱼
    • 在 AutoJS 的抽屉菜单中启用 Shizuku 并授权。
  • 示例: 独立工具/shizuku示例工具.js 包含通过 Shizuku 授权媒体权限、写入 Secure 设置 (用于自动开无障碍) 等示例。 shizuku

🔄 脚本更新

  • 运行 update/检测更新.js 检查并更新脚本。
  • 也可在 可视化配置.js 的右上角菜单中进行更新。
  • 支持覆盖更新或备份后更新。

❓ 常见问题 (FAQ)

  • 可视化配置.js 异常/白屏/加载失败:
    • 尝试运行 unit/功能测试-重置默认配置.js
    • 确保使用的是推荐的 AutoJS 版本 (Modify 或 困鱼)。
    • 强制关闭 AutoJS 应用后重试,可能是网络资源加载问题。
  • 报错 Function importClass must be called with a class;...:
    • 强制关闭 AutoJS 应用再打开。通常发生在跨版本更新后,新版脚本已尝试解决。
  • 运行异常/卡顿:
    • 强制关闭 AutoJS 应用后重试。
    • 建议定期强制关闭 AutoJS,避免内存占用过高。
  • 图像识别遗漏/不准:
    • 检查是否关闭了护眼模式/深色模式
    • 尝试在 可视化配置 中调低 颜色相似度 (默认已改为 20)。
    • 确保关键图片 (如逛一逛) 已按自己手机截图替换。
  • 报错 获取截图失败多次:
    • 可视化配置 -> 高级设置 中,尝试增加 获取截图等待时间 (默认 500ms),或取消勾选 是否异步等待截图
  • 定时任务不准时:
    • 检查系统电池优化设置,将 AutoJS 设为无限制/允许自启动/后台运行。
    • 系统限制严格时,可考虑使用 Tasker 等工具通过广播触发脚本执行 (需自行研究)。
  • 基于图像分析收取不正常:
    • 若开启 是否直接基于图像分析收取和帮助好友 后运行异常,先取消勾选。
    • 尝试勾选 区域点击来收取能量,并根据需要扩展自定义区域点击代码 (目前无直接扩展接口,需修改源码或等待后续支持)。

🐞 问题反馈

  1. 开启日志: 在 可视化配置.js -> 高级设置 中,勾选 保存日志到文件,并将 日志文件大小 调整为 1024KB 或更大。
  2. 复现问题: 重新运行脚本直到问题出现。
  3. 收集信息:
    • 详细描述问题现象、操作步骤。
    • 提供使用的脚本版本、AutoJS 版本、手机型号、安卓版本。
    • 长截图AutoJS软件中的日志,可以的话再附上日志文件 (logs/log-verboses.log)。日志默认保存 100k,旧日志在 logs/logback
    • 如有截图或录屏更有助于定位问题。
  4. 提交:
    • 创建 ISSUE (推荐)。
    • 前往论坛反馈 邮箱注册即可,常见的问题后续会逐渐完善上去
    • 如果日志包含隐私信息,可删除敏感部分或通过邮件发送给开发者: tonyjiangwj@gmail.com

⚠️ 已知问题

  • 收集完一个好友后,可能因未能立即获取其新生成的能量球倒计时而导致少量漏收。
  • 部分系统 (如 MIUI) 的省电策略可能导致 AutoJS 定时任务不准时 (非脚本问题)。
  • 通话状态监听功能可能不稳定,且 Pro 版无法使用。

🔗 相关项目

📜 更新记录

☕ 支持开发者

如果觉得项目对你有帮助,欢迎请我喝杯咖啡!

  • 一元喝速溶、五元喝胶囊、十二买全家、三十三买星巴克,感激不尽!
支付宝 微信 也欢迎支付宝扫码领红包,你领我也得,双赢!
alipay_qrcode wechat_qrcode 扫码领红包
  • 也可以运行 unit/支持作者.js 在线获取红包口令,通过支付宝直接打开领取,每使用一个红包我都可以获取一分钱的收益。如果你不嫌烦的话可以给 unit/支持作者自动版.js 设置定时任务,每天自动领取。

🙏 感谢名单 (部分)

Alipay
*剑
**杰
**佑
**豪
**旸
**渔
**真
**刚
**刚
**亚
**成
*毅
**杰
*之
**旸
*硕
**杰
**宏
**鲁
*赟
*鹏
**杰
**恒
*鹏
**光**彬
**胜
**庭
**光
**杰
**俊
*森
*悦
*森
*剑
**亮
*伟
**飞
**骞
**旻
**锟
**锟
**锟
WeChat
z*g
*鸟
*鸟
*明
*妖
**昌
**昌
**昌
*济
*🧸
A*g
**昌
**昌
*信
**昌
*涛
J*k
*🍅
*🧸
F*sW
**昌
F*sW
**昌
*z
**昌
**昌
*🍃
w*x
*邱
G*n
*河
*己
*漏