fix: throw null receiver when singleton is null on Android 9 (#112)

This commit is contained in:
Hd
2025-08-25 19:42:57 +08:00
committed by GitHub
parent 59c4b9870b
commit a82de55694

View File

@@ -216,7 +216,7 @@ internal object AppParasitics {
if (isClassLoaderHooked) return if (isClassLoaderHooked) return
val loadClass = ClassLoader::class.resolve() val loadClass = ClassLoader::class.resolve()
.optional(silent = true) .optional(silent = true)
.firstMethodOrNull { .firstMethodOrNull {
name = "loadClass" name = "loadClass"
parameters(String::class, Boolean::class) parameters(String::class, Boolean::class)
} }
@@ -509,16 +509,18 @@ internal object AppParasitics {
?.optional(silent = true) ?.optional(silent = true)
?.firstFieldOrNull { name = "IActivityTaskManagerSingleton" } ?.firstFieldOrNull { name = "IActivityTaskManagerSingleton" }
?.get() ?.get()
SingletonClass.resolve() singleton?.let {
.processor(AndroidHiddenApiBypassResolver.get()) SingletonClass.resolve()
.optional(silent = true) .processor(AndroidHiddenApiBypassResolver.get())
.firstMethodOrNull { name = "get" } .optional(silent = true)
?.of(singleton) .firstMethodOrNull { name = "get" }
?.invokeQuietly() ?.of(singleton)
val mInstanceResolver2 = mInstanceResolver?.copy()?.of(singleton) ?.invokeQuietly()
val mInstance2 = mInstanceResolver2?.get() val mInstanceResolver2 = mInstanceResolver?.copy()?.of(singleton)
mInstance2?.let { val mInstance2 = mInstanceResolver2?.get()
mInstanceResolver2.set(IActivityManagerProxyImpl.createWrapper(IActivityTaskManagerClass, it)) mInstance2?.let {
mInstanceResolver2.set(IActivityManagerProxyImpl.createWrapper(IActivityTaskManagerClass, it))
}
} }
isActivityProxyRegistered = true isActivityProxyRegistered = true
}.onFailure { YLog.innerE("Activity Proxy initialization failed because got an exception", it) } }.onFailure { YLog.innerE("Activity Proxy initialization failed because got an exception", it) }