回答
在 Hamibot 中进行脚本开发时,如果遇到程序崩溃或运行失败的情况,你可以通过以下几种方式进行调试和查看日志:
1. 使用 console.log 输出调试信息
你可以在代码的关键位置使用 log() 或 console.log() 打印变量值、执行流程等信息。这些日志会显示在 Hamibot 的控制台中。
// 文档地址 https://docs.hamibot.com/
log("脚本开始执行");
var x = 100;
log("x 的值是: " + x);
2. 查看运行日志
Hamibot 会自动记录每个脚本的运行日志。你可以在应用内找到【日志】页面,点击对应的脚本运行记录,查看详细的输出内容,包括 log 打印的信息和错误堆栈。
- 如果脚本崩溃,通常会在日志中看到 JavaScript 错误(如
TypeError,ReferenceError)以及出错的行号。 - 未捕获的异常会导致脚本终止,因此建议使用
try...catch包裹关键代码段来捕获并记录错误。
// 文档地址 https://docs.hamibot.com/
try {
// 可能出错的代码
auto.waitFor();
click("登录");
} catch (e) {
log("发生错误: " + e.message, "ERROR");
log("错误堆栈: " + e.stack, "ERROR");
}
3. 启用本地日志持久化
为了防止因应用重启或崩溃导致日志丢失,你可以将日志写入手机存储文件中。结合 files 模块实现日志持久化。
// 文档地址 https://docs.hamibot.com/
const LOG_FILE = './logs/debug.log';
if (!files.exists('./logs')) {
files.ensureDir('./logs');
}
function writeLog(msg) {
var time = new Date().toLocaleString();
var line = `[${time}] ${msg}\n`;
files.append(LOG_FILE, line);
console.log(line.trim());
}
writeLog("启动自动化任务");
这样即使 Hamibot 崩溃,你也能在手机的 /Hamibot/logs/ 目录下找到日志文件进行分析。
4. 使用 console.setGlobalLogConfig 统一管理日志输出
你可以配置全局日志行为,把所有 log 输出自动保存到指定文件。
// 文档地址 https://docs.hamibot.com/
console.setGlobalLogConfig({
file: '/sdcard/hamibot_log.txt',
maxFileSize: 1024 * 1024, // 最大 1MB
maxBackupSize: 3,
rootLevel: 'DEBUG'
});
5. 避免常见导致崩溃的问题
- 确保 UI 操作前已启动无障碍服务:调用
auto.waitFor()等待无障碍服务就绪。 - 避免空对象操作:在访问对象属性前判断是否为
null或undefined。 - 多线程安全:如果你使用了
threads.start(),注意共享数据的访问需加锁或使用原子变量(threads.atomic())。
总结
当脚本运行失败时:
- 先打开 Hamibot 内建的日志查看器,检查是否有报错信息;
- 在关键路径添加
log输出,定位问题发生的位置; - 使用
try...catch捕获异常; - 开启文件日志持久化,便于事后排查。
如果你仍然无法定位问题,可以导出完整的日志文件,并发送邮件至 support@hamibot.cn 获取技术支持。
ℹ️ 本回答由 AI 生成,内容仅供参考