# # 作为 Hook API 使用的相关配置

> 作为 Hook API 通常为做自身 APP 热更新或功能需要以及产品测试的 Hook 操作。

## # 依赖配置

你只需要集成 `com.highcapable.yukihookapi:api` 依赖即可。

然后请集成你目标使用的 `Hook Framework` 依赖。

## # 入口配置

创建你的自定义 `Application`。

在 `attachBaseContext` 中添加 `YukiHookAPI.encase` 方法。

> 示例如下

    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 的相关配置。

你可以 点击这里 查看异同点和注意事项。

注意

你不能再使用 loadApp 进行包装，可直接开始编写你的 Hook 代码。

## # Hook Framework

> 这里给出了一些较高使用率的 `Hook Framework` 如何对接 `YukiHookAPI` 的相关方式。

### # Pine
在新窗口中打开

> 所需 Xposed API 依赖 `top.canyie.pine:xposed`

> 示例如下

    override fun attachBaseContext(base: Context?) {
        // 装载 Pine
        PineConfig.debug = true
        PineConfig.debuggable = BuildConfig.DEBUG
        // 装载 YukiHookAPI
        YukiHookAPI.encase(base) {
            // Your code here.
        }
        super.attachBaseContext(base)
    }

### # SandHook
在新窗口中打开

> 所需 Xposed API 依赖 `com.swift.sandhook:xposedcompat` 或 `com.swift.sandhook:xposedcompat_new`

> 示例如下

    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
在新窗口中打开

> 所需 Xposed API 依赖 `com.wind.xposed:xposed-on-whale`

请参考 xposed-hook-based-on-whale
在新窗口中打开。

> 示例如下

    override fun attachBaseContext(base: Context?) {
        // 装载 Whale 不需要任何配置
        // 装载 YukiHookAPI
        YukiHookAPI.encase(base) {
            // Your code here.
        }
        super.attachBaseContext(base)
    }