DexClassFinder - class

class DexClassFinder internal constructor(
    private val context: Context?,
    internal var name: String,
    internal var async: Boolean,
    override val loaderSet: ClassLoader?
) : ClassBaseFinder

变更记录

v1.0.0 添加

功能描述

Class 查找类。

可使用 BaseDexClassLoader 通过指定条件查找指定 Class 或一组 Class

注意

此功能尚在试验阶段,性能与稳定性可能仍然存在问题,使用过程遇到问题请向我们报告并帮助我们改进。

companion object - object

变更记录

v1.0.0 添加

clearCache - method

fun clearCache(context: Context, versionName: String?, versionCode: Long?)

变更记录

v1.0.0 添加

功能描述

清除当前 DexClassFinderClass 缓存。

适用于全部通过 ClassLoader.searchClass 获取的 DexClassFinder

fullName - field

var fullName: String

变更记录

v1.0.0 添加

功能描述

设置 Class 完整名称。

只会查找匹配到的 Class.getName

例如 com.demo.Test 需要填写 com.demo.Test

simpleName - field

var simpleName: String

变更记录

v1.0.0 添加

功能描述

设置 Class 简单名称。

只会查找匹配到的 Class.getSimpleName

例如 com.demo.Test 只需要填写 Test

对于匿名类例如 com.demo.Test$InnerTest 会为空,此时你可以使用 singleName

singleName - field

var singleName: String

变更记录

v1.0.0 添加

功能描述

设置 Class 独立名称。

设置后将首先使用 Class.getSimpleName,若为空则会使用 Class.getName 进行处理。

例如 com.demo.Test 只需要填写 Test

对于匿名类例如 com.demo.Test$InnerTest 只需要填写 Test$InnerTest

from - method

fun from(vararg name: String): FromPackageRules

变更记录

v1.0.0 添加

功能描述

设置在指定包名范围查找当前 Class

设置后仅会在当前 name 开头匹配的包名路径下进行查找,可提升查找速度。

例如 ↓

com.demo.test

com.demo.test.demo

注意

建议设置此参数指定查找范围,否则 Class 过多时将会非常慢。

modifiers - method

fun modifiers(conditions: ModifierConditions)

变更记录

v1.0.0 添加

功能描述

设置 Class 标识符筛选条件。

可不设置筛选条件。

fullName - method

fun fullName(value: String): ClassNameRules

变更记录

v1.0.0 添加

功能描述

设置 Class 完整名称。

只会查找匹配到的 Class.getName

例如 com.demo.Test 需要填写 com.demo.Test

simpleName - method

fun simpleName(value: String): ClassNameRules

变更记录

v1.0.0 添加

功能描述

设置 Class 简单名称。

只会查找匹配到的 Class.getSimpleName

例如 com.demo.Test 只需要填写 Test

对于匿名类例如 com.demo.Test$InnerTest 会为空,此时你可以使用 singleName

singleName - method

fun singleName(value: String): ClassNameRules

变更记录

v1.0.0 添加

功能描述

设置 Class 独立名称。

设置后将首先使用 Class.getSimpleName,若为空则会使用 Class.getName 进行处理。

例如 com.demo.Test 只需要填写 Test

对于匿名类例如 com.demo.Test$InnerTest 只需要填写 Test$InnerTest

fullName - method

fun fullName(conditions: NameConditions)

变更记录

v1.0.0 添加

功能描述

设置 Class 完整名称条件。

只会查找匹配到的 Class.getName

simpleName - method

fun simpleName(conditions: NameConditions)

变更记录

v1.0.0 添加

功能描述

设置 Class 简单名称条件。

只会查找匹配到的 Class.getSimpleName

singleName - method

fun singleName(conditions: NameConditions)

变更记录

v1.0.0 添加

功能描述

设置 Class 独立名称条件。

设置后将首先使用 Class.getSimpleName,若为空则会使用 Class.getName 进行处理。

extends - method

inline fun <reified T> extends()

变更记录

v1.0.0 添加

功能描述

设置 Class 继承的父类。

extends - method

fun extends(vararg name: String)

变更记录

v1.0.0 添加

功能描述

设置 Class 继承的父类。

会同时查找 name 中所有匹配的父类。

implements - method

inline fun <reified T> implements()

变更记录

v1.0.0 添加

功能描述

设置 Class 实现的接口类。

implements - method

fun implements(vararg name: String)

变更记录

v1.0.0 添加

功能描述

设置 Class 实现的接口类。

会同时查找 name 中所有匹配的接口类。

anonymous - method

fun anonymous()

变更记录

v1.0.0 添加

功能描述

标识 Class 为匿名类。

例如 com.demo.Test$1com.demo.Test$InnerTest

标识后你可以使用 enclosing 来进一步指定匿名类的 (封闭类) 主类。

noExtends - method

fun noExtends()

变更记录

v1.0.0 添加

功能描述

设置 Class 没有任何继承。

此时 Class 只应该继承于 Any

注意

设置此条件后 extends 将失效。

noImplements - method

fun noImplements()

变更记录

v1.0.0 添加

功能描述

设置 Class 没有任何接口。

注意

设置此条件后 implements 将失效。

noSuper - method

fun noSuper()

变更记录

v1.0.0 添加

功能描述

设置 Class 没有任何继承与接口。

此时 Class 只应该继承于 Any

注意

设置此条件后 extendsimplements 将失效。

enclosing - method

inline fun <reified T> enclosing()

变更记录

v1.0.0 添加

功能描述

设置 Class 匿名类的 (封闭类) 主类。

enclosing - method

fun enclosing(vararg name: String)

变更记录

v1.0.0 添加

功能描述

设置 Class 匿名类的 (封闭类) 主类。

会同时查找 name 中所有匹配的 (封闭类) 主类。

FromPackageRules - class

inner class FromPackageRules internal constructor(private val packages: MutableList<ClassRulesData.PackageRulesData>)

变更记录

v1.0.0 添加

功能描述

包名范围名称过滤匹配条件实现类。

absolute - method

fun absolute()

变更记录

v1.0.0 添加

功能描述

设置包名绝对匹配。

例如有如下包名 ↓

com.demo.test.a

com.demo.test.a.b

com.demo.test.active

若包名条件为 com.demo.test.a 则绝对匹配仅能匹配到第一个。

相反地,不设置以上示例会全部匹配。

ClassNameRules - class

inner class ClassNameRules internal constructor(private val name: ClassRulesData.NameRulesData)

变更记录

v1.0.0 添加

功能描述

类名匹配条件实现类。

optional - method

fun optional()

变更记录

v1.0.0 添加

功能描述

设置类名可选。

例如有如下类名 ↓

com.demo.Test fullName / Test simpleName

defpackage.a fullName / a simpleName

这两个类名都是同一个类,但是在有些版本中被混淆有些版本没有。

此时可设置类名为 com.demo.Test fullName / Test simpleName

这样就可在完全匹配类名情况下使用类名而忽略其它查找条件,否则忽略此条件继续使用其它查找条件。

member - method

inline fun member(initiate: MemberRules.() -> Unit): MemberRulesResult

变更记录

v1.0.0 添加

功能描述

设置 Class 满足的 Member 条件。

field - method

inline fun field(initiate: FieldRules.() -> Unit): MemberRulesResult

变更记录

v1.0.0 添加

功能描述

设置 Class 满足的 Field 条件。

method - method

inline fun method(initiate: MethodRules.() -> Unit): MemberRulesResult

变更记录

v1.0.0 添加

功能描述

设置 Class 满足的 Method 条件。

constructor - method

inline fun constructor(initiate: ConstructorRules.() -> Unit): MemberRulesResult

变更记录

v1.0.0 添加

功能描述

设置 Class 满足的 Constructor 条件。

Result - class

inner class Result internal constructor(internal var isNotFound: Boolean, internal var throwable: Throwable?) : BaseResult

变更记录

v1.0.0 添加

功能描述

Class 查找结果实现类。

result - method

inline fun result(initiate: Result.() -> Unit): Result

变更记录

v1.0.0 添加

功能描述

创建监听结果事件方法体。

get - method

fun get(): Class<*>?

变更记录

v1.0.0 添加

功能描述

得到 Class 本身。

若有多个 Class 结果只会返回第一个。

在查找条件找不到任何结果的时候将返回 null

若你设置了 async 请使用 wait 方法。

all - method

fun all(): MutableList<Class<*>>

变更记录

v1.0.0 添加

v1.0.3 修改

返回值类型由 HashSet 修改为 MutableList

功能描述

得到 Class 本身数组。

返回全部查找条件匹配的多个 Class 实例。

在查找条件找不到任何结果的时候将返回空的 MutableList

若你设置了 async 请使用 waitAll 方法。

all - method

fun all(result: (Class<*>) -> Unit): Result

变更记录

v1.0.0 添加

功能描述

得到 Class 本身数组 (依次遍历)。

回调全部查找条件匹配的多个 Class 实例。

在查找条件找不到任何结果的时候将不会执行。

若你设置了 async 请使用 waitAll 方法。

wait - method

fun wait(result: (Class<*>?) -> Unit): Result

变更记录

v1.0.0 添加

功能描述

得到 Class 本身 (异步)。

若有多个 Class 结果只会回调第一个。

在查找条件找不到任何结果的时候将回调 null。

你需要设置 async 后此方法才会被回调,否则请使用 get 方法。

waitAll - method

fun waitAll(result: (MutableList<Class<*>>) -> Unit): Result

变更记录

v1.0.0 添加

v1.0.3 修改

result 类型由 HashSet 修改为 MutableList

功能描述

得到 Class 本身数组 (异步)。

回调全部查找条件匹配的多个 Class 实例。

在查找条件找不到任何结果的时候将回调空的 MutableList

你需要设置 async 后此方法才会被回调,否则请使用 all 方法。

onNoClassDefFoundError - method

fun onNoClassDefFoundError(result: (Throwable) -> Unit): Result

变更记录

v1.0.0 添加

功能描述

监听找不到 Class 时。

ignored - method

fun ignored(): Result

变更记录

v1.0.0 添加

功能描述

忽略异常并停止打印任何错误日志。

此时若要监听异常结果,你需要手动实现 onNoClassDefFoundError 方法。