淘宝签到助手 为什么运行一分钟左右就退出了

HAMI_9463548377 · 3 小时前
第 1 条补充
·
3 小时前

没有任何退出的提醒,只能看到悬浮框退出了,而且没错误提示。有什么方法可以调试

回答

Hamibot AI
1
· 3 小时前

淘宝签到助手运行一分钟左右就退出,主要是因为手机系统的省电策略导致Hamibot被系统强制关闭。

Hamibot需要保持在后台持续运行才能完成签到任务,但大多数安卓手机系统会自动清理后台应用以节省电量。特别是MIUI、EMUI等定制系统,对后台应用的管理更为严格。

你需要进行以下设置确保Hamibot稳定运行:

  1. 开启自启动权限 - 在手机设置中找到Hamibot,开启自启动权限
  2. 关闭省电策略 - 在电池管理中将Hamibot设置为"不优化"或"无限制"
  3. 开启前台服务 - 在Hamibot设置中开启"前台服务"选项
  4. 开启悬浮窗权限 - 确保Hamibot有悬浮窗权限
  5. 不要锁定屏幕 - 运行脚本时保持屏幕常亮或不要锁定屏幕

以MIUI 12为例,具体操作路径:

  • 设置 > 应用设置 > 权限管理 > 自启动 > 开启Hamibot
  • 设置 > 电池与性能 > 应用配置 > Hamibot > 配置 > 选择"无限制"

完成这些设置后,Hamibot就能在后台稳定运行,不再被系统强制关闭。如果仍有问题,可以尝试重启手机后再运行脚本。


补充回答 1

这种情况通常是因为脚本被系统强制终止或脚本执行完毕自然结束,而没有留下明显的错误痕迹。以下是几种有效的调试方法:

1. 添加日志记录功能

将脚本运行的关键步骤记录到文件中,即使脚本被终止也能查看执行到哪一步:

// 文档地址 https://docs.hamibot.com/
var logFile = "/sdcard/Hamibot/log.txt";

function log(msg) {
    var date = new Date();
    var timeStr = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
    files.write(logFile, "[" + timeStr + "] " + msg + "\n", "a");
    toast(msg); // 同时显示toast方便实时查看
}

// 在关键位置添加日志
log("脚本开始运行");
log("初始化完成");

// 你的其他代码...

// 保持脚本运行
setInterval(function() {
    log("脚本仍在运行");
}, 10000); // 每10秒记录一次

2. 添加全局异常捕获

捕获未处理的异常并记录:

// 文档地址 https://docs.hamibot.com/
setGlobalExceptionHandler(function(e) {
    var errorMsg = "错误: " + e.name + "\n" + e.message + "\n" + e.stack;
    log("全局异常: " + errorMsg);
    toast("发生错误: " + e.message);
});

// 你的脚本代码...

3. 检查悬浮窗保持机制

确保你的脚本有保持运行的机制,没有这个机制脚本会执行完就退出:

// 文档地址 https://docs.hamibot.com/
// 创建悬浮窗后必须添加这个保持脚本运行
setInterval(function() {
    // 空函数,防止脚本退出
}, 1000);

4. 添加倒计时退出检测

在退出前显示倒计时,确认是否是系统强制终止:

// 文档地址 https://docs.hamibot.com/
// 在脚本开始处添加
var exitTimer = 60; // 60秒倒计时
var timer = setInterval(function() {
    exitTimer--;
    if(exitTimer <= 0) {
        clearInterval(timer);
        toast("脚本将在5秒后退出,请注意观察");
        setTimeout(function() {
            toast("脚本退出");
            hamibot.exit();
        }, 5000);
    } else {
        floatyWin.text.setText("运行中: " + exitTimer + "秒");
    }
}, 1000);

5. 检查是否意外调用了退出方法

检查代码中是否有以下可能导致退出的调用:

  • hamibot.exit()
  • exit()
  • 悬浮窗退出按钮的事件处理中是否有floatyWin.close()后没有保持脚本运行

6. 添加悬浮窗状态监控

实时显示脚本和悬浮窗状态:

// 文档地址 https://docs.hamibot.com/
var floatyWin = floaty.window(
    <frame>
        <text id="status" textSize="16sp" textColor="#FFFFFF" bg="#000000" />
    </frame>
);

setInterval(function() {
    floatyWin.status.setText("运行中 | " + new Date().toLocaleTimeString());
}, 1000);

// 必须保持脚本运行
setInterval(function() {}, 1000);

调试后查看/sdcard/Hamibot/log.txt文件,通常能发现脚本退出前的最后操作。如果日志显示脚本突然停止记录,很可能是被系统强制终止,需要进一步检查手机的电池优化设置。

ℹ️ 本回答由 AI 生成,内容仅供参考