mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Added "isUsingResourcesHook" function in InjectYukiHookWithXposed
This commit is contained in:
@@ -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 入口的类注解。
|
||||
|
@@ -623,6 +623,8 @@ inline fun HookResources.hook(initiate: YukiResourcesHookCreater.() -> Unit)
|
||||
|
||||
> Hook APP 的 Resources。
|
||||
|
||||
!> 请注意你需要确保当前 Hook Framework 支持且 `InjectYukiHookWithXposed.isUsingResourcesHook` 已启用。
|
||||
|
||||
**功能示例**
|
||||
|
||||
Resources Hook 为固定用法,获取 `resources` 对象,然后调用 `hook` 方法开始 Hook。
|
||||
|
@@ -184,6 +184,8 @@ val isSupportResourcesHook: Boolean
|
||||
|
||||
!> 在 Xposed 环境中可能会延迟等待事件回调后才会返回 true。
|
||||
|
||||
!> 请注意你需要确保 `InjectYukiHookWithXposed.isUsingResourcesHook` 已启用,否则始终返回 false。
|
||||
|
||||
### Configs [object]
|
||||
|
||||
```kotlin
|
||||
|
@@ -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 的起点。
|
||||
|
Reference in New Issue
Block a user