diff --git a/app/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java b/app/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java index 39ddb68..1c6fb8d 100644 --- a/app/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java +++ b/app/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java @@ -47,6 +47,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.function.BiConsumer; import java.util.zip.ZipFile; import de.robv.android.xposed.XC_MethodHook; @@ -161,7 +162,24 @@ public class LSPApplication extends ApplicationServiceClient { mPackages.remove(appInfo.packageName); appLoadedApk = activityThread.getPackageInfoNoCheck(appInfo, compatInfo); XposedHelpers.setObjectField(mBoundApplication, "info", appLoadedApk); - Log.i(TAG, "appClassLoader initialized: " + appLoadedApk.getClassLoader()); + + var activityClientRecordClass = XposedHelpers.findClass("android.app.ActivityThread$ActivityClientRecord", ActivityThread.class.getClassLoader()); + var fixActivityClientRecord = (BiConsumer)(k, v) -> { + if (activityClientRecordClass.isInstance(v)) { + var pkgInfo = XposedHelpers.getObjectField(v, "packageInfo"); + if (pkgInfo == stubLoadedApk) { + Log.d(TAG, "fix loadedapk from ActivityClientRecord"); + XposedHelpers.setObjectField(v, "packageInfo", appLoadedApk); + } + } + }; + var mActivities = (Map) XposedHelpers.getObjectField(activityThread, "mActivities"); + mActivities.forEach(fixActivityClientRecord); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + var mLaunchingActivities = (Map) XposedHelpers.getObjectField(activityThread, "mLaunchingActivities"); + mLaunchingActivities.forEach(fixActivityClientRecord); + } + Log.i(TAG, "hooked app initialized: " + appLoadedApk); return (Context) XposedHelpers.callStaticMethod(Class.forName("android.app.ContextImpl"), "createAppContext", activityThread, stubLoadedApk); } catch (Throwable e) { diff --git a/build.gradle b/build.gradle index 935b6ab..727e5ff 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.1.0-beta02' + classpath 'com.android.tools.build:gradle:7.0.3' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31' } } diff --git a/core b/core index c205f8a..d1098f0 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit c205f8a2c9d2f207b2ce6de14d0054f5220a0b10 +Subproject commit d1098f04abbcc2a91ef211055c60c1a992b899d1