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`。
|
> 全部 `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>
|
## ClassLoader.searchClass <span class="symbol">- ext-method</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -68,6 +68,28 @@ CONSTRUCTOR
|
|||||||
|
|
||||||
> 全部 `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>
|
## ClassLoader.searchClass <span class="symbol">- ext-method</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -74,7 +74,7 @@ internal object ReflectionTool {
|
|||||||
* @return [List]<[String]>
|
* @return [List]<[String]>
|
||||||
* @throws IllegalStateException 如果 [loader] 不是 [BaseDexClassLoader]
|
* @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 {
|
?: DalvikBaseDexClassLoader.field { name = "pathList" }.ignored().get(loader.value().let {
|
||||||
while (it.value !is BaseDexClassLoader) {
|
while (it.value !is BaseDexClassLoader) {
|
||||||
if (it.value?.parent != null) it.value = it.value?.parent
|
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.core.finder.type.factory.*
|
||||||
import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus
|
import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus
|
||||||
import com.highcapable.yukihookapi.hook.xposed.parasitic.AppParasitics
|
import com.highcapable.yukihookapi.hook.xposed.parasitic.AppParasitics
|
||||||
|
import dalvik.system.BaseDexClassLoader
|
||||||
import java.lang.reflect.*
|
import java.lang.reflect.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,6 +58,17 @@ enum class MembersType {
|
|||||||
CONSTRUCTOR
|
CONSTRUCTOR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写出当前 [ClassLoader] 下所有 [Class] 名称数组
|
||||||
|
*
|
||||||
|
* - ❗此方法在 [Class] 数量过多时会非常耗时
|
||||||
|
*
|
||||||
|
* - ❗若要按指定规则查找一个 [Class] - 请使用 [searchClass] 方法
|
||||||
|
* @return [List]<[String]>
|
||||||
|
* @throws IllegalStateException 如果当前 [ClassLoader] 不是 [BaseDexClassLoader]
|
||||||
|
*/
|
||||||
|
fun ClassLoader.listOfClasses() = ReflectionTool.findDexClassList(loader = this)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过当前 [ClassLoader] 按指定条件查找并得到 Dex 中的 [Class]
|
* 通过当前 [ClassLoader] 按指定条件查找并得到 Dex 中的 [Class]
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user