YukiHookAPI - object

object YukiHookAPI

变更记录

v1.0 添加

功能描述

这是 YukiHookAPI 的 API 调用总类,Hook 相关功能的开始、Hook 相关功能的配置都在这里。

TAG - field

const val TAG: String

变更记录

v1.2.0 新增

功能描述

获取当前 YukiHookAPI 的名称 (标签)。

VERSION - field

const val VERSION: String

变更记录

v1.2.0 新增

功能描述

获取当前 YukiHookAPI 的版本。

API_VERSION_NAME - field

变更记录

v1.0.4 新增

v1.2.0 作废

不再区分版本名称和版本号,请迁移到 VERSION

API_VERSION_CODE - field

变更记录

v1.0.4 新增

v1.2.0 作废

不再区分版本名称和版本号,请迁移到 VERSION

executorName - field

变更记录

v1.0.5 新增

v1.0.91 移除

请迁移到 Status.Executor.name

executorVersion - field

变更记录

v1.0.5 新增

v1.0.91 移除

请迁移到 Status.Executor.apiLevelStatus.Executor.versionNameStatus.Executor.versionCode

Status - object

object Status

变更记录

v1.0.91 新增

功能描述

当前 YukiHookAPI 的状态。

compiledTimestamp - field

val compiledTimestamp: Long

变更记录

v1.1.0 新增

功能描述

获取项目编译完成的时间戳 (当前本地时间)。

isXposedEnvironment - field

val isXposedEnvironment: Boolean

变更记录

v1.1.0 新增

功能描述

获取当前是否为 (Xposed) 宿主环境。

executorName - field

变更记录

v1.0.91 新增

v1.1.5 作废

请迁移到 Executor.name

executorVersion - field

变更记录

v1.0.91 新增

v1.1.5 作废

请迁移到 Executor.apiLevelExecutor.versionNameExecutor.versionCode

isModuleActive - field

val isModuleActive: Boolean

变更记录

v1.0.91 新增

功能描述

判断模块是否在 Xposed 或太极、无极中激活。

注意

在模块环境中你需要将 Application 继承于 ModuleApplication

在模块环境中需要启用 InjectYukiHookWithXposed.isUsingXposedModuleStatus

在 (Xposed) 宿主环境中仅返回非 isTaiChiModuleActive 的激活状态。

isXposedModuleActive - field

val isXposedModuleActive: Boolean

变更记录

v1.0.91 新增

功能描述

仅判断模块是否在 Xposed 中激活。

注意

在模块环境中需要启用 InjectYukiHookWithXposed.isUsingXposedModuleStatus

在 (Xposed) 宿主环境中始终返回 true。

isTaiChiModuleActive - field

val isTaiChiModuleActive: Boolean

变更记录

v1.0.91 新增

功能描述

仅判断模块是否在太极、无极中激活。

注意

在模块环境中你需要将 Application 继承于 ModuleApplication

在 (Xposed) 宿主环境中始终返回 false。

isSupportResourcesHook - field

val isSupportResourcesHook: Boolean

变更记录

v1.0.91 新增

功能描述

判断当前 Hook Framework 是否支持资源钩子 (Resources Hook)。

注意

在模块环境中需要启用 InjectYukiHookWithXposed.isUsingXposedModuleStatus

在 (Xposed) 宿主环境中可能会延迟等待事件回调后才会返回 true。

请注意你需要确保 InjectYukiHookWithXposed.isUsingResourcesHook 已启用,否则始终返回 false。

Executor - object

object Executor

变更记录

v1.1.5 新增

功能描述

当前 YukiHookAPI 使用的 Hook Framework 相关信息。

name - field

val name: String

变更记录

v1.1.5 新增

功能描述

获取当前 Hook Framework 名称。

注意

在模块环境中需要启用 InjectYukiHookWithXposed.isUsingXposedModuleStatus

type - field

val type: ExecutorType

变更记录

v1.1.9 新增

功能描述

获取当前 Hook Framework 类型。

注意

在模块环境中需要启用 InjectYukiHookWithXposed.isUsingXposedModuleStatus

apiLevel - field

val apiLevel: Int

变更记录

v1.1.5 新增

功能描述

获取当前 Hook Framework 的 API 版本。

注意

在模块环境中需要启用 InjectYukiHookWithXposed.isUsingXposedModuleStatus

versionName - field

val versionName: String

变更记录

v1.1.5 新增

功能描述

获取当前 Hook Framework 版本名称。

注意

在模块环境中需要启用 InjectYukiHookWithXposed.isUsingXposedModuleStatus

versionCode - field

val versionCode: Int

变更记录

v1.1.5 新增

功能描述

获取当前 Hook Framework 版本号。

注意

在模块环境中需要启用 InjectYukiHookWithXposed.isUsingXposedModuleStatus

Configs - object

object Configs

变更记录

v1.0 添加

功能描述

对 API 相关功能的配置类。

debugLog - method

inline fun debugLog(initiate: YLog.Configs.() -> Unit)

变更记录

v1.1.0 新增

功能描述

配置 YLog.Configs 相关参数。

debugTag - field

变更记录

v1.0 添加

v1.1.0 作废

请迁移到 YLog.Configs.tag

isDebug - field

var isDebug: Boolean

变更记录

v1.0 添加

功能描述

是否启用 Debug 模式。

默认不启用,启用后模块将会向 Logcat 和 (Xposed) 宿主环境中的日志功能打印详细的 Hook 日志,关闭后仅会打印 E 级别的日志。

isAllowPrintingLogs - field

变更记录

v1.0.4 新增

v1.1.0 作废

请迁移到 YLog.Configs.isEnable

isEnableModulePrefsCache - field

变更记录

v1.0.5 新增

v1.1.9 作废

请迁移到 isEnablePrefsBridgeCache

isEnablePrefsBridgeCache - field

变更记录

v1.1.9 新增

v1.1.11 作废

键值的直接缓存功能已被移除,因为其存在内存溢出 (OOM) 问题

isEnableModuleAppResourcesCache - field

var isEnableModuleAppResourcesCache: Boolean

变更记录

v1.0.87 新增

功能描述

是否启用当前 Xposed 模块自身 Resources 缓存功能。

为防止内存复用过高问题,此功能默认启用。

你可以手动调用 PackageParam.refreshModuleAppResources 来刷新缓存。

注意

关闭后每次使用 PackageParam.moduleAppResources 都会重新创建,可能会造成运行缓慢。

isEnableHookModuleStatus - field

变更记录

v1.0.88 新增

v1.2.0 作废

请手动迁移到 InjectYukiHookWithXposed.isUsingXposedModuleStatus

isEnableHookSharedPreferences - field

var isEnableHookSharedPreferences: Boolean

变更记录

v1.1.0 新增

功能描述

是否启用 Hook SharedPreferences

启用后将在模块启动时强制将 SharedPreferences 文件权限调整为 Context.MODE_WORLD_READABLE (0664)。

注意

这是一个可选的实验性功能,此功能默认不启用。

仅用于修复某些系统可能会出现在启用了 New XSharedPreferences 后依然出现文件权限错误问题,若你能正常使用 YukiHookPrefsBridge 就不建议启用此功能。

isEnableDataChannel - field

var isEnableDataChannel: Boolean

变更记录

v1.0.88 新增

功能描述

是否启用当前 Xposed 模块与宿主交互的 YukiHookDataChannel 功能。

请确保 Xposed 模块的 Application 继承于 ModuleApplication 才能有效。

此功能默认启用,关闭后将不会在功能初始化的时候装载 YukiHookDataChannel

isEnableMemberCache - field

变更记录

v1.0.68 新增

v1.1.11 作废

Member 的直接缓存功能已被移除,因为其存在内存溢出 (OOM) 问题

configs - method

inline fun configs(initiate: Configs.() -> Unit)

变更记录

v1.0 添加

v1.0.80 修改

将方法体进行 inline

功能描述

Configs 类实现了一个 lambda 方法体。

你可以轻松地调用它进行配置。

功能示例

你可以在 Hook 入口类的 onInit 方法中调用 configs 方法和 debugLog 方法完成对 API 的功能配置,实时生效。

示例如下

object HookEntry : IYukiHookXposedInit {

    override fun onInit() {
        YukiHookAPI.configs {
            debugLog {
                tag = "YukiHookAPI"
                isEnable = true
                isRecord = false
                elements(TAG, PRIORITY, PACKAGE_NAME, USER_ID)
            }
            isDebug = BuildConfig.DEBUG
            isEnableModuleAppResourcesCache = true
            isEnableHookModuleStatus = true
            isEnableHookSharedPreferences = false
            isEnableDataChannel = true
        }
    }

    override fun onHook() {
        // Your code here.
    }
}

若觉得上面的写法不美观,你还可以写得更加简洁。

示例如下

object HookEntry : IYukiHookXposedInit {

    override fun onInit() = configs {
        debugLog {
            tag = "YukiHookAPI"
            isEnable = true
            isRecord = false
            elements(TAG, PRIORITY, PACKAGE_NAME, USER_ID)
        }
        isDebug = BuildConfig.DEBUG
        isEnableModuleAppResourcesCache = true
        isEnableHookModuleStatus = true
        isEnableHookSharedPreferences = false
        isEnableDataChannel = true
    }

    override fun onHook() {
        // Your code here.
    }
}

你也可以不通过 configsdebugLog 方法,直接进行配置。

示例如下

object HookEntry : IYukiHookXposedInit {

    override fun onInit() {
        YLog.Configs.tag = "YukiHookAPI"
        YLog.Configs.isEnable = true
        YLog.Configs.isRecord = false
        YLog.Configs.elements(
            YLog.Configs.TAG,
            YLog.Configs.PRIORITY,
            YLog.Configs.PACKAGE_NAME,
            YLog.Configs.USER_ID
        )
        YukiHookAPI.Configs.isDebug = BuildConfig.DEBUG
        YukiHookAPI.Configs.isEnableModuleAppResourcesCache = true
        YukiHookAPI.InjectYukiHookWithXposed.isUsingXposedModuleStatus = true
        YukiHookAPI.Configs.isEnableHookSharedPreferences = false
        YukiHookAPI.Configs.isEnableDataChannel = true
    }

    override fun onHook() {
        // Your code here.
    }
}

encase - method

fun encase(initiate: PackageParam.() -> Unit)
fun encase(vararg hooker: YukiBaseHooker)
fun encase(baseContext: Context?, initiate: PackageParam.() -> Unit)
fun encase(baseContext: Context?, vararg hooker: YukiBaseHooker)

变更记录

v1.0 添加

功能描述

装载 Hook 入口的核心方法。

功能示例

详情请参考