Notice
The English translation of this page has not been completed, you are welcome to contribute translations to us.
You can use the Chrome Translation Plugin to translate entire pages for reference.
- class
DexClassFinderclass DexClassFinder internal constructor(
private val context: Context?,
internal var name: String,
internal var async: Boolean,
override val loaderSet: ClassLoader?
) : ClassBaseFinder
Change Records
v1.0.0
first
Function Illustrate
Class
查找类。
可使用 BaseDexClassLoader
通过指定条件查找指定 Class
或一组 Class
。
Notice
此功能尚在试验阶段,性能与稳定性可能仍然存在问题,使用过程遇到问题请向我们报告并帮助我们改进。
- object
companion objectChange Records
v1.0.0
first
- method
clearCachefun clearCache(context: Context, versionName: String?, versionCode: Long?)
Change Records
v1.0.0
first
Function Illustrate
清除当前
DexClassFinder
的Class
缓存。
适用于全部通过 ClassLoader.searchClass 获取的 DexClassFinder
。
- field
fullNamevar fullName: String
Change Records
v1.0.0
first
Function Illustrate
设置
Class
完整名称。
只会查找匹配到的 Class.getName
。
例如 com.demo.Test
需要填写 com.demo.Test
。
- field
simpleNamevar simpleName: String
Change Records
v1.0.0
first
Function Illustrate
设置
Class
简单名称。
只会查找匹配到的 Class.getSimpleName
。
例如 com.demo.Test
只需要填写 Test
。
对于匿名类例如 com.demo.Test$InnerTest
会为空,此时你可以使用 singleName。
- field
singleNamevar singleName: String
Change Records
v1.0.0
first
Function Illustrate
设置
Class
独立名称。
设置后将首先使用 Class.getSimpleName
,若为空则会使用 Class.getName
进行处理。
例如 com.demo.Test
只需要填写 Test
。
对于匿名类例如 com.demo.Test$InnerTest
只需要填写 Test$InnerTest
。
- method
fromfun from(vararg name: String): FromPackageRules
Change Records
v1.0.0
first
Function Illustrate
设置在指定包名范围查找当前
Class
。
设置后仅会在当前 name
开头匹配的包名路径下进行查找,可提升查找速度。
例如 ↓
com.demo.test
com.demo.test.demo
Notice
建议设置此参数指定查找范围,否则 Class 过多时将会非常慢。
- method
modifiersfun modifiers(conditions: ModifierConditions)
Change Records
v1.0.0
first
Function Illustrate
设置
Class
标识符筛选条件。
可不设置筛选条件。
- method
fullNamefun fullName(value: String): ClassNameRules
Change Records
v1.0.0
first
Function Illustrate
设置
Class
完整名称。
只会查找匹配到的 Class.getName
。
例如 com.demo.Test
需要填写 com.demo.Test
。
- method
simpleNamefun simpleName(value: String): ClassNameRules
Change Records
v1.0.0
first
Function Illustrate
设置
Class
简单名称。
只会查找匹配到的 Class.getSimpleName
。
例如 com.demo.Test
只需要填写 Test
。
对于匿名类例如 com.demo.Test$InnerTest 会为空
,此时你可以使用 singleName。
- method
singleNamefun singleName(value: String): ClassNameRules
Change Records
v1.0.0
first
Function Illustrate
设置
Class
独立名称。
设置后将首先使用 Class.getSimpleName
,若为空则会使用 Class.getName
进行处理。
例如 com.demo.Test
只需要填写 Test
。
对于匿名类例如 com.demo.Test$InnerTest
只需要填写 Test$InnerTest
。
- method
fullNamefun fullName(conditions: NameConditions)
Change Records
v1.0.0
first
Function Illustrate
设置
Class
完整名称条件。
只会查找匹配到的 Class.getName
。
- method
simpleNamefun simpleName(conditions: NameConditions)
Change Records
v1.0.0
first
Function Illustrate
设置
Class
简单名称条件。
只会查找匹配到的 Class.getSimpleName
。
- method
singleNamefun singleName(conditions: NameConditions)
Change Records
v1.0.0
first
Function Illustrate
设置
Class
独立名称条件。
设置后将首先使用 Class.getSimpleName
,若为空则会使用 Class.getName
进行处理。
- method
extendsinline fun <reified T> extends()
Change Records
v1.0.0
first
Function Illustrate
设置
Class
继承的父类。
- method
extendsfun extends(vararg name: String)
Change Records
v1.0.0
first
Function Illustrate
设置
Class
继承的父类。
会同时查找 name
中所有匹配的父类。
- method
implementsinline fun <reified T> implements()
Change Records
v1.0.0
first
Function Illustrate
设置
Class
实现的接口类。
- method
implementsfun implements(vararg name: String)
Change Records
v1.0.0
first
Function Illustrate
设置
Class
实现的接口类。
会同时查找 name
中所有匹配的接口类。
- method
anonymousfun anonymous()
Change Records
v1.0.0
first
Function Illustrate
标识
Class
为匿名类。
例如 com.demo.Test$1
或 com.demo.Test$InnerTest
。
标识后你可以使用 enclosing 来进一步指定匿名类的 (封闭类) 主类。
- method
noExtendsfun noExtends()
Change Records
v1.0.0
first
Function Illustrate
设置
Class
没有任何继承。
此时 Class
只应该继承于 Any
。
Notice
设置此条件后 extends 将失效。
- method
noImplementsfun noImplements()
Change Records
v1.0.0
first
Function Illustrate
设置
Class
没有任何接口。
Notice
设置此条件后 implements 将失效。
- method
noSuperfun noSuper()
Change Records
v1.0.0
first
Function Illustrate
设置
Class
没有任何继承与接口。
此时 Class
只应该继承于 Any
。
Notice
设置此条件后 extends 与 implements 将失效。
- method
enclosinginline fun <reified T> enclosing()
Change Records
v1.0.0
first
Function Illustrate
设置
Class
匿名类的 (封闭类) 主类。
- method
enclosingfun enclosing(vararg name: String)
Change Records
v1.0.0
first
Function Illustrate
设置
Class
匿名类的 (封闭类) 主类。
会同时查找 name
中所有匹配的 (封闭类) 主类。
- class
FromPackageRulesinner class FromPackageRules internal constructor(private val packages: MutableList<ClassRulesData.PackageRulesData>)
Change Records
v1.0.0
first
Function Illustrate
包名范围名称过滤匹配条件实现类。
- method
absolutefun absolute()
Change Records
v1.0.0
first
Function Illustrate
设置包名绝对匹配。
例如有如下包名 ↓
com.demo.test.a
com.demo.test.a.b
com.demo.test.active
若包名条件为 com.demo.test.a
则绝对匹配仅能匹配到第一个。
相反地,不设置以上示例会全部匹配。
- class
ClassNameRulesinner class ClassNameRules internal constructor(private val name: ClassRulesData.NameRulesData)
Change Records
v1.0.0
first
Function Illustrate
类名匹配条件实现类。
- method
optionalfun optional()
Change Records
v1.0.0
first
Function Illustrate
设置类名可选。
例如有如下类名 ↓
com.demo.Test
fullName / Test
simpleName
defpackage.a
fullName / a
simpleName
这两个类名都是同一个类,但是在有些版本中被混淆有些版本没有。
此时可设置类名为 com.demo.Test
fullName / Test
simpleName。
这样就可在完全匹配类名情况下使用类名而忽略其它查找条件,否则忽略此条件继续使用其它查找条件。
- method
memberinline fun member(initiate: MemberRules.() -> Unit): MemberRulesResult
Change Records
v1.0.0
first
Function Illustrate
设置
Class
满足的Member
条件。
- method
fieldinline fun field(initiate: FieldRules.() -> Unit): MemberRulesResult
Change Records
v1.0.0
first
Function Illustrate
设置
Class
满足的Field
条件。
- method
methodinline fun method(initiate: MethodRules.() -> Unit): MemberRulesResult
Change Records
v1.0.0
first
Function Illustrate
设置
Class
满足的Method
条件。
- method
constructorinline fun constructor(initiate: ConstructorRules.() -> Unit): MemberRulesResult
Change Records
v1.0.0
first
Function Illustrate
设置
Class
满足的Constructor
条件。
- class
Resultinner class Result internal constructor(internal var isNotFound: Boolean, internal var throwable: Throwable?) : BaseResult
Change Records
v1.0.0
first
Function Illustrate
Class
查找结果实现类。
- method
resultinline fun result(initiate: Result.() -> Unit): Result
Change Records
v1.0.0
first
Function Illustrate
创建监听结果事件方法体。
- method
getfun get(): Class<*>?
Change Records
v1.0.0
first
Function Illustrate
得到
Class
本身。
若有多个 Class
结果只会返回第一个。
在查找条件找不到任何结果的时候将返回 null
。
若你设置了 async
请使用 wait 方法。
- method
allfun all(): MutableList<Class<*>>
Change Records
v1.0.0
first
v1.0.3
modified
返回值类型由 HashSet
修改为 MutableList
Function Illustrate
得到
Class
本身数组。
返回全部查找条件匹配的多个 Class
实例。
在查找条件找不到任何结果的时候将返回空的 MutableList
。
若你设置了 async
请使用 waitAll 方法。
- method
allfun all(result: (Class<*>) -> Unit): Result
Change Records
v1.0.0
first
Function Illustrate
得到
Class
本身数组 (依次遍历)。
回调全部查找条件匹配的多个 Class
实例。
在查找条件找不到任何结果的时候将不会执行。
若你设置了 async
请使用 waitAll 方法。
- method
waitfun wait(result: (Class<*>?) -> Unit): Result
Change Records
v1.0.0
first
Function Illustrate
得到
Class
本身 (异步)。
若有多个 Class
结果只会回调第一个。
在查找条件找不到任何结果的时候将回调 null。
你需要设置 async
后此方法才会被回调,否则请使用 get 方法。
- method
waitAllfun waitAll(result: (MutableList<Class<*>>) -> Unit): Result
Change Records
v1.0.0
first
v1.0.3
modified
result
类型由 HashSet
修改为 MutableList
Function Illustrate
得到
Class
本身数组 (异步)。
回调全部查找条件匹配的多个 Class
实例。
在查找条件找不到任何结果的时候将回调空的 MutableList
。
你需要设置 async
后此方法才会被回调,否则请使用 all 方法。
- method
onNoClassDefFoundErrorfun onNoClassDefFoundError(result: (Throwable) -> Unit): Result
Change Records
v1.0.0
first
Function Illustrate
监听找不到
Class
时。
- method
ignoredfun ignored(): Result
Change Records
v1.0.0
first
Function Illustrate
忽略异常并停止打印任何错误日志。
此时若要监听异常结果,你需要手动实现 onNoClassDefFoundError 方法。