From 7d2dc3c268cc97d4c09c9d1f990433c55255e408 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Tue, 3 Oct 2023 04:16:25 +0800 Subject: [PATCH] docs: update api docs --- .../hook/core/YukiMemberHookCreator.md | 190 +++--------------- .../yukihookapi/hook/param/HookParam.md | 39 ++-- .../yukihookapi/hook/param/PackageParam.md | 81 ++++---- .../hook/core/YukiMemberHookCreator.md | 190 +++--------------- .../yukihookapi/hook/param/HookParam.md | 39 ++-- .../yukihookapi/hook/param/PackageParam.md | 80 ++++---- 6 files changed, 185 insertions(+), 434 deletions(-) diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md index aad42df5..9a0cc885 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md @@ -238,36 +238,6 @@ fun members(vararg member: Member?) ::: -**Function Example** - -你可以调用 `instanceClass` 来手动查找要 Hook 的 `Method`、`Constructor`。 - -> The following example - -```kotlin -injectMember { - members(instanceClass.getDeclaredMethod("test", StringClass)) - beforeHook {} - afterHook {} -} -``` - -同样地,你也可以传入一组 `Member` 同时进行 Hook。 - -> The following example - -```kotlin -injectMember { - members( - instanceClass.getDeclaredMethod("test1", StringClass), - instanceClass.getDeclaredMethod("test2", StringClass), - instanceClass.getDeclaredMethod("test3", StringClass) - ) - beforeHook {} - afterHook {} -} -``` -

allMethods - method

**Change Records** @@ -324,48 +294,7 @@ inline fun method(initiate: MethodConditions): MethodFinder.Result **Function Illustrate** -> 查找当前 `Class` 需要 Hook 的 `Method` 。 - -**Function Example** - -你可参考 [MethodFinder](finder/members/MethodFinder) 查看详细用法。 - -> The following example - -```kotlin -injectMember { - method { - name = "test" - param(StringClass) - returnType = UnitType - } - beforeHook {} - afterHook {} -} -``` - -若想 Hook 当前查找 `method { ... }` 条件的全部结果,你只需要在最后加入 `all` 即可。 - -> The following example - -```kotlin -injectMember { - method { - name = "test" - paramCount(1..5) - }.all() - beforeHook {} - afterHook {} -} -``` - -此时 `beforeHook` 与 `afterHook` 会在每个查找到的结果中多次回调 Hook 方法体。 - -::: warning - -若没有 **all**,默认只会 Hook 当前条件查找到的数组下标结果第一位。 - -::: +> 查找当前 `Class` 需要 Hook 的 `Method`。 ### constructor - method @@ -385,40 +314,6 @@ inline fun constructor(initiate: ConstructorConditions): ConstructorFinder.Resul > 查找当前 `Class` 需要 Hook 的 `Constructor`。 -**Function Example** - -你可参考 [ConstructorFinder](finder/members/ConstructorFinder) 查看详细用法。 - -> The following example - -```kotlin -injectMember { - constructor { param(StringClass) } - beforeHook {} - afterHook {} -} -``` - -若想 Hook 当前查找 `constructor { ... }` 条件的全部结果,你只需要在最后加入 `all` 即可。 - -> The following example - -```kotlin -injectMember { - constructor { paramCount(1..5) }.all() - beforeHook {} - afterHook {} -} -``` - -此时 `beforeHook` 与 `afterHook` 会在每个查找到的结果中多次回调 Hook 方法体。 - -::: warning - -若没有 **all**,默认只会 Hook 当前条件查找到的数组下标结果第一位。 - -::: - ### HookParam.field - i-ext-method ```kotlin:no-line-numbers @@ -437,29 +332,6 @@ inline fun HookParam.field(initiate: FieldConditions): FieldFinder.Result > 使用当前 `hookClass` 查找并得到 `Field`。 -**Function Example** - -你可参考 [FieldFinder](finder/members/FieldFinder) 查看详细用法。 - -> The following example - -```kotlin -injectMember { - method { - name = "test" - param(StringClass) - returnType = UnitType - } - afterHook { - // 这里不需要再调用 instanceClass.field 进行查找 - field { - name = "isSweet" - type = BooleanType - }.get(instance).setTrue() - } -} -``` - ### HookParam.method - i-ext-method ```kotlin:no-line-numbers @@ -510,41 +382,61 @@ inline fun HookParam.injectMember(priority: Int, tag: String, initiate: MemberHo > 注入要 Hook 的 `Method`、`Constructor` (嵌套 Hook)。 -### beforeHook - method +### before - method ```kotlin:no-line-numbers -fun beforeHook(initiate: HookParam.() -> Unit): HookCallback +fun before(initiate: HookParam.() -> Unit): HookCallback ``` **Change Records** -`v1.0` `first` - -`v1.1.0` `modified` - -新增 `HookCallback` 返回类型 +`v1.2.0` `added` **Function Illustrate** > 在 `Member` 执行完成前 Hook。 -### afterHook - method +### after - method ```kotlin:no-line-numbers -fun afterHook(initiate: HookParam.() -> Unit): HookCallback +fun after(initiate: HookParam.() -> Unit): HookCallback ``` **Change Records** +`v1.2.0` `added` + +**Function Illustrate** + +> 在 `Member` 执行完成后 Hook。 + +

beforeHook - method

+ +**Change Records** + `v1.0` `first` `v1.1.0` `modified` 新增 `HookCallback` 返回类型 -**Function Illustrate** +`v1.2.0` `deprecated` -> 在 `Member` 执行完成后 Hook。 +请迁移到 `before` + +

afterHook - method

+ +**Change Records** + +`v1.0` `first` + +`v1.1.0` `modified` + +新增 `HookCallback` 返回类型 + +`v1.2.0` `deprecated` + +请迁移到 `after` ### replaceAny - method @@ -734,24 +626,6 @@ inline fun result(initiate: Result.() -> Unit): Result > 创建监听失败事件方法体。 -**Function Example** - -你可以使用此方法为 `Result` 类创建 **lambda** 方法体。 - -> The following example - -```kotlin -injectMember { - // Your code here. -}.result { - onHooked {} - onAlreadyHooked {} - ignoredConductFailure() - onHookingFailure {} - // ... -} -``` - #### by - method ```kotlin:no-line-numbers diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md index 9b6cdfee..a5c7ec20 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md @@ -252,7 +252,7 @@ fun Throwable.throwToApp() 使用 `throwable` 获取当前设置的方法调用抛出异常。 -仅会在回调方法的 `MemberHookCreator.beforeHook` 或 `MemberHookCreator.afterHook` 中生效。 +仅会在回调方法的 `MemberHookCreator.before` 或 `MemberHookCreator.after` 中生效。 ::: danger @@ -269,11 +269,8 @@ Hook 过程中的异常仅会作用于 (Xposed) 宿主环境,目标 Hook APP > The following example ```kotlin -injectMember { - method { - // ... - } - beforeHook { +hook { + before { RuntimeException("Test Exception").throwToApp() } } @@ -483,20 +480,19 @@ fun callOriginal(): T? 此方法可以 `invoke` 原始未经 Hook 的 `Member` 对象,取决于原始 `Member` 的参数。 -调用自身原始的方法不会再经过当前 `beforeHook`、`afterHook` 以及 `replaceUnit`、`replaceAny`。 +调用自身原始的方法不会再经过当前 `before`、`after` 以及 `replaceUnit`、`replaceAny`。 比如我们 Hook 的这个方法被这样调用 `test("test value")`,使用此方法会调用其中的 `"test value"` 作为参数。 > The following example ```kotlin -injectMember { - method { - name = "test" - param(StringClass) - returnType = StringClass - } - afterHook { +method { + name = "test" + param(StringClass) + returnType = StringClass +}.hook { + after { // <方案1> 不使用泛型,不获取方法执行结果,调用将使用原方法传入的 args 自动传参 callOriginal() // <方案2> 使用泛型,已知方法执行结果参数类型进行 cast @@ -534,20 +530,19 @@ fun invokeOriginal(vararg args: Any?): T? 此方法可以 `invoke` 原始未经 Hook 的 `Member` 对象,可自定义需要调用的参数内容。 -调用自身原始的方法不会再经过当前 `beforeHook`、`afterHook` 以及 `replaceUnit`、`replaceAny`。 +调用自身原始的方法不会再经过当前 `before`、`after` 以及 `replaceUnit`、`replaceAny`。 比如我们 Hook 的这个方法被这样调用 `test("test value")`,使用此方法可自定义其中的 `args` 作为参数。 > The following example ```kotlin -injectMember { - method { - name = "test" - param(StringClass) - returnType = StringClass - } - afterHook { +method { + name = "test" + param(StringClass) + returnType = StringClass +}.hook { + after { // <方案1> 不使用泛型,不获取方法执行结果 invokeOriginal("test value") // <方案2> 使用泛型,已知方法执行结果参数类型进行 cast,假设返回值为 String,失败会返回 null diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md index 77cea0cd..bb553e03 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md @@ -9,6 +9,7 @@ The English translation of this page has not been completed, you are welcome to You can use the **Chrome Translation Plugin** to translate entire pages for reference. ::: + --- pageClass: code-page --- @@ -878,54 +879,60 @@ inline fun HookClass.hook(initiate: YukiMemberHookCreator.() -> Unit): YukiMembe **Function Illustrate** -> 这是一切 Hook 的入口创建方法,Hook 方法、构造方法。 +> Hook 方法、构造方法。 -**Function Example** +## Member+BaseFinder.BaseResult.hook - i-ext-method -如你所见,Hook 方法体的创建可使用 2 种方式。 - -使用 `String.toClass(...)` 得到 `Class` 实例进行创建。 - -> The following example - -```kotlin -"com.example.demo.DemoClass".toClass().hook { - // Your code here. -} +```kotlin:no-line-numbers +inline fun Member.hook(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result ``` -使用 `stub` 或直接拿到 `Class` 实例进行创建。 - -默认情况下 API 会将 `Class` 实例转换为类名并绑定到 `appClassLoader`,若失败,则会使用原始 `Class` 实例直接进行 Hook。 - -> The following example - -```kotlin -Stub::class.java.hook { - // Your code here. -} +```kotlin:no-line-numbers +inline fun BaseFinder.BaseResult.hook(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result ``` -若当前 `Class` 不在 `appClassLoader` 且自动匹配无法找到该 `Class`,请启用 `isForceUseAbsolute`。 +**Change Records** -> The following example +`v1.2.0` `added` -```kotlin -YourClass::class.java.hook(isForceUseAbsolute = true) { - // Your code here. -} +**Function Illustrate** + +> 直接 Hook 方法、构造方法。 + +::: warning + +此功能尚在试验阶段,在 1.x.x 版本将暂定于此,在 2.x.x 版本将完全合并到新 API。 + +::: + +## Array<Member>+List<Member>+BaseFinder.BaseResult.hookAll - i-ext-method + +```kotlin:no-line-numbers +inline fun Array.hookAll(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result ``` -使用 `VariousClass` 实例进行创建。 - -> The following example - -```kotlin -VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").hook { - // Your code here. -} +```kotlin:no-line-numbers +inline fun List.hookAll(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result ``` +```kotlin:no-line-numbers +inline fun BaseFinder.BaseResult.hookAll(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result +``` + +**Change Records** + +`v1.2.0` `added` + +**Function Illustrate** + +> 直接 Hook 方法、构造方法 (批量)。 + +::: warning + +此功能尚在试验阶段,在 1.x.x 版本将暂定于此,在 2.x.x 版本将完全合并到新 API。 + +::: + ## HookResources.hook - i-ext-method ```kotlin:no-line-numbers @@ -942,7 +949,7 @@ inline fun HookResources.hook(initiate: YukiResourcesHookCreator.() -> Unit) ::: danger -请注意你需要确保当前 Hook Framework 支持且 **InjectYukiHookWithXposed.isUsingResourcesHook** 已启用。 +此功能将不再默认启用,如需启用,请手动设置 **InjectYukiHookWithXposed.isUsingResourcesHook**。 ::: diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md index 2ff99f5e..c224dcfe 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md @@ -230,36 +230,6 @@ fun members(vararg member: Member?) ::: -**功能示例** - -你可以调用 `instanceClass` 来手动查找要 Hook 的 `Method`、`Constructor`。 - -> 示例如下 - -```kotlin -injectMember { - members(instanceClass.getDeclaredMethod("test", StringClass)) - beforeHook {} - afterHook {} -} -``` - -同样地,你也可以传入一组 `Member` 同时进行 Hook。 - -> 示例如下 - -```kotlin -injectMember { - members( - instanceClass.getDeclaredMethod("test1", StringClass), - instanceClass.getDeclaredMethod("test2", StringClass), - instanceClass.getDeclaredMethod("test3", StringClass) - ) - beforeHook {} - afterHook {} -} -``` -

allMethods - method

**变更记录** @@ -316,48 +286,7 @@ inline fun method(initiate: MethodConditions): MethodFinder.Result **功能描述** -> 查找当前 `Class` 需要 Hook 的 `Method` 。 - -**功能示例** - -你可参考 [MethodFinder](finder/members/MethodFinder) 查看详细用法。 - -> 示例如下 - -```kotlin -injectMember { - method { - name = "test" - param(StringClass) - returnType = UnitType - } - beforeHook {} - afterHook {} -} -``` - -若想 Hook 当前查找 `method { ... }` 条件的全部结果,你只需要在最后加入 `all` 即可。 - -> 示例如下 - -```kotlin -injectMember { - method { - name = "test" - paramCount(1..5) - }.all() - beforeHook {} - afterHook {} -} -``` - -此时 `beforeHook` 与 `afterHook` 会在每个查找到的结果中多次回调 Hook 方法体。 - -::: warning - -若没有 **all**,默认只会 Hook 当前条件查找到的数组下标结果第一位。 - -::: +> 查找当前 `Class` 需要 Hook 的 `Method`。 ### constructor - method @@ -377,40 +306,6 @@ inline fun constructor(initiate: ConstructorConditions): ConstructorFinder.Resul > 查找当前 `Class` 需要 Hook 的 `Constructor`。 -**功能示例** - -你可参考 [ConstructorFinder](finder/members/ConstructorFinder) 查看详细用法。 - -> 示例如下 - -```kotlin -injectMember { - constructor { param(StringClass) } - beforeHook {} - afterHook {} -} -``` - -若想 Hook 当前查找 `constructor { ... }` 条件的全部结果,你只需要在最后加入 `all` 即可。 - -> 示例如下 - -```kotlin -injectMember { - constructor { paramCount(1..5) }.all() - beforeHook {} - afterHook {} -} -``` - -此时 `beforeHook` 与 `afterHook` 会在每个查找到的结果中多次回调 Hook 方法体。 - -::: warning - -若没有 **all**,默认只会 Hook 当前条件查找到的数组下标结果第一位。 - -::: - ### HookParam.field - i-ext-method ```kotlin:no-line-numbers @@ -429,29 +324,6 @@ inline fun HookParam.field(initiate: FieldConditions): FieldFinder.Result > 使用当前 `hookClass` 查找并得到 `Field`。 -**功能示例** - -你可参考 [FieldFinder](finder/members/FieldFinder) 查看详细用法。 - -> 示例如下 - -```kotlin -injectMember { - method { - name = "test" - param(StringClass) - returnType = UnitType - } - afterHook { - // 这里不需要再调用 instanceClass.field 进行查找 - field { - name = "isSweet" - type = BooleanType - }.get(instance).setTrue() - } -} -``` - ### HookParam.method - i-ext-method ```kotlin:no-line-numbers @@ -502,41 +374,61 @@ inline fun HookParam.injectMember(priority: Int, tag: String, initiate: MemberHo > 注入要 Hook 的 `Method`、`Constructor` (嵌套 Hook)。 -### beforeHook - method +### before - method ```kotlin:no-line-numbers -fun beforeHook(initiate: HookParam.() -> Unit): HookCallback +fun before(initiate: HookParam.() -> Unit): HookCallback ``` **变更记录** -`v1.0` `添加` - -`v1.1.0` `修改` - -新增 `HookCallback` 返回类型 +`v1.2.0` `新增` **功能描述** > 在 `Member` 执行完成前 Hook。 -### afterHook - method +### after - method ```kotlin:no-line-numbers -fun afterHook(initiate: HookParam.() -> Unit): HookCallback +fun after(initiate: HookParam.() -> Unit): HookCallback ``` **变更记录** +`v1.2.0` `新增` + +**功能描述** + +> 在 `Member` 执行完成后 Hook。 + +

beforeHook - method

+ +**变更记录** + `v1.0` `添加` `v1.1.0` `修改` 新增 `HookCallback` 返回类型 -**功能描述** +`v1.2.0` `作废` -> 在 `Member` 执行完成后 Hook。 +请迁移到 `before` + +

afterHook - method

+ +**变更记录** + +`v1.0` `添加` + +`v1.1.0` `修改` + +新增 `HookCallback` 返回类型 + +`v1.2.0` `作废` + +请迁移到 `after` ### replaceAny - method @@ -726,24 +618,6 @@ inline fun result(initiate: Result.() -> Unit): Result > 创建监听失败事件方法体。 -**功能示例** - -你可以使用此方法为 `Result` 类创建 **lambda** 方法体。 - -> 示例如下 - -```kotlin -injectMember { - // Your code here. -}.result { - onHooked {} - onAlreadyHooked {} - ignoredConductFailure() - onHookingFailure {} - // ... -} -``` - #### by - method ```kotlin:no-line-numbers diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md index 6d61f654..15c56e7c 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md @@ -244,7 +244,7 @@ fun Throwable.throwToApp() 使用 `throwable` 获取当前设置的方法调用抛出异常。 -仅会在回调方法的 `MemberHookCreator.beforeHook` 或 `MemberHookCreator.afterHook` 中生效。 +仅会在回调方法的 `MemberHookCreator.before` 或 `MemberHookCreator.after` 中生效。 ::: danger @@ -261,11 +261,8 @@ Hook 过程中的异常仅会作用于 (Xposed) 宿主环境,目标 Hook APP > 示例如下 ```kotlin -injectMember { - method { - // ... - } - beforeHook { +hook { + before { RuntimeException("Test Exception").throwToApp() } } @@ -475,20 +472,19 @@ fun callOriginal(): T? 此方法可以 `invoke` 原始未经 Hook 的 `Member` 对象,取决于原始 `Member` 的参数。 -调用自身原始的方法不会再经过当前 `beforeHook`、`afterHook` 以及 `replaceUnit`、`replaceAny`。 +调用自身原始的方法不会再经过当前 `before`、`after` 以及 `replaceUnit`、`replaceAny`。 比如我们 Hook 的这个方法被这样调用 `test("test value")`,使用此方法会调用其中的 `"test value"` 作为参数。 > 示例如下 ```kotlin -injectMember { - method { - name = "test" - param(StringClass) - returnType = StringClass - } - afterHook { +method { + name = "test" + param(StringClass) + returnType = StringClass +}.hook { + after { // <方案1> 不使用泛型,不获取方法执行结果,调用将使用原方法传入的 args 自动传参 callOriginal() // <方案2> 使用泛型,已知方法执行结果参数类型进行 cast @@ -526,20 +522,19 @@ fun invokeOriginal(vararg args: Any?): T? 此方法可以 `invoke` 原始未经 Hook 的 `Member` 对象,可自定义需要调用的参数内容。 -调用自身原始的方法不会再经过当前 `beforeHook`、`afterHook` 以及 `replaceUnit`、`replaceAny`。 +调用自身原始的方法不会再经过当前 `before`、`after` 以及 `replaceUnit`、`replaceAny`。 比如我们 Hook 的这个方法被这样调用 `test("test value")`,使用此方法可自定义其中的 `args` 作为参数。 > 示例如下 ```kotlin -injectMember { - method { - name = "test" - param(StringClass) - returnType = StringClass - } - afterHook { +method { + name = "test" + param(StringClass) + returnType = StringClass +}.hook { + after { // <方案1> 不使用泛型,不获取方法执行结果 invokeOriginal("test value") // <方案2> 使用泛型,已知方法执行结果参数类型进行 cast,假设返回值为 String,失败会返回 null diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md index c8eef615..30914f30 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md @@ -867,54 +867,60 @@ inline fun HookClass.hook(initiate: YukiMemberHookCreator.() -> Unit): YukiMembe **功能描述** -> 这是一切 Hook 的入口创建方法,Hook 方法、构造方法。 +> Hook 方法、构造方法。 -**功能示例** +## Member+BaseFinder.BaseResult.hook - i-ext-method -如你所见,Hook 方法体的创建可使用 2 种方式。 - -使用 `String.toClass(...)` 得到 `Class` 实例进行创建。 - -> 示例如下 - -```kotlin -"com.example.demo.DemoClass".toClass().hook { - // Your code here. -} +```kotlin:no-line-numbers +inline fun Member.hook(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result ``` -使用 `stub` 或直接拿到 `Class` 实例进行创建。 - -默认情况下 API 会将 `Class` 实例转换为类名并绑定到 `appClassLoader`,若失败,则会使用原始 `Class` 实例直接进行 Hook。 - -> 示例如下 - -```kotlin -Stub::class.java.hook { - // Your code here. -} +```kotlin:no-line-numbers +inline fun BaseFinder.BaseResult.hook(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result ``` -若当前 `Class` 不在 `appClassLoader` 且自动匹配无法找到该 `Class`,请启用 `isForceUseAbsolute`。 +**变更记录** -> 示例如下 +`v1.2.0` `新增` -```kotlin -YourClass::class.java.hook(isForceUseAbsolute = true) { - // Your code here. -} +**功能描述** + +> 直接 Hook 方法、构造方法。 + +::: warning + +此功能尚在试验阶段,在 1.x.x 版本将暂定于此,在 2.x.x 版本将完全合并到新 API。 + +::: + +## Array<Member>+List<Member>+BaseFinder.BaseResult.hookAll - i-ext-method + +```kotlin:no-line-numbers +inline fun Array.hookAll(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result ``` -使用 `VariousClass` 实例进行创建。 - -> 示例如下 - -```kotlin -VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").hook { - // Your code here. -} +```kotlin:no-line-numbers +inline fun List.hookAll(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result ``` +```kotlin:no-line-numbers +inline fun BaseFinder.BaseResult.hookAll(initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit): YukiMemberHookCreator.MemberHookCreator.Result +``` + +**变更记录** + +`v1.2.0` `新增` + +**功能描述** + +> 直接 Hook 方法、构造方法 (批量)。 + +::: warning + +此功能尚在试验阶段,在 1.x.x 版本将暂定于此,在 2.x.x 版本将完全合并到新 API。 + +::: + ## HookResources.hook - i-ext-method ```kotlin:no-line-numbers @@ -931,7 +937,7 @@ inline fun HookResources.hook(initiate: YukiResourcesHookCreator.() -> Unit) ::: danger -请注意你需要确保当前 Hook Framework 支持且 **InjectYukiHookWithXposed.isUsingResourcesHook** 已启用。 +此功能将不再默认启用,如需启用,请手动设置 **InjectYukiHookWithXposed.isUsingResourcesHook**。 :::