From 2a45d806e2672cce1122025315ab11f31076f7ab Mon Sep 17 00:00:00 2001 From: Wang Han <416810799@qq.com> Date: Fri, 2 May 2025 14:14:15 +0800 Subject: [PATCH] Enable ALLOW_NON_PRELOADS_SYSTEM_SHAREDUIDS on U+ --- app/src/main/java/toolkit/coderstory/CorePatchForU.java | 6 ++++++ app/src/main/java/toolkit/coderstory/XposedHelper.java | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/app/src/main/java/toolkit/coderstory/CorePatchForU.java b/app/src/main/java/toolkit/coderstory/CorePatchForU.java index bf146e6..e7fc56d 100644 --- a/app/src/main/java/toolkit/coderstory/CorePatchForU.java +++ b/app/src/main/java/toolkit/coderstory/CorePatchForU.java @@ -21,6 +21,12 @@ public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) XposedBridge.log("E/" + MainHook.TAG + " deoptimizing failed" + Log.getStackTraceString(e)); } } + + // https://cs.android.com/android/platform/superproject/+/android-14.0.0_r60:frameworks/base/services/core/java/com/android/server/pm/ReconcilePackageUtils.java;l=61;bpv=1;bpt=0 + if (prefs.getBoolean("digestCreak", true) && prefs.getBoolean("sharedUser", false)) { + setStaticBooleanField(utilClass, "ALLOW_NON_PRELOADS_SYSTEM_SHAREDUIDS", true); + } + // ee11a9c (Rename AndroidPackageApi to AndroidPackage) findAndHookMethod("com.android.server.pm.PackageManagerServiceUtils", loadPackageParam.classLoader, "checkDowngrade", diff --git a/app/src/main/java/toolkit/coderstory/XposedHelper.java b/app/src/main/java/toolkit/coderstory/XposedHelper.java index dd64893..b63adcd 100644 --- a/app/src/main/java/toolkit/coderstory/XposedHelper.java +++ b/app/src/main/java/toolkit/coderstory/XposedHelper.java @@ -52,6 +52,15 @@ public void hookAllMethods(Class hookClass, String methodName, XC_MethodHook } } + public static void setStaticBooleanField(Class hookClass, String fieldName, boolean value) { + try { + XposedHelpers.setStaticBooleanField(hookClass, fieldName, value); + } catch (Throwable e) { + if (BuildConfig.DEBUG) + XposedBridge.log("E/" + MainHook.TAG + " " + Log.getStackTraceString(e)); + } + } + public static Class findClass(String className, ClassLoader classLoader) { try { return Class.forName(className, false, classLoader);