From c77ad3757b2255787b2fce919677d59e64589414 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Tue, 29 Nov 2022 01:59:35 +0800 Subject: [PATCH] Modify change appClassLoader field to get/set type and the value can be set manually in PackageParam --- .../yukihookapi/hook/param/PackageParam.md | 16 ++++++++++++++-- .../yukihookapi/hook/param/PackageParam.md | 16 ++++++++++++++-- .../yukihookapi/hook/param/PackageParam.kt | 19 +++++++++++++++---- 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md index b5b1344c..157b500b 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md @@ -27,16 +27,28 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW ## appClassLoader - field ```kotlin:no-line-numbers -val appClassLoader:ClassLoader +var appClassLoader:ClassLoader ``` **Change Records** `v1.0` `first` +`v1.1.5` `modified` + +可以动态修改此变量的值 + **Function Illustrate** -> 获取当前 Hook APP 的 `ClassLoader`。 +> 获取、设置当前 Hook APP 的 `ClassLoader`。 + +你可以在这里手动设置当前 Hook APP 的 `ClassLoader`,默认情况下会自动获取。 + +::: danger + +如果设置了错误或无效的 **ClassLoader** 会造成功能异常,请谨慎操作。 + +::: ## appInfo - field diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md index ec6e4176..7b26afac 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md @@ -19,16 +19,28 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW ## appClassLoader - field ```kotlin:no-line-numbers -val appClassLoader:ClassLoader +var appClassLoader:ClassLoader ``` **变更记录** `v1.0` `添加` +`v1.1.5` `修改` + +可以动态修改此变量的值 + **功能描述** -> 获取当前 Hook APP 的 `ClassLoader`。 +> 获取、设置当前 Hook APP 的 `ClassLoader`。 + +你可以在这里手动设置当前 Hook APP 的 `ClassLoader`,默认情况下会自动获取。 + +::: danger + +如果设置了错误或无效的 **ClassLoader** 会造成功能异常,请谨慎操作。 + +::: ## appInfo - field diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/PackageParam.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/PackageParam.kt index 7589d90b..5b0cadbd 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/PackageParam.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/PackageParam.kt @@ -63,14 +63,25 @@ import com.highcapable.yukihookapi.hook.xposed.prefs.YukiHookModulePrefs */ 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] * @throws IllegalStateException 如果 [ClassLoader] 是空的 */ - val appClassLoader - get() = wrapper?.appClassLoader ?: YukiHookAppHelper.currentApplication()?.classLoader ?: javaClass.classLoader - ?: error("PackageParam got null ClassLoader") + var appClassLoader + get() = currentClassLoader ?: wrapper?.appClassLoader + ?: YukiHookAppHelper.currentApplication()?.classLoader + ?: javaClass.classLoader ?: error("PackageParam got null ClassLoader") + set(value) { + currentClassLoader = value + } /** * 获取当前 Hook APP 的 [ApplicationInfo]