mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 01:35:17 +08:00
Fix typo "查询" with "查找" in code note and documentation
This commit is contained in:
@@ -99,11 +99,11 @@
|
||||
- `PackageParam` 的 `loadApp` 新增不写 `name` 功能,默认筛选全部 APP
|
||||
- `PackageParam` 新增 `loadZygote` 方法,可直接 Hook 系统框架
|
||||
- `PackageParam` 新增 `resources().hook` 功能
|
||||
- 优化方法、构造方法、变量查找功能,找不到的错误日志将优先显示已设置的查询条件
|
||||
- 优化方法、构造方法、变量查找功能,找不到的错误日志将优先显示已设置的查找条件
|
||||
- 增加 `hasExtends` 扩展方法,可判断当前 `Class` 是否有继承关系
|
||||
- 增加 `isSupportResourcesHook` 功能,判断当前是否支持资源钩子(Resources Hook)
|
||||
- `current` 功能新增 `superClass` 方法调用父类
|
||||
- 查找方法、构造方法、变量新增 `superClass` 查询条件,可继续在父类中查找
|
||||
- 查找方法、构造方法、变量新增 `superClass` 查找条件,可继续在父类中查找
|
||||
- `YukiHookAPI` 大量方法与 Xposed API 解耦合
|
||||
- 新增 Xposed API 的原生 Hook 优先级功能
|
||||
- 修复 `isFirstApplication` 可能判断不准确的问题
|
||||
@@ -139,7 +139,7 @@
|
||||
- `HookParam` 中删除了 `firstArgs` 与 `lastArgs` 方法,现在你可以使用 `args().first()` 与 `args().last()` 来取代它
|
||||
- `HookParam` 中删除了 `args()` 中的默认参数 `index = 0`,现在你可以使用 `args().first()` 或 `args(index = 0)` 来取代它
|
||||
- `HookParam` 中 `result` 功能增加了泛型匹配,现在你可以使用 `result<T>` 来匹配你的目标方法已知返回值类型了
|
||||
- 方法、构造方法查询功能新增 `emptyParam` 条件,并完善了文档相关需要注意的查询条件误区
|
||||
- 方法、构造方法查找功能新增 `emptyParam` 条件,并完善了文档相关需要注意的查找条件误区
|
||||
- 增加了 `type` 中的 `android` 类型
|
||||
|
||||
### 1.0.73 | 2022.04.10
|
||||
|
@@ -228,7 +228,7 @@ fun members(vararg member: Member?)
|
||||
|
||||
**功能示例**
|
||||
|
||||
你可以调用 `instanceClass` 来手动查询要 Hook 的 `Method`、`Constructor`。
|
||||
你可以调用 `instanceClass` 来手动查找要 Hook 的 `Method`、`Constructor`。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -332,7 +332,7 @@ injectMember {
|
||||
}
|
||||
```
|
||||
|
||||
若想 Hook 当前查询 `method { ... }` 条件的全部结果,你只需要在最后加入 `all` 即可。
|
||||
若想 Hook 当前查找 `method { ... }` 条件的全部结果,你只需要在最后加入 `all` 即可。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -347,11 +347,11 @@ injectMember {
|
||||
}
|
||||
```
|
||||
|
||||
此时 `beforeHook` 与 `afterHook` 会在每个查询到的结果中多次回调 Hook 方法体。
|
||||
此时 `beforeHook` 与 `afterHook` 会在每个查找到的结果中多次回调 Hook 方法体。
|
||||
|
||||
::: warning
|
||||
|
||||
若没有 **all**,默认只会 Hook 当前条件查询到的数组下标结果第一位。
|
||||
若没有 **all**,默认只会 Hook 当前条件查找到的数组下标结果第一位。
|
||||
|
||||
:::
|
||||
|
||||
@@ -387,7 +387,7 @@ injectMember {
|
||||
}
|
||||
```
|
||||
|
||||
若想 Hook 当前查询 `constructor { ... }` 条件的全部结果,你只需要在最后加入 `all` 即可。
|
||||
若想 Hook 当前查找 `constructor { ... }` 条件的全部结果,你只需要在最后加入 `all` 即可。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -399,11 +399,11 @@ injectMember {
|
||||
}
|
||||
```
|
||||
|
||||
此时 `beforeHook` 与 `afterHook` 会在每个查询到的结果中多次回调 Hook 方法体。
|
||||
此时 `beforeHook` 与 `afterHook` 会在每个查找到的结果中多次回调 Hook 方法体。
|
||||
|
||||
::: warning
|
||||
|
||||
若没有 **all**,默认只会 Hook 当前条件查询到的数组下标结果第一位。
|
||||
若没有 **all**,默认只会 Hook 当前条件查找到的数组下标结果第一位。
|
||||
|
||||
:::
|
||||
|
||||
@@ -439,7 +439,7 @@ injectMember {
|
||||
returnType = UnitType
|
||||
}
|
||||
afterHook {
|
||||
// 这里不需要再调用 instanceClass.field 进行查询
|
||||
// 这里不需要再调用 instanceClass.field 进行查找
|
||||
field {
|
||||
name = "isSweet"
|
||||
type = BooleanType
|
||||
|
@@ -64,7 +64,7 @@ var fullName: String
|
||||
|
||||
> 设置 `Class` 完整名称。
|
||||
|
||||
只会查询匹配到的 `Class.getName`。
|
||||
只会查找匹配到的 `Class.getName`。
|
||||
|
||||
例如 `com.demo.Test` 需要填写 `com.demo.Test`。
|
||||
|
||||
@@ -82,7 +82,7 @@ var simpleName: String
|
||||
|
||||
> 设置 `Class` 简单名称。
|
||||
|
||||
只会查询匹配到的 `Class.getSimpleName`。
|
||||
只会查找匹配到的 `Class.getSimpleName`。
|
||||
|
||||
例如 `com.demo.Test` 只需要填写 `Test`。
|
||||
|
||||
@@ -120,9 +120,9 @@ fun from(vararg name: String): FromPackageRules
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置在指定包名范围查询当前 `Class`。
|
||||
> 设置在指定包名范围查找当前 `Class`。
|
||||
|
||||
设置后仅会在当前 `name` 开头匹配的包名路径下进行查询,可提升查询速度。
|
||||
设置后仅会在当前 `name` 开头匹配的包名路径下进行查找,可提升查找速度。
|
||||
|
||||
例如 ↓
|
||||
|
||||
@@ -132,7 +132,7 @@ fun from(vararg name: String): FromPackageRules
|
||||
|
||||
::: warning
|
||||
|
||||
建议设置此参数指定查询范围,否则 **Class** 过多时将会非常慢。
|
||||
建议设置此参数指定查找范围,否则 **Class** 过多时将会非常慢。
|
||||
|
||||
:::
|
||||
|
||||
@@ -166,7 +166,7 @@ fun fullName(value: String): ClassNameRules
|
||||
|
||||
> 设置 `Class` 完整名称。
|
||||
|
||||
只会查询匹配到的 `Class.getName`。
|
||||
只会查找匹配到的 `Class.getName`。
|
||||
|
||||
例如 `com.demo.Test` 需要填写 `com.demo.Test`。
|
||||
|
||||
@@ -184,7 +184,7 @@ fun simpleName(value: String): ClassNameRules
|
||||
|
||||
> 设置 `Class` 简单名称。
|
||||
|
||||
只会查询匹配到的 `Class.getSimpleName`。
|
||||
只会查找匹配到的 `Class.getSimpleName`。
|
||||
|
||||
例如 `com.demo.Test` 只需要填写 `Test`。
|
||||
|
||||
@@ -224,7 +224,7 @@ fun fullName(conditions: NameConditions)
|
||||
|
||||
> 设置 `Class` 完整名称条件。
|
||||
|
||||
只会查询匹配到的 `Class.getName`。
|
||||
只会查找匹配到的 `Class.getName`。
|
||||
|
||||
## simpleName <span class="symbol">- method</span>
|
||||
|
||||
@@ -240,7 +240,7 @@ fun simpleName(conditions: NameConditions)
|
||||
|
||||
> 设置 `Class` 简单名称条件。
|
||||
|
||||
只会查询匹配到的 `Class.getSimpleName`。
|
||||
只会查找匹配到的 `Class.getSimpleName`。
|
||||
|
||||
## singleName <span class="symbol">- method</span>
|
||||
|
||||
@@ -286,7 +286,7 @@ fun extends(vararg name: String)
|
||||
|
||||
> 设置 `Class` 继承的父类。
|
||||
|
||||
会同时查询 `name` 中所有匹配的父类。
|
||||
会同时查找 `name` 中所有匹配的父类。
|
||||
|
||||
## implements <span class="symbol">- method</span>
|
||||
|
||||
@@ -316,7 +316,7 @@ fun implements(vararg name: String)
|
||||
|
||||
> 设置 `Class` 实现的接口类。
|
||||
|
||||
会同时查询 `name` 中所有匹配的接口类。
|
||||
会同时查找 `name` 中所有匹配的接口类。
|
||||
|
||||
## anonymous <span class="symbol">- method</span>
|
||||
|
||||
@@ -428,7 +428,7 @@ fun enclosing(vararg name: String)
|
||||
|
||||
> 设置 `Class` 匿名类的 (封闭类) 主类。
|
||||
|
||||
会同时查询 `name` 中所有匹配的 (封闭类) 主类。
|
||||
会同时查找 `name` 中所有匹配的 (封闭类) 主类。
|
||||
|
||||
## FromPackageRules <span class="symbol">- class</span>
|
||||
|
||||
@@ -508,7 +508,7 @@ fun optional()
|
||||
|
||||
此时可设置类名为 `com.demo.Test` **fullName** / `Test` **simpleName**。
|
||||
|
||||
这样就可在完全匹配类名情况下使用类名而忽略其它查询条件,否则忽略此条件继续使用其它查询条件。
|
||||
这样就可在完全匹配类名情况下使用类名而忽略其它查找条件,否则忽略此条件继续使用其它查找条件。
|
||||
|
||||
## member <span class="symbol">- method</span>
|
||||
|
||||
@@ -610,7 +610,7 @@ fun get(): Class<*>?
|
||||
|
||||
若有多个 `Class` 结果只会返回第一个。
|
||||
|
||||
在查询条件找不到任何结果的时候将返回 `null`。
|
||||
在查找条件找不到任何结果的时候将返回 `null`。
|
||||
|
||||
若你设置了 `async` 请使用 [wait](#wait-method) 方法。
|
||||
|
||||
@@ -628,9 +628,9 @@ fun all(): HashSet<Class<*>>
|
||||
|
||||
> 得到 `Class` 本身数组。
|
||||
|
||||
返回全部查询条件匹配的多个 `Class` 实例。
|
||||
返回全部查找条件匹配的多个 `Class` 实例。
|
||||
|
||||
在查询条件找不到任何结果的时候将返回空的 `HashSet`。
|
||||
在查找条件找不到任何结果的时候将返回空的 `HashSet`。
|
||||
|
||||
若你设置了 `async` 请使用 [waitAll](#waitall-method) 方法。
|
||||
|
||||
@@ -648,9 +648,9 @@ fun all(result: (Class<*>) -> Unit): Result
|
||||
|
||||
> 得到 `Class` 本身数组 (依次遍历)。
|
||||
|
||||
回调全部查询条件匹配的多个 `Class` 实例。
|
||||
回调全部查找条件匹配的多个 `Class` 实例。
|
||||
|
||||
在查询条件找不到任何结果的时候将不会执行。
|
||||
在查找条件找不到任何结果的时候将不会执行。
|
||||
|
||||
若你设置了 `async` 请使用 [waitAll](#waitall-method) 方法。
|
||||
|
||||
@@ -670,7 +670,7 @@ fun wait(result: (Class<*>?) -> Unit): Result
|
||||
|
||||
若有多个 `Class` 结果只会回调第一个。
|
||||
|
||||
在查询条件找不到任何结果的时候将回调 null。
|
||||
在查找条件找不到任何结果的时候将回调 null。
|
||||
|
||||
你需要设置 `async` 后此方法才会被回调,否则请使用 [get](#get-method) 方法。
|
||||
|
||||
@@ -688,9 +688,9 @@ fun waitAll(result: (HashSet<Class<*>>) -> Unit): Result
|
||||
|
||||
> 得到 `Class` 本身数组 (异步)。
|
||||
|
||||
回调全部查询条件匹配的多个 `Class` 实例。
|
||||
回调全部查找条件匹配的多个 `Class` 实例。
|
||||
|
||||
在查询条件找不到任何结果的时候将回调空的 `HashSet`。
|
||||
在查找条件找不到任何结果的时候将回调空的 `HashSet`。
|
||||
|
||||
你需要设置 `async` 后此方法才会被回调,否则请使用 [all](#all-method) 方法。
|
||||
|
||||
|
@@ -14,7 +14,7 @@ class ConstructorRules internal constructor(internal val rulesData: ConstructorR
|
||||
|
||||
**功能描述**
|
||||
|
||||
> `Constructor` 查询条件实现类。
|
||||
> `Constructor` 查找条件实现类。
|
||||
|
||||
## paramCount <span class="symbol">- field</span>
|
||||
|
||||
@@ -84,7 +84,7 @@ fun param(vararg paramType: Any)
|
||||
|
||||
::: danger
|
||||
|
||||
无参 **Constructor** 请使用 **emptyParam** 设置查询条件。
|
||||
无参 **Constructor** 请使用 **emptyParam** 设置查找条件。
|
||||
|
||||
有参 **Constructor** 必须使用此方法设定参数或使用 **paramCount** 指定个数。
|
||||
|
||||
|
@@ -14,7 +14,7 @@ class FieldRules internal constructor(internal val rulesData: FieldRulesData) :
|
||||
|
||||
**功能描述**
|
||||
|
||||
> `Field` 查询条件实现类。
|
||||
> `Field` 查找条件实现类。
|
||||
|
||||
## name <span class="symbol">- field</span>
|
||||
|
||||
|
@@ -14,7 +14,7 @@ class MemberRules internal constructor(internal val rulesData: MemberRulesData)
|
||||
|
||||
**功能描述**
|
||||
|
||||
> `Member` 查询条件实现类。
|
||||
> `Member` 查找条件实现类。
|
||||
|
||||
## modifiers <span class="symbol">- method</span>
|
||||
|
||||
|
@@ -14,7 +14,7 @@ class MethodRules internal constructor(internal val rulesData: MethodRulesData)
|
||||
|
||||
**功能描述**
|
||||
|
||||
> `Method` 查询条件实现类。
|
||||
> `Method` 查找条件实现类。
|
||||
|
||||
## name <span class="symbol">- field</span>
|
||||
|
||||
@@ -114,7 +114,7 @@ fun param(vararg paramType: Any)
|
||||
|
||||
::: danger
|
||||
|
||||
无参 **Method** 请使用 **emptyParam** 设置查询条件。
|
||||
无参 **Method** 请使用 **emptyParam** 设置查找条件。
|
||||
|
||||
有参 **Method** 必须使用此方法设定参数或使用 **paramCount** 指定个数。
|
||||
|
||||
|
@@ -14,7 +14,7 @@ class MemberRulesResult internal constructor(private val rulesData: MemberRulesD
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 当前 `Member` 查询条件结果实现类。
|
||||
> 当前 `Member` 查找条件结果实现类。
|
||||
|
||||
## none <span class="symbol">- method</span>
|
||||
|
||||
@@ -28,7 +28,7 @@ fun none(): MemberRulesResult
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置当前 `Member` 在查询条件中个数为 `0`。
|
||||
> 设置当前 `Member` 在查找条件中个数为 `0`。
|
||||
|
||||
## count <span class="symbol">- method</span>
|
||||
|
||||
@@ -42,7 +42,7 @@ fun count(num: Int): MemberRulesResult
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置当前 `Member` 在查询条件中需要全部匹配的个数。
|
||||
> 设置当前 `Member` 在查找条件中需要全部匹配的个数。
|
||||
|
||||
## count <span class="symbol">- method</span>
|
||||
|
||||
@@ -56,7 +56,7 @@ fun count(numRange: IntRange): MemberRulesResult
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置当前 `Member` 在查询条件中需要全部匹配的个数范围。
|
||||
> 设置当前 `Member` 在查找条件中需要全部匹配的个数范围。
|
||||
|
||||
## count <span class="symbol">- method</span>
|
||||
|
||||
@@ -70,4 +70,4 @@ fun count(conditions: CountConditions): MemberRulesResult
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置当前 `Member` 在查询条件中需要全部匹配的个数条件。
|
||||
> 设置当前 `Member` 在查找条件中需要全部匹配的个数条件。
|
@@ -108,7 +108,7 @@ fun param(vararg paramType: Any): IndexTypeCondition
|
||||
|
||||
::: danger
|
||||
|
||||
无参 **Constructor** 请使用 **emptyParam** 设置查询条件。
|
||||
无参 **Constructor** 请使用 **emptyParam** 设置查找条件。
|
||||
|
||||
有参 **Constructor** 必须使用此方法设定参数或使用 **paramCount** 指定个数。
|
||||
|
||||
@@ -340,7 +340,7 @@ fun all(): Process
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置全部查询条件匹配的多个 `Constructor` 实例结果到 `hookInstance`。
|
||||
> 设置全部查找条件匹配的多个 `Constructor` 实例结果到 `hookInstance`。
|
||||
|
||||
### remedys <span class="symbol">- method</span>
|
||||
|
||||
@@ -518,7 +518,7 @@ fun all(): ArrayList<Instance>
|
||||
|
||||
> 获得 `Constructor` 实例处理类数组。
|
||||
|
||||
返回全部查询条件匹配的多个 `Constructor` 实例结果。
|
||||
返回全部查找条件匹配的多个 `Constructor` 实例结果。
|
||||
|
||||
**功能示例**
|
||||
|
||||
@@ -550,7 +550,7 @@ fun give(): Constructor<*>?
|
||||
|
||||
若有多个 `Constructor` 结果只会返回第一个。
|
||||
|
||||
在查询条件找不到任何结果的时候将返回 `null`。
|
||||
在查找条件找不到任何结果的时候将返回 `null`。
|
||||
|
||||
### giveAll <span class="symbol">- method</span>
|
||||
|
||||
@@ -566,9 +566,9 @@ fun giveAll(): HashSet<Constructor<*>>
|
||||
|
||||
> 得到 `Constructor` 本身数组。
|
||||
|
||||
返回全部查询条件匹配的多个 `Constructor` 实例。
|
||||
返回全部查找条件匹配的多个 `Constructor` 实例。
|
||||
|
||||
在查询条件找不到任何结果的时候将返回空的 `HashSet`。
|
||||
在查找条件找不到任何结果的时候将返回空的 `HashSet`。
|
||||
|
||||
### wait <span class="symbol">- method</span>
|
||||
|
||||
@@ -608,7 +608,7 @@ fun waitAll(initiate: ArrayList<Instance>.() -> Unit)
|
||||
|
||||
> 获得 `Constructor` 实例处理类数组,配合 `RemedyPlan` 使用。
|
||||
|
||||
返回全部查询条件匹配的多个 `Constructor` 实例结果。
|
||||
返回全部查找条件匹配的多个 `Constructor` 实例结果。
|
||||
|
||||
::: danger
|
||||
|
||||
|
@@ -389,7 +389,7 @@ fun all(instance: Any?): ArrayList<Instance>
|
||||
|
||||
> 获得 `Field` 实例处理类数组。
|
||||
|
||||
返回全部查询条件匹配的多个 `Field` 实例结果。
|
||||
返回全部查找条件匹配的多个 `Field` 实例结果。
|
||||
|
||||
**功能示例**
|
||||
|
||||
@@ -421,7 +421,7 @@ fun give(): Field?
|
||||
|
||||
若有多个 Field 结果只会返回第一个。
|
||||
|
||||
在查询条件找不到任何结果的时候将返回 `null`。
|
||||
在查找条件找不到任何结果的时候将返回 `null`。
|
||||
|
||||
### giveAll <span class="symbol">- method</span>
|
||||
|
||||
@@ -437,9 +437,9 @@ fun giveAll(): HashSet<Field>
|
||||
|
||||
> 得到 `Field` 本身数组。
|
||||
|
||||
返回全部查询条件匹配的多个 `Field` 实例。
|
||||
返回全部查找条件匹配的多个 `Field` 实例。
|
||||
|
||||
在查询条件找不到任何结果的时候将返回空的 `HashSet`。
|
||||
在查找条件找不到任何结果的时候将返回空的 `HashSet`。
|
||||
|
||||
### wait <span class="symbol">- method</span>
|
||||
|
||||
@@ -479,7 +479,7 @@ fun waitAll(instance: Any?, initiate: ArrayList<Instance>.() -> Unit)
|
||||
|
||||
> 获得 `Field` 实例处理类数组,配合 `RemedyPlan` 使用。
|
||||
|
||||
返回全部查询条件匹配的多个 `Field` 实例结果。
|
||||
返回全部查找条件匹配的多个 `Field` 实例结果。
|
||||
|
||||
::: danger
|
||||
|
||||
|
@@ -146,7 +146,7 @@ fun param(vararg paramType: Any): IndexTypeCondition
|
||||
|
||||
::: danger
|
||||
|
||||
无参 **Method** 请使用 **emptyParam** 设置查询条件。
|
||||
无参 **Method** 请使用 **emptyParam** 设置查找条件。
|
||||
|
||||
有参 **Method** 必须使用此方法设定参数或使用 **paramCount** 指定个数。
|
||||
|
||||
@@ -462,7 +462,7 @@ fun all(): Process
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置全部查询条件匹配的多个 `Method` 实例结果到 `hookInstance`。
|
||||
> 设置全部查找条件匹配的多个 `Method` 实例结果到 `hookInstance`。
|
||||
|
||||
### remedys <span class="symbol">- method</span>
|
||||
|
||||
@@ -626,7 +626,7 @@ fun all(instance: Any?): ArrayList<Instance>
|
||||
|
||||
> 获得 `Method` 实例处理类数组。
|
||||
|
||||
返回全部查询条件匹配的多个 `Method` 实例结果。
|
||||
返回全部查找条件匹配的多个 `Method` 实例结果。
|
||||
|
||||
**功能示例**
|
||||
|
||||
@@ -658,7 +658,7 @@ fun give(): Method?
|
||||
|
||||
若有多个 `Method` 结果只会返回第一个。
|
||||
|
||||
在查询条件找不到任何结果的时候将返回 `null`。
|
||||
在查找条件找不到任何结果的时候将返回 `null`。
|
||||
|
||||
### giveAll <span class="symbol">- method</span>
|
||||
|
||||
@@ -674,9 +674,9 @@ fun giveAll(): HashSet<Method>
|
||||
|
||||
> 得到 `Method` 本身数组。
|
||||
|
||||
返回全部查询条件匹配的多个 `Method` 实例。
|
||||
返回全部查找条件匹配的多个 `Method` 实例。
|
||||
|
||||
在查询条件找不到任何结果的时候将返回空的 `HashSet`。
|
||||
在查找条件找不到任何结果的时候将返回空的 `HashSet`。
|
||||
|
||||
### wait <span class="symbol">- method</span>
|
||||
|
||||
@@ -716,7 +716,7 @@ fun waitAll(instance: Any?, initiate: ArrayList<Instance>.() -> Unit)
|
||||
|
||||
> 获得 `Method` 实例处理类数组,配合 `RemedyPlan` 使用。
|
||||
|
||||
返回全部查询条件匹配的多个 `Method` 实例结果。
|
||||
返回全部查找条件匹配的多个 `Method` 实例结果。
|
||||
|
||||
::: danger
|
||||
|
||||
|
@@ -422,7 +422,7 @@ inline fun Member.hasModifiers(conditions: ModifierConditions): Boolean
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 查询 `Member` 中匹配的描述符。
|
||||
> 查找 `Member` 中匹配的描述符。
|
||||
|
||||
## Class.hasModifiers <span class="symbol">- ext-method</span>
|
||||
|
||||
@@ -436,7 +436,7 @@ inline fun Class<*>.hasModifiers(conditions: ModifierConditions): Boolean
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 查询 `Class` 中匹配的描述符。
|
||||
> 查找 `Class` 中匹配的描述符。
|
||||
|
||||
<h2 class="deprecated">obtainStaticFieldAny - method</h2>
|
||||
|
||||
|
@@ -169,7 +169,7 @@ public class a extends Activity implements Serializable {
|
||||
|
||||
```kotlin
|
||||
searchClass {
|
||||
// 从指定的包名范围搜索,实际使用时,你可以同时指定多个包名范围
|
||||
// 从指定的包名范围开始查找,实际使用时,你可以同时指定多个包名范围
|
||||
from("com.demo")
|
||||
// 指定当前 Class 的 getSimpleName 的结果,你可以直接对这个字符串进行逻辑判断
|
||||
// 这里我们不确定它的名称是不是 a,可以只判断字符串长度
|
||||
@@ -448,9 +448,9 @@ public class Test extends BaseTest {
|
||||
}
|
||||
```
|
||||
|
||||
### 查询与反射调用
|
||||
### 查找与反射调用
|
||||
|
||||
假设我们要得到 `Test`(以下统称“当前 `Class`”)的 `doTask` 方法并执行,通常情况下,我们可以使用标准的反射 API 去查询这个方法。
|
||||
假设我们要得到 `Test`(以下统称“当前 `Class`”)的 `doTask` 方法并执行,通常情况下,我们可以使用标准的反射 API 去查找这个方法。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -530,7 +530,7 @@ Test::class.java.constructor().get().call() // 可创建一个新的实例
|
||||
|
||||
:::
|
||||
|
||||
### 可选的查询条件
|
||||
### 可选的查找条件
|
||||
|
||||
假设我们要得到 `Class` 中的 `getName` 方法,可以使用如下实现。
|
||||
|
||||
@@ -561,15 +561,15 @@ Test::class.java.method {
|
||||
}.get(instance).string() // 得到方法的结果
|
||||
```
|
||||
|
||||
是的,对于确切不会变化的方法,你可以精简查询条件。
|
||||
是的,对于确切不会变化的方法,你可以精简查找条件。
|
||||
|
||||
在只使用 `get` 或 `wait` 方法得到结果时 `YukiHookAPI` **会默认按照字节码顺序匹配第一个查询到的结果**。
|
||||
在只使用 `get` 或 `wait` 方法得到结果时 `YukiHookAPI` **会默认按照字节码顺序匹配第一个查找到的结果**。
|
||||
|
||||
问题又来了,这个 `Class` 中有一个 `release` 方法,但是它的方法参数很长,而且部分类型可能无法直接得到。
|
||||
|
||||
通常情况下我们会使用 `param(...)` 来查询这个方法,但是有没有更简单的方法呢。
|
||||
通常情况下我们会使用 `param(...)` 来查找这个方法,但是有没有更简单的方法呢。
|
||||
|
||||
此时,在确定方法唯一性后,你可以使用 `paramCount` 来查询到这个方法。
|
||||
此时,在确定方法唯一性后,你可以使用 `paramCount` 来查找到这个方法。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -599,11 +599,11 @@ Test::class.java.method {
|
||||
}.get(instance) // 得到这个方法
|
||||
```
|
||||
|
||||
### 在父类查询
|
||||
### 在父类查找
|
||||
|
||||
你会注意到 `Test` 继承于 `BaseTest`,现在我们想得到 `BaseTest` 的 `doBaseTask` 方法,在不知道父类名称的情况下,要怎么做呢?
|
||||
|
||||
参照上面的查询条件,我们只需要在查询条件中加入一个 `superClass` 即可实现这个功能。
|
||||
参照上面的查找条件,我们只需要在查找条件中加入一个 `superClass` 即可实现这个功能。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -621,9 +621,9 @@ Test::class.java.method {
|
||||
|
||||
这个时候我们就可以在父类中取到这个方法了。
|
||||
|
||||
`superClass` 有一个参数为 `isOnlySuperClass`,设置为 `true` 后,可以跳过当前 `Class` 仅查询当前 `Class` 的父类。
|
||||
`superClass` 有一个参数为 `isOnlySuperClass`,设置为 `true` 后,可以跳过当前 `Class` 仅查找当前 `Class` 的父类。
|
||||
|
||||
由于我们现在已知 `doBaseTask` 方法只存在于父类,可以加上这个条件节省查询时间。
|
||||
由于我们现在已知 `doBaseTask` 方法只存在于父类,可以加上这个条件节省查找时间。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -634,14 +634,14 @@ val instance = Test()
|
||||
Test::class.java.method {
|
||||
name = "doBaseTask"
|
||||
param(StringType)
|
||||
// 加入一个查询条件
|
||||
// 加入一个查找条件
|
||||
superClass(isOnlySuperClass = true)
|
||||
}.get(instance).call("task_name")
|
||||
```
|
||||
|
||||
这个时候我们同样可以得到父类中的这个方法。
|
||||
|
||||
`superClass` 一旦设置就会自动循环向后查找全部继承的父类中是否有这个方法,直到查询到目标没有父类(继承关系为 `java.lang.Object`)为止。
|
||||
`superClass` 一旦设置就会自动循环向后查找全部继承的父类中是否有这个方法,直到查找到目标没有父类(继承关系为 `java.lang.Object`)为止。
|
||||
|
||||
::: tip
|
||||
|
||||
@@ -651,13 +651,13 @@ Test::class.java.method {
|
||||
|
||||
::: danger
|
||||
|
||||
当前查询的 **Method** 除非指定 **superClass** 条件,否则只能查询到当前 **Class** 的 **Method**,这是 Java 反射 API 的默认行为。
|
||||
当前查找的 **Method** 除非指定 **superClass** 条件,否则只能查找到当前 **Class** 的 **Method**,这是 Java 反射 API 的默认行为。
|
||||
|
||||
:::
|
||||
|
||||
### 模糊查询
|
||||
### 模糊查找
|
||||
|
||||
如果我们想查询一个方法名称,但是又不确定它在每个版本中是否发生变化,此时我们就可以使用模糊查询功能。
|
||||
如果我们想查找一个方法名称,但是又不确定它在每个版本中是否发生变化,此时我们就可以使用模糊查找功能。
|
||||
|
||||
假设我们要得到 `Class` 中的 `doTask` 方法,可以使用如下实现。
|
||||
|
||||
@@ -710,7 +710,7 @@ Test::class.java.method {
|
||||
}.get(instance).call("task_name")
|
||||
```
|
||||
|
||||
通过观察发现这个方法名称中只包含字母,我们还可以再增加一个精确的查询条件。
|
||||
通过观察发现这个方法名称中只包含字母,我们还可以再增加一个精确的查找条件。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -737,11 +737,11 @@ Test::class.java.method {
|
||||
|
||||
:::
|
||||
|
||||
### 多重查询
|
||||
### 多重查找
|
||||
|
||||
有些时候,我们可能需要查询一个 `Class` 中具有相同特征的一组方法、构造方法、变量,此时,我们就可以利用相对条件匹配来完成。
|
||||
有些时候,我们可能需要查找一个 `Class` 中具有相同特征的一组方法、构造方法、变量,此时,我们就可以利用相对条件匹配来完成。
|
||||
|
||||
在查询条件结果的基础上,我们只需要把 `get` 换为 `all` 即可得到匹配条件的全部字节码。
|
||||
在查找条件结果的基础上,我们只需要把 `get` 换为 `all` 即可得到匹配条件的全部字节码。
|
||||
|
||||
假设这次我们要得到 `Class` 中方法参数个数范围在 `1..3` 的全部方法,可以使用如下实现。
|
||||
|
||||
@@ -854,7 +854,7 @@ Test::class.java.field {
|
||||
Test::class.java.field {
|
||||
name = "TAG"
|
||||
type = StringType
|
||||
// 标识查询的这个变量需要是静态
|
||||
// 标识查找的这个变量需要是静态
|
||||
modifiers { isStatic }
|
||||
}.get().string() // Field 的类型是字符串,可直接进行 cast
|
||||
```
|
||||
@@ -878,7 +878,7 @@ Test::class.java.method {
|
||||
Test::class.java.method {
|
||||
name = "init"
|
||||
emptyParam()
|
||||
// 标识查询的这个方法需要是静态
|
||||
// 标识查找的这个方法需要是静态
|
||||
modifiers { isStatic }
|
||||
}.get().call()
|
||||
```
|
||||
@@ -1235,7 +1235,7 @@ val result = Test::class.java.method {
|
||||
|
||||
:::
|
||||
|
||||
### 再次查询
|
||||
### 再次查找
|
||||
|
||||
假设有三个不同版本的 `Class`,它们都是这个宿主不同版本相同的 `Class`。
|
||||
|
||||
@@ -1307,11 +1307,11 @@ Test::class.java.method {
|
||||
|
||||
::: danger
|
||||
|
||||
使用了 **RemedyPlan** 的方法查询结果不能再使用 **get** 的方式得到方法实例,应当使用 **wait** 方法。
|
||||
使用了 **RemedyPlan** 的方法查找结果不能再使用 **get** 的方式得到方法实例,应当使用 **wait** 方法。
|
||||
|
||||
:::
|
||||
|
||||
另外,你还可以在使用 [多重查询](#多重查询) 的情况下继续使用 `RemedyPlan`。
|
||||
另外,你还可以在使用 [多重查找](#多重查找) 的情况下继续使用 `RemedyPlan`。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -1340,7 +1340,7 @@ Test::class.java.method {
|
||||
}
|
||||
```
|
||||
|
||||
以当前 `Class` 举例,若 [多重查询](#多重查询) 结合 `RemedyPlan` 在创建 Hook 的时候使用,你需要稍微改变一下用法。
|
||||
以当前 `Class` 举例,若 [多重查找](#多重查找) 结合 `RemedyPlan` 在创建 Hook 的时候使用,你需要稍微改变一下用法。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -1405,10 +1405,10 @@ public class BTest {
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
// 首先查询到这个 Class
|
||||
// 首先查找到这个 Class
|
||||
val currentClass =
|
||||
if("com.demo.ATest".hasClass()) "com.demo.ATest".toClass() else "com.demo.BTest".toClass()
|
||||
// 然后再查询这个方法并调用
|
||||
// 然后再查找这个方法并调用
|
||||
currentClass.method {
|
||||
name = "doTask"
|
||||
emptyParam()
|
||||
@@ -1558,11 +1558,11 @@ TestGeneric::class.java.generic()?.argument()?.method {
|
||||
|
||||
> 这里列举了使用时可能会遇到的误区部分,可供参考。
|
||||
|
||||
#### 限制性查询条件
|
||||
#### 限制性查找条件
|
||||
|
||||
::: danger
|
||||
|
||||
在查询条件中,除了 **order** 你只能使用一次 **index** 功能。
|
||||
在查找条件中,除了 **order** 你只能使用一次 **index** 功能。
|
||||
|
||||
:::
|
||||
|
||||
@@ -1577,7 +1577,7 @@ method {
|
||||
}
|
||||
```
|
||||
|
||||
以下查询条件的使用是没有任何问题的。
|
||||
以下查找条件的使用是没有任何问题的。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -1589,11 +1589,11 @@ method {
|
||||
}
|
||||
```
|
||||
|
||||
#### 必要的查询条件
|
||||
#### 必要的查找条件
|
||||
|
||||
::: danger
|
||||
|
||||
在普通方法查询条件中,<u>**即使是无参的方法也需要设置查询条件**</u>。
|
||||
在普通方法查找条件中,<u>**即使是无参的方法也需要设置查找条件**</u>。
|
||||
|
||||
:::
|
||||
|
||||
@@ -1628,9 +1628,9 @@ TestFoo::class.java.method {
|
||||
|
||||
你会发现这个 `Class` 中有两个 `foo` 方法,其中一个带有方法参数。
|
||||
|
||||
由于上述例子没有设置 `param` 的查询条件,得到的结果将会是匹配名称且匹配字节码顺序的第一个方法 `public void foo(String string)`,而不是我们需要的最后一个方法。
|
||||
由于上述例子没有设置 `param` 的查找条件,得到的结果将会是匹配名称且匹配字节码顺序的第一个方法 `public void foo(String string)`,而不是我们需要的最后一个方法。
|
||||
|
||||
这是一个**经常会出现的错误**,**没有方法参数就会丢失方法参数查询条件**的使用问题。
|
||||
这是一个**经常会出现的错误**,**没有方法参数就会丢失方法参数查找条件**的使用问题。
|
||||
|
||||
正确的使用方法如下。
|
||||
|
||||
@@ -1652,9 +1652,9 @@ TestFoo::class.java.method {
|
||||
|
||||
:::
|
||||
|
||||
#### 可简写查询条件
|
||||
#### 可简写查找条件
|
||||
|
||||
> 在构造方法查询条件中,<u>**无参的构造方法可以不需要填写查询条件**</u>。
|
||||
> 在构造方法查找条件中,<u>**无参的构造方法可以不需要填写查找条件**</u>。
|
||||
|
||||
假设我们有如下的 `Class`。
|
||||
|
||||
@@ -1689,7 +1689,7 @@ TestFoo::class.java.constructor()
|
||||
|
||||
::: tip 兼容性说明
|
||||
|
||||
在过往历史版本的 API 中构造方法不填写任何查询参数会直接找不到构造方法,<u>**这是一个 BUG,最新版本已经进行修复**</u>,请确保你使用的是最新的 API 版本。
|
||||
在过往历史版本的 API 中构造方法不填写任何查找参数会直接找不到构造方法,<u>**这是一个 BUG,最新版本已经进行修复**</u>,请确保你使用的是最新的 API 版本。
|
||||
|
||||
:::
|
||||
|
||||
@@ -1727,7 +1727,7 @@ field {
|
||||
|
||||
## 常用类型扩展
|
||||
|
||||
在查询方法、变量的时候我们通常需要指定所查询的类型。
|
||||
在查找方法、变量的时候我们通常需要指定所查找的类型。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -1763,9 +1763,9 @@ field {
|
||||
|
||||
同时由于 `String` 是常见类型,所以还可以直接使用 `StringArrayClass` 来得到这个类型。
|
||||
|
||||
一些常见的 Hook 中查询的方法,都有其对应的封装类型以供使用,格式为 **类型 + Class**。
|
||||
一些常见的 Hook 中查找的方法,都有其对应的封装类型以供使用,格式为 **类型 + Class**。
|
||||
|
||||
例如 Hook `onCreate` 方法需要查询 `Bundle::class.java` 类型。
|
||||
例如 Hook `onCreate` 方法需要查找 `Bundle::class.java` 类型。
|
||||
|
||||
> 示例如下
|
||||
|
||||
|
@@ -194,7 +194,7 @@ Hooked Member cannot be non-null by **CLASS**
|
||||
|
||||
```kotlin
|
||||
injectMember {
|
||||
// 这里并没有设置需要 Hook 的方法、构造方法的查询条件
|
||||
// 这里并没有设置需要 Hook 的方法、构造方法的查找条件
|
||||
afterHook {
|
||||
// ...
|
||||
}
|
||||
@@ -203,7 +203,7 @@ injectMember {
|
||||
|
||||
**解决方案**
|
||||
|
||||
请确认你已经在 Hook 之前正确设置了要 Hook 的方法、构造方法的查询方式。
|
||||
请确认你已经在 Hook 之前正确设置了要 Hook 的方法、构造方法的查找方式。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -309,7 +309,7 @@ Method/Constructor/Field match type "**TYPE**" not allowed
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
// 查询一个方法
|
||||
// 查找一个方法
|
||||
method {
|
||||
// ❗设置了无效的类型举例
|
||||
param(false, 1, 0)
|
||||
@@ -317,7 +317,7 @@ method {
|
||||
returnType = false
|
||||
}
|
||||
|
||||
// 查询一个变量
|
||||
// 查找一个变量
|
||||
field {
|
||||
// ❗设置了无效的类型举例
|
||||
type = false
|
||||
@@ -326,12 +326,12 @@ field {
|
||||
|
||||
**解决方案**
|
||||
|
||||
在查询中 `param`、`returnType`、`type` 中仅接受 `Class`、`String`、`VariousClass` 类型的传值,不可传入参数实例。
|
||||
在查找中 `param`、`returnType`、`type` 中仅接受 `Class`、`String`、`VariousClass` 类型的传值,不可传入参数实例。
|
||||
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
// 查询一个方法
|
||||
// 查找一个方法
|
||||
method {
|
||||
// ✅ 正确的使用方法举例
|
||||
param(BooleanType, IntType, IntType)
|
||||
@@ -341,7 +341,7 @@ method {
|
||||
returnType = "java.lang.Boolean"
|
||||
}
|
||||
|
||||
// 查询一个变量
|
||||
// 查找一个变量
|
||||
field {
|
||||
// ✅ 正确的使用方法举例
|
||||
type = BooleanType
|
||||
@@ -360,7 +360,7 @@ NoSuchMethod/NoSuchConstructor/NoSuchField happend in \[**NAME**\]
|
||||
|
||||
**解决方案**
|
||||
|
||||
请确认你的查询条件是否能正确匹配到目标 `Class` 中的指定方法、构造方法以及变量。
|
||||
请确认你的查找条件是否能正确匹配到目标 `Class` 中的指定方法、构造方法以及变量。
|
||||
|
||||
::: danger loggerE
|
||||
|
||||
@@ -396,7 +396,7 @@ method {
|
||||
|
||||
**解决方案**
|
||||
|
||||
请将查询条件补充完整并再试一次。
|
||||
请将查找条件补充完整并再试一次。
|
||||
|
||||
::: danger loggerE
|
||||
|
||||
@@ -478,7 +478,7 @@ Field match type class is not found
|
||||
|
||||
**异常原因**
|
||||
|
||||
在查找变量时所设置的查询条件中 `type` 的 `Class` 实例未被找到。
|
||||
在查找变量时所设置的查找条件中 `type` 的 `Class` 实例未被找到。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -492,7 +492,7 @@ field {
|
||||
|
||||
**解决方案**
|
||||
|
||||
请检查查询条件中 `type` 的 `Class` 是否存在,然后再试一次。
|
||||
请检查查找条件中 `type` 的 `Class` 是否存在,然后再试一次。
|
||||
|
||||
::: danger loggerE
|
||||
|
||||
@@ -502,7 +502,7 @@ Method match returnType class is not found
|
||||
|
||||
**异常原因**
|
||||
|
||||
在查找方法时所设置的查询条件中 `returnType` 的 `Class` 实例未被找到。
|
||||
在查找方法时所设置的查找条件中 `returnType` 的 `Class` 实例未被找到。
|
||||
|
||||
> 示例如下
|
||||
|
||||
@@ -516,7 +516,7 @@ method {
|
||||
|
||||
**解决方案**
|
||||
|
||||
请检查查询条件中 `returnType` 的 `Class` 是否存在,然后再试一次。
|
||||
请检查查找条件中 `returnType` 的 `Class` 是否存在,然后再试一次。
|
||||
|
||||
::: danger loggerE
|
||||
|
||||
@@ -526,7 +526,7 @@ Method/Constructor match paramType\[**INDEX**\] class is not found
|
||||
|
||||
**异常原因**
|
||||
|
||||
在查找方法、构造方法时所设置的查询条件中 `param` 的 `index` 号下标的 `Class` 实例未被找到。
|
||||
在查找方法、构造方法时所设置的查找条件中 `param` 的 `index` 号下标的 `Class` 实例未被找到。
|
||||
|
||||
```kotlin
|
||||
method {
|
||||
@@ -538,7 +538,7 @@ method {
|
||||
|
||||
**解决方案**
|
||||
|
||||
请检查查询条件中 `param` 的 `index` 号下标的 `Class` 是否存在,然后再试一次。
|
||||
请检查查找条件中 `param` 的 `index` 号下标的 `Class` 是否存在,然后再试一次。
|
||||
|
||||
::: danger loggerE
|
||||
|
||||
@@ -566,7 +566,7 @@ conditions {
|
||||
|
||||
**解决方案**
|
||||
|
||||
Resources 的 Hook 并非类似方法的 Hook,其必须拥有完整的名称和类型描述才能查询成功,请将查询条件补充完整并再试一次。
|
||||
Resources 的 Hook 并非类似方法的 Hook,其必须拥有完整的名称和类型描述才能查找成功,请将查找条件补充完整并再试一次。
|
||||
|
||||
::: danger loggerE
|
||||
|
||||
|
@@ -262,7 +262,7 @@ class YukiMemberHookCreator(@PublishedApi internal val packageParam: PackagePara
|
||||
/**
|
||||
* 手动指定要 Hook 的 [Method]、[Constructor]
|
||||
*
|
||||
* 你可以调用 [instanceClass] 来手动查询要 Hook 的 [Method]、[Constructor]
|
||||
* 你可以调用 [instanceClass] 来手动查找要 Hook 的 [Method]、[Constructor]
|
||||
*
|
||||
* - ❗不建议使用此方法设置目标需要 Hook 的 [Member] 对象 - 你可以使用 [method] or [constructor] 方法
|
||||
*
|
||||
|
@@ -40,7 +40,7 @@ import kotlin.math.abs
|
||||
*/
|
||||
abstract class BaseFinder {
|
||||
|
||||
/** 当前查询条件规则数据 */
|
||||
/** 当前查找条件规则数据 */
|
||||
@PublishedApi
|
||||
internal abstract val rulesData: BaseRulesData
|
||||
|
||||
|
@@ -35,7 +35,7 @@ import com.highcapable.yukihookapi.hook.type.defined.VagueType
|
||||
import java.lang.reflect.Member
|
||||
|
||||
/**
|
||||
* 这是 [Class] 与 [Member] 规则查询数据基本类实现
|
||||
* 这是 [Class] 与 [Member] 规则查找数据基本类实现
|
||||
* @param modifiers 描述符条件
|
||||
* @param orderIndex 字节码、数组顺序下标
|
||||
* @param matchIndex 字节码、数组筛选下标
|
||||
|
@@ -113,7 +113,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 完整名称
|
||||
*
|
||||
* 只会查询匹配到的 [Class.getName]
|
||||
* 只会查找匹配到的 [Class.getName]
|
||||
*
|
||||
* 例如 com.demo.Test 需要填写 com.demo.Test
|
||||
* @return [String]
|
||||
@@ -127,7 +127,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 简单名称
|
||||
*
|
||||
* 只会查询匹配到的 [Class.getSimpleName]
|
||||
* 只会查找匹配到的 [Class.getSimpleName]
|
||||
*
|
||||
* 例如 com.demo.Test 只需要填写 Test
|
||||
*
|
||||
@@ -157,9 +157,9 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置在指定包名范围查询当前 [Class]
|
||||
* 设置在指定包名范围查找当前 [Class]
|
||||
*
|
||||
* 设置后仅会在当前 [name] 开头匹配的包名路径下进行查询 - 可提升查询速度
|
||||
* 设置后仅会在当前 [name] 开头匹配的包名路径下进行查找 - 可提升查找速度
|
||||
*
|
||||
* 例如 ↓
|
||||
*
|
||||
@@ -167,7 +167,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
*
|
||||
* com.demo.test.demo
|
||||
*
|
||||
* - ❗建议设置此参数指定查询范围 - 否则 [Class] 过多时将会非常慢
|
||||
* - ❗建议设置此参数指定查找范围 - 否则 [Class] 过多时将会非常慢
|
||||
* @param name 指定包名
|
||||
* @return [FromPackageRules] 可设置 [FromPackageRules.absolute] 标识包名绝对匹配
|
||||
*/
|
||||
@@ -189,7 +189,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 完整名称
|
||||
*
|
||||
* 只会查询匹配到的 [Class.getName]
|
||||
* 只会查找匹配到的 [Class.getName]
|
||||
*
|
||||
* 例如 com.demo.Test 需要填写 com.demo.Test
|
||||
* @param value 名称
|
||||
@@ -203,7 +203,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 简单名称
|
||||
*
|
||||
* 只会查询匹配到的 [Class.getSimpleName]
|
||||
* 只会查找匹配到的 [Class.getSimpleName]
|
||||
*
|
||||
* 例如 com.demo.Test 只需要填写 Test
|
||||
*
|
||||
@@ -235,7 +235,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 完整名称条件
|
||||
*
|
||||
* 只会查询匹配到的 [Class.getName]
|
||||
* 只会查找匹配到的 [Class.getName]
|
||||
* @param conditions 条件方法体
|
||||
*/
|
||||
fun fullName(conditions: NameConditions) {
|
||||
@@ -245,7 +245,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 简单名称条件
|
||||
*
|
||||
* 只会查询匹配到的 [Class.getSimpleName]
|
||||
* 只会查找匹配到的 [Class.getSimpleName]
|
||||
* @param conditions 条件方法体
|
||||
*/
|
||||
fun simpleName(conditions: NameConditions) {
|
||||
@@ -270,7 +270,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 继承的父类
|
||||
*
|
||||
* 会同时查询 [name] 中所有匹配的父类
|
||||
* 会同时查找 [name] 中所有匹配的父类
|
||||
* @param name [Class] 完整名称
|
||||
*/
|
||||
fun extends(vararg name: String) {
|
||||
@@ -285,7 +285,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 实现的接口类
|
||||
*
|
||||
* 会同时查询 [name] 中所有匹配的接口类
|
||||
* 会同时查找 [name] 中所有匹配的接口类
|
||||
* @param name [Class] 完整名称
|
||||
*/
|
||||
fun implements(vararg name: String) {
|
||||
@@ -343,7 +343,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 设置 [Class] 匿名类的 (封闭类) 主类
|
||||
*
|
||||
* 会同时查询 [name] 中所有匹配的 (封闭类) 主类
|
||||
* 会同时查找 [name] 中所有匹配的 (封闭类) 主类
|
||||
* @param name [Class] 完整名称
|
||||
*/
|
||||
fun enclosing(vararg name: String) {
|
||||
@@ -393,7 +393,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
*
|
||||
* 此时可设置类名为 "com.demo.Test" (fullName) / "Test" (simpleName)
|
||||
*
|
||||
* 这样就可在完全匹配类名情况下使用类名而忽略其它查询条件 - 否则忽略此条件继续使用其它查询条件
|
||||
* 这样就可在完全匹配类名情况下使用类名而忽略其它查找条件 - 否则忽略此条件继续使用其它查找条件
|
||||
*/
|
||||
fun optional() {
|
||||
name.isOptional = true
|
||||
@@ -528,7 +528,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
*
|
||||
* - 若有多个 [Class] 结果只会返回第一个
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将返回 null
|
||||
* - 在查找条件找不到任何结果的时候将返回 null
|
||||
*
|
||||
* - ❗若你设置了 [async] 请使用 [wait] 方法
|
||||
* @return [Class] or null
|
||||
@@ -538,9 +538,9 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 得到 [Class] 本身数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Class] 实例
|
||||
* - 返回全部查找条件匹配的多个 [Class] 实例
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将返回空的 [HashSet]
|
||||
* - 在查找条件找不到任何结果的时候将返回空的 [HashSet]
|
||||
*
|
||||
* - ❗若你设置了 [async] 请使用 [waitAll] 方法
|
||||
* @return [HashSet]<[Class]>
|
||||
@@ -550,9 +550,9 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 得到 [Class] 本身数组 (依次遍历)
|
||||
*
|
||||
* - 回调全部查询条件匹配的多个 [Class] 实例
|
||||
* - 回调全部查找条件匹配的多个 [Class] 实例
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将不会执行
|
||||
* - 在查找条件找不到任何结果的时候将不会执行
|
||||
*
|
||||
* - ❗若你设置了 [async] 请使用 [waitAll] 方法
|
||||
* @param result 回调每个结果
|
||||
@@ -568,7 +568,7 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
*
|
||||
* - 若有多个 [Class] 结果只会回调第一个
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将回调 null
|
||||
* - 在查找条件找不到任何结果的时候将回调 null
|
||||
*
|
||||
* - ❗你需要设置 [async] 后此方法才会被回调 - 否则请使用 [get] 方法
|
||||
* @param result 回调 - ([Class] or null)
|
||||
@@ -582,9 +582,9 @@ class DexClassFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 得到 [Class] 本身数组 (异步)
|
||||
*
|
||||
* - 回调全部查询条件匹配的多个 [Class] 实例
|
||||
* - 回调全部查找条件匹配的多个 [Class] 实例
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将回调空的 [HashSet]
|
||||
* - 在查找条件找不到任何结果的时候将回调空的 [HashSet]
|
||||
*
|
||||
* - ❗你需要设置 [async] 后此方法才会被回调 - 否则请使用 [all] 方法
|
||||
* @param result 回调 - ([HashSet]<[Class]>)
|
||||
|
@@ -42,7 +42,7 @@ import java.lang.reflect.Member
|
||||
import java.lang.reflect.Method
|
||||
|
||||
/**
|
||||
* [Class] 规则查询数据类
|
||||
* [Class] 规则查找数据类
|
||||
* @param fromPackages 指定包名范围名称数组
|
||||
* @param fullName 完整名称
|
||||
* @param simpleName 简单名称
|
||||
@@ -56,10 +56,10 @@ import java.lang.reflect.Method
|
||||
* @param extendsClass 继承的父类名称数组
|
||||
* @param implementsClass 实现的接口类名称数组
|
||||
* @param enclosingClass 包含的封闭类 (主类) 名称数组
|
||||
* @param memberRules [Member] 查询条件数据数组
|
||||
* @param fieldRules [Field] 查询条件数据数组
|
||||
* @param methodRules [Method] 查询条件数据数组
|
||||
* @param constroctorRules [Constructor] 查询条件数据数组
|
||||
* @param memberRules [Member] 查找条件数据数组
|
||||
* @param fieldRules [Field] 查找条件数据数组
|
||||
* @param methodRules [Method] 查找条件数据数组
|
||||
* @param constroctorRules [Constructor] 查找条件数据数组
|
||||
*/
|
||||
@PublishedApi
|
||||
internal class ClassRulesData internal constructor(
|
||||
@@ -83,14 +83,14 @@ internal class ClassRulesData internal constructor(
|
||||
) : BaseRulesData() {
|
||||
|
||||
/**
|
||||
* 创建类名匹配条件查询数据类
|
||||
* 创建类名匹配条件查找数据类
|
||||
* @param name 包名
|
||||
* @return [NameRulesData]
|
||||
*/
|
||||
internal fun createNameRulesData(name: String) = NameRulesData(name)
|
||||
|
||||
/**
|
||||
* 创建包名范围名称过滤匹配条件查询数据类
|
||||
* 创建包名范围名称过滤匹配条件查找数据类
|
||||
* @param name 包名
|
||||
* @return [PackageRulesData]
|
||||
*/
|
||||
@@ -105,7 +105,7 @@ internal class ClassRulesData internal constructor(
|
||||
?: instance.enclosingClass?.let { it.simpleName + instance.name.replace(it.name, newValue = "") } ?: ""
|
||||
|
||||
/**
|
||||
* 类名匹配条件查询数据类
|
||||
* 类名匹配条件查找数据类
|
||||
* @param name 包名
|
||||
* @param isOptional 是否可选 - 默认否
|
||||
*/
|
||||
@@ -137,7 +137,7 @@ internal class ClassRulesData internal constructor(
|
||||
}
|
||||
|
||||
/**
|
||||
* 包名范围名称过滤匹配条件查询数据类
|
||||
* 包名范围名称过滤匹配条件查找数据类
|
||||
* @param name 包名
|
||||
* @param isAbsolute 是否绝对匹配 - 默认否
|
||||
*/
|
||||
|
@@ -40,8 +40,8 @@ import com.highcapable.yukihookapi.hook.type.defined.VagueType
|
||||
import java.lang.reflect.Constructor
|
||||
|
||||
/**
|
||||
* [Constructor] 查询条件实现类
|
||||
* @param rulesData 当前查询条件规则数据
|
||||
* [Constructor] 查找条件实现类
|
||||
* @param rulesData 当前查找条件规则数据
|
||||
*/
|
||||
class ConstructorRules internal constructor(@PublishedApi internal val rulesData: ConstructorRulesData) : BaseRules() {
|
||||
|
||||
@@ -93,7 +93,7 @@ class ConstructorRules internal constructor(@PublishedApi internal val rulesData
|
||||
* param(StringType, BooleanType, VagueType, IntType)
|
||||
* ```
|
||||
*
|
||||
* - ❗无参 [Constructor] 请使用 [emptyParam] 设置查询条件
|
||||
* - ❗无参 [Constructor] 请使用 [emptyParam] 设置查找条件
|
||||
*
|
||||
* - ❗有参 [Constructor] 必须使用此方法设定参数或使用 [paramCount] 指定个数
|
||||
* @param paramType 参数类型数组 - ❗只能是 [Class]、[String]、[VariousClass]
|
||||
|
@@ -36,8 +36,8 @@ import com.highcapable.yukihookapi.hook.core.finder.type.factory.NameConditions
|
||||
import java.lang.reflect.Field
|
||||
|
||||
/**
|
||||
* [Field] 查询条件实现类
|
||||
* @param rulesData 当前查询条件规则数据
|
||||
* [Field] 查找条件实现类
|
||||
* @param rulesData 当前查找条件规则数据
|
||||
*/
|
||||
class FieldRules internal constructor(@PublishedApi internal val rulesData: FieldRulesData) : BaseRules() {
|
||||
|
||||
|
@@ -34,8 +34,8 @@ import com.highcapable.yukihookapi.hook.core.finder.type.factory.ModifierConditi
|
||||
import java.lang.reflect.Member
|
||||
|
||||
/**
|
||||
* [Member] 查询条件实现类
|
||||
* @param rulesData 当前查询条件规则数据
|
||||
* [Member] 查找条件实现类
|
||||
* @param rulesData 当前查找条件规则数据
|
||||
*/
|
||||
class MemberRules internal constructor(@PublishedApi internal val rulesData: MemberRulesData) : BaseRules() {
|
||||
|
||||
|
@@ -41,8 +41,8 @@ import com.highcapable.yukihookapi.hook.type.defined.VagueType
|
||||
import java.lang.reflect.Method
|
||||
|
||||
/**
|
||||
* [Method] 查询条件实现类
|
||||
* @param rulesData 当前查询条件规则数据
|
||||
* [Method] 查找条件实现类
|
||||
* @param rulesData 当前查找条件规则数据
|
||||
*/
|
||||
class MethodRules internal constructor(@PublishedApi internal val rulesData: MethodRulesData) : BaseRules() {
|
||||
|
||||
@@ -118,7 +118,7 @@ class MethodRules internal constructor(@PublishedApi internal val rulesData: Met
|
||||
* param(StringType, BooleanType, VagueType, IntType)
|
||||
* ```
|
||||
*
|
||||
* - ❗无参 [Method] 请使用 [emptyParam] 设置查询条件
|
||||
* - ❗无参 [Method] 请使用 [emptyParam] 设置查找条件
|
||||
*
|
||||
* - ❗有参 [Method] 必须使用此方法设定参数或使用 [paramCount] 指定个数
|
||||
* @param paramType 参数类型数组 - ❗只能是 [Class]、[String]、[VariousClass]
|
||||
|
@@ -39,7 +39,7 @@ import com.highcapable.yukihookapi.hook.core.finder.members.data.MethodRulesData
|
||||
import java.lang.reflect.Member
|
||||
|
||||
/**
|
||||
* [Member] 查询条件实现父类
|
||||
* [Member] 查找条件实现父类
|
||||
* @param instance 当前查找类实例
|
||||
*/
|
||||
open class BaseRules internal constructor(internal var instance: DexClassFinder? = null) {
|
||||
@@ -48,7 +48,7 @@ open class BaseRules internal constructor(internal var instance: DexClassFinder?
|
||||
internal companion object {
|
||||
|
||||
/**
|
||||
* 创建查询条件规则数据
|
||||
* 创建查找条件规则数据
|
||||
* @param instance 当前查找类实例
|
||||
* @return [MemberRulesData]
|
||||
*/
|
||||
@@ -57,7 +57,7 @@ open class BaseRules internal constructor(internal var instance: DexClassFinder?
|
||||
MemberRules(MemberRulesData().apply { instance.rulesData.memberRules.add(this) }).apply { this.instance = instance }
|
||||
|
||||
/**
|
||||
* 创建查询条件规则数据
|
||||
* 创建查找条件规则数据
|
||||
* @return [FieldRulesData]
|
||||
*/
|
||||
@PublishedApi
|
||||
@@ -65,7 +65,7 @@ open class BaseRules internal constructor(internal var instance: DexClassFinder?
|
||||
FieldRules(FieldRulesData().apply { instance.rulesData.fieldRules.add(this) }).apply { this.instance = instance }
|
||||
|
||||
/**
|
||||
* 创建查询条件规则数据
|
||||
* 创建查找条件规则数据
|
||||
* @return [MethodRulesData]
|
||||
*/
|
||||
@PublishedApi
|
||||
@@ -73,7 +73,7 @@ open class BaseRules internal constructor(internal var instance: DexClassFinder?
|
||||
MethodRules(MethodRulesData().apply { instance.rulesData.methodRules.add(this) }).apply { this.instance = instance }
|
||||
|
||||
/**
|
||||
* 创建查询条件规则数据
|
||||
* 创建查找条件规则数据
|
||||
* @return [ConstructorRulesData]
|
||||
*/
|
||||
@PublishedApi
|
||||
|
@@ -34,19 +34,19 @@ import com.highcapable.yukihookapi.hook.core.finder.type.factory.CountConditions
|
||||
import java.lang.reflect.Member
|
||||
|
||||
/**
|
||||
* 当前 [Member] 查询条件结果实现类
|
||||
* @param rulesData 当前查询条件规则数据
|
||||
* 当前 [Member] 查找条件结果实现类
|
||||
* @param rulesData 当前查找条件规则数据
|
||||
*/
|
||||
class MemberRulesResult internal constructor(private val rulesData: MemberRulesData) {
|
||||
|
||||
/**
|
||||
* 设置当前 [Member] 在查询条件中个数为 0
|
||||
* 设置当前 [Member] 在查找条件中个数为 0
|
||||
* @return [MemberRulesResult] 可继续向下监听
|
||||
*/
|
||||
fun none() = count(num = 0)
|
||||
|
||||
/**
|
||||
* 设置当前 [Member] 在查询条件中需要全部匹配的个数
|
||||
* 设置当前 [Member] 在查找条件中需要全部匹配的个数
|
||||
* @param num 个数
|
||||
* @return [MemberRulesResult] 可继续向下监听
|
||||
*/
|
||||
@@ -56,7 +56,7 @@ class MemberRulesResult internal constructor(private val rulesData: MemberRulesD
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前 [Member] 在查询条件中需要全部匹配的个数范围
|
||||
* 设置当前 [Member] 在查找条件中需要全部匹配的个数范围
|
||||
*
|
||||
* 使用示例如下 ↓
|
||||
*
|
||||
@@ -72,7 +72,7 @@ class MemberRulesResult internal constructor(private val rulesData: MemberRulesD
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前 [Member] 在查询条件中需要全部匹配的个数条件
|
||||
* 设置当前 [Member] 在查找条件中需要全部匹配的个数条件
|
||||
*
|
||||
* 使用示例如下 ↓
|
||||
*
|
||||
|
@@ -124,7 +124,7 @@ class ConstructorFinder @PublishedApi internal constructor(
|
||||
* param(StringType, BooleanType, VagueType, IntType)
|
||||
* ```
|
||||
*
|
||||
* - ❗无参 [Constructor] 请使用 [emptyParam] 设置查询条件
|
||||
* - ❗无参 [Constructor] 请使用 [emptyParam] 设置查找条件
|
||||
*
|
||||
* - ❗有参 [Constructor] 必须使用此方法设定参数或使用 [paramCount] 指定个数
|
||||
*
|
||||
@@ -369,7 +369,7 @@ class ConstructorFinder @PublishedApi internal constructor(
|
||||
inline fun result(initiate: Process.() -> Unit) = apply(initiate)
|
||||
|
||||
/**
|
||||
* 设置全部查询条件匹配的多个 [Constructor] 实例结果到 [hookInstance]
|
||||
* 设置全部查找条件匹配的多个 [Constructor] 实例结果到 [hookInstance]
|
||||
* @return [Process] 可继续向下监听
|
||||
*/
|
||||
fun all(): Process {
|
||||
@@ -445,7 +445,7 @@ class ConstructorFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 获得 [Constructor] 实例处理类数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Constructor] 实例结果
|
||||
* - 返回全部查找条件匹配的多个 [Constructor] 实例结果
|
||||
*
|
||||
* - ❗在 [memberInstances] 结果为空时使用此方法将无法获得对象
|
||||
*
|
||||
@@ -459,7 +459,7 @@ class ConstructorFinder @PublishedApi internal constructor(
|
||||
*
|
||||
* - 若有多个 [Constructor] 结果只会返回第一个
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将返回 null
|
||||
* - 在查找条件找不到任何结果的时候将返回 null
|
||||
* @return [Constructor] or null
|
||||
*/
|
||||
fun give() = giveAll().takeIf { it.isNotEmpty() }?.first()
|
||||
@@ -467,9 +467,9 @@ class ConstructorFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 得到 [Constructor] 本身数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Constructor] 实例
|
||||
* - 返回全部查找条件匹配的多个 [Constructor] 实例
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将返回空的 [HashSet]
|
||||
* - 在查找条件找不到任何结果的时候将返回空的 [HashSet]
|
||||
* @return [HashSet]<[Constructor]>
|
||||
*/
|
||||
fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.constructors() ?: HashSet()
|
||||
@@ -492,7 +492,7 @@ class ConstructorFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 获得 [Constructor] 实例处理类数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Constructor] 实例结果
|
||||
* - 返回全部查找条件匹配的多个 [Constructor] 实例结果
|
||||
*
|
||||
* - ❗若你设置了 [remedys] 必须使用此方法才能获得结果
|
||||
*
|
||||
|
@@ -324,7 +324,7 @@ class FieldFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 获得 [Field] 实例处理类数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Field] 实例结果
|
||||
* - 返回全部查找条件匹配的多个 [Field] 实例结果
|
||||
*
|
||||
* - ❗在 [memberInstances] 结果为空时使用此方法将无法获得对象
|
||||
*
|
||||
@@ -342,7 +342,7 @@ class FieldFinder @PublishedApi internal constructor(
|
||||
*
|
||||
* - 若有多个 [Field] 结果只会返回第一个
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将返回 null
|
||||
* - 在查找条件找不到任何结果的时候将返回 null
|
||||
* @return [Field] or null
|
||||
*/
|
||||
fun give() = giveAll().takeIf { it.isNotEmpty() }?.first()
|
||||
@@ -350,9 +350,9 @@ class FieldFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 得到 [Field] 本身数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Field] 实例
|
||||
* - 返回全部查找条件匹配的多个 [Field] 实例
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将返回空的 [HashSet]
|
||||
* - 在查找条件找不到任何结果的时候将返回空的 [HashSet]
|
||||
* @return [HashSet]<[Field]>
|
||||
*/
|
||||
fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.fields() ?: HashSet()
|
||||
@@ -376,7 +376,7 @@ class FieldFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 获得 [Field] 实例处理类数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Field] 实例结果
|
||||
* - 返回全部查找条件匹配的多个 [Field] 实例结果
|
||||
*
|
||||
* - ❗若你设置了 [remedys] 必须使用此方法才能获得结果
|
||||
*
|
||||
|
@@ -154,7 +154,7 @@ class MethodFinder @PublishedApi internal constructor(
|
||||
* param(StringType, BooleanType, VagueType, IntType)
|
||||
* ```
|
||||
*
|
||||
* - ❗无参 [Method] 请使用 [emptyParam] 设置查询条件
|
||||
* - ❗无参 [Method] 请使用 [emptyParam] 设置查找条件
|
||||
*
|
||||
* - ❗有参 [Method] 必须使用此方法设定参数或使用 [paramCount] 指定个数
|
||||
*
|
||||
@@ -442,7 +442,7 @@ class MethodFinder @PublishedApi internal constructor(
|
||||
inline fun result(initiate: Process.() -> Unit) = apply(initiate)
|
||||
|
||||
/**
|
||||
* 设置全部查询条件匹配的多个 [Method] 实例结果到 [hookInstance]
|
||||
* 设置全部查找条件匹配的多个 [Method] 实例结果到 [hookInstance]
|
||||
* @return [Process] 可继续向下监听
|
||||
*/
|
||||
fun all(): Process {
|
||||
@@ -519,7 +519,7 @@ class MethodFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 获得 [Method] 实例处理类数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Method] 实例结果
|
||||
* - 返回全部查找条件匹配的多个 [Method] 实例结果
|
||||
*
|
||||
* - ❗在 [memberInstances] 结果为空时使用此方法将无法获得对象
|
||||
*
|
||||
@@ -535,7 +535,7 @@ class MethodFinder @PublishedApi internal constructor(
|
||||
*
|
||||
* - 若有多个 [Method] 结果只会返回第一个
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将返回 null
|
||||
* - 在查找条件找不到任何结果的时候将返回 null
|
||||
* @return [Method] or null
|
||||
*/
|
||||
fun give() = giveAll().takeIf { it.isNotEmpty() }?.first()
|
||||
@@ -543,9 +543,9 @@ class MethodFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 得到 [Method] 本身数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Method] 实例
|
||||
* - 返回全部查找条件匹配的多个 [Method] 实例
|
||||
*
|
||||
* - 在查询条件找不到任何结果的时候将返回空的 [HashSet]
|
||||
* - 在查找条件找不到任何结果的时候将返回空的 [HashSet]
|
||||
* @return [HashSet]<[Method]>
|
||||
*/
|
||||
fun giveAll() = memberInstances.takeIf { it.isNotEmpty() }?.methods() ?: HashSet()
|
||||
@@ -569,7 +569,7 @@ class MethodFinder @PublishedApi internal constructor(
|
||||
/**
|
||||
* 获得 [Method] 实例处理类数组
|
||||
*
|
||||
* - 返回全部查询条件匹配的多个 [Method] 实例结果
|
||||
* - 返回全部查找条件匹配的多个 [Method] 实例结果
|
||||
*
|
||||
* - ❗若你设置了 [remedys] 必须使用此方法才能获得结果
|
||||
*
|
||||
|
@@ -31,7 +31,7 @@ import com.highcapable.yukihookapi.hook.core.finder.type.factory.CountConditions
|
||||
import java.lang.reflect.Constructor
|
||||
|
||||
/**
|
||||
* [Constructor] 规则查询数据类
|
||||
* [Constructor] 规则查找数据类
|
||||
* @param paramTypes 参数类型数组
|
||||
* @param paramCount 参数个数
|
||||
* @param paramCountRange 参数个数范围
|
||||
|
@@ -31,7 +31,7 @@ import com.highcapable.yukihookapi.hook.core.finder.type.factory.NameConditions
|
||||
import java.lang.reflect.Field
|
||||
|
||||
/**
|
||||
* [Field] 规则查询数据类
|
||||
* [Field] 规则查找数据类
|
||||
* @param name 名称
|
||||
* @param nameConditions 名称规则
|
||||
* @param type 类型
|
||||
|
@@ -33,7 +33,7 @@ import com.highcapable.yukihookapi.hook.core.finder.type.factory.CountConditions
|
||||
import java.lang.reflect.Member
|
||||
|
||||
/**
|
||||
* [Member] 规则查询数据类
|
||||
* [Member] 规则查找数据类
|
||||
* @param isFindInSuper 是否在未找到后继续在父类中查找
|
||||
* @param matchCount 匹配的字节码个数
|
||||
* @param matchCountRange 匹配的字节码个数范围
|
||||
|
@@ -32,7 +32,7 @@ import com.highcapable.yukihookapi.hook.core.finder.type.factory.NameConditions
|
||||
import java.lang.reflect.Method
|
||||
|
||||
/**
|
||||
* [Method] 规则查询数据类
|
||||
* [Method] 规则查找数据类
|
||||
* @param name 名称
|
||||
* @param nameConditions 名称规则
|
||||
* @param paramTypes 参数类型数组
|
||||
|
@@ -86,7 +86,7 @@ internal object ReflectionTool {
|
||||
}.orEmpty().also { if (it.isNotEmpty()) ReflectsCacheStore.putDexClassList(loader.hashCode(), it) }
|
||||
|
||||
/**
|
||||
* 使用字符串类名查询 [Class] 是否存在
|
||||
* 使用字符串类名查找 [Class] 是否存在
|
||||
* @param name [Class] 完整名称
|
||||
* @param loader [Class] 所在的 [ClassLoader]
|
||||
* @return [Boolean]
|
||||
@@ -115,7 +115,7 @@ internal object ReflectionTool {
|
||||
/**
|
||||
* 查找任意 [Class] 或一组 [Class]
|
||||
* @param loaderSet 类所在 [ClassLoader]
|
||||
* @param rulesData 规则查询数据
|
||||
* @param rulesData 规则查找数据
|
||||
* @return [HashSet]<[Class]>
|
||||
* @throws IllegalStateException 如果 [loaderSet] 为 null 或未设置任何条件
|
||||
* @throws NoClassDefFoundError 如果找不到 [Class]
|
||||
@@ -123,7 +123,7 @@ internal object ReflectionTool {
|
||||
internal fun findClasses(loaderSet: ClassLoader?, rulesData: ClassRulesData) = rulesData.createResult {
|
||||
ReflectsCacheStore.findClasses(hashCode(loaderSet)) ?: hashSetOf<Class<*>>().also { classes ->
|
||||
/**
|
||||
* 开始查询作业
|
||||
* 开始查找作业
|
||||
* @param instance 当前 [Class] 实例
|
||||
*/
|
||||
fun startProcess(instance: Class<*>) {
|
||||
@@ -249,7 +249,7 @@ internal object ReflectionTool {
|
||||
/**
|
||||
* 查找任意 [Field] 或一组 [Field]
|
||||
* @param classSet [Field] 所在类
|
||||
* @param rulesData 规则查询数据
|
||||
* @param rulesData 规则查找数据
|
||||
* @return [HashSet]<[Field]>
|
||||
* @throws IllegalStateException 如果未设置任何条件或 [FieldRulesData.type] 目标类不存在
|
||||
* @throws NoSuchFieldError 如果找不到 [Field]
|
||||
@@ -303,7 +303,7 @@ internal object ReflectionTool {
|
||||
/**
|
||||
* 查找任意 [Method] 或一组 [Method]
|
||||
* @param classSet [Method] 所在类
|
||||
* @param rulesData 规则查询数据
|
||||
* @param rulesData 规则查找数据
|
||||
* @return [HashSet]<[Method]>
|
||||
* @throws IllegalStateException 如果未设置任何条件或 [MethodRulesData.paramTypes] 以及 [MethodRulesData.returnType] 目标类不存在
|
||||
* @throws NoSuchMethodError 如果找不到 [Method]
|
||||
@@ -394,7 +394,7 @@ internal object ReflectionTool {
|
||||
/**
|
||||
* 查找任意 [Constructor] 或一组 [Constructor]
|
||||
* @param classSet [Constructor] 所在类
|
||||
* @param rulesData 规则查询数据
|
||||
* @param rulesData 规则查找数据
|
||||
* @return [HashSet]<[Constructor]>
|
||||
* @throws IllegalStateException 如果未设置任何条件或 [ConstructorRulesData.paramTypes] 目标类不存在
|
||||
* @throws NoSuchMethodError 如果找不到 [Constructor]
|
||||
|
@@ -148,14 +148,14 @@ inline fun Class<*>.hasMethod(initiate: MethodConditions) = method(initiate).ign
|
||||
inline fun Class<*>.hasConstructor(initiate: ConstructorConditions = { emptyParam() }) = constructor(initiate).ignored().isNoSuch.not()
|
||||
|
||||
/**
|
||||
* 查询 [Member] 中匹配的描述符
|
||||
* 查找 [Member] 中匹配的描述符
|
||||
* @param conditions 条件方法体
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
inline fun Member.hasModifiers(conditions: ModifierConditions) = conditions(ModifierRules.with(instance = this))
|
||||
|
||||
/**
|
||||
* 查询 [Class] 中匹配的描述符
|
||||
* 查找 [Class] 中匹配的描述符
|
||||
* @param conditions 条件方法体
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
|
Reference in New Issue
Block a user