From 7b9af68fe6b77e49c3728e7030482aaccab76623 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Fri, 6 Oct 2023 02:32:20 +0800 Subject: [PATCH] refactor: make appClassLoader nullable --- .../yukihookapi/hook/param/PackageParam.kt | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt index 73bb1fd3..405badb5 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt @@ -83,16 +83,22 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW /** 当前设置的 [ClassLoader] */ private var currentClassLoader: ClassLoader? = null + /** + * 获取 [appClassLoader] 装载实例 + * @return [ClassLoaderInitializer] + */ + private val appLoaderInit get(): ClassLoaderInitializer = { appClassLoader } + /** * 获取、设置当前 Hook APP 的 [ClassLoader] * * 你可以在这里手动设置当前 Hook APP 的 [ClassLoader] - 默认情况下会自动获取 * * - 如果设置了错误或无效的 [ClassLoader] 会造成功能异常 - 请谨慎操作 - * @return [ClassLoader] + * @return [ClassLoader] or null */ var appClassLoader - get() = currentClassLoader ?: wrapper?.appClassLoader ?: AppParasitics.currentApplication?.classLoader ?: AppParasitics.baseClassLoader + get() = currentClassLoader ?: wrapper?.appClassLoader ?: AppParasitics.currentApplication?.classLoader set(value) { currentClassLoader = value } @@ -575,7 +581,7 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW * @param loader [ClassLoader] 装载实例 - 不填使用 [appClassLoader] * @return [LazyClass.NonNull] */ - fun lazyClass(name: String, initialize: Boolean = false, loader: ClassLoaderInitializer? = { appClassLoader }) = + fun lazyClass(name: String, initialize: Boolean = false, loader: ClassLoaderInitializer? = appLoaderInit) = lazyClassGlobal(name, initialize, loader) /** @@ -586,7 +592,7 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW * @return [LazyClass.NonNull]<[T]> */ @JvmName("lazyClass_Generics") - inline fun lazyClass(name: String, initialize: Boolean = false, noinline loader: ClassLoaderInitializer? = { appClassLoader }) = + inline fun lazyClass(name: String, initialize: Boolean = false, noinline loader: ClassLoaderInitializer? = appLoaderInit) = lazyClassGlobal(name, initialize, loader) /** @@ -596,7 +602,7 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW * @param loader [ClassLoader] 装载实例 - 不填使用 [appClassLoader] * @return [LazyClass.NonNull] */ - fun lazyClass(variousClass: VariousClass, initialize: Boolean = false, loader: ClassLoaderInitializer? = { appClassLoader }) = + fun lazyClass(variousClass: VariousClass, initialize: Boolean = false, loader: ClassLoaderInitializer? = appLoaderInit) = lazyClassGlobal(variousClass, initialize, loader) /** @@ -606,7 +612,7 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW * @param loader [ClassLoader] 装载实例 - 不填使用 [appClassLoader] * @return [LazyClass.Nullable] */ - fun lazyClassOrNull(name: String, initialize: Boolean = false, loader: ClassLoaderInitializer? = { appClassLoader }) = + fun lazyClassOrNull(name: String, initialize: Boolean = false, loader: ClassLoaderInitializer? = appLoaderInit) = lazyClassOrNullGlobal(name, initialize, loader) /** @@ -617,7 +623,7 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW * @return [LazyClass.Nullable]<[T]> */ @JvmName("lazyClassOrNull_Generics") - inline fun lazyClassOrNull(name: String, initialize: Boolean = false, noinline loader: ClassLoaderInitializer? = { appClassLoader }) = + inline fun lazyClassOrNull(name: String, initialize: Boolean = false, noinline loader: ClassLoaderInitializer? = appLoaderInit) = lazyClassOrNullGlobal(name, initialize, loader) /** @@ -627,7 +633,7 @@ open class PackageParam internal constructor(internal var wrapper: PackageParamW * @param loader [ClassLoader] 装载实例 - 不填使用 [appClassLoader] * @return [LazyClass.Nullable] */ - fun lazyClassOrNull(variousClass: VariousClass, initialize: Boolean = false, loader: ClassLoaderInitializer? = { appClassLoader }) = + fun lazyClassOrNull(variousClass: VariousClass, initialize: Boolean = false, loader: ClassLoaderInitializer? = appLoaderInit) = lazyClassOrNullGlobal(variousClass, initialize, loader) /**