|
|
小米手机保活有效终结方法
- // ============================================================
- // 启动双频保活线程(完全自包含,最安全)
- // ============================================================
- console.log("🚀 启动双频保活线程...");
- // ----- AIWork 候选包名列表(自动探测,按顺序尝试) -----
- var AIWork包名列表 = ["com.autoapp.autoapp.apk", "io.aiwork", "com.aiwork", "aiwork"];
- var 保活包名 = "";
- var 保活线程 = new thread().runJsCode(function () {
- // ============================================================
- // 【线程内部】系统命令执行函数(自包含,不依赖外部)
- // ============================================================
- function 系统_取执行结果(cmd) {
- let 原始 = agent.shell(cmd + ' 2>/dev/null');
- let 文本 = String(原始);
- let start = 文本.indexOf('successMsg:');
- if (start === -1) return 文本.trim();
- start += 'successMsg:'.length;
- let end = 文本.indexOf(',errorMsg:', start);
- if (end === -1) end = 文本.length;
- return 文本.substring(start, end).trim();
- }
- // ============================================================
- // 【线程内部】探测存活的 AIWork 包名
- // ============================================================
- function 探测存活包名() {
- for (let i = 0; i < AIWork包名列表.length; i++) {
- let name = AIWork包名列表[i];
- let pid = 系统_取执行结果("pidof " + name).trim();
- if (pid && pid !== "") {
- console.log("🎯 探测到存活包名: " + name + " (pid=" + pid.split(' ')[0] + ")");
- return name;
- }
- }
- return "";
- }
- // ============================================================
- // 【线程内部】用 monkey 拉起所有 AIWork 候选包名
- // ============================================================
- function 拉起所有AIWork() {
- for (let i = 0; i < AIWork包名列表.length; i++) {
- let name = AIWork包名列表[i];
- console.log("🆙 尝试拉起: " + name);
- 系统_取执行结果('monkey -p ' + name + ' -c android.intent.category.LAUNCHER 1 2>/dev/null');
- }
- }
- // ============================================================
- // 【线程内部】核心保活函数(接收包名参数)
- // ============================================================
- function 小米8极致保活(包名) {
- if (!包名 || 包名.trim() === "") {
- console.log("❌ 未传入有效包名");
- return;
- }
- 包名 = 包名.trim();
- console.log("📱 保活目标包名: " + 包名);
- // 0. MIUI核心:禁用省电查杀引擎
- 系统_取执行结果("pm disable --user 0 com.miui.powerkeeper");
- 系统_取执行结果("pm disable --user 0 com.xiaomi.powerchecker");
- // 1. 内核级:双OOM优先级全量修改
- let cmd_oom = `
- pidof ${包名} | while read pid; do
- echo -17 > /proc/$pid/oom_adj 2>/dev/null
- echo -1000 > /proc/$pid/oom_score_adj 2>/dev/null
- chmod 444 /proc/$pid/oom_adj 2>/dev/null
- chmod 444 /proc/$pid/oom_score_adj 2>/dev/null
- ls /proc/$pid/task/ 2>/dev/null | while read tid; do
- echo -1000 > /proc/$pid/task/$tid/oom_score_adj 2>/dev/null
- done
- done
- `;
- 系统_取执行结果(cmd_oom);
- // 2. MIUI专属:剩余权限兜底
- 系统_取执行结果("cmd appops set " + 包名 + " MIUI_BACKGROUND_CHECK ignore");
- 系统_取执行结果("cmd appops set " + 包名 + " MIUI_START_MANAGER allow");
- 系统_取执行结果("settings put global miui_power_save_mode 0");
- // 3. 系统框架级:全量省电豁免
- 系统_取执行结果("cmd deviceidle disable deep");
- 系统_取执行结果("cmd deviceidle disable light");
- 系统_取执行结果("dumpsys deviceidle disable");
- 系统_取执行结果("settings put global device_idle_constants inactive_to=2592000000,sensing_to=2592000000,locating_to=2592000000");
- 系统_取执行结果("settings put global miui_device_idle_enabled 0");
- 系统_取执行结果("pm set-app-standby-bucket " + 包名 + " active");
- 系统_取执行结果("am set-inactive " + 包名 + " false");
- 系统_取执行结果("cmd appops set " + 包名 + " RUN_IN_BACKGROUND ignore");
- 系统_取执行结果("cmd appops set " + 包名 + " RUN_ANY_IN_BACKGROUND ignore");
- 系统_取执行结果("settings put global adaptive_battery_management_enabled 0");
- 系统_取执行结果("dumpsys deviceidle whitelist +" + 包名);
- 系统_取执行结果("settings put global battery_optimization_on 0");
- // 4. CPU唤醒锁(注释掉以省电)
- // 系统_取执行结果(`echo "mi8_keep_${包名}" > /sys/power/wake_lock 2>/dev/null`);
- 系统_取执行结果(`echo 0 > /sys/power/power_save 2>/dev/null`);
- // 5. LMK低内存杀手优化
- 系统_取执行结果(`
- echo '8192,10240,12288,14336,16384,20480' > /sys/module/lowmemorykiller/parameters/minfree 2>/dev/null
- `);
- console.log("⚡ 已执行:已禁用PowerKeeper + 内核双OOM + 全省电豁免 + LMK优化(WakeLock已注释)");
- // 6. 结果验证
- sleep.millisecond(毫秒 = 500);
- let pid = 系统_取执行结果("pidof " + 包名);
- if (pid && pid.trim() !== "") {
- pid = pid.trim().split(" ")[0];
- let score_adj = 系统_取执行结果("cat /proc/" + pid + "/oom_score_adj");
- let pk_state = 系统_取执行结果("pm list packages -d | grep powerkeeper");
- console.log("✅ 验证结果:");
- console.log(" oom_score_adj = " + (score_adj ? score_adj.trim() : "读取失败"));
- console.log(" PowerKeeper状态:" + (pk_state ? "已禁用" : "仍启用"));
- } else {
- console.log("⚠️ 未找到进程,包名 " + 包名 + " 可能不正确");
- }
- }
- // ============================================================
- // 【线程内部】初始化:先拉起所有候选,再锁定实际包名
- // ============================================================
- console.log("🔍 AIWork 候选包名: " + AIWork包名列表.join(" | "));
- 拉起所有AIWork();
- sleep.millisecond(毫秒 = 2000);
- 保活包名 = 探测存活包名();
- if (!保活包名) {
- console.log("⚠️ 初始探测未找到存活进程,使用第一个候选继续: " + AIWork包名列表[0]);
- 保活包名 = AIWork包名列表[0];
- } else {
- console.log("🔒 锁定保活目标包名: " + 保活包名);
- }
- // ----- 先执行一次全量设置(打底) -----
- try {
- 小米8极致保活(保活包名);
- } catch (e) {
- console.log("⚠️ 初始保活执行出错:" + e);
- }
- var 巡查计数 = 0;
- var 重新探测计数 = 0;
- var 心跳计数 = 0;
- console.log("🔁 主循环启动,每2秒巡查一次...");
- while (true) {
- try {
- // ===== 1. 轻量巡查(每2秒执行,只操作 /proc) =====
- let pidResult = 系统_取执行结果("pidof " + 保活包名).trim();
- if (pidResult && pidResult !== "") {
- // 进程存活:只刷新 oom_score_adj
- let pids = pidResult.split(' ');
- pids.forEach(p => {
- if (p) 系统_取执行结果('echo -1000 > /proc/' + p + '/oom_score_adj 2>/dev/null');
- });
- 心跳计数++;
- // 每5次巡查(10秒)输出一次心跳
- if (心跳计数 >= 5) {
- let now = new Date();
- let timeStr = now.toTimeString().split(' ')[0];
- console.log("💓 心跳[" + timeStr + "] AIWork存活 pid=" + pidResult.split(' ')[0] + " oom=-1000 已刷新 (巡查#" + 巡查计数 + ")");
- 心跳计数 = 0;
- }
- } else {
- // 进程死亡:先用 monkey 拉起当前包名
- console.log("💀 检测到进程死亡,尝试拉起所有 AIWork 包名...");
- 拉起所有AIWork();
- sleep.millisecond(毫秒 = 500);
- // 重新探测哪个包名活了
- let 新包名 = 探测存活包名();
- if (新包名) {
- if (新包名 !== 保活包名) {
- console.log("🔄 包名切换: " + 保活包名 + " → " + 新包名);
- 保活包名 = 新包名;
- }
- let newPid = 系统_取执行结果("pidof " + 保活包名).trim();
- newPid.split(' ').forEach(p => {
- if (p) 系统_取执行结果('echo -1000 > /proc/' + p + '/oom_score_adj 2>/dev/null');
- });
- console.log("✅ 已重生并锁定权限");
- } else {
- console.log("❌ 拉起失败,所有候选包名均无进程");
- }
- }
- // ===== 2. 巡查计数累加 =====
- 巡查计数++;
- 重新探测计数++;
- // ===== 3. 每 90 次巡查(2秒 × 90 = 180秒 = 3分钟)执行一次重型保活 =====
- if (巡查计数 >= 90) {
- console.log("🔄 【3分钟重保活】刷新系统省电设置...");
- try {
- 小米8极致保活(保活包名);
- } catch (e) {
- console.log("⚠️ 重保活执行出错:" + e);
- }
- 巡查计数 = 0;
- }
- // ===== 4. 每 150 次巡查(2秒 × 150 = 300秒 = 5分钟)重新探测一次包名 =====
- if (重新探测计数 >= 150) {
- let 探测结果 = 探测存活包名();
- if (探测结果 && 探测结果 !== 保活包名) {
- console.log("🔄 定时重探测:包名切换 " + 保活包名 + " → " + 探测结果);
- 保活包名 = 探测结果;
- }
- 重新探测计数 = 0;
- }
- } catch (e) {
- // 静默处理
- }
- // ===== 5. 循环间隔 2 秒 =====
- sleep.millisecond(毫秒 = 2000);
- }
- }, "小米8极致保活线程");
- console.log("✅ 双频保活线程已启动(AIWork多包名自动探测: " + AIWork包名列表.join(" / ") + ")");
复制代码
|
|