mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Merge YukiHookXposedInitProxy to IYukiHookXposedInit
This commit is contained in:
@@ -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 入口 - 若存在多个注解编译会报错
|
||||
*
|
||||
|
@@ -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() ...)
|
||||
*
|
||||
|
@@ -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)
|
||||
|
||||
/**
|
||||
|
@@ -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() }
|
||||
}
|
@@ -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()
|
||||
}
|
@@ -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()
|
||||
}
|
Reference in New Issue
Block a user