Added "isUsingResourcesHook" function in InjectYukiHookWithXposed

This commit is contained in:
2022-05-31 01:20:23 +08:00
parent 58fa99012f
commit 2eff2988f6
10 changed files with 156 additions and 69 deletions

View File

@@ -4,7 +4,8 @@
annotation class InjectYukiHookWithXposed(
val sourcePath: String,
val modulePackageName: String,
val entryClassName: String
val entryClassName: String,
val isUsingResourcesHook: Boolean
)
```
@@ -16,6 +17,10 @@ annotation class InjectYukiHookWithXposed(
新增 `entryClassName` 参数
`v1.0.92` `修改`
新增 `isUsingResourcesHook` 参数
**功能描述**
> 标识 `YukiHookAPI` 注入 Xposed 入口的类注解。

View File

@@ -623,6 +623,8 @@ inline fun HookResources.hook(initiate: YukiResourcesHookCreater.() -> Unit)
> Hook APP 的 Resources。
!> 请注意你需要确保当前 Hook Framework 支持且 `InjectYukiHookWithXposed.isUsingResourcesHook` 已启用。
**功能示例**
Resources Hook 为固定用法,获取 `resources` 对象,然后调用 `hook` 方法开始 Hook。

View File

@@ -184,6 +184,8 @@ val isSupportResourcesHook: Boolean
!> 在 Xposed 环境中可能会延迟等待事件回调后才会返回 true。
!> 请注意你需要确保 `InjectYukiHookWithXposed.isUsingResourcesHook` 已启用,否则始终返回 false。
### Configs [object]
```kotlin

View File

@@ -18,7 +18,8 @@
annotation class InjectYukiHookWithXposed(
val sourcePath: String,
val modulePackageName: String,
val entryClassName: String
val entryClassName: String,
val isUsingResourcesHook: Boolean
)
```
@@ -96,7 +97,7 @@ Xposed 入口类处理如下。
> 示例如下
```kotlin
class HookEntry_YukiHookXposedInit: IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources
class HookEntry_YukiHookXposedInit: IXposedHookZygoteInit, IXposedHookLoadPackage, ...
```
编译后的类名结构如下。
@@ -123,7 +124,7 @@ Xposed 入口类处理如下。
> 示例如下
```kotlin
class HookXposedEntry: IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources
class HookXposedEntry: IXposedHookZygoteInit, IXposedHookLoadPackage, ...
```
编译后的类名结构如下。
@@ -138,6 +139,56 @@ class HookXposedEntry: IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHoo
!> 你定义的 `entryClassName` 不可与 `xposed_init` 中的类名相同,否则自动处理程序<u>会在编译时抛出异常</u>
#### isUsingResourcesHook 参数
`isUsingResourcesHook` 决定了自动处理程序是否生成针对 Resources Hook 的相关代码,此功能默认是启用的。
启用后生成的入口类将为如下所示。
> 示例如下
```kotlin
class _YukiHookXposedInit : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources {
override fun initZygote(sparam: IXposedHookZygoteInit.StartupParam?) {
// ...
}
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {
// ...
}
override fun handleInitPackageResources(resparam: XC_InitPackageResources.InitPackageResourcesParam?) {
// ...
}
}
```
若你当前的项目并不需要用到 Reources Hook可以设置 `isUsingResourcesHook = false` 来关闭自动生成。
> 示例如下
```kotlin
@InjectYukiHookWithXposed(isUsingResourcesHook = false)
```
关闭后生成的入口类将为如下所示。
> 示例如下
```kotlin
class _YukiHookXposedInit : IXposedHookZygoteInit, IXposedHookLoadPackage {
override fun initZygote(sparam: IXposedHookZygoteInit.StartupParam?) {
// ...
}
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {
// ...
}
}
```
### IYukiHookXposedInit 接口
`IYukiHookXposedInit` 接口为你的 `HookEntryClass` 必须实现的接口,这是你的模块开始 Hook 的起点。