mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-06 18:55:35 +08:00
108 lines
2.7 KiB
Markdown
108 lines
2.7 KiB
Markdown
# 作为 Hook API 使用的相关配置
|
|
|
|
> 作为 Hook API 通常为做自身 APP 热更新或功能需要以及产品测试的 Hook 操作。
|
|
|
|
## 依赖配置
|
|
|
|
你只需要集成 `com.highcapable.yukihookapi:api` 依赖即可。
|
|
|
|
然后请集成你目标使用的 `Hook Framework` 依赖。
|
|
|
|
## 入口配置
|
|
|
|
创建你的自定义 `Application`。
|
|
|
|
在 `attachBaseContext` 中添加 `YukiHookAPI.encase` 方法。
|
|
|
|
> 示例如下
|
|
|
|
```kotlin
|
|
class MyApplication : Application() {
|
|
|
|
override fun attachBaseContext(base: Context?) {
|
|
// 装载 Hook Framework
|
|
//
|
|
// Your code here.
|
|
//
|
|
// 配置 YukiHookAPI
|
|
YukiHookApi.configs {
|
|
// Your code here.
|
|
}
|
|
// 装载 YukiHookAPI
|
|
YukiHookAPI.encase(base) {
|
|
// Your code here.
|
|
}
|
|
super.attachBaseContext(base)
|
|
}
|
|
}
|
|
```
|
|
|
|
这样,你就完成了 API 的相关配置。
|
|
|
|
你可以 [点击这里](config/api-example?id=作为-hook-api-使用需要注意的地方) 查看异同点和注意事项。
|
|
|
|
!> 你不能再使用 `loadApp` 进行包装,可直接开始编写你的 Hook 代码。
|
|
|
|
## Hook Framework
|
|
|
|
> 这里给出了一些较高使用率的 `Hook Framework` 如何对接 `YukiHookAPI` 的相关方式。
|
|
|
|
### [Pine](https://github.com/canyie/pine)
|
|
|
|
> **所需 Xposed API 依赖** `top.canyie.pine:xposed`
|
|
|
|
> 示例如下
|
|
|
|
```kotlin
|
|
override fun attachBaseContext(base: Context?) {
|
|
// 装载 Pine
|
|
PineConfig.debug = true
|
|
PineConfig.debuggable = BuildConfig.DEBUG
|
|
// 装载 YukiHookAPI
|
|
YukiHookAPI.encase(base) {
|
|
// Your code here.
|
|
}
|
|
super.attachBaseContext(base)
|
|
}
|
|
```
|
|
|
|
### [SandHook](https://github.com/asLody/SandHook)
|
|
|
|
> **所需 Xposed API 依赖** `com.swift.sandhook:xposedcompat` 或 `com.swift.sandhook:xposedcompat_new`
|
|
|
|
> 示例如下
|
|
|
|
```kotlin
|
|
override fun attachBaseContext(base: Context?) {
|
|
// 装载 SandHook
|
|
SandHookConfig.DEBUG = BuildConfig.DEBUG
|
|
XposedCompat.cacheDir = base?.cacheDir
|
|
XposedCompat.context = base
|
|
XposedCompat.classLoader = javaClass.classLoader
|
|
XposedCompat.isFirstApplication = base?.processName == base?.packageName
|
|
// 装载 YukiHookAPI
|
|
YukiHookAPI.encase(base) {
|
|
// Your code here.
|
|
}
|
|
super.attachBaseContext(base)
|
|
}
|
|
```
|
|
|
|
### [Whale](https://github.com/asLody/whale)
|
|
|
|
> **所需 Xposed API 依赖** `com.wind.xposed:xposed-on-whale`
|
|
|
|
请参考 [xposed-hook-based-on-whale](https://github.com/WindySha/xposed-hook-based-on-whale)。
|
|
|
|
> 示例如下
|
|
|
|
```kotlin
|
|
override fun attachBaseContext(base: Context?) {
|
|
// 装载 Whale 不需要任何配置
|
|
// 装载 YukiHookAPI
|
|
YukiHookAPI.encase(base) {
|
|
// Your code here.
|
|
}
|
|
super.attachBaseContext(base)
|
|
}
|
|
``` |