From 755341094a5b39a88554dd425bd585a689b3d8db Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Mon, 16 May 2022 10:06:47 +0800 Subject: [PATCH] Changed "PackageParam.isHookParamCallback" to "HookParam.isCallbackCalled" --- .../yukihookapi/hook/core/YukiMemberHookCreater.kt | 10 +++++----- .../highcapable/yukihookapi/hook/param/HookParam.kt | 11 +++++++++++ .../yukihookapi/hook/param/PackageParam.kt | 3 --- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreater.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreater.kt index 3abc6481..59eb3496 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreater.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreater.kt @@ -111,8 +111,8 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara @PublishedApi internal fun hook(): Result { if (YukiHookBridge.hasXposedBridge.not()) return Result() - /** 过滤 [HookEntryType.ZYGOTE] 与 [HookEntryType.PACKAGE] 或 [PackageParam.isHookParamCallback] 已被执行 */ - if (packageParam.wrapper?.type == HookEntryType.RESOURCES && packageParam.isHookParamCallback.not()) return Result() + /** 过滤 [HookEntryType.ZYGOTE] 与 [HookEntryType.PACKAGE] 或 [HookParam.isCallbackCalled] 已被执行 */ + if (packageParam.wrapper?.type == HookEntryType.RESOURCES && HookParam.isCallbackCalled.not()) return Result() return if (preHookMembers.isEmpty()) error("Hook Members is empty, hook aborted") else Result().also { Thread { @@ -472,7 +472,7 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara beforeHookCallback?.invoke(param) if (beforeHookCallback != null) onHookLogMsg(msg = "Before Hook Member [${member ?: "All of \"$allMethodsName\""}] done [$tag]") - packageParam.isHookParamCallback = true + HookParam.invoke() }.onFailure { onConductFailureCallback?.invoke(param, it) onAllFailureCallback?.invoke(it) @@ -487,7 +487,7 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara afterHookCallback?.invoke(param) if (afterHookCallback != null) onHookLogMsg(msg = "After Hook Member [${member ?: "All of \"$allMethodsName\""}] done [$tag]") - packageParam.isHookParamCallback = true + HookParam.invoke() }.onFailure { onConductFailureCallback?.invoke(param, it) onAllFailureCallback?.invoke(it) @@ -504,7 +504,7 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara YukiHookBridge.Hooker.hookMethod(member, replaceMent)?.also { onHookedCallback?.invoke(it) } ?: error("Hook Member [$member] failed") else YukiHookBridge.Hooker.hookMethod(member, beforeAfterHook)?.also { onHookedCallback?.invoke(it) } - ?: error("Hook Member [$member] failed")).run { packageParam.isHookParamCallback = true } + ?: error("Hook Member [$member] failed")).run { HookParam.invoke() } }.onFailure { onHookingFailureCallback?.invoke(it) onAllFailureCallback?.invoke(it) diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt index 51057a52..b721b378 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt @@ -42,6 +42,17 @@ import java.lang.reflect.Method */ class HookParam(private val createrInstance: YukiMemberHookCreater, private var wrapper: HookParamWrapper? = null) { + internal companion object { + + /** [HookParam] 是否已经执行首次回调事件 */ + internal var isCallbackCalled = false + + /** 设置 [HookParam] 执行首次回调事件 */ + internal fun invoke() { + isCallbackCalled = true + } + } + /** * 在回调中设置 [HookParam] 使用的 [HookParamWrapper] * @param wrapper [HookParamWrapper] 实例 diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/PackageParam.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/PackageParam.kt index e3c964d2..4b448d37 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/PackageParam.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/PackageParam.kt @@ -56,9 +56,6 @@ import com.highcapable.yukihookapi.hook.xposed.prefs.YukiHookModulePrefs */ open class PackageParam(@PublishedApi internal var wrapper: PackageParamWrapper? = null) { - /** [HookParam] 是否已经执行回调事件 */ - internal var isHookParamCallback = false - /** * 用于展示的 APP 包名 * @return [String]