---
pageClass: code-page
---
::: warning
The English translation of this page has not been completed, you are welcome to contribute translations to us.
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
:::
# YukiHookAPI - object
```kotlin:no-line-numbers
object YukiHookAPI
```
**Change Records**
`v1.0` `first`
**Function Illustrate**
> 这是 `YukiHookAPI` 的 API 调用总类,Hook 相关功能的开始、Hook 相关功能的配置都在这里。
## API_VERSION_NAME - field
```kotlin:no-line-numbers
const val API_VERSION_NAME: String
```
**Change Records**
`v1.0.4` `added`
**Function Illustrate**
> 获取当前 `YukiHookAPI` 的版本。
## API_VERSION_CODE - field
```kotlin:no-line-numbers
const val API_VERSION_CODE: Int
```
**Change Records**
`v1.0.4` `added`
**Function Illustrate**
> 获取当前 `YukiHookAPI` 的版本号。
executorName - field
**Change Records**
`v1.0.5` `added`
`v1.0.91` `removed`
请转移到 `Status.Executor.name`
executorVersion - field
**Change Records**
`v1.0.5` `added`
`v1.0.91` `removed`
请转移到 `Status.Executor.apiLevel`、`Status.Executor.versionName`、`Status.Executor.versionCode`
## Status - object
```kotlin:no-line-numbers
object Status
```
**Change Records**
`v1.0.91` `added`
**Function Illustrate**
> 当前 `YukiHookAPI` 的状态。
### compiledTimestamp - field
```kotlin:no-line-numbers
val compiledTimestamp: Long
```
**Change Records**
`v1.1.0` `added`
**Function Illustrate**
> 获取项目编译完成的时间戳 (当前本地时间)。
### isXposedEnvironment - field
```kotlin:no-line-numbers
val isXposedEnvironment: Boolean
```
**Change Records**
`v1.1.0` `added`
**Function Illustrate**
> 获取当前是否为 (Xposed) 宿主环境。
executorName - field
**Change Records**
`v1.0.91` `added`
`v1.1.5` `deprecated`
请转移到 `Executor.name`
executorVersion - field
**Change Records**
`v1.0.91` `added`
`v1.1.5` `deprecated`
请转移到 `Executor.apiLevel`、`Executor.versionName`、`Executor.versionCode`
### isModuleActive - field
```kotlin:no-line-numbers
val isModuleActive: Boolean
```
**Change Records**
`v1.0.91` `added`
**Function Illustrate**
> 判断模块是否在 Xposed 或太极、无极中激活。
::: warning
在模块环境中你需要将 **Application** 继承于 **ModuleApplication**。
在模块环境中需要启用 **Configs.isEnableHookModuleStatus**。
在 (Xposed) 宿主环境中仅返回非 **isTaiChiModuleActive** 的激活状态。
:::
### isXposedModuleActive - field
```kotlin:no-line-numbers
val isXposedModuleActive: Boolean
```
**Change Records**
`v1.0.91` `added`
**Function Illustrate**
> 仅判断模块是否在 Xposed 中激活。
::: warning
在模块环境中需要启用 **Configs.isEnableHookModuleStatus**。
在 (Xposed) 宿主环境中始终返回 true。
:::
### isTaiChiModuleActive - field
```kotlin:no-line-numbers
val isTaiChiModuleActive: Boolean
```
**Change Records**
`v1.0.91` `added`
**Function Illustrate**
> 仅判断模块是否在太极、无极中激活。
::: warning
在模块环境中你需要将 **Application** 继承于 **ModuleApplication**。
在 (Xposed) 宿主环境中始终返回 false。
:::
### isSupportResourcesHook - field
```kotlin:no-line-numbers
val isSupportResourcesHook: Boolean
```
**Change Records**
`v1.0.91` `added`
**Function Illustrate**
> 判断当前 Hook Framework 是否支持资源钩子(Resources Hook)。
::: warning
在模块环境中需要启用 **Configs.isEnableHookModuleStatus**。
在 (Xposed) 宿主环境中可能会延迟等待事件回调后才会返回 true。
请注意你需要确保 **InjectYukiHookWithXposed.isUsingResourcesHook** 已启用,否则始终返回 false。
:::
### Executor - object
```kotlin:no-line-numbers
object Executor
```
**Change Records**
`v1.1.5` `added`
**Function Illustrate**
> 当前 `YukiHookAPI` 使用的 Hook Framework 相关信息。
#### name - field
```kotlin:no-line-numbers
val name: String
```
**Change Records**
`v1.1.5` `added`
**Function Illustrate**
> 获取当前 Hook Framework 名称。
::: warning
在模块环境中需要启用 **Configs.isEnableHookModuleStatus**。
:::
#### type - field
```kotlin:no-line-numbers
val type: ExecutorType
```
**Change Records**
`v1.1.9` `added`
**Function Illustrate**
> 获取当前 Hook Framework 类型。
::: warning
在模块环境中需要启用 **Configs.isEnableHookModuleStatus**。
:::
#### apiLevel - field
```kotlin:no-line-numbers
val apiLevel: Int
```
**Change Records**
`v1.1.5` `added`
**Function Illustrate**
> 获取当前 Hook Framework 的 API 版本。
::: warning
在模块环境中需要启用 **Configs.isEnableHookModuleStatus**。
:::
#### versionName - field
```kotlin:no-line-numbers
val versionName: String
```
**Change Records**
`v1.1.5` `added`
**Function Illustrate**
> 获取当前 Hook Framework 版本名称。
::: warning
在模块环境中需要启用 **Configs.isEnableHookModuleStatus**。
:::
#### versionCode - field
```kotlin:no-line-numbers
val versionCode: Int
```
**Change Records**
`v1.1.5` `added`
**Function Illustrate**
> 获取当前 Hook Framework 版本号。
::: warning
在模块环境中需要启用 **Configs.isEnableHookModuleStatus**。
:::
## Configs - object
```kotlin:no-line-numbers
object Configs
```
**Change Records**
`v1.0` `first`
**Function Illustrate**
> 对 API 相关功能的配置类。
### debugLog - method
```kotlin:no-line-numbers
inline fun debugLog(initiate: YukiHookLogger.Configs.() -> Unit)
```
**Change Records**
`v1.1.0` `added`
**Function Illustrate**
> 配置 `YukiHookLogger.Configs` 相关参数。
debugTag - field
**Change Records**
`v1.0` `first`
`v1.1.0` `deprecated`
请转移到 `YukiHookLogger.Configs.tag`
### isDebug - field
```kotlin:no-line-numbers
var isDebug: Boolean
```
**Change Records**
`v1.0` `first`
**Function Illustrate**
> 是否启用 Debug 模式。
默认为开启状态,开启后模块将会向 `Logcat` 和 (Xposed) 宿主环境中的日志功能打印详细的 Hook 日志,关闭后仅会打印 `E` 级别的日志。
isAllowPrintingLogs - field
**Change Records**
`v1.0.4` `added`
`v1.1.0` `deprecated`
请转移到 `YukiHookLogger.Configs.isEnable`
isEnableModulePrefsCache - field
**Change Records**
`v1.0.5` `added`
`v1.1.9` `deprecated`
请转移到 `isEnablePrefsBridgeCache`
isEnablePrefsBridgeCache - field
**Change Records**
`v1.1.9` `added`
`v1.1.11` `deprecated`
键值的直接缓存功能已被移除,因为其存在内存溢出 (OOM) 问题
### isEnableModuleAppResourcesCache - field
```kotlin:no-line-numbers
var isEnableModuleAppResourcesCache: Boolean
```
**Change Records**
`v1.0.87` `added`
**Function Illustrate**
> 是否启用当前 Xposed 模块自身 `Resources` 缓存功能。
为防止内存复用过高问题,此功能默认启用。
你可以手动调用 `PackageParam.refreshModuleAppResources` 来刷新缓存。
::: warning
关闭后每次使用 **PackageParam.moduleAppResources** 都会重新创建,可能会造成运行缓慢。
:::
### isEnableHookModuleStatus - field
```kotlin:no-line-numbers
var isEnableHookModuleStatus: Boolean
```
**Change Records**
`v1.0.88` `added`
**Function Illustrate**
> 是否启用 Hook Xposed 模块激活等状态功能.
为原生支持 Xposed 模块激活状态检测,此功能默认启用。
::: warning
关闭后你将不能再在模块环境中使用 **YukiHookAPI.Status** 中的激活状态判断功能。
:::
### isEnableHookSharedPreferences - field
```kotlin:no-line-numbers
var isEnableHookSharedPreferences: Boolean
```
**Change Records**
`v1.1.0` `added`
**Function Illustrate**
> 是否启用 Hook `SharedPreferences`。
启用后将在模块启动时强制将 `SharedPreferences` 文件权限调整为 `Context.MODE_WORLD_READABLE` (0664)。
::: warning
这是一个可选的实验性功能,此功能默认不启用。
仅用于修复某些系统可能会出现在启用了 **New XSharedPreferences** 后依然出现文件权限错误问题,若你能正常使用 **YukiHookPrefsBridge** 就不建议启用此功能。
:::
### isEnableDataChannel - field
```kotlin:no-line-numbers
var isEnableDataChannel: Boolean
```
**Change Records**
`v1.0.88` `added`
**Function Illustrate**
> 是否启用当前 Xposed 模块与宿主交互的 `YukiHookDataChannel` 功能。
请确保 Xposed 模块的 `Application` 继承于 `ModuleApplication` 才能有效。
此功能默认启用,关闭后将不会在功能初始化的时候装载 `YukiHookDataChannel`。
isEnableMemberCache - field
**Change Records**
`v1.0.68` `added`
`v1.1.11` `deprecated`
`Member` 的直接缓存功能已被移除,因为其存在内存溢出 (OOM) 问题
## configs - method
```kotlin:no-line-numbers
inline fun configs(initiate: Configs.() -> Unit)
```
**Change Records**
`v1.0` `first`
`v1.0.80` `modified`
将方法体进行 inline
**Function Illustrate**
> 对 `Configs` 类实现了一个 **lambda** 方法体。
你可以轻松地调用它进行配置。
**Function Example**
你可以在 Hook 入口类的 `onInit` 方法中调用 `configs` 方法和 `debugLog` 方法完成对 API 的功能配置,实时生效。
> The following example
```kotlin
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.
}
}
```
若觉得上面的写法不美观,你还可以写得更加简洁。
> The following example
```kotlin
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.
}
}
```
你也可以不通过 `configs` 和 `debugLog` 方法,直接进行配置。
> The following example
```kotlin
object HookEntry : IYukiHookXposedInit {
override fun onInit() {
YukiHookLogger.Configs.tag = "YukiHookAPI"
YukiHookLogger.Configs.isEnable = true
YukiHookLogger.Configs.isRecord = false
YukiHookLogger.Configs.elements(
YukiHookLogger.Configs.TAG,
YukiHookLogger.Configs.PRIORITY,
YukiHookLogger.Configs.PACKAGE_NAME,
YukiHookLogger.Configs.USER_ID
)
YukiHookAPI.Configs.isDebug = BuildConfig.DEBUG
YukiHookAPI.Configs.isEnableModuleAppResourcesCache = true
YukiHookAPI.Configs.isEnableHookModuleStatus = true
YukiHookAPI.Configs.isEnableHookSharedPreferences = false
YukiHookAPI.Configs.isEnableDataChannel = true
}
override fun onHook() {
// Your code here.
}
}
```
## encase - method
```kotlin:no-line-numbers
fun encase(initiate: PackageParam.() -> Unit)
```
```kotlin:no-line-numbers
fun encase(vararg hooker: YukiBaseHooker)
```
```kotlin:no-line-numbers
fun encase(baseContext: Context?, initiate: PackageParam.() -> Unit)
```
```kotlin:no-line-numbers
fun encase(baseContext: Context?, vararg hooker: YukiBaseHooker)
```
**Change Records**
`v1.0` `first`
**Function Illustrate**
> 装载 Hook 入口的核心方法。
**Function Example**
详情请参考
- [Created by lambda](../../../../../config/api-example#created-by-lambda)
- [Created by Custom Hooker](../../../../../config/api-example#created-by-custom-hooker)
- [Precautions when using as Hook API](../../../../../config/api-example#precautions-when-using-as-hook-api)