Modify change appClassLoader field to get/set type and the value can be set manually in PackageParam

This commit is contained in:
2022-11-29 01:59:35 +08:00
parent 6e1a149b97
commit c77ad3757b
3 changed files with 43 additions and 8 deletions

View File

@@ -27,16 +27,28 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW
## appClassLoader <span class="symbol">- field</span> ## appClassLoader <span class="symbol">- field</span>
```kotlin:no-line-numbers ```kotlin:no-line-numbers
val appClassLoaderClassLoader var appClassLoaderClassLoader
``` ```
**Change Records** **Change Records**
`v1.0` `first` `v1.0` `first`
`v1.1.5` `modified`
可以动态修改此变量的值
**Function Illustrate** **Function Illustrate**
> 获取当前 Hook APP 的 `ClassLoader`。 > 获取、设置当前 Hook APP 的 `ClassLoader`。
你可以在这里手动设置当前 Hook APP 的 `ClassLoader`,默认情况下会自动获取。
::: danger
如果设置了错误或无效的 **ClassLoader** 会造成功能异常,请谨慎操作。
:::
## appInfo <span class="symbol">- field</span> ## appInfo <span class="symbol">- field</span>

View File

@@ -19,16 +19,28 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW
## appClassLoader <span class="symbol">- field</span> ## appClassLoader <span class="symbol">- field</span>
```kotlin:no-line-numbers ```kotlin:no-line-numbers
val appClassLoaderClassLoader var appClassLoaderClassLoader
``` ```
**变更记录** **变更记录**
`v1.0` `添加` `v1.0` `添加`
`v1.1.5` `修改`
可以动态修改此变量的值
**功能描述** **功能描述**
> 获取当前 Hook APP 的 `ClassLoader`。 > 获取、设置当前 Hook APP 的 `ClassLoader`。
你可以在这里手动设置当前 Hook APP 的 `ClassLoader`,默认情况下会自动获取。
::: danger
如果设置了错误或无效的 **ClassLoader** 会造成功能异常,请谨慎操作。
:::
## appInfo <span class="symbol">- field</span> ## appInfo <span class="symbol">- field</span>

View File

@@ -63,14 +63,25 @@ import com.highcapable.yukihookapi.hook.xposed.prefs.YukiHookModulePrefs
*/ */
open class PackageParam internal constructor(@PublishedApi internal var wrapper: PackageParamWrapper? = null) { open class PackageParam internal constructor(@PublishedApi internal var wrapper: PackageParamWrapper? = null) {
/** 当前设置的 [ClassLoader] */
private var currentClassLoader: ClassLoader? = null
/** /**
* 获取当前 Hook APP 的 [ClassLoader] * 获取、设置当前 Hook APP 的 [ClassLoader]
*
* 你可以在这里手动设置当前 Hook APP 的 [ClassLoader] - 默认情况下会自动获取
*
* - ❗如果设置了错误或无效的 [ClassLoader] 会造成功能异常 - 请谨慎操作
* @return [ClassLoader] * @return [ClassLoader]
* @throws IllegalStateException 如果 [ClassLoader] 是空的 * @throws IllegalStateException 如果 [ClassLoader] 是空的
*/ */
val appClassLoader var appClassLoader
get() = wrapper?.appClassLoader ?: YukiHookAppHelper.currentApplication()?.classLoader ?: javaClass.classLoader get() = currentClassLoader ?: wrapper?.appClassLoader
?: error("PackageParam got null ClassLoader") ?: YukiHookAppHelper.currentApplication()?.classLoader
?: javaClass.classLoader ?: error("PackageParam got null ClassLoader")
set(value) {
currentClassLoader = value
}
/** /**
* 获取当前 Hook APP 的 [ApplicationInfo] * 获取当前 Hook APP 的 [ApplicationInfo]