From 70f9a21a50b6ab49f7529ecfafc9b03379966b85 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Sun, 23 Oct 2022 05:27:09 +0800 Subject: [PATCH] Modify add null return type when api is not matched in ComponentTypeFactory, GraphicsTypeFactory, VariableTypeFactory --- .../hook/type/android/ComponentTypeFactory.kt | 51 ++++++++++--------- .../hook/type/android/GraphicsTypeFactory.kt | 5 +- .../hook/type/java/VariableTypeFactory.kt | 5 +- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt index 84f7b610..7c8c76bb 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt @@ -25,7 +25,7 @@ * * This file is Created by fankes on 2022/2/2. */ -@file:Suppress("unused", "KDocUnresolvedReference", "DEPRECATION", "NewApi") +@file:Suppress("unused", "KDocUnresolvedReference", "DEPRECATION") package com.highcapable.yukihookapi.hook.type.android @@ -56,6 +56,7 @@ import android.view.accessibility.AccessibilityNodeInfo import android.widget.Toast import com.highcapable.yukihookapi.hook.factory.classOf import com.highcapable.yukihookapi.hook.factory.toClass +import com.highcapable.yukihookapi.hook.factory.toClassOrNull import org.w3c.dom.UserDataHandler import java.awt.Component @@ -139,15 +140,19 @@ val ActivityManagerNativeClass get() = "android.app.ActivityManagerNative".toCla /** * 获得 [IActivityTaskManager] 类型 - * @return [Class] + * + * - ❗在 Android O (26) 及以上系统加入 + * @return [Class] or null */ -val IActivityTaskManagerClass get() = "android.app.IActivityTaskManager".toClass() +val IActivityTaskManagerClass get() = "android.app.IActivityTaskManager".toClassOrNull() /** * 获得 [ActivityTaskManager] 类型 - * @return [Class] + * + * - ❗在 Android O (26) 及以上系统加入 + * @return [Class] or null */ -val ActivityTaskManagerClass get() = "android.app.ActivityTaskManager".toClass() +val ActivityTaskManagerClass get() = "android.app.ActivityTaskManager".toClassOrNull() /** * 获得 [IPackageManager] 类型 @@ -349,11 +354,11 @@ val ArrayMapClass get() = classOf>() /** * 获得 [ArraySet] 类型 - * @return [Class] * * - ❗在 Android M (23) 及以上系统加入 + * @return [Class] or null */ -val ArraySetClass get() = classOf>() +val ArraySetClass get() = if (Build.VERSION.SDK_INT >= 23) classOf>() else null /** * 获得 [Handler] 类型 @@ -395,9 +400,9 @@ val AsyncTaskClass get() = classOf>() * 获得 [SimpleDateFormat] 类型 * * - ❗在 Android N (24) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val SimpleDateFormatClass_Android get() = classOf() +val SimpleDateFormatClass_Android get() = if (Build.VERSION.SDK_INT >= 24) classOf() else null /** * 获得 [Base64] 类型 @@ -421,9 +426,9 @@ val WindowClass get() = classOf() * 获得 [WindowMetrics] 类型 * * - ❗在 Android R (30) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val WindowMetricsClass get() = classOf() +val WindowMetricsClass get() = if (Build.VERSION.SDK_INT >= 30) classOf() else null /** * 获得 [WindowInsets] 类型 @@ -435,9 +440,9 @@ val WindowInsetsClass get() = classOf() * 获得 [WindowInsets.Type] 类型 * * - ❗在 Android R (30) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val WindowInsets_TypeClass get() = classOf() +val WindowInsets_TypeClass get() = if (Build.VERSION.SDK_INT >= 30) classOf() else null /** * 获得 [WindowManager] 类型 @@ -665,17 +670,17 @@ val VibratorClass get() = classOf() * 获得 [VibrationEffect] 类型 * * - ❗在 Android O (26) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val VibrationEffectClass get() = classOf() +val VibrationEffectClass get() = if (Build.VERSION.SDK_INT >= 26) classOf() else null /** * 获得 [VibrationAttributes] 类型 * * - ❗在 Android R (30) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val VibrationAttributesClass get() = classOf() +val VibrationAttributesClass get() = if (Build.VERSION.SDK_INT >= 30) classOf() else null /** * 获得 [SystemClock] 类型 @@ -711,25 +716,25 @@ val UserDataHandlerClass get() = classOf() * 获得 [ShortcutInfo] 类型 * * - ❗在 Android N_MR1 (25) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val ShortcutInfoClass get() = classOf() +val ShortcutInfoClass get() = if (Build.VERSION.SDK_INT >= 25) classOf() else null /** * 获得 [ShortcutManager] 类型 * * - ❗在 Android R (30) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val ShortcutManagerClass get() = classOf() +val ShortcutManagerClass get() = if (Build.VERSION.SDK_INT >= 30) classOf() else null /** * 获得 [ShortcutQuery] 类型 * * - ❗在 Android N_MR1 (25) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val ShortcutQueryClass get() = classOf() +val ShortcutQueryClass get() = if (Build.VERSION.SDK_INT >= 25) classOf() else null /** * 获得 [KeyboardShortcutInfo] 类型 diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt index 51992915..872d88f3 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt @@ -31,6 +31,7 @@ package com.highcapable.yukihookapi.hook.type.android import android.graphics.* import android.graphics.drawable.* +import android.os.Build import android.text.* import android.util.Size import android.util.SizeF @@ -52,9 +53,9 @@ val BitmapClass get() = classOf() * 获得 [Icon] 类型 * * - ❗在 Android M (23) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val IconClass get() = classOf() +val IconClass get() = if (Build.VERSION.SDK_INT >= 23) classOf() else null /** * 获得 [Outline] 类型 diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt index 777c4be2..de2e4af8 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt @@ -29,6 +29,7 @@ package com.highcapable.yukihookapi.hook.type.java +import android.os.Build import com.highcapable.yukihookapi.hook.factory.classOf import dalvik.system.BaseDexClassLoader import dalvik.system.DexClassLoader @@ -348,9 +349,9 @@ val ThreadClass get() = classOf() * 获得 [Base64] 类型 * * - ❗在 Android O (26) 及以上系统加入 - * @return [Class] + * @return [Class] or null */ -val Base64Class_Java get() = classOf() +val Base64Class_Java get() = if (Build.VERSION.SDK_INT >= 26) classOf() else null /** * 获得 [Observer] 类型