Modify decoupling XposedHelpers.findClass to YukiHookHelper.findClass in ReflectionFactory and YukiBridgeFactory

This commit is contained in:
2022-08-23 21:14:57 +08:00
parent 28744cf32c
commit ded6b2b3b8
2 changed files with 13 additions and 2 deletions

View File

@@ -37,8 +37,8 @@ import com.highcapable.yukihookapi.hook.core.finder.MethodFinder
import com.highcapable.yukihookapi.hook.core.finder.type.ModifierRules
import com.highcapable.yukihookapi.hook.store.MemberCacheStore
import com.highcapable.yukihookapi.hook.xposed.bridge.YukiHookBridge
import com.highcapable.yukihookapi.hook.xposed.bridge.factory.YukiHookHelper
import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus
import de.robv.android.xposed.XposedHelpers
import java.lang.reflect.Constructor
import java.lang.reflect.Field
import java.lang.reflect.Member
@@ -85,7 +85,7 @@ fun classOf(name: String, loader: ClassLoader? = null): Class<*> {
return MemberCacheStore.findClass(hashCode) ?: run {
when {
YukiHookBridge.hasXposedBridge ->
runCatching { XposedHelpers.findClassIfExists(name, loader) }.getOrNull()
runCatching { YukiHookHelper.findClass(name, loader) }.getOrNull()
?: when (loader) {
null -> Class.forName(name)
else -> loader.loadClass(name)

View File

@@ -37,6 +37,7 @@ import com.highcapable.yukihookapi.hook.param.wrapper.HookParamWrapper
import com.highcapable.yukihookapi.hook.xposed.bridge.YukiHookBridge
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.XposedHelpers
import java.lang.reflect.Member
/**
@@ -70,6 +71,16 @@ internal object YukiHookedMembers {
*/
internal object YukiHookHelper {
/**
* 使用 [XposedHelpers.findClass] 来查找 [Class]
* @param name [Class] 的完整包名+名称
* @param loader [Class] 所在的 [ClassLoader] - 默认空 - 可不填
* @return [Class] or null
* @throws ClassNotFoundException 如果找不到 [Class]
*/
internal fun findClass(name: String, loader: ClassLoader? = null) =
if (YukiHookBridge.hasXposedBridge) XposedHelpers.findClass(name, loader) else null
/**
* Hook [BaseFinder.BaseResult]
* @param traction 直接调用 [BaseFinder.BaseResult]