From ec9531ae10b93107fb5312284f8cc8f81cf3c368 Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Fri, 11 Feb 2022 21:41:09 +0800 Subject: [PATCH] ... --- .../yukihookapi/annotation/DoNotUseClass.kt | 44 +++++++++++++++++++ .../yukihookapi/annotation/DoNotUseField.kt | 3 -- .../yukihookapi/annotation/DoNotUseMethod.kt | 10 +---- .../yukihookapi/hook/param/HookParam.kt | 2 +- .../hook/param/wrapper/HookParamWrapper.kt | 4 ++ .../hook/param/wrapper/PackageParamWrapper.kt | 4 ++ 6 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseClass.kt diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseClass.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseClass.kt new file mode 100644 index 00000000..5f80bfd7 --- /dev/null +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseClass.kt @@ -0,0 +1,44 @@ +/* + * YukiHookAPI - An efficient Kotlin version of the Xposed Hook API. + * Copyright (C) 2019-2022 HighCapable + * https://github.com/fankes/YukiHookAPI + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * This file is Created by fankes on 2022/2/2. + */ +@file:Suppress("EXPERIMENTAL_IS_NOT_ENABLED") + +package com.highcapable.yukihookapi.annotation + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@MustBeDocumented +@Target( + AnnotationTarget.CLASS, + AnnotationTarget.ANNOTATION_CLASS +) +@Retention(AnnotationRetention.BINARY) +/** + * - ❗警告方法外部调用声明 + * 此方法除继承和接口外不应该在这里被调用 + * 如果调用此方法可能会出现错误或 APP 发生异常 + */ +annotation class DoNotUseClass \ No newline at end of file diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseField.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseField.kt index 162c9e25..3c01853f 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseField.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseField.kt @@ -32,13 +32,10 @@ package com.highcapable.yukihookapi.annotation @RequiresOptIn(level = RequiresOptIn.Level.WARNING) @MustBeDocumented @Target( - AnnotationTarget.CLASS, - AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, - AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseMethod.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseMethod.kt index 6e803157..9c1d4ee6 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseMethod.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/DoNotUseMethod.kt @@ -32,16 +32,8 @@ package com.highcapable.yukihookapi.annotation @RequiresOptIn(level = RequiresOptIn.Level.WARNING) @MustBeDocumented @Target( - AnnotationTarget.CLASS, - AnnotationTarget.ANNOTATION_CLASS, - AnnotationTarget.PROPERTY, - AnnotationTarget.LOCAL_VARIABLE, - AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, - AnnotationTarget.FUNCTION, - AnnotationTarget.PROPERTY_GETTER, - AnnotationTarget.PROPERTY_SETTER, - AnnotationTarget.TYPEALIAS + AnnotationTarget.FUNCTION ) @Retention(AnnotationRetention.BINARY) /** diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt index cfbc35fb..89b0bedf 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/HookParam.kt @@ -25,7 +25,7 @@ * * This file is Created by fankes on 2022/2/2. */ -@file:Suppress("unused", "MemberVisibilityCanBePrivate", "UNCHECKED_CAST") +@file:Suppress("unused", "MemberVisibilityCanBePrivate", "UNCHECKED_CAST", "EXPERIMENTAL_API_USAGE") package com.highcapable.yukihookapi.hook.param diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt index 4f3d5399..893ab1c8 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/HookParamWrapper.kt @@ -27,6 +27,7 @@ */ package com.highcapable.yukihookapi.hook.param.wrapper +import com.highcapable.yukihookapi.annotation.DoNotUseClass import com.highcapable.yukihookapi.hook.param.HookParam import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XposedBridge @@ -34,8 +35,11 @@ import java.lang.reflect.Member /** * 用于包装 [HookParam] + * + * ❗这是一个私有 API - 请不要在外部使用 * @param baseParam 对接 [XC_MethodHook.MethodHookParam] */ +@DoNotUseClass class HookParamWrapper(private val baseParam: XC_MethodHook.MethodHookParam) { /** diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/PackageParamWrapper.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/PackageParamWrapper.kt index 6f192ada..ca995d6f 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/PackageParamWrapper.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/param/wrapper/PackageParamWrapper.kt @@ -30,15 +30,19 @@ package com.highcapable.yukihookapi.hook.param.wrapper import android.content.pm.ApplicationInfo +import com.highcapable.yukihookapi.annotation.DoNotUseClass import com.highcapable.yukihookapi.hook.param.PackageParam /** * 用于包装 [PackageParam] + * + * ❗这是一个私有 API - 请不要在外部使用 * @param packageName 包名 * @param processName 当前进程名 * @param appClassLoader APP [ClassLoader] * @param appInfo APP [ApplicationInfo] */ +@DoNotUseClass class PackageParamWrapper( var packageName: String, var processName: String,