## YukiHookAPI [object]

```kotlin
object YukiHookAPI
```

<b>变更记录</b>

`v1.0` `添加`

<b>功能描述</b>

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

### API_VERSION_NAME [field]

```kotlin
const val API_VERSION_NAME: String
```

<b>变更记录</b>

`v1.0.4` `新增`

<b>功能描述</b>

> 获取当前 `YukiHookAPI` 的版本。

### API_VERSION_CODE [field]

```kotlin
const val API_VERSION_CODE: Int
```

<b>变更记录</b>

`v1.0.4` `新增`

<b>功能描述</b>

> 获取当前 `YukiHookAPI` 的版本号。

### executorName [field]

```kotlin
val executorName: String
```

<b>变更记录</b>

`v1.0.5` `新增`

<b>功能描述</b>

> 获取当前 Hook 框架的名称。

无法获取会返回 `unknown`，`XposedBridge` 不存在会返回 `invalid`。

### executorVersion [field]

```kotlin
val executorVersion: Int
```

<b>变更记录</b>

`v1.0.5` `新增`

<b>功能描述</b>

> 获取当前 Hook 框架的版本。

无法获取会返回 `-1`。

### Configs [object]

```kotlin
object Configs
```

<b>变更记录</b>

`v1.0` `添加`

<b>功能描述</b>

> 对 API 相关功能的配置类。

#### debugTag [field]

```kotlin
var debugTag: String
```

<b>变更记录</b>

`v1.0` `添加`

<b>功能描述</b>

> 模块在调用 `logger` 时打印的日志 `TAG` 名称。

你可以方便地进行自定义，并可以在 `Logcat` 和 `XposedBridge.log` 中找到它们。

#### isDebug [field]

```kotlin
var isDebug: Boolean
```

<b>变更记录</b>

`v1.0` `添加`

<b>功能描述</b>

> 是否启用 DEBUG 模式。

默认为开启状态，开启后模块将会向 `Logcat` 和 `XposedBridge.log` 打印详细的 Hook 日志，关闭后仅会打印 `E` 级别的日志。

#### isAllowPrintingLogs [field]

```kotlin
var isAllowPrintingLogs: Boolean
```

<b>变更记录</b>

`v1.0.4` `新增`

<b>功能描述</b>

> 是否启用调试日志的输出功能。

!> 关闭后将会停用 `YukiHookAPI` 对全部日志的输出，但是不影响当你手动调用日志方法输出日志。

#### isEnableModulePrefsCache [field]

```kotlin
var isEnableModulePrefsCache: Boolean
```

<b>变更记录</b>

`v1.0.5` `新增`

<b>功能描述</b>

> 是否启用 `YukiHookModulePrefs` 的键值缓存功能。

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

你可以手动在 `YukiHookModulePrefs` 中自由开启和关闭缓存功能以及清除缓存。

#### isEnableMemberCache [field]

```kotlin
var isEnableMemberCache: Boolean
```

<b>变更记录</b>

`v1.0.68` `新增`

<b>功能描述</b>

> 是否启用 `Member` 缓存功能。

为防止 `Member` 复用过高造成的系统 GC 问题，此功能默认启用。

启用后会缓存已经找到的 `Class`、`Method`、`Constructor`、`Field`。

缓存的 `Member` 都将处于 `MemberCacheStore` 的全局静态实例中。

推荐使用 `MethodFinder`、`ConstructorFinder`、`FieldFinder` 来获取 `Member`。

除非缓存的 `Member` 发生了混淆的问题，例如使用 R8 混淆后的 APP 的目标 `Member`，否则建议启用。

### configs [method]

```kotlin
fun configs(initiate: Configs.() -> Unit)
```

<b>变更记录</b>

`v1.0` `添加`

<b>功能描述</b>

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

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

<b>功能示例</b>

你可以在 `HookEntryClass` 的 `onInit` 方法中调用 `configs` 方法完成对 API 的功能配置，实时生效。

> 示例如下

```kotlin
class HookEntryClass : YukiHookXposedInitProxy {

    override fun onInit() {
        YukiHookAPI.configs {
            debugTag = "YukiHookAPI"
            isDebug = true
            isAllowPrintingLogs = true
            isEnableModulePrefsCache = true
            isEnableMemberCache = true
        }
    }

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

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

> 示例如下

```kotlin
class HookEntryClass : YukiHookXposedInitProxy {

    override fun onInit() = configs {
        debugTag = "YukiHookAPI"
        isDebug = true
        isAllowPrintingLogs = true
        isEnableModulePrefsCache = true
        isEnableMemberCache = true
    }

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

你也可以不通过 `configs` 方法，直接进行配置。

> 示例如下

```kotlin
class HookEntryClass : YukiHookXposedInitProxy {

    override fun onInit() {
        YukiHookAPI.Configs.debugTag = "YukiHookAPI"
        YukiHookAPI.Configs.isDebug = true
        YukiHookAPI.Configs.isAllowPrintingLogs = true
        YukiHookAPI.Configs.isEnableModulePrefsCache = true
        YukiHookAPI.Configs.isEnableMemberCache = true
    }

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

### encase [method]

```kotlin
fun encase(initiate: PackageParam.() -> Unit)
```

```kotlin
fun encase(vararg hooker: YukiBaseHooker)
```

```kotlin
fun encase(baseContext: Context?, initiate: PackageParam.() -> Unit)
```

```kotlin
fun encase(baseContext: Context?, vararg hooker: YukiBaseHooker)
```

<b>变更记录</b>

`v1.0` `添加`

<b>功能描述</b>

> 装载 Hook 入口的核心方法。

<b>功能示例</b>

详情请参考

- [通过 Lambda 创建](config/api-example?id=通过-lambda-创建)

- [通过自定义 Hooker 创建](config/api-example?id=通过自定义-hooker-创建)

- [作为 Hook API 使用需要注意的地方](config/api-example?id=作为-hook-api-使用需要注意的地方)