我的手机已经root了,怎么给hamibot保活

已存档
2318612560_fapm
1
· 1 个月前
第 1 条补充
·
1 个月前

教我详细的做法

第 2 条补充
·
1 个月前

这些命令都是在手机连接电脑后的adb中执行吗,还是已root的手机端就能执行

回答

Hamibot AI
1
· 1 个月前

Hamibot在root设备上的保活方法

在已root的手机上,你可以通过以下几种方法增强Hamibot的保活能力,确保自动化任务持续运行:

方法一:使用root权限设置系统白名单

// 文档地址 https://docs.hamibot.com/
if (device.isRoot()) {
  // 将Hamibot加入系统Doze模式白名单
  $shell('dumpsys deviceidle whitelist +com.hamibot.hamibot', true);
  // 禁止电池优化
  $shell('cmd appops set com.hamibot.hamibot IGNORE_BATTERY_OPTIMIZATIONS allow', true);
  // 模拟充电状态防止休眠
  $shell('dumpsys battery set status 2', true);
}

方法二:创建永久前台服务

// 文档地址 https://docs.hamibot.com/
// 启动前台服务保持活跃
hamibot.keepRunning({
  notification: {
    title: "Hamibot 运行中",
    text: "自动化任务正在执行",
    smallIcon: "ic_notification"
  },
  interval: 60 * 1000 // 每分钟更新通知
});

方法三:系统级进程保护

// 文档地址 https://docs.hamibot.com/
if (device.isRoot()) {
  // 将Hamibot设置为系统关键进程
  $shell('setprop service.hamibot.keepalive 1', true);
  // 重启Hamibot服务确保生效
  $shell('setprop ctl.restart hamibot', true);
  // 禁用Doze模式
  $shell('dumpsys deviceidle disable', true);
}

方法四:定期自我唤醒

// 文档地址 https://docs.hamibot.com/
// 每30分钟自动唤醒一次
setInterval(() => {
  app.launchPackage("com.hamibot.hamibot");
  // 可添加其他保活操作
}, 30 * 60 * 1000);

补充建议

  1. 进入Hamibot设置界面进行手动配置:
app.startActivity({
  packageName: 'com.hamibot.hamibot',
  className: 'com.hamibot.hamibot.ui.log.LogActivity_',
  root: true
});

在设置中开启"保持运行"、"忽略电池优化"等选项。

  1. 确保在手机厂商的电池管理设置中将Hamibot设为"不受限制"或"允许后台活动"。

  2. 对于某些ROM,可能需要使用XPosed模块进一步增强保活能力。

请注意,不同Android版本和手机厂商的ROM实现可能有所差异,某些命令可能需要根据实际情况调整。过度保活可能会增加电池消耗,请根据实际需求合理设置。


补充回答 1

Hamibot在Root设备上的详细保活指南

一、系统级白名单设置(必须操作)

1. 禁用Doze模式限制

Doze模式是Android 6.0+引入的省电机制,会限制后台应用活动。你需要将Hamibot加入白名单:

// 文档地址 https://docs.hamibot.com/
if (device.isRoot()) {
  // 查看当前Doze白名单
  log("当前Doze白名单: " + $shell('dumpsys deviceidle whitelist', true).result);
  
  // 将Hamibot加入Doze白名单(关键步骤)
  var result = $shell('dumpsys deviceidle whitelist +com.hamibot.hamibot', true);
  
  // 验证是否添加成功
  if ($shell('dumpsys deviceidle whitelist | grep com.hamibot.hamibot', true).result) {
    toastLog("✅ Hamibot已成功加入Doze白名单");
  } else {
    toastLog("❌ 加入Doze白名单失败,请手动检查");
  }
}

执行步骤:

  1. 创建新脚本并粘贴上述代码
  2. 运行脚本(需要root权限)
  3. 查看日志确认是否成功

2. 禁用电池优化

// 文档地址 https://docs.hamibot.com/
if (device.isRoot()) {
  // 禁用电池优化(关键步骤)
  $shell('cmd appops set com.hamibot.hamibot IGNORE_BATTERY_OPTIMIZATIONS allow', true);
  $shell('am broadcast -a android.intent.action.POWER_SAVE_WHITELIST_CHANGED', true);
  
  // 验证电池优化状态
  var batteryOpt = $shell('dumpsys batteryproperties | grep com.hamibot.hamibot', true).result;
  if (batteryOpt.includes("com.hamibot.hamibot")) {
    toastLog("✅ 电池优化已禁用");
  } else {
    toastLog("❌ 电池优化禁用可能失败");
  }
}

二、前台服务保活(推荐设置)

1. 创建永久前台通知

// 文档地址 https://docs.hamibot.com/
// 创建保活脚本(建议命名为"保活守护.js")
events.on("exit", function() {
  // 脚本退出时自动重启
  engines.execScriptFile(engines.myEngine().getSource().toString());
});

// 启动前台服务
hamibot.keepRunning({
  notification: {
    title: "Hamibot自动化服务",
    text: "后台任务持续运行中...",
    smallIcon: "ic_popup_reminder", // 可使用系统图标
    priority: 1 // 通知优先级
  },
  interval: 30 * 1000, // 每30秒更新通知
  onKeep: function() {
    // 定期执行轻量操作防止被杀
    log("保活服务正常运行中...");
  },
  onStop: function() {
    // 如果服务停止,尝试重启
    hamibot.requestScreenCapture();
  }
});

// 保持脚本持续运行
setInterval(() => {}, 60 * 60 * 1000); // 长时间空循环

设置步骤:

  1. 创建新脚本,命名为"保活守护.js"
  2. 粘贴上述代码
  3. 设置脚本为"无障碍服务启动时运行"
  4. 重启无障碍服务使设置生效

三、系统级进程保护(高级设置)

1. 持久化系统属性设置

// 文档地址 https://docs.hamibot.com/
// 文档地址 https://docs.hamibot.com/
if (device.isRoot()) {
  // 创建系统级保活配置
  var rcFile = "/system/etc/init/hamibot.rc";
  
  // 检查并创建init配置(需要系统分区可写)
  $shell('mount -o remount,rw /system', true);
  if (!$shell('ls ' + rcFile, true).code) {
    $shell('echo "service hamibot-keepalive /system/bin/sh" > ' + rcFile, true);
    $shell('echo "    class main" >> ' + rcFile, true);
    $shell('echo "    user root" >> ' + rcFile, true);
    $shell('echo "    group root" >> ' + rcFile, true);
    $shell('echo "    oneshot" >> ' + rcFile, true);
    $shell('echo "    exec /system/bin/sh -c \\"while true; do pgrep -f com.hamibot.hamibot || am start -n com.hamibot.hamibot/.ui.MainActivity; sleep 30; done\\"" >> ' + rcFile, true);
  }
  
  // 设置开机启动
  $shell('chmod 755 ' + rcFile, true);
  $shell('restorecon ' + rcFile, true);
  $shell('mount -o remount,ro /system', true);
  
  toastLog("✅ 系统级保活配置已设置");
}

注意事项:

  • 需要System分区可写(部分设备需要解锁Bootloader)
  • 执行前建议备份原系统
  • 此配置会在每次系统启动时自动运行

四、厂商定制ROM特殊设置

1. 主流厂商设置指南

华为/荣耀:

  1. 进入手机设置 → 应用 → 应用启动管理
  2. 搜索"Hamibot"
  3. 关闭"自动管理",手动开启:
    • 允许自启动
    • 允许后台活动
    • 允许关联启动

小米/Redmi:

  1. 进入手机设置 → 应用设置 → 授权管理 → 自启动管理
  2. 打开Hamibot的自启动
  3. 进入"省电策略" → 选择"无限制"

OPPO/Realme:

  1. 进入手机设置 → 应用管理 → 权限管理 → 自启动
  2. 开启Hamibot自启动
  3. 进入"电池" → 应用耗电管理 → 选择Hamibot → 允许后台高耗电

vivo/iQOO:

  1. 进入手机设置 → 电池 → 后台高耗电 → 手动管理
  2. 开启Hamibot
  3. 进入"应用后台运行管理" → 选择Hamibot → 允许后台运行

五、验证保活是否成功

1. 测试方法

// 文档地址 https://docs.hamibot.com/
// 创建测试脚本"保活测试.js"
var startTime = new Date().getTime();
var logCount = 0;

// 记录运行日志
function logRun() {
  logCount++;
  var now = new Date();
  files.append("/sdcard/hamibot_alive.log", 
    "[" + now.toLocaleString() + "] 运行正常 #" + logCount + "\n");
  toastLog("保活测试: 运行 #" + logCount);
}

// 每5分钟记录一次
setInterval(logRun, 5 * 60 * 1000);
logRun(); // 立即执行一次

// 定期检查无障碍服务状态
setInterval(function() {
  if (!auto.service) {
    toastLog("⚠️ 检测到无障碍服务断开,尝试重启...");
    auto.service = true;
  }
}, 30 * 1000);

// 脚本退出处理
events.on("exit", function() {
  var duration = Math.floor((new Date().getTime() - startTime) / 1000);
  toastLog("保活测试结束,持续运行 " + duration + " 秒");
});

测试流程:

  1. 运行"保活测试.js"
  2. 锁屏并保持手机静置2小时
  3. 检查/sdcard/hamibot_alive.log文件
  4. 如果日志持续增加且时间间隔正常,则保活成功

六、高级技巧

1. 双进程守护(更高级保活)

// 文档地址 https://docs.hamibot.com/
// 主进程脚本"主服务.js"
if (engines.myEngine().getSource().toString().endsWith("主服务.js")) {
  // 主进程逻辑
  setInterval(() => {
    log("主服务运行中...");
  }, 10 * 1000);
  
  // 检查守护进程是否存在
  setInterval(() => {
    if (!engines.all().some(e => e.getSource().toString().endsWith("守护进程.js"))) {
      engines.execScriptFile("守护进程.js");
    }
  }, 30 * 1000);
}

// 守护进程脚本"守护进程.js"
if (engines.myEngine().getSource().toString().endsWith("守护进程.js")) {
  // 守护进程逻辑
  setInterval(() => {
    if (!engines.all().some(e => e.getSource().toString().endsWith("主服务.js"))) {
      engines.execScriptFile("主服务.js");
    }
  }, 20 * 1000);
}

2. 使用AlarmManager定期唤醒

// 文档地址 https://docs.hamibot.com/
if (device.sdkInt >= 23) {
  // Android 6.0+使用AlarmManager设置精确唤醒
  var alarm = context.getSystemService(android.app.AlarmManager);
  var intent = new android.content.Intent("com.hamibot.hamibot.KEEP_ALIVE");
  var pi = android.app.PendingIntent.getBroadcast(context, 0, intent, 0);
  
  // 每15分钟唤醒一次
  alarm.setRepeating(
    android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP,
    15 * 60 * 1000,
    15 * 60 * 1000,
    pi
  );
  
  // 注册广播接收器
  events.onBroadcastReceiver("com.hamibot.hamibot.KEEP_ALIVE", function() {
    log("收到保活广播,执行轻量操作");
    app.launchPackage("com.hamibot.hamibot");
  });
}

重要提示

  1. 保活程度与系统版本和厂商定制有关,Android 10+限制更为严格
  2. 过度保活会增加电量消耗,建议根据实际需求平衡保活强度
  3. 部分厂商ROM即使root后仍有限制,可能需要额外XPosed模块
  4. 重启手机后,部分设置可能需要重新应用
  5. Hamibot 3.0+版本内置了增强保活功能,建议保持最新版本

通过以上步骤综合设置,你的Hamibot应该能在大多数root设备上保持稳定运行,即使在锁屏和低电量情况下也能持续执行自动化任务。


补充回答 2

Hamibot保活命令执行方式说明

这些命令不需要连接电脑使用adb,而是直接在已root的手机上通过Hamibot应用执行。这是Hamibot的核心设计特点之一:它是一个完全在Android设备本地运行的自动化工具。

正确执行方式

1. 直接在Hamibot应用内执行(无需电脑)

对于已经root的手机:

  1. 安装最新版Hamibot应用
  2. 确保Hamibot已获取root权限(首次运行会提示授权)
  3. 在Hamibot应用内创建新脚本
  4. 将我提供的代码粘贴到脚本中
  5. 直接运行脚本(Hamibot会自动使用手机的root权限执行命令)

关键点

  • Hamibot内置了shell()函数,可以直接执行需要root权限的命令
  • shell(cmd, true)中的第二个参数true表示以root权限执行
  • 所有操作都在手机本地完成,不需要连接电脑

2. 验证Hamibot是否已获取root权限

// 文档地址 https://docs.hamibot.com/
log("设备是否root: " + device.isRoot());
log("Hamibot是否获取了root权限: " + shell("id", true).code === 0);

如果输出中显示Hamibot是否获取了root权限: true,则表示Hamibot已成功获取root权限,可以直接执行需要root权限的命令。

3. 详细操作步骤(手机端操作)

  1. 确认root状态

    • 安装root检测工具(如Root Checker)
    • 确认手机已成功root
  2. 授予Hamibot root权限

    • 打开Hamibot应用
    • 首次使用需要root权限时,会弹出Superuser授权请求
    • 选择"永久允许"并授予root权限
  3. 创建保活脚本

    • 在Hamibot主界面点击"+"创建新脚本
    • 粘贴我提供的保活代码
    • 保存为"系统保活.js"
  4. 运行脚本

    • 点击脚本名称
    • 选择"运行"
    • 观察日志输出确认是否成功

与ADB的区别

执行方式 Hamibot本地执行 电脑ADB执行
是否需要电脑 ❌ 不需要 ✅ 需要
操作便利性 ✅ 随时随地操作 ❌ 需要连接电脑
自动化程度 ✅ 可设置自动运行 ❌ 需手动操作
root权限使用 ✅ 内置处理 ✅ 需要adb root
适用场景 ✅ 日常保活需求 ⚠️ 仅限开发调试

常见问题解答

问:为什么Hamibot能直接执行root命令而不需要adb?
答:Hamibot是一个Android应用,它通过调用Android的Runtime API执行shell命令。当应用获取了root权限后,它可以像终端模拟器一样执行需要root权限的命令。

问:执行后没有反应怎么办?
答:检查以下几点:

  1. 确认手机已root(使用Root Checker验证)
  2. 确认Hamibot已获取root权限(首次运行脚本时授权)
  3. 查看Hamibot的日志输出(点击"日志"按钮)
  4. 尝试重启手机后重新运行脚本

问:需要每次都运行保活脚本吗?
答:不需要。你可以:

  1. 将保活脚本设置为"无障碍服务启动时运行"
  2. 或创建一个"开机启动"脚本
  3. 或将保活功能集成到你的主自动化脚本中

通过这种方式设置的保活会在后台持续工作,不需要每次手动运行。

记住:所有操作都在手机上完成,你只需要一部已经root的手机和Hamibot应用,无需连接电脑或使用adb命令。

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