diff --git a/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/HookEntry.kt b/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/HookEntry.kt index e9f19e1a..e405627b 100644 --- a/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/HookEntry.kt +++ b/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/HookEntry.kt @@ -35,10 +35,10 @@ import com.highcapable.yukihookapi.hook.type.android.BundleClass import com.highcapable.yukihookapi.hook.type.java.StringArrayClass import com.highcapable.yukihookapi.hook.type.java.StringType import com.highcapable.yukihookapi.hook.type.java.UnitType -import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy +import com.highcapable.yukihookapi.hook.xposed.proxy.IYukiHookXposedInit @InjectYukiHookWithXposed -class HookEntry : YukiHookXposedInitProxy { +class HookEntry : IYukiHookXposedInit { override fun onInit() { // 配置 YuKiHookAPI diff --git a/docs/api/document.md b/docs/api/document.md index 197b2cd1..481232f2 100644 --- a/docs/api/document.md +++ b/docs/api/document.md @@ -12,7 +12,7 @@ [filename](public/InjectYukiHookWithXposed.md ':include') -[filename](public/YukiHookXposedInitProxy.md ':include') +[filename](public/IYukiHookXposedInit.md ':include') [filename](public/YukiHookModulePrefs.md ':include') diff --git a/docs/api/public/YukiHookXposedInitProxy.md b/docs/api/public/IYukiHookXposedInit.md similarity index 68% rename from docs/api/public/YukiHookXposedInitProxy.md rename to docs/api/public/IYukiHookXposedInit.md index c00eb00c..86d820ff 100644 --- a/docs/api/public/YukiHookXposedInitProxy.md +++ b/docs/api/public/IYukiHookXposedInit.md @@ -1,13 +1,19 @@ -## YukiHookXposedInitProxy [interface] +## IYukiHookXposedInit [interface] ```kotlin -interface YukiHookXposedInitProxy +interface IYukiHookXposedInit ``` **变更记录** `v1.0` `添加` +`v1.0.80` `修改` `作废` + +作废了 ~~`YukiHookXposedInitProxy`~~ 名称但保留接口 + +转移到 `IYukiHookXposedInit` 新名称 + **功能描述** > YukiHookAPI 的 Xposed 装载 API 调用接口。 diff --git a/docs/api/public/YukiHookAPI.md b/docs/api/public/YukiHookAPI.md index 4a6bfdf5..14544506 100644 --- a/docs/api/public/YukiHookAPI.md +++ b/docs/api/public/YukiHookAPI.md @@ -199,7 +199,7 @@ fun configs(initiate: Configs.() -> Unit) > 示例如下 ```kotlin -class HookEntryClass : YukiHookXposedInitProxy { +class HookEntryClass : IYukiHookXposedInit { override fun onInit() { YukiHookAPI.configs { @@ -222,7 +222,7 @@ class HookEntryClass : YukiHookXposedInitProxy { > 示例如下 ```kotlin -class HookEntryClass : YukiHookXposedInitProxy { +class HookEntryClass : IYukiHookXposedInit { override fun onInit() = configs { debugTag = "YukiHookAPI" @@ -243,7 +243,7 @@ class HookEntryClass : YukiHookXposedInitProxy { > 示例如下 ```kotlin -class HookEntryClass : YukiHookXposedInitProxy { +class HookEntryClass : IYukiHookXposedInit { override fun onInit() { YukiHookAPI.Configs.debugTag = "YukiHookAPI" diff --git a/docs/api/public/YukiHookFactory.md b/docs/api/public/YukiHookFactory.md index 8a09ce53..af9efe82 100644 --- a/docs/api/public/YukiHookFactory.md +++ b/docs/api/public/YukiHookFactory.md @@ -11,7 +11,7 @@ ### configs [method] ```kotlin -fun YukiHookXposedInitProxy.configs(initiate: YukiHookAPI.Configs.() -> Unit) +fun IYukiHookXposedInit.configs(initiate: YukiHookAPI.Configs.() -> Unit) ``` **变更记录** @@ -20,16 +20,16 @@ fun YukiHookXposedInitProxy.configs(initiate: YukiHookAPI.Configs.() -> Unit) **功能描述** -> 在 `YukiHookXposedInitProxy` 中配置 `Configs`。 +> 在 `IYukiHookXposedInit` 中配置 `Configs`。 ### encase [method] ```kotlin -fun YukiHookXposedInitProxy.encase(initiate: PackageParam.() -> Unit) +fun IYukiHookXposedInit.encase(initiate: PackageParam.() -> Unit) ``` ```kotlin -fun YukiHookXposedInitProxy.encase(vararg hooker: YukiBaseHooker) +fun IYukiHookXposedInit.encase(vararg hooker: YukiBaseHooker) ``` **变更记录** @@ -38,7 +38,7 @@ fun YukiHookXposedInitProxy.encase(vararg hooker: YukiBaseHooker) **功能描述** -> 在 `YukiHookXposedInitProxy` 中装载 `YukiHookAPI`。 +> 在 `IYukiHookXposedInit` 中装载 `YukiHookAPI`。 ### modulePrefs [field] diff --git a/docs/config/api-example.md b/docs/config/api-example.md index 33c4ba54..a136de10 100644 --- a/docs/config/api-example.md +++ b/docs/config/api-example.md @@ -120,7 +120,7 @@ class CustomHooker : YukiBaseHooker() { > 示例如下 ```kotlin -class HookEntryClass : YukiHookXposedInitProxy { +class HookEntryClass : IYukiHookXposedInit { override fun onHook() = encase { loadApp(name = "com.example.demo", ChildCustomHooker()) @@ -159,7 +159,7 @@ class FirstHooker : YukiBaseHooker() { > 示例如下 ```kotlin -class HookEntryClass : YukiHookXposedInitProxy { +class HookEntryClass : IYukiHookXposedInit { override fun onHook() = YukiHookAPI.encase(FirstHooker(), SecondHooker(), ThirdHooker() ...) @@ -171,7 +171,7 @@ class HookEntryClass : YukiHookXposedInitProxy { > 示例如下 ```kotlin -class HookEntryClass : YukiHookXposedInitProxy { +class HookEntryClass : IYukiHookXposedInit { override fun onHook() = encase(FirstHooker(), SecondHooker(), ThirdHooker() ...) } diff --git a/docs/config/api-exception.md b/docs/config/api-exception.md index 9c294244..1b9fe4a4 100644 --- a/docs/config/api-exception.md +++ b/docs/config/api-exception.md @@ -20,12 +20,12 @@ **异常原因** -你尝试在继承 `YukiHookXposedInitProxy` 的 Hook 入口类的 `onInit` 方法中装载了 `encase` 方法。 - +你尝试在继承 `IYukiHookXposedInit` 的 Hook 入口类的 `onInit` 方法中装载了 `encase` 方法。 + > 示例如下 ```kotlin -class HookEntry : YukiHookXposedInitProxy { +class HookEntry : IYukiHookXposedInit { override fun onInit() { // ❗错误的使用方法 @@ -47,7 +47,7 @@ class HookEntry : YukiHookXposedInitProxy { > 示例如下 ```kotlin -class HookEntry : YukiHookXposedInitProxy { +class HookEntry : IYukiHookXposedInit { override fun onInit() { // 这里只能装载 configs 方法 diff --git a/docs/config/xposed-using.md b/docs/config/xposed-using.md index 00c0bf98..a4d15c69 100644 --- a/docs/config/xposed-using.md +++ b/docs/config/xposed-using.md @@ -20,7 +20,7 @@ annotation class InjectYukiHookWithXposed(val sourcePath: String, val modulePack `@InjectYukiHookWithXposed` 注解是一个标记模块 Hook 入口的重要注解。 -!> `@InjectYukiHookWithXposed` 注解的 `Class` 必须实现 `YukiHookXposedInitProxy` 接口。 +!> `@InjectYukiHookWithXposed` 注解的 `Class` 必须实现 `IYukiHookXposedInit` 接口。 !> 在你当前项目中的所有 `Class` 标记中**只能存在一次**,若**存在多个声明自动处理程序会在编译时抛出异常**,你可以自定义其相关参数。 @@ -74,10 +74,10 @@ annotation class InjectYukiHookWithXposed(val sourcePath: String, val modulePack You set the customize module package name to "com.example.demo", please check for yourself if it is correct ``` -### YukiHookXposedInitProxy 接口 +### IYukiHookXposedInit 接口 ```kotlin -interface YukiHookXposedInitProxy { +interface IYukiHookXposedInit { fun onInit() @@ -85,12 +85,12 @@ interface YukiHookXposedInitProxy { } ``` -`YukiHookXposedInitProxy` 接口为你的 `HookEntryClass` 必须实现的接口,这是你的模块开始 Hook 的起点。 +`IYukiHookXposedInit` 接口为你的 `HookEntryClass` 必须实现的接口,这是你的模块开始 Hook 的起点。 -若要了解更多可 [点击这里](api/document?id=yukihookxposedinitproxy-interface) 进行查看。 +若要了解更多可 [点击这里](api/document?id=iyukihookxposedinit-interface) 进行查看。 当你的模块被 Xposed 装载后,`onHook` 方法将会被回调,你需要在此方法中开始使用 `YukiHookAPI`。 -> 基本的调用流程为 `_YukiHookXposedInit.handleLoadPackage` → `HookEntryClass.onInit` → `HookEntryClass.onHook` → `YukiHookAPI.onXposedLoaded` +> 基本的调用流程为 `YukiHookInjectXposedInitClass.handleLoadPackage` → `HookEntryClass.onInit` → `HookEntryClass.onHook` → `YukiHookAPI.onXposedLoaded` 详情请参考 [API 基本配置](config/api-example)。 \ No newline at end of file diff --git a/docs/guide/home.md b/docs/guide/home.md index 4bb07a10..316f7087 100644 --- a/docs/guide/home.md +++ b/docs/guide/home.md @@ -70,7 +70,7 @@ ```kotlin @InjectYukiHookWithXposed -class MainHook : YukiHookXposedInitProxy { +class MainHook : IYukiHookXposedInit { override fun onHook() = encase { loadApp(name = "com.android.browser") { diff --git a/docs/guide/quick-start.md b/docs/guide/quick-start.md index 7102bc3d..eac71914 100644 --- a/docs/guide/quick-start.md +++ b/docs/guide/quick-start.md @@ -93,7 +93,7 @@ dependencies { android:value="true"/> ``` -在你的项目中创建一个 Hook 入口类,继承于 `YukiHookXposedInitProxy` 并加入注解 `@InjectYukiHookWithXposed`。 +在你的项目中创建一个 Hook 入口类,继承于 `IYukiHookXposedInit` 并加入注解 `@InjectYukiHookWithXposed`。 !> 在默认配置情况下,你的入口类需要建立在你的包名的 hook 子包名下,假设你的包名为 `com.example.demo`,入口类应为 `com.example.demo.hook.你的入口类名称`。 @@ -101,7 +101,7 @@ dependencies { ```kotlin @InjectYukiHookWithXposed -class MainHook : YukiHookXposedInitProxy { +class MainHook : IYukiHookXposedInit { override fun onHook() = YukiHookAPI.encase { // Your code here. diff --git a/yukihookapi-ksp-xposed/src/api/kotlin/com/highcapable/yukihookapi_ksp_xposed/YukiHookXposedProcessor.kt b/yukihookapi-ksp-xposed/src/api/kotlin/com/highcapable/yukihookapi_ksp_xposed/YukiHookXposedProcessor.kt index d5842c61..1c78a5df 100644 --- a/yukihookapi-ksp-xposed/src/api/kotlin/com/highcapable/yukihookapi_ksp_xposed/YukiHookXposedProcessor.kt +++ b/yukihookapi-ksp-xposed/src/api/kotlin/com/highcapable/yukihookapi_ksp_xposed/YukiHookXposedProcessor.kt @@ -107,7 +107,7 @@ class YukiHookXposedProcessor : SymbolProcessorProvider { * @param resolver [Resolver] */ private fun injectProcess(resolver: Resolver) = environment { - var injectOnce = true + var isInjectOnce = true resolver.getSymbolsWithAnnotation(annotationName).apply { /** * 检索需要注入的类 @@ -116,8 +116,8 @@ class YukiHookXposedProcessor : SymbolProcessorProvider { */ fun fetchKSClassDeclaration(sourcePath: String, modulePackageName: String) { asSequence().filterIsInstance().forEach { - if (injectOnce) - if (it.superTypes.any { type -> type.element.toString() == "YukiHookXposedInitProxy" }) { + if (isInjectOnce) when { + it.superTypes.any { type -> type.element.toString() == "IYukiHookXposedInit" } -> { injectAssets( codePath = (it.location as? FileLocation?)?.filePath ?: "", sourcePath = sourcePath, @@ -125,10 +125,14 @@ class YukiHookXposedProcessor : SymbolProcessorProvider { className = it.simpleName.asString(), ) injectClass(it.packageName.asString(), it.simpleName.asString(), modulePackageName) - } else error(msg = "HookEntryClass \"${it.simpleName.asString()}\" must be implements YukiHookXposedInitProxy") + } + it.superTypes.any { type -> type.element.toString() == "YukiHookXposedInitProxy" } -> + error(msg = "\"YukiHookXposedInitProxy\" was deprecated, please replace to \"IYukiHookXposedInit\"") + else -> error(msg = "HookEntryClass \"${it.simpleName.asString()}\" must be implements \"IYukiHookXposedInit\"") + } else error(msg = "\"@InjectYukiHookWithXposed\" only can be use in once times") /** 仅处理第一个标记的类 - 再次处理将拦截并报错 */ - injectOnce = false + isInjectOnce = false } } forEach { diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.kt index 4cc92e8b..7b9e2717 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.kt @@ -28,7 +28,7 @@ package com.highcapable.yukihookapi.annotation.xposed import com.highcapable.yukihookapi.YukiHookAPI -import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy +import com.highcapable.yukihookapi.hook.xposed.proxy.IYukiHookXposedInit /** * 标识 [YukiHookAPI] 注入 Xposed 入口的类注解 @@ -53,7 +53,7 @@ import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy * * - ❗最后这一点很重要:请不要随意修改项目 ../[sourcePath]/assets/xposed_init 中的内容 - 否则可能会导致模块无法装载 * - * - ❗你必须将被注解的类继承于 [YukiHookXposedInitProxy] 接口实现 [YukiHookXposedInitProxy.onHook] 方法 - 否则编译会报错 + * - ❗你必须将被注解的类继承于 [IYukiHookXposedInit] 接口实现 [IYukiHookXposedInit.onHook] 方法 - 否则编译会报错 * * - ❗只能拥有一个 Hook 入口 - 若存在多个注解编译会报错 * diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.kt index 95991192..318a82f6 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.kt @@ -30,7 +30,7 @@ package com.highcapable.yukihookapi.hook.entity import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed import com.highcapable.yukihookapi.hook.param.PackageParam -import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy +import com.highcapable.yukihookapi.hook.xposed.proxy.IYukiHookXposedInit /** * [YukiHookAPI] 的子类 Hooker 实现 @@ -39,7 +39,7 @@ import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy * * 你可以继续继承此类进行自定义 Hooker 相关参数 * - * 你可以在 [YukiHookXposedInitProxy] 的 [YukiHookXposedInitProxy.onHook] 中实现如下用法: + * 你可以在 [IYukiHookXposedInit] 的 [IYukiHookXposedInit.onHook] 中实现如下用法: * * 1.调用 [YukiHookAPI.encase] encase(MainHooker(), SecondHooker(), ThirdHooker() ...) * diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt index 11e005af..68ad312b 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt @@ -25,7 +25,7 @@ * * This file is Created by fankes on 2022/2/2. */ -@file:Suppress("unused") +@file:Suppress("unused", "DEPRECATION", "DeprecatedCallableAddReplaceWith") package com.highcapable.yukihookapi.hook.factory @@ -39,28 +39,38 @@ import com.highcapable.yukihookapi.hook.entity.YukiBaseHooker import com.highcapable.yukihookapi.hook.param.PackageParam import com.highcapable.yukihookapi.hook.xposed.YukiHookModuleStatus import com.highcapable.yukihookapi.hook.xposed.prefs.YukiHookModulePrefs +import com.highcapable.yukihookapi.hook.xposed.proxy.IYukiHookXposedInit import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy import java.io.BufferedReader import java.io.File import java.io.FileReader /** - * 在 [YukiHookXposedInitProxy] 中装载 [YukiHookAPI.Configs] + * 在 [IYukiHookXposedInit] 中装载 [YukiHookAPI.Configs] * @param initiate Hook 方法体 */ -fun YukiHookXposedInitProxy.configs(initiate: YukiHookAPI.Configs.() -> Unit) = YukiHookAPI.configs(initiate) +fun IYukiHookXposedInit.configs(initiate: YukiHookAPI.Configs.() -> Unit) = YukiHookAPI.configs(initiate) /** - * 在 [YukiHookXposedInitProxy] 中装载 [YukiHookAPI] + * 在 [IYukiHookXposedInit] 中装载 [YukiHookAPI] * @param initiate Hook 方法体 */ -fun YukiHookXposedInitProxy.encase(initiate: PackageParam.() -> Unit) = YukiHookAPI.encase(initiate) +fun IYukiHookXposedInit.encase(initiate: PackageParam.() -> Unit) = YukiHookAPI.encase(initiate) /** - * 在 [YukiHookXposedInitProxy] 中装载 [YukiHookAPI] + * 在 [IYukiHookXposedInit] 中装载 [YukiHookAPI] * @param hooker Hook 子类数组 - 必填不能为空 * @throws IllegalStateException 如果 [hooker] 是空的 */ +fun IYukiHookXposedInit.encase(vararg hooker: YukiBaseHooker) = YukiHookAPI.encase(hooker = hooker) + +@Deprecated("请将接口转移到 IYukiHookXposedInit") +fun YukiHookXposedInitProxy.configs(initiate: YukiHookAPI.Configs.() -> Unit) = YukiHookAPI.configs(initiate) + +@Deprecated("请将接口转移到 IYukiHookXposedInit") +fun YukiHookXposedInitProxy.encase(initiate: PackageParam.() -> Unit) = YukiHookAPI.encase(initiate) + +@Deprecated("请将接口转移到 IYukiHookXposedInit") fun YukiHookXposedInitProxy.encase(vararg hooker: YukiBaseHooker) = YukiHookAPI.encase(hooker = hooker) /** diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.kt index ba6f27a2..4ca0a871 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.kt @@ -32,7 +32,7 @@ import android.content.Context import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.hook.xposed.application.ModuleApplication.Companion.appContext import com.highcapable.yukihookapi.hook.xposed.application.inject.ModuleApplication_Injector -import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy +import com.highcapable.yukihookapi.hook.xposed.proxy.IYukiHookXposedInit import me.weishu.reflection.Reflection /** @@ -78,6 +78,6 @@ open class ModuleApplication : Application() { callApiInit() } - /** 调用入口类的 [YukiHookXposedInitProxy.onInit] 方法 */ + /** 调用入口类的 [IYukiHookXposedInit.onInit] 方法 */ private fun callApiInit() = runCatching { ModuleApplication_Injector.callApiInit() } } \ No newline at end of file diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.kt new file mode 100644 index 00000000..057d4d59 --- /dev/null +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.kt @@ -0,0 +1,72 @@ +/* + * 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. + * This file is Modified by fankes on 2022/4/22. + */ +@file:Suppress("unused") + +package com.highcapable.yukihookapi.hook.xposed.proxy + +import com.highcapable.yukihookapi.YukiHookAPI +import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed +import com.highcapable.yukihookapi.hook.factory.configs +import com.highcapable.yukihookapi.hook.factory.encase + +/** + * [YukiHookAPI] 的 Xposed 装载 API 调用接口 + * + * - ❗请在此类上添加注解 [InjectYukiHookWithXposed] 标记模块 Hook 入口 + * + * [YukiHookAPI] 初始化时将自动调用 [onInit] 方法 + * + * Hook 开始时将自动调用 [onHook] 方法 + * + * 请在 [onInit] 中调用 [YukiHookAPI.configs] 或直接调用 [configs] + * + * 请在 [onHook] 中调用 [YukiHookAPI.encase] 或直接调用 [encase] + * + * 详情请参考 [IYukiHookXposedInit 接口](https://fankes.github.io/YukiHookAPI/#/config/xposed-using?id=iyukihookxposedinit-%e6%8e%a5%e5%8f%a3) + */ +interface IYukiHookXposedInit { + + /** + * 配置 [YukiHookAPI.Configs] 的初始化方法 + * + * - ❗在这里只能进行初始化配置 - 不能进行 Hook 操作 + * + * 此方法可选 - 你也可以选择不对 [YukiHookAPI.Configs] 进行配置 + */ + fun onInit() {} + + /** + * 模块装载调用入口方法 + * + * Xposed API + * + * 调用 [YukiHookAPI.encase] 或直接调用 [encase] 开始 Hook + */ + fun onHook() +} \ No newline at end of file diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/proxy/YukiHookXposedInitProxy.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/proxy/YukiHookXposedInitProxy.kt index 97b04457..9c018334 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/proxy/YukiHookXposedInitProxy.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/proxy/YukiHookXposedInitProxy.kt @@ -25,47 +25,36 @@ * * This file is Created by fankes on 2022/2/2. */ -@file:Suppress("unused") +@file:Suppress("unused", "DeprecatedCallableAddReplaceWith") package com.highcapable.yukihookapi.hook.xposed.proxy import com.highcapable.yukihookapi.YukiHookAPI -import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed -import com.highcapable.yukihookapi.hook.factory.configs -import com.highcapable.yukihookapi.hook.factory.encase +import com.highcapable.yukihookapi.hook.log.yLoggerW /** * [YukiHookAPI] 的 Xposed 装载 API 调用接口 * - * - ❗请在此类上添加注解 [InjectYukiHookWithXposed] 标记模块 Hook 入口 + * - ❗此接口名称已弃用 - 在不久的版本中将直接被删除 * - * [YukiHookAPI] 初始化时将自动调用 [onInit] 方法 - * - * Hook 开始时将自动调用 [onHook] 方法 - * - * 请在 [onInit] 中调用 [YukiHookAPI.configs] 或直接调用 [configs] - * - * 请在 [onHook] 中调用 [YukiHookAPI.encase] 或直接调用 [encase] - * - * 详情请参考 [YukiHookXposedInitProxy 接口](https://fankes.github.io/YukiHookAPI/#/config/xposed-using?id=yukihookxposedinitproxy-%e6%8e%a5%e5%8f%a3) + * - ❗请现在转移到 [IYukiHookXposedInit] 否则此接口的声明将在自动处理程序中被拦截 */ +@Deprecated(message = "此接口的命名已被弃用", ReplaceWith(expression = "IYukiHookXposedInit")) interface YukiHookXposedInitProxy { /** * 配置 [YukiHookAPI.Configs] 的初始化方法 * - * - ❗在这里只能进行初始化配置 - 不能进行 Hook 操作 - * - * 此方法可选 - 你也可以选择不对 [YukiHookAPI.Configs] 进行配置 + * - ❗请将接口转移到 [IYukiHookXposedInit] */ - fun onInit() {} + @Deprecated(message = "请将接口转移到 IYukiHookXposedInit") + fun onInit() = yLoggerW(msg = "YukiHookXposedInitProxy was deprecated") /** * 模块装载调用入口方法 * - * Xposed API - * - * 调用 [YukiHookAPI.encase] 或直接调用 [encase] 开始 Hook + * - ❗请将接口转移到 [IYukiHookXposedInit] */ + @Deprecated(message = "请将接口转移到 IYukiHookXposedInit") fun onHook() } \ No newline at end of file