回答
脚本无法运行通常是因为代码语法与 Hamibot 的 Rhino 1.7.15 引擎不兼容,或者缺少必要的函数定义。你之前提供的代码片段存在几个关键问题:
主要问题分析
- 变量声明错误:使用了
let和const,引擎不支持,必须改用var。 - 箭头函数:使用了
() => {},这是 ES6 语法,Rhino 引擎不支持,需改为标准function() {}。 - 函数未定义:
loopWait、getAllControls、findText不是 Hamibot 内置标准函数,会导致报错。 - 代码不完整:脚本末尾被截断(
cli),导致解析失败。 - UI 线程冲突:在后台线程操作 UI 元素可能导致崩溃,需确保 UI 更新在主线程执行。
修正后的代码示例
以下是符合 Hamibot 规范的修复版本,你可以直接复制使用:
// 文档地址 https://docs.hamibot.com/
auto();
toast("脚本运行中");
// 配置区
var running = true;
var packageName = "com.kuaishou.nebula";
// 创建悬浮窗
var win = floaty.rawWindow(
<frame gravity="center" bg="#44000000" radius="20" padding="12 8">
<text id="status" text="运行中" textColor="#ffffff" textSize="14sp"/>
</frame>
);
win.setPosition(10, 600);
// 按钮点击事件
win.status.setOnTouchListener(function(view, event) {
if (event.getAction() == 1) { // 触摸抬起
running = !running;
ui.run(function() {
win.status.setText(running ? "运行中" : "已暂停");
});
toast(running ? "继续" : "已暂停");
}
return true;
});
// 启动应用
launch(packageName);
sleep(3000);
// 主循环
while (true) {
if (!running) {
sleep(1000);
continue;
}
// 查找目标按钮
var btn = text("观看完整短剧").findOne(5000);
if (btn) {
btn.click();
toast("点击成功");
sleep(3000);
} else {
log("未找到按钮,等待重试");
sleep(2000);
}
}
运行前检查清单
- 权限开启:确保手机已授予「无障碍服务」、「悬浮窗」及「截图」权限。
- 包名确认:检查
packageName是否正确,快手极速版通常是com.kuaishou.lite,普通版是com.kuaishou.nebula。 - 保存格式:确保代码保存为
.js文件,且没有多余的特殊字符。 - 网络环境:部分功能需要网络连接才能正常加载界面。
如果修改后仍无法运行,请在控制台查看日志中的具体报错信息,以便进一步定位问题。详细的技术文档可参考:https://docs.hamibot.com/
ℹ️ 内容由 AI 生成,可能不准确,请注意核实