From a2056db45e2a081e92319cc76873a5687f571e4e Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Thu, 5 Oct 2023 05:16:15 +0800 Subject: [PATCH] refactor: disable hook when got empty members and optimize some functions --- .../yukihookapi/hook/core/YukiMemberHookCreator.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt index 198ea3f3..76a5e9c4 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt @@ -98,7 +98,8 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit ): YukiMemberHookCreator.MemberHookCreator.Result { val creator = YukiMemberHookCreator(packageParam, HookClass.createPlaceholder()) - val result = creator.injectMember(priority) { if (members.isNotEmpty()) members(*members.toTypedArray()); apply(initiate) } + if (members.isEmpty()) return creator.createMemberHook(priority).build() + val result = creator.injectMember(priority) { members(*members.toTypedArray()); apply(initiate) } creator.hook() return result } @@ -181,7 +182,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa */ @LegacyHookApi inline fun injectMember(priority: YukiHookPriority = YukiHookPriority.DEFAULT, initiate: MemberHookCreator.() -> Unit) = - MemberHookCreator(priority).apply(initiate).apply { preHookMembers[toString()] = this }.build() + createMemberHook(priority).apply(initiate).apply { preHookMembers[toString()] = this }.build() /** * 注入要 Hook 的 [Method]、[Constructor] @@ -276,6 +277,13 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa } } + /** + * 创建 [MemberHookCreator] + * @param priority Hook 优先级 + * @return [MemberHookCreator] + */ + private fun createMemberHook(priority: YukiHookPriority) = MemberHookCreator(priority) + /** * Hook 核心功能实现类 * @@ -807,6 +815,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa * @param result 回调错误 * @return [Result] 可继续向下监听 */ + @LegacyHookApi fun onNoSuchMemberFailure(result: (Throwable) -> Unit): Result { onNoSuchMemberFailureCallback = result return this @@ -816,6 +825,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa * 忽略 [members] 不存在发生的错误 * @return [Result] 可继续向下监听 */ + @LegacyHookApi fun ignoredNoSuchMemberFailure() = onNoSuchMemberFailure {} /**