Added DexClassFinder function allowed ClassLoader to search classes (Beta Feature)

This commit is contained in:
2022-09-21 14:30:17 +08:00
parent 6ea012472d
commit 41546b2c9f
23 changed files with 3025 additions and 8 deletions

View File

@@ -56,6 +56,12 @@ const navigationLinks = {
baseApiPath + 'hook/core/finder/members/MethodFinder',
baseApiPath + 'hook/core/finder/members/ConstructorFinder',
baseApiPath + 'hook/core/finder/members/FieldFinder',
baseApiPath + 'hook/core/finder/classes/DexClassFinder',
baseApiPath + 'hook/core/finder/classes/rules/result/MemberRulesResult',
baseApiPath + 'hook/core/finder/classes/rules/MemberRules',
baseApiPath + 'hook/core/finder/classes/rules/FieldRules',
baseApiPath + 'hook/core/finder/classes/rules/MethodRules',
baseApiPath + 'hook/core/finder/classes/rules/ConstructorRules',
baseApiPath + 'hook/core/finder/base/BaseFinder',
baseApiPath + 'hook/core/finder/base/rules/CountRules',
baseApiPath + 'hook/core/finder/base/rules/ModifierRules',
@@ -63,6 +69,7 @@ const navigationLinks = {
baseApiPath + 'hook/bean/HookClass',
baseApiPath + 'hook/bean/VariousClass',
baseApiPath + 'hook/bean/CurrentClass',
baseApiPath + 'hook/bean/GenericClass',
baseApiPath + 'hook/bean/HookResources'
],
specialFeature: [

View File

@@ -0,0 +1,725 @@
---
pageClass: code-page
---
# DexClassFinder <span class="symbol">- class</span>
```kotlin:no-line-numbers
class DexClassFinder internal constructor(
internal var name: String,
internal var async: Boolean,
override val loaderSet: ClassLoader?
) : ClassBaseFinder
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> `Class` 查找类。
可使用 `BaseDexClassLoader` 通过指定条件查找指定 `Class` 或一组 `Class`。
::: warning
此功能尚在试验阶段,性能与稳定性可能仍然存在问题,使用过程遇到问题请向我们报告并帮助我们改进。
:::
## companion object <span class="symbol">- object</span>
**变更记录**
`v1.1.0` `新增`
### clearCache <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun clearCache(context: Context?, versionName: String?, versionCode: Long?)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 清除当前 `DexClassFinder` 的 `Class` 缓存。
适用于全部通过 [ClassLoader.searchClass](../../../factory/ReflectionFactory#classloader-searchclass-ext-method) 或 [PackageParam.searchClass](../../../param/PackageParam#searchclass-method) 获取的 `DexClassFinder`。
## fullName <span class="symbol">- field</span>
```kotlin:no-line-numbers
var fullName: String
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 完整名称。
只会查询匹配到的 `Class.getName`。
例如 `com.demo.Test` 需要填写 `com.demo.Test`。
## simpleName <span class="symbol">- field</span>
```kotlin:no-line-numbers
var simpleName: String
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 简单名称。
只会查询匹配到的 `Class.getSimpleName`。
例如 `com.demo.Test` 只需要填写 `Test`。
对于匿名类例如 `com.demo.Test$InnerTest` 会为空,此时你可以使用 [singleName](#singlename-field)。
## singleName <span class="symbol">- field</span>
```kotlin:no-line-numbers
var singleName: String
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 独立名称。
设置后将首先使用 `Class.getSimpleName`,若为空则会使用 `Class.getName` 进行处理。
例如 `com.demo.Test` 只需要填写 `Test`。
对于匿名类例如 `com.demo.Test$InnerTest` 只需要填写 `Test$InnerTest`。
## from <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun from(vararg name: String): FromPackageRules
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置在指定包名范围查询当前 `Class`。
设置后仅会在当前 `name` 开头匹配的包名路径下进行查询,可提升查询速度。
例如 ↓
`com.demo.test`
`com.demo.test.demo`
::: warning
建议设置此参数指定查询范围,否则 **Class** 过多时将会非常慢。
:::
## modifiers <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun modifiers(conditions: ModifierConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 标识符筛选条件。
可不设置筛选条件。
## fullName <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun fullName(value: String): ClassNameRules
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 完整名称。
只会查询匹配到的 `Class.getName`。
例如 `com.demo.Test` 需要填写 `com.demo.Test`。
## simpleName <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun simpleName(value: String): ClassNameRules
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 简单名称。
只会查询匹配到的 `Class.getSimpleName`。
例如 `com.demo.Test` 只需要填写 `Test`。
对于匿名类例如 `com.demo.Test$InnerTest 会为空`,此时你可以使用 [singleName](#singlename-method)。
## singleName <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun singleName(value: String): ClassNameRules
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 独立名称。
设置后将首先使用 `Class.getSimpleName`,若为空则会使用 `Class.getName` 进行处理。
例如 `com.demo.Test` 只需要填写 `Test`。
对于匿名类例如 `com.demo.Test$InnerTest` 只需要填写 `Test$InnerTest`。
## fullName <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun fullName(conditions: NameConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 完整名称条件。
只会查询匹配到的 `Class.getName`。
## simpleName <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun simpleName(conditions: NameConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 简单名称条件。
只会查询匹配到的 `Class.getSimpleName`。
## singleName <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun singleName(conditions: NameConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 独立名称条件。
设置后将首先使用 `Class.getSimpleName`,若为空则会使用 `Class.getName` 进行处理。
## extends <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun <reified T> extends()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 继承的父类。
## extends <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun extends(vararg name: String)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 继承的父类。
会同时查询 `name` 中所有匹配的父类。
## implements <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun <reified T> implements()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 实现的接口类。
## implements <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun implements(vararg name: String)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 实现的接口类。
会同时查询 `name` 中所有匹配的接口类。
## anonymous <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun anonymous()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 标识 `Class` 为匿名类。
例如 `com.demo.Test$1` 或 `com.demo.Test$InnerTest`。
标识后你可以使用 [enclosing](#enclosing-method) 来进一步指定匿名类的 (封闭类) 主类。
## noExtends <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun noExtends()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 没有任何继承。
此时 `Class` 只应该继承于 `Any`。
::: warning
设置此条件后 [extends](#extends-method) 将失效。
:::
## noImplements <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun noImplements()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 没有任何接口。
::: warning
设置此条件后 [implements](#implements-method) 将失效。
:::
## noSuper <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun noSuper()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 没有任何继承与接口。
此时 `Class` 只应该继承于 `Any`。
::: warning
设置此条件后 [extends](#extends-method) 与 [implements](#implements-method) 将失效。
:::
## enclosing <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun <reified T> enclosing()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 匿名类的 (封闭类) 主类。
## enclosing <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun enclosing(vararg name: String)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 匿名类的 (封闭类) 主类。
会同时查询 `name` 中所有匹配的 (封闭类) 主类。
## FromPackageRules <span class="symbol">- class</span>
```kotlin:no-line-numbers
inner class FromPackageRules internal constructor(private val packages: ArrayList<ClassRulesData.PackageRulesData>)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 包名范围名称过滤匹配条件实现类。
### absolute <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun absolute()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置包名绝对匹配。
例如有如下包名 ↓
`com.demo.test.a`
`com.demo.test.a.b`
`com.demo.test.active`
若包名条件为 `com.demo.test.a` 则绝对匹配仅能匹配到第一个。
相反地,不设置以上示例会全部匹配。
## ClassNameRules <span class="symbol">- class</span>
```kotlin:no-line-numbers
inner class ClassNameRules internal constructor(private val name: ClassRulesData.NameRulesData)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 类名匹配条件实现类。
### optional <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun optional()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置类名可选。
例如有如下类名 ↓
`com.demo.Test` **fullName** / `Test` **simpleName**
`defpackage.a` **fullName** / `a` **simpleName**
这两个类名都是同一个类,但是在有些版本中被混淆有些版本没有。
此时可设置类名为 `com.demo.Test` **fullName** / `Test` **simpleName**。
这样就可在完全匹配类名情况下使用类名而忽略其它查询条件,否则忽略此条件继续使用其它查询条件。
## member <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun member(initiate: MemberRules.() -> Unit): MemberRulesResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 满足的 `Member` 条件。
## field <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun field(initiate: FieldRules.() -> Unit): MemberRulesResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 满足的 `Field` 条件。
## method <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun method(initiate: MethodRules.() -> Unit): MemberRulesResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 满足的 `Method` 条件。
## constructor <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun constructor(initiate: ConstructorRules.() -> Unit): MemberRulesResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Class` 满足的 `Constructor` 条件。
## Result <span class="symbol">- class</span>
```kotlin:no-line-numbers
inner class Result internal constructor(internal var isNotFound: Boolean, internal var throwable: Throwable?) : BaseResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> `Class` 查找结果实现类。
### result <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun result(initiate: Result.() -> Unit): Result
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 创建监听结果事件方法体。
### get <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun get(): Class<*>?
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 得到 `Class` 本身。
若有多个 `Class` 结果只会返回第一个。
在查询条件找不到任何结果的时候将返回 `null`。
若你设置了 `async` 请使用 [wait](#wait-method) 方法。
### all <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun all(): HashSet<Class<*>>
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 得到 `Class` 本身数组。
返回全部查询条件匹配的多个 `Class` 实例。
在查询条件找不到任何结果的时候将返回空的 `HashSet`。
若你设置了 `async` 请使用 [waitAll](#waitall-method) 方法。
### all <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun all(result: (Class<*>) -> Unit): Result
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 得到 `Class` 本身数组 (依次遍历)。
回调全部查询条件匹配的多个 `Class` 实例。
在查询条件找不到任何结果的时候将不会执行。
若你设置了 `async` 请使用 [waitAll](#waitall-method) 方法。
### wait <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun wait(result: (Class<*>?) -> Unit): Result
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 得到 `Class` 本身 (异步)。
若有多个 `Class` 结果只会回调第一个。
在查询条件找不到任何结果的时候将回调 null。
你需要设置 `async` 后此方法才会被回调,否则请使用 [get](#get-method) 方法。
### waitAll <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun waitAll(result: (HashSet<Class<*>>) -> Unit): Result
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 得到 `Class` 本身数组 (异步)。
回调全部查询条件匹配的多个 `Class` 实例。
在查询条件找不到任何结果的时候将回调空的 `HashSet`。
你需要设置 `async` 后此方法才会被回调,否则请使用 [all](#all-method) 方法。
### onNoClassDefFoundError <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun onNoClassDefFoundError(result: (Throwable) -> Unit): Result
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 监听找不到 `Class` 时。
### ignored <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun ignored(): Result
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 忽略异常并停止打印任何错误日志。
此时若要监听异常结果,你需要手动实现 [onNoClassDefFoundError](#onnoclassdeffounderror-method) 方法。

View File

@@ -0,0 +1,123 @@
---
pageClass: code-page
---
# ConstructorRules <span class="symbol">- class</span>
```kotlin:no-line-numbers
class ConstructorRules internal constructor(internal val rulesData: ConstructorRulesData) : BaseRules
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> `Constructor` 查询条件实现类。
## paramCount <span class="symbol">- field</span>
```kotlin:no-line-numbers
var paramCount: Int
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Constructor` 参数个数。
你可以不使用 `param` 指定参数类型而是仅使用此变量指定参数个数。
若参数个数小于零则忽略并使用 `param`。
## modifiers <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun modifiers(conditions: ModifierConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Constructor` 标识符筛选条件。
可不设置筛选条件。
## emptyParam <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun emptyParam()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Constructor` 空参数、无参数。
## param <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun param(vararg paramType: Any)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Constructor` 参数。
如果同时使用了 `paramCount` 则 `paramType` 的数量必须与 `paramCount` 完全匹配。
如果 `Constructor` 中存在一些无意义又很长的类型,你可以使用 `VagueType` 来替代它。
::: danger
无参 **Constructor** 请使用 **emptyParam** 设置查询条件。
有参 **Constructor** 必须使用此方法设定参数或使用 **paramCount** 指定个数。
:::
## paramCount <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun paramCount(numRange: IntRange)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Constructor` 参数个数范围。
你可以不使用 `param` 指定参数类型而是仅使用此方法指定参数个数范围。
## paramCount <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun paramCount(conditions: CountConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Constructor` 参数个数条件。
你可以不使用 `param` 指定参数类型而是仅使用此方法指定参数个数条件。

View File

@@ -0,0 +1,77 @@
---
pageClass: code-page
---
# FieldRules <span class="symbol">- class</span>
```kotlin:no-line-numbers
class FieldRules internal constructor(internal val rulesData: FieldRulesData) : BaseRules
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> `Field` 查询条件实现类。
## name <span class="symbol">- field</span>
```kotlin:no-line-numbers
var name: String
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Field` 名称。
## type <span class="symbol">- field</span>
```kotlin:no-line-numbers
var type: Any?
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Field` 类型。
可不填写类型。
## modifiers <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun modifiers(conditions: ModifierConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Field` 标识符筛选条件。
可不设置筛选条件。
## name <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun name(conditions: NameConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Field` 名称条件。

View File

@@ -0,0 +1,33 @@
---
pageClass: code-page
---
# MemberRules <span class="symbol">- class</span>
```kotlin:no-line-numbers
class MemberRules internal constructor(internal val rulesData: MemberRulesData) : BaseRules
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> `Member` 查询条件实现类。
## modifiers <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun modifiers(conditions: ModifierConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Member` 标识符筛选条件。
可不设置筛选条件。

View File

@@ -0,0 +1,167 @@
---
pageClass: code-page
---
# MethodRules <span class="symbol">- class</span>
```kotlin:no-line-numbers
class MethodRules internal constructor(internal val rulesData: MethodRulesData) : BaseRules
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> `Method` 查询条件实现类。
## name <span class="symbol">- field</span>
```kotlin:no-line-numbers
var name: String
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 名称。
## paramCount <span class="symbol">- field</span>
```kotlin:no-line-numbers
var paramCount: Int
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 参数个数。
你可以不使用 `param` 指定参数类型而是仅使用此变量指定参数个数。
若参数个数小于零则忽略并使用 `param`。
## returnType <span class="symbol">- field</span>
```kotlin:no-line-numbers
var returnType: Any?
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 返回值。
可不填写返回值。
## modifiers <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun modifiers(conditions: ModifierConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 标识符筛选条件。
可不设置筛选条件。
## emptyParam <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun emptyParam()
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 空参数、无参数。
## param <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun param(vararg paramType: Any)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 参数。
如果同时使用了 `paramCount` 则 `paramType` 的数量必须与 `paramCount` 完全匹配。
如果 `Method` 中存在一些无意义又很长的类型,你可以使用 `VagueType` 来替代它。
::: danger
无参 **Method** 请使用 **emptyParam** 设置查询条件。
有参 **Method** 必须使用此方法设定参数或使用 **paramCount** 指定个数。
:::
## name <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun name(conditions: NameConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 名称条件。
## paramCount <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun paramCount(numRange: IntRange)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 参数个数范围。
你可以不使用 `param` 指定参数类型而是仅使用此方法指定参数个数范围。
## paramCount <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun paramCount(conditions: CountConditions)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置 `Method` 参数个数条件。
你可以不使用 `param` 指定参数类型而是仅使用此方法指定参数个数条件。

View File

@@ -0,0 +1,73 @@
---
pageClass: code-page
---
# MemberRulesResult <span class="symbol">- class</span>
```kotlin:no-line-numbers
class MemberRulesResult internal constructor(private val rulesData: MemberRulesData)
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 当前 `Member` 查询条件结果实现类。
## none <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun none(): MemberRulesResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置当前 `Member` 在查询条件中个数为 `0`。
## count <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun count(num: Int): MemberRulesResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置当前 `Member` 在查询条件中需要全部匹配的个数。
## count <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun count(numRange: IntRange): MemberRulesResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置当前 `Member` 在查询条件中需要全部匹配的个数范围。
## count <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun count(conditions: CountConditions): MemberRulesResult
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 设置当前 `Member` 在查询条件中需要全部匹配的个数条件。

View File

@@ -68,6 +68,30 @@ CONSTRUCTOR
> 全部 `Constructor`。
## ClassLoader.searchClass <span class="symbol">- ext-method</span>
```kotlin:no-line-numbers
inline fun ClassLoader.searchClass(name: String, async: Boolean, initiate: ClassConditions): DexClassFinder.Result
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 通过当前 `ClassLoader` 按指定条件查找并得到 **Dex** 中的 `Class`。
::: danger
此方法在 **Class** 数量过多及查找条件复杂时会非常耗时。
建议启用 **async** 或设置 **name** 参数,**name** 参数将在 Hook APP (宿主) 不同版本中自动进行本地缓存以提升效率。
此功能尚在试验阶段,性能与稳定性可能仍然存在问题,使用过程遇到问题请向我们报告并帮助我们改进。
:::
## ClassLoader.onLoadClass <span class="symbol">- ext-method</span>
```kotlin:no-line-numbers

View File

@@ -472,6 +472,30 @@ fun loadHooker(hooker: YukiBaseHooker)
你可以填入 `hooker` 在 Hooker 中继续装载 Hooker。
## searchClass <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun searchClass(name: String, async: Boolean, initiate: ClassConditions): DexClassFinder.Result
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 通过 `appClassLoader` 按指定条件查找并得到当前 Hook APP **Dex** 中的 `Class`。
::: danger
此方法在 **Class** 数量过多及查找条件复杂时会非常耗时。
建议启用 **async** 或设置 **name** 参数,**name** 参数将在 Hook APP (宿主) 不同版本中自动进行本地缓存以提升效率。
此功能尚在试验阶段,性能与稳定性可能仍然存在问题,使用过程遇到问题请向我们报告并帮助我们改进。
:::
<h2 class="deprecated">String+VariousClass.clazz - i-ext-field</h2>
**变更记录**