作为 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:xposedcompatcom.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)
}