mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Added ClassLoader.listOfClasses function in ReflectionFactory
This commit is contained in:
@@ -76,6 +76,28 @@ CONSTRUCTOR
|
||||
|
||||
> 全部 `Constructor`。
|
||||
|
||||
## ClassLoader.listOfClasses <span class="symbol">- ext-method</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
fun ClassLoader.listOfClasses(): List<String>
|
||||
```
|
||||
|
||||
**Change Records**
|
||||
|
||||
`v1.1.2` `added`
|
||||
|
||||
**Function Illustrate**
|
||||
|
||||
> 写出当前 `ClassLoader` 下所有 `Class` 名称数组。
|
||||
|
||||
::: warning
|
||||
|
||||
此方法在 **Class** 数量过多时会非常耗时。
|
||||
|
||||
若要按指定规则查找一个 **Class**,请使用 [ClassLoader.searchClass](#classloader-searchclass-ext-method) 方法。
|
||||
|
||||
:::
|
||||
|
||||
## ClassLoader.searchClass <span class="symbol">- ext-method</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -68,6 +68,28 @@ CONSTRUCTOR
|
||||
|
||||
> 全部 `Constructor`。
|
||||
|
||||
## ClassLoader.listOfClasses <span class="symbol">- ext-method</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
fun ClassLoader.listOfClasses(): List<String>
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.1.2` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 写出当前 `ClassLoader` 下所有 `Class` 名称数组。
|
||||
|
||||
::: warning
|
||||
|
||||
此方法在 **Class** 数量过多时会非常耗时。
|
||||
|
||||
若要按指定规则查找一个 **Class**,请使用 [ClassLoader.searchClass](#classloader-searchclass-ext-method) 方法。
|
||||
|
||||
:::
|
||||
|
||||
## ClassLoader.searchClass <span class="symbol">- ext-method</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -74,7 +74,7 @@ internal object ReflectionTool {
|
||||
* @return [List]<[String]>
|
||||
* @throws IllegalStateException 如果 [loader] 不是 [BaseDexClassLoader]
|
||||
*/
|
||||
private fun findDexClassList(loader: ClassLoader?) = ReflectsCacheStore.findDexClassList(loader.hashCode())
|
||||
internal fun findDexClassList(loader: ClassLoader?) = ReflectsCacheStore.findDexClassList(loader.hashCode())
|
||||
?: DalvikBaseDexClassLoader.field { name = "pathList" }.ignored().get(loader.value().let {
|
||||
while (it.value !is BaseDexClassLoader) {
|
||||
if (it.value?.parent != null) it.value = it.value?.parent
|
||||
|
@@ -41,6 +41,7 @@ import com.highcapable.yukihookapi.hook.core.finder.tools.ReflectionTool
|
||||
import com.highcapable.yukihookapi.hook.core.finder.type.factory.*
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus
|
||||
import com.highcapable.yukihookapi.hook.xposed.parasitic.AppParasitics
|
||||
import dalvik.system.BaseDexClassLoader
|
||||
import java.lang.reflect.*
|
||||
|
||||
/**
|
||||
@@ -57,6 +58,17 @@ enum class MembersType {
|
||||
CONSTRUCTOR
|
||||
}
|
||||
|
||||
/**
|
||||
* 写出当前 [ClassLoader] 下所有 [Class] 名称数组
|
||||
*
|
||||
* - ❗此方法在 [Class] 数量过多时会非常耗时
|
||||
*
|
||||
* - ❗若要按指定规则查找一个 [Class] - 请使用 [searchClass] 方法
|
||||
* @return [List]<[String]>
|
||||
* @throws IllegalStateException 如果当前 [ClassLoader] 不是 [BaseDexClassLoader]
|
||||
*/
|
||||
fun ClassLoader.listOfClasses() = ReflectionTool.findDexClassList(loader = this)
|
||||
|
||||
/**
|
||||
* 通过当前 [ClassLoader] 按指定条件查找并得到 Dex 中的 [Class]
|
||||
*
|
||||
|
Reference in New Issue
Block a user