回答
脚本运行后立刻结束,通常由以下两类原因导致。即使你确认已授予权限,仍需按以下逻辑逐一排查:
1. 权限被系统限制或自动回收
Android 系统(尤其是国产定制 ROM)会在后台清理、重置或限制权限。请重点核对以下三项:
- 无障碍服务:进入手机「设置」→「无障碍」→ 确认 Hamibot 服务处于开启状态。部分手机在清理内存、重启或省电模式下会自动关闭该服务,需手动重新开启。
- 后台弹出界面/悬浮窗:在「应用管理」→ Hamibot → 权限管理中明确开启。
- 电池优化与后台限制:将 Hamibot 加入电池白名单,允许自启动、后台活动和关联启动。否则系统会直接终止进程,导致脚本瞬间退出。
详细权限配置指南可参考:https://hamibot.cn/faq
2. 脚本逻辑执行完毕自然退出(最常见)
Hamibot 的脚本基于同步执行模型。如果你的代码中没有阻塞操作(如循环、定时器、事件监听或等待 UI 元素),主线程会瞬间执行完所有语句并正常退出,控制台会提示“运行结束”。
错误示例(会立刻结束):
// 文档地址 https://docs.hamibot.com/
console.log('开始运行');
click(100, 100);
console.log('执行完毕');
// 无阻塞代码,脚本直接退出
解决方法:根据任务类型添加保持运行的逻辑。
- 需要持续轮询或定时执行:
// 文档地址 https://docs.hamibot.com/
console.log('脚本启动');
setInterval(function() {
console.log('执行中...');
// 你的自动化逻辑
}, 2000);
- 需要等待特定界面或元素:
// 文档地址 https://docs.hamibot.com/
auto();
console.log('等待目标页面');
waitForActivity('com.example.TargetActivity');
console.log('已进入目标页面');
// 后续操作
3. 静默报错导致进程终止
如果脚本存在语法错误、调用了未定义的 API 或触发了未捕获的异常,Rhino 引擎会直接终止运行。建议:
- 在 Hamibot 控制台查看完整日志,确认是否有红色错误堆栈。
- 在脚本外层包裹异常捕获,避免静默退出:
// 文档地址 https://docs.hamibot.com/
try {
// 你的核心代码
console.log('脚本正常运行');
} catch (e) {
console.error('脚本异常终止:' + e);
}
排查建议
- 先运行一个最简阻塞脚本(如
setInterval示例),确认是否仍会立刻结束。若不会,说明是原脚本逻辑问题。 - 若最简脚本也立刻结束,说明权限或系统后台限制未真正生效,请严格按照 FAQ 教程重新配置并锁定后台。
- 提供你的核心代码片段和控制台完整日志,我会帮你进一步定位。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实