diff --git a/app/build.gradle b/app/build.gradle index 6c45efc..74e5675 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,8 +30,8 @@ android { //noinspection OldTargetApi targetSdk 33 //noinspection HighAppVersionCode - versionCode 2023082406 - versionName "3.3" + versionCode 2023082601 + versionName "3.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.release diff --git a/app/src/main/java/Com/HChen/Hook/HookName/SystemName.java b/app/src/main/java/Com/HChen/Hook/HookName/SystemName.java index 704cbf2..2153902 100644 --- a/app/src/main/java/Com/HChen/Hook/HookName/SystemName.java +++ b/app/src/main/java/Com/HChen/Hook/HookName/SystemName.java @@ -6,6 +6,7 @@ public final class SystemName { public static final String performIdleMaintenance = "performIdleMaintenance"; public static final String getAppStartModeLOSP = "getAppStartModeLOSP"; public static final String killAppIfBgRestrictedAndCachedIdleLocked = "killAppIfBgRestrictedAndCachedIdleLocked"; + public static final String updateBackgroundRestrictedForUidPackageLocked = "updateBackgroundRestrictedForUidPackageLocked"; public static final String runKillAll = "runKillAll"; public static final String shouldKillExcessiveProcesses = "shouldKillExcessiveProcesses"; public static final String updateAndTrimProcessLSP = "updateAndTrimProcessLSP"; @@ -13,6 +14,8 @@ public final class SystemName { public static final String trimInactiveRecentTasks = "trimInactiveRecentTasks"; public static final String isInVisibleRange = "isInVisibleRange"; public static final String run = "run"; + public static final String killPids = "killPids"; + public static final String killAllBackgroundProcesses = "killAllBackgroundProcesses"; public static final String getDefaultMaxCachedProcesses = "getDefaultMaxCachedProcesses"; public static final String updateMaxCachedProcesses = "updateMaxCachedProcesses"; public static final String updateKillBgRestrictedCachedIdle = "updateKillBgRestrictedCachedIdle"; diff --git a/app/src/main/java/Com/HChen/Hook/HookValue/MiuiValue.java b/app/src/main/java/Com/HChen/Hook/HookValue/MiuiValue.java index 345097d..c847898 100644 --- a/app/src/main/java/Com/HChen/Hook/HookValue/MiuiValue.java +++ b/app/src/main/java/Com/HChen/Hook/HookValue/MiuiValue.java @@ -15,4 +15,6 @@ public final class MiuiValue { public static final String MiuiMemReclaimer = "com.android.server.am.MiuiMemReclaimer"; /*MiuiFramework*/ public static final String ProcessManager = "miui.process.ProcessManager"; + public static final String PressureStateSettings = "android.os.spc.PressureStateSettings"; + } diff --git a/app/src/main/java/Com/HChen/Hook/MiuiFramework/PowerKeeper.java b/app/src/main/java/Com/HChen/Hook/MiuiFramework/PowerKeeper.java index ec11079..4dfe7dd 100644 --- a/app/src/main/java/Com/HChen/Hook/MiuiFramework/PowerKeeper.java +++ b/app/src/main/java/Com/HChen/Hook/MiuiFramework/PowerKeeper.java @@ -19,5 +19,15 @@ protected void before(XC_MethodHook.MethodHookParam param) { } } ); + + findAndHookConstructor(PressureStateSettings, + new HookAction() { + @Override + protected void after(MethodHookParam param) { + setLog(PressureStateSettings, "PROCESS_CLEANER_ENABLED"); + setBoolean(param.thisObject, "PROCESS_CLEANER_ENABLED", false); + } + } + ); } } diff --git a/app/src/main/java/Com/HChen/Hook/SystemService/SystemService.java b/app/src/main/java/Com/HChen/Hook/SystemService/SystemService.java index 8b760ed..4f5df4a 100644 --- a/app/src/main/java/Com/HChen/Hook/SystemService/SystemService.java +++ b/app/src/main/java/Com/HChen/Hook/SystemService/SystemService.java @@ -24,19 +24,20 @@ protected void before(XC_MethodHook.MethodHookParam param) { } );// - /*禁用killPids_此方法牵扯过多且不适合Hook。方法可用于处理表面内存不足的情况,但这是合理的*/ - /*findAndHookMethod("com.android.server.am.ActivityManagerService", - "killPids", int[].class, String.class, boolean.class, + /*禁用killPids_根据adj计算最差类型pid并kill + X此方法牵扯过多且不适合Hook。方法可用于处理表面内存不足的情况,但这是合理的X*/ + findAndHookMethod(ActivityManagerService, + killPids, int[].class, String.class, boolean.class, new HookAction() { @Override protected void before(XC_MethodHook.MethodHookParam param) { - logSI("Hook killPids"); + setLog(ActivityManagerService, killPids); param.setResult(true); } } - );*/ + ); - /*禁止killProcessesBelowForeground*/ + /*禁止killProcessesBelowForeground_和下面重复*/ /*findAndHookMethod("com.android.server.am.ActivityManagerService", "killProcessesBelowForeground", String.class, new HookAction() { @@ -60,6 +61,18 @@ protected void before(XC_MethodHook.MethodHookParam param) { } ); + /*禁止清理全部后台*/ + findAndHookMethod(ActivityManagerService, + killAllBackgroundProcesses, + new HookAction() { + @Override + protected void before(MethodHookParam param) { + setLog(ActivityManagerService, killAllBackgroundProcesses); + param.setResult(null); + } + } + ); + /*禁止清理空进程_空进程不包含任何活动,清理是合理的*/ /*findAndHookMethod("com.android.server.am.ActivityManagerService", "trimApplicationsLocked", boolean.class, String.class, @@ -83,8 +96,8 @@ protected void before(XC_MethodHook.MethodHookParam param) { } ); - /*关闭后台服务限制*/ - findAndHookMethod(ActivityManagerService, + /*关闭后台服务限制_可能导致后台异常*/ + /*findAndHookMethod(ActivityManagerService, getAppStartModeLOSP, int.class, String.class, int.class, int.class, boolean.class, boolean.class, boolean.class, String.class, new HookAction() { @Override @@ -93,9 +106,9 @@ protected void before(XC_MethodHook.MethodHookParam param) { param.setResult(0); } } - ); + );*/ - /*禁止停止后台空闲服务_与getAppStartModeLOSP的Hook重复*/ + /*禁止停止后台空闲服务_与getAppStartModeLOSP的Hook重复_不适合存活的service应该杀掉*/ /* findAndHookMethod("com.android.server.am.ActiveServices", "stopInBackgroundLocked", int.class, new HookAction() { @@ -119,6 +132,19 @@ protected void before(XC_MethodHook.MethodHookParam param) { } ); + /*去除受限限制*/ + findAndHookMethod(ProcessList, + updateBackgroundRestrictedForUidPackageLocked, + int.class, String.class, boolean.class, + new HookAction() { + @Override + protected void before(MethodHookParam param) { + setLog(ProcessList, updateBackgroundRestrictedForUidPackageLocked); + param.args[2] = false; + } + } + ); + /*禁止使用命令停止全部活动*/ hookAllMethods(ActivityManagerShellCommand, runKillAll,