小米手机保活有效终结方法

402

主题

193

回帖

2507

积分

管理员

积分
2507
小米手机保活有效终结方法

1.png

2.png

3.png

4.png

  1. // ============================================================
  2. //  启动双频保活线程(完全自包含,最安全)
  3. // ============================================================
  4. console.log("🚀 启动双频保活线程...");

  5. // ----- AIWork 候选包名列表(自动探测,按顺序尝试) -----
  6. var AIWork包名列表 = ["com.autoapp.autoapp.apk", "io.aiwork", "com.aiwork", "aiwork"];
  7. var 保活包名 = "";

  8. var 保活线程 = new thread().runJsCode(function () {
  9.    // ============================================================
  10.    //  【线程内部】系统命令执行函数(自包含,不依赖外部)
  11.    // ============================================================
  12.    function 系统_取执行结果(cmd) {
  13.       let 原始 = agent.shell(cmd + ' 2>/dev/null');
  14.       let 文本 = String(原始);
  15.       let start = 文本.indexOf('successMsg:');
  16.       if (start === -1) return 文本.trim();
  17.       start += 'successMsg:'.length;
  18.       let end = 文本.indexOf(',errorMsg:', start);
  19.       if (end === -1) end = 文本.length;
  20.       return 文本.substring(start, end).trim();
  21.    }

  22.    // ============================================================
  23.    //  【线程内部】探测存活的 AIWork 包名
  24.    // ============================================================
  25.    function 探测存活包名() {
  26.       for (let i = 0; i < AIWork包名列表.length; i++) {
  27.          let name = AIWork包名列表[i];
  28.          let pid = 系统_取执行结果("pidof " + name).trim();
  29.          if (pid && pid !== "") {
  30.             console.log("🎯 探测到存活包名: " + name + " (pid=" + pid.split(' ')[0] + ")");
  31.             return name;
  32.          }
  33.       }
  34.       return "";
  35.    }

  36.    // ============================================================
  37.    //  【线程内部】用 monkey 拉起所有 AIWork 候选包名
  38.    // ============================================================
  39.    function 拉起所有AIWork() {
  40.       for (let i = 0; i < AIWork包名列表.length; i++) {
  41.          let name = AIWork包名列表[i];
  42.          console.log("🆙 尝试拉起: " + name);
  43.          系统_取执行结果('monkey -p ' + name + ' -c android.intent.category.LAUNCHER 1 2>/dev/null');
  44.       }
  45.    }

  46.    // ============================================================
  47.    //  【线程内部】核心保活函数(接收包名参数)
  48.    // ============================================================
  49.    function 小米8极致保活(包名) {
  50.       if (!包名 || 包名.trim() === "") {
  51.          console.log("❌ 未传入有效包名");
  52.          return;
  53.       }
  54.       包名 = 包名.trim();
  55.       console.log("📱 保活目标包名: " + 包名);

  56.       // 0. MIUI核心:禁用省电查杀引擎
  57.       系统_取执行结果("pm disable --user 0 com.miui.powerkeeper");
  58.       系统_取执行结果("pm disable --user 0 com.xiaomi.powerchecker");

  59.       // 1. 内核级:双OOM优先级全量修改
  60.       let cmd_oom = `
  61.          pidof ${包名} | while read pid; do
  62.              echo -17 > /proc/$pid/oom_adj 2>/dev/null
  63.              echo -1000 > /proc/$pid/oom_score_adj 2>/dev/null
  64.              chmod 444 /proc/$pid/oom_adj 2>/dev/null
  65.              chmod 444 /proc/$pid/oom_score_adj 2>/dev/null
  66.              ls /proc/$pid/task/ 2>/dev/null | while read tid; do
  67.                  echo -1000 > /proc/$pid/task/$tid/oom_score_adj 2>/dev/null
  68.              done
  69.          done
  70.          `;
  71.       系统_取执行结果(cmd_oom);

  72.       // 2. MIUI专属:剩余权限兜底
  73.       系统_取执行结果("cmd appops set " + 包名 + " MIUI_BACKGROUND_CHECK ignore");
  74.       系统_取执行结果("cmd appops set " + 包名 + " MIUI_START_MANAGER allow");
  75.       系统_取执行结果("settings put global miui_power_save_mode 0");

  76.       // 3. 系统框架级:全量省电豁免
  77.       系统_取执行结果("cmd deviceidle disable deep");
  78.       系统_取执行结果("cmd deviceidle disable light");
  79.       系统_取执行结果("dumpsys deviceidle disable");
  80.       系统_取执行结果("settings put global device_idle_constants inactive_to=2592000000,sensing_to=2592000000,locating_to=2592000000");
  81.       系统_取执行结果("settings put global miui_device_idle_enabled 0");

  82.       系统_取执行结果("pm set-app-standby-bucket " + 包名 + " active");
  83.       系统_取执行结果("am set-inactive " + 包名 + " false");
  84.       系统_取执行结果("cmd appops set " + 包名 + " RUN_IN_BACKGROUND ignore");
  85.       系统_取执行结果("cmd appops set " + 包名 + " RUN_ANY_IN_BACKGROUND ignore");

  86.       系统_取执行结果("settings put global adaptive_battery_management_enabled 0");
  87.       系统_取执行结果("dumpsys deviceidle whitelist +" + 包名);
  88.       系统_取执行结果("settings put global battery_optimization_on 0");

  89.       // 4. CPU唤醒锁(注释掉以省电)
  90.       // 系统_取执行结果(`echo "mi8_keep_${包名}" > /sys/power/wake_lock 2>/dev/null`);
  91.       系统_取执行结果(`echo 0 > /sys/power/power_save 2>/dev/null`);

  92.       // 5. LMK低内存杀手优化
  93.       系统_取执行结果(`
  94.          echo '8192,10240,12288,14336,16384,20480' > /sys/module/lowmemorykiller/parameters/minfree 2>/dev/null
  95.          `);

  96.       console.log("⚡ 已执行:已禁用PowerKeeper + 内核双OOM + 全省电豁免 + LMK优化(WakeLock已注释)");

  97.       // 6. 结果验证
  98.       sleep.millisecond(毫秒 = 500);
  99.       let pid = 系统_取执行结果("pidof " + 包名);
  100.       if (pid && pid.trim() !== "") {
  101.          pid = pid.trim().split(" ")[0];
  102.          let score_adj = 系统_取执行结果("cat /proc/" + pid + "/oom_score_adj");
  103.          let pk_state = 系统_取执行结果("pm list packages -d | grep powerkeeper");

  104.          console.log("✅ 验证结果:");
  105.          console.log("   oom_score_adj = " + (score_adj ? score_adj.trim() : "读取失败"));
  106.          console.log("   PowerKeeper状态:" + (pk_state ? "已禁用" : "仍启用"));
  107.       } else {
  108.          console.log("⚠️ 未找到进程,包名 " + 包名 + " 可能不正确");
  109.       }
  110.    }

  111.    // ============================================================
  112.    //  【线程内部】初始化:先拉起所有候选,再锁定实际包名
  113.    // ============================================================
  114.    console.log("🔍 AIWork 候选包名: " + AIWork包名列表.join(" | "));
  115.    拉起所有AIWork();
  116.    sleep.millisecond(毫秒 = 2000);

  117.    保活包名 = 探测存活包名();
  118.    if (!保活包名) {
  119.       console.log("⚠️ 初始探测未找到存活进程,使用第一个候选继续: " + AIWork包名列表[0]);
  120.       保活包名 = AIWork包名列表[0];
  121.    } else {
  122.       console.log("🔒 锁定保活目标包名: " + 保活包名);
  123.    }

  124.    // ----- 先执行一次全量设置(打底) -----
  125.    try {
  126.       小米8极致保活(保活包名);
  127.    } catch (e) {
  128.       console.log("⚠️ 初始保活执行出错:" + e);
  129.    }

  130.    var 巡查计数 = 0;
  131.    var 重新探测计数 = 0;
  132.    var 心跳计数 = 0;

  133.    console.log("🔁 主循环启动,每2秒巡查一次...");

  134.    while (true) {
  135.       try {
  136.          // ===== 1. 轻量巡查(每2秒执行,只操作 /proc) =====
  137.          let pidResult = 系统_取执行结果("pidof " + 保活包名).trim();
  138.          if (pidResult && pidResult !== "") {
  139.             // 进程存活:只刷新 oom_score_adj
  140.             let pids = pidResult.split(' ');
  141.             pids.forEach(p => {
  142.                if (p) 系统_取执行结果('echo -1000 > /proc/' + p + '/oom_score_adj 2>/dev/null');
  143.             });
  144.             心跳计数++;
  145.             // 每5次巡查(10秒)输出一次心跳
  146.             if (心跳计数 >= 5) {
  147.                let now = new Date();
  148.                let timeStr = now.toTimeString().split(' ')[0];
  149.                console.log("💓 心跳[" + timeStr + "] AIWork存活 pid=" + pidResult.split(' ')[0] + " oom=-1000 已刷新 (巡查#" + 巡查计数 + ")");
  150.                心跳计数 = 0;
  151.             }
  152.          } else {
  153.             // 进程死亡:先用 monkey 拉起当前包名
  154.             console.log("💀 检测到进程死亡,尝试拉起所有 AIWork 包名...");
  155.             拉起所有AIWork();

  156.             sleep.millisecond(毫秒 = 500);

  157.             // 重新探测哪个包名活了
  158.             let 新包名 = 探测存活包名();
  159.             if (新包名) {
  160.                if (新包名 !== 保活包名) {
  161.                   console.log("🔄 包名切换: " + 保活包名 + " → " + 新包名);
  162.                   保活包名 = 新包名;
  163.                }
  164.                let newPid = 系统_取执行结果("pidof " + 保活包名).trim();
  165.                newPid.split(' ').forEach(p => {
  166.                   if (p) 系统_取执行结果('echo -1000 > /proc/' + p + '/oom_score_adj 2>/dev/null');
  167.                });
  168.                console.log("✅ 已重生并锁定权限");
  169.             } else {
  170.                console.log("❌ 拉起失败,所有候选包名均无进程");
  171.             }
  172.          }

  173.          // ===== 2. 巡查计数累加 =====
  174.          巡查计数++;
  175.          重新探测计数++;

  176.          // ===== 3. 每 90 次巡查(2秒 × 90 = 180秒 = 3分钟)执行一次重型保活 =====
  177.          if (巡查计数 >= 90) {
  178.             console.log("🔄 【3分钟重保活】刷新系统省电设置...");
  179.             try {
  180.                小米8极致保活(保活包名);
  181.             } catch (e) {
  182.                console.log("⚠️ 重保活执行出错:" + e);
  183.             }
  184.             巡查计数 = 0;
  185.          }

  186.          // ===== 4. 每 150 次巡查(2秒 × 150 = 300秒 = 5分钟)重新探测一次包名 =====
  187.          if (重新探测计数 >= 150) {
  188.             let 探测结果 = 探测存活包名();
  189.             if (探测结果 && 探测结果 !== 保活包名) {
  190.                console.log("🔄 定时重探测:包名切换 " + 保活包名 + " → " + 探测结果);
  191.                保活包名 = 探测结果;
  192.             }
  193.             重新探测计数 = 0;
  194.          }

  195.       } catch (e) {
  196.          // 静默处理
  197.       }

  198.       // ===== 5. 循环间隔 2 秒 =====
  199.       sleep.millisecond(毫秒 = 2000);
  200.    }

  201. }, "小米8极致保活线程");

  202. console.log("✅ 双频保活线程已启动(AIWork多包名自动探测: " + AIWork包名列表.join(" / ") + ")");
复制代码


举报 回复