import{_ as s,o as n,c as o,a}from"./app.78a03919.js";const e={},l=a(`

YukiHookAPI - object

object YukiHookAPI

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F YukiHookAPI \u7684 API \u8C03\u7528\u603B\u7C7B\uFF0CHook \u76F8\u5173\u529F\u80FD\u7684\u5F00\u59CB\u3001Hook \u76F8\u5173\u529F\u80FD\u7684\u914D\u7F6E\u90FD\u5728\u8FD9\u91CC\u3002

API_VERSION_NAME - field

const val API_VERSION_NAME: String

\u53D8\u66F4\u8BB0\u5F55

v1.0.4 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D YukiHookAPI \u7684\u7248\u672C\u3002

API_VERSION_CODE - field

const val API_VERSION_CODE: Int

\u53D8\u66F4\u8BB0\u5F55

v1.0.4 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D YukiHookAPI \u7684\u7248\u672C\u53F7\u3002

executorName - field

\u53D8\u66F4\u8BB0\u5F55

v1.0.5 \u65B0\u589E

v1.0.91 \u79FB\u9664

\u8BF7\u8F6C\u79FB\u5230 Status.executorName

executorVersion - field

\u53D8\u66F4\u8BB0\u5F55

v1.0.5 \u65B0\u589E

v1.0.91 \u79FB\u9664

\u8BF7\u8F6C\u79FB\u5230 Status.executorVersion

Status - object

object Status

\u53D8\u66F4\u8BB0\u5F55

v1.0.91 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5F53\u524D YukiHookAPI \u7684\u72B6\u6001\u3002

compiledTimestamp - field

val compiledTimestamp: Long

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u9879\u76EE\u7F16\u8BD1\u5B8C\u6210\u7684\u65F6\u95F4\u6233 (\u5F53\u524D\u672C\u5730\u65F6\u95F4)\u3002

isXposedEnvironment - field

val isXposedEnvironment: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D\u662F\u5426\u4E3A (Xposed) \u5BBF\u4E3B\u73AF\u5883\u3002

executorName - field

val executorName: String

\u53D8\u66F4\u8BB0\u5F55

v1.0.91 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u6846\u67B6\u7684\u540D\u79F0\u3002

\u65E0\u6CD5\u83B7\u53D6\u4F1A\u8FD4\u56DE unknown\uFF0CXposedBridge \u4E0D\u5B58\u5728\u4F1A\u8FD4\u56DE invalid\u3002

\u6CE8\u610F

\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002

executorVersion - field

val executorVersion: Int

\u53D8\u66F4\u8BB0\u5F55

v1.0.91 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u6846\u67B6\u7684\u7248\u672C\u3002

\u65E0\u6CD5\u83B7\u53D6\u4F1A\u8FD4\u56DE -1\u3002

\u6CE8\u610F

\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002

isModuleActive - field

val isModuleActive: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.91 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5224\u65AD\u6A21\u5757\u662F\u5426\u5728 Xposed \u6216\u592A\u6781\u3001\u65E0\u6781\u4E2D\u6FC0\u6D3B\u3002

\u6CE8\u610F

\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u4F60\u9700\u8981\u5C06 Application \u7EE7\u627F\u4E8E ModuleApplication\u3002

\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4EC5\u8FD4\u56DE\u975E isTaiChiModuleActive \u7684\u6FC0\u6D3B\u72B6\u6001\u3002

isXposedModuleActive - field

val isXposedModuleActive: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.91 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4EC5\u5224\u65AD\u6A21\u5757\u662F\u5426\u5728 Xposed \u4E2D\u6FC0\u6D3B\u3002

\u6CE8\u610F

\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u59CB\u7EC8\u8FD4\u56DE true\u3002

isTaiChiModuleActive - field

val isTaiChiModuleActive: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.91 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4EC5\u5224\u65AD\u6A21\u5757\u662F\u5426\u5728\u592A\u6781\u3001\u65E0\u6781\u4E2D\u6FC0\u6D3B\u3002

\u6CE8\u610F

\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u4F60\u9700\u8981\u5C06 Application \u7EE7\u627F\u4E8E ModuleApplication\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u59CB\u7EC8\u8FD4\u56DE false\u3002

isSupportResourcesHook - field

val isSupportResourcesHook: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.91 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5224\u65AD\u5F53\u524D Hook Framework \u662F\u5426\u652F\u6301\u8D44\u6E90\u94A9\u5B50(Resources Hook)\u3002

\u6CE8\u610F

\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u9700\u8981\u542F\u7528 Configs.isEnableHookModuleStatus\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u53EF\u80FD\u4F1A\u5EF6\u8FDF\u7B49\u5F85\u4E8B\u4EF6\u56DE\u8C03\u540E\u624D\u4F1A\u8FD4\u56DE true\u3002

\u8BF7\u6CE8\u610F\u4F60\u9700\u8981\u786E\u4FDD InjectYukiHookWithXposed.isUsingResourcesHook \u5DF2\u542F\u7528\uFF0C\u5426\u5219\u59CB\u7EC8\u8FD4\u56DE false\u3002

Configs - object

object Configs

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u5BF9 API \u76F8\u5173\u529F\u80FD\u7684\u914D\u7F6E\u7C7B\u3002

debugLog - method

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

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u914D\u7F6E YukiHookLogger.Configs \u76F8\u5173\u53C2\u6570\u3002

debugTag - field

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4F5C\u5E9F

\u8BF7\u8F6C\u79FB\u5230 YukiHookLogger.Configs.tag

isDebug - field

var isDebug: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528 DEBUG \u6A21\u5F0F\u3002

\u9ED8\u8BA4\u4E3A\u5F00\u542F\u72B6\u6001\uFF0C\u5F00\u542F\u540E\u6A21\u5757\u5C06\u4F1A\u5411 Logcat \u548C XposedBridge.log \u6253\u5370\u8BE6\u7EC6\u7684 Hook \u65E5\u5FD7\uFF0C\u5173\u95ED\u540E\u4EC5\u4F1A\u6253\u5370 E \u7EA7\u522B\u7684\u65E5\u5FD7\u3002

isAllowPrintingLogs - field

\u53D8\u66F4\u8BB0\u5F55

v1.0.4 \u65B0\u589E

v1.1.0 \u4F5C\u5E9F

\u8BF7\u8F6C\u79FB\u5230 YukiHookLogger.Configs.isEnable

isEnableModulePrefsCache - field

var isEnableModulePrefsCache: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.5 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528 YukiHookModulePrefs \u7684\u952E\u503C\u7F13\u5B58\u529F\u80FD\u3002

\u4E3A\u9632\u6B62\u5185\u5B58\u590D\u7528\u8FC7\u9AD8\u95EE\u9898\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\u3002

\u4F60\u53EF\u4EE5\u624B\u52A8\u5728 YukiHookModulePrefs \u4E2D\u81EA\u7531\u5F00\u542F\u548C\u5173\u95ED\u7F13\u5B58\u529F\u80FD\u4EE5\u53CA\u6E05\u9664\u7F13\u5B58\u3002

isEnableModuleAppResourcesCache - field

var isEnableModuleAppResourcesCache: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.87 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528\u5F53\u524D Xposed \u6A21\u5757\u81EA\u8EAB Resources \u7F13\u5B58\u529F\u80FD\u3002

\u4E3A\u9632\u6B62\u5185\u5B58\u590D\u7528\u8FC7\u9AD8\u95EE\u9898\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\u3002

\u4F60\u53EF\u4EE5\u624B\u52A8\u8C03\u7528 PackageParam.refreshModuleAppResources \u6765\u5237\u65B0\u7F13\u5B58\u3002

\u6CE8\u610F

\u5173\u95ED\u540E\u6BCF\u6B21\u4F7F\u7528 PackageParam.moduleAppResources \u90FD\u4F1A\u91CD\u65B0\u521B\u5EFA\uFF0C\u53EF\u80FD\u4F1A\u9020\u6210\u8FD0\u884C\u7F13\u6162\u3002

isEnableHookModuleStatus - field

var isEnableHookModuleStatus: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.88 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528 Hook Xposed \u6A21\u5757\u6FC0\u6D3B\u7B49\u72B6\u6001\u529F\u80FD.

\u4E3A\u539F\u751F\u652F\u6301 Xposed \u6A21\u5757\u6FC0\u6D3B\u72B6\u6001\u68C0\u6D4B\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\u3002

\u6CE8\u610F

\u5173\u95ED\u540E\u4F60\u5C06\u4E0D\u80FD\u518D\u5728\u6A21\u5757\u73AF\u5883\u4E2D\u4F7F\u7528 YukiHookAPI.Status \u4E2D\u7684\u6FC0\u6D3B\u72B6\u6001\u5224\u65AD\u529F\u80FD\u3002

isEnableHookSharedPreferences - field

var isEnableHookSharedPreferences: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528 Hook SharedPreferences\u3002

\u542F\u7528\u540E\u5C06\u5728\u6A21\u5757\u542F\u52A8\u65F6\u5F3A\u5236\u5C06 SharedPreferences \u6587\u4EF6\u6743\u9650\u8C03\u6574\u4E3A Context.MODE_WORLD_READABLE (0664)\u3002

\u6CE8\u610F

\u8FD9\u662F\u4E00\u4E2A\u53EF\u9009\u7684\u5B9E\u9A8C\u6027\u529F\u80FD\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u4E0D\u542F\u7528\u3002

\u4EC5\u7528\u4E8E\u4FEE\u590D\u67D0\u4E9B\u7CFB\u7EDF\u53EF\u80FD\u4F1A\u51FA\u73B0\u5728\u542F\u7528\u4E86 New XSharedPreferences \u540E\u4F9D\u7136\u51FA\u73B0\u6587\u4EF6\u6743\u9650\u9519\u8BEF\u95EE\u9898\uFF0C\u82E5\u4F60\u80FD\u6B63\u5E38\u4F7F\u7528 YukiHookModulePrefs \u5C31\u4E0D\u5EFA\u8BAE\u542F\u7528\u6B64\u529F\u80FD\u3002

isEnableDataChannel - field

var isEnableDataChannel: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.88 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528\u5F53\u524D Xposed \u6A21\u5757\u4E0E\u5BBF\u4E3B\u4EA4\u4E92\u7684 YukiHookDataChannel \u529F\u80FD\u3002

\u8BF7\u786E\u4FDD Xposed \u6A21\u5757\u7684 Application \u7EE7\u627F\u4E8E ModuleApplication \u624D\u80FD\u6709\u6548\u3002

\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\uFF0C\u5173\u95ED\u540E\u5C06\u4E0D\u4F1A\u5728\u529F\u80FD\u521D\u59CB\u5316\u7684\u65F6\u5019\u88C5\u8F7D YukiHookDataChannel\u3002

isEnableMemberCache - field

var isEnableMemberCache: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.68 \u65B0\u589E

v1.0.80 \u4FEE\u6539

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u542F\u7528 Member \u7F13\u5B58\u529F\u80FD\u3002

\u4E3A\u9632\u6B62 Member \u590D\u7528\u8FC7\u9AD8\u9020\u6210\u7684\u7CFB\u7EDF GC \u95EE\u9898\uFF0C\u6B64\u529F\u80FD\u9ED8\u8BA4\u542F\u7528\u3002

\u542F\u7528\u540E\u4F1A\u7F13\u5B58\u5DF2\u7ECF\u627E\u5230\u7684 Method\u3001Constructor\u3001Field\u3002

\u7F13\u5B58\u7684 Member \u90FD\u5C06\u5904\u4E8E MemberCacheStore \u7684\u5168\u5C40\u9759\u6001\u5B9E\u4F8B\u4E2D\u3002

\u63A8\u8350\u4F7F\u7528 MethodFinder\u3001ConstructorFinder\u3001FieldFinder \u6765\u83B7\u53D6 Member\u3002

\u9664\u975E\u7F13\u5B58\u7684 Member \u53D1\u751F\u4E86\u6DF7\u6DC6\u7684\u95EE\u9898\uFF0C\u4F8B\u5982\u4F7F\u7528 R8 \u6DF7\u6DC6\u540E\u7684 APP \u7684\u76EE\u6807 Member\uFF0C\u5426\u5219\u5EFA\u8BAE\u542F\u7528\u3002

configs - method

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

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u5BF9 Configs \u7C7B\u5B9E\u73B0\u4E86\u4E00\u4E2A lambda \u65B9\u6CD5\u4F53\u3002

\u4F60\u53EF\u4EE5\u8F7B\u677E\u7684\u8C03\u7528\u5B83\u8FDB\u884C\u914D\u7F6E\u3002

\u529F\u80FD\u793A\u4F8B

\u4F60\u53EF\u4EE5\u5728 HookEntryClass \u7684 onInit \u65B9\u6CD5\u4E2D\u8C03\u7528 configs \u65B9\u6CD5\u548C debugLog \u65B9\u6CD5\u5B8C\u6210\u5BF9 API \u7684\u529F\u80FD\u914D\u7F6E\uFF0C\u5B9E\u65F6\u751F\u6548\u3002

\u793A\u4F8B\u5982\u4E0B

class HookEntryClass : IYukiHookXposedInit {

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

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

\u82E5\u89C9\u5F97\u4E0A\u9762\u7684\u5199\u6CD5\u4E0D\u7F8E\u89C2\uFF0C\u4F60\u8FD8\u53EF\u4EE5\u5199\u5F97\u66F4\u52A0\u7B80\u6D01\u3002

\u793A\u4F8B\u5982\u4E0B

class HookEntryClass : IYukiHookXposedInit {

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

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

\u4F60\u4E5F\u53EF\u4EE5\u4E0D\u901A\u8FC7 configs \u548C debugLog \u65B9\u6CD5\uFF0C\u76F4\u63A5\u8FDB\u884C\u914D\u7F6E\u3002

\u793A\u4F8B\u5982\u4E0B

class HookEntryClass : 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.isEnableModulePrefsCache = true
        YukiHookAPI.Configs.isEnableModuleAppResourcesCache = true
        YukiHookAPI.Configs.isEnableHookModuleStatus = true
        YukiHookAPI.Configs.isEnableHookSharedPreferences = false
        YukiHookAPI.Configs.isEnableDataChannel = true
        YukiHookAPI.Configs.isEnableMemberCache = 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)

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u88C5\u8F7D Hook \u5165\u53E3\u7684\u6838\u5FC3\u65B9\u6CD5\u3002

\u529F\u80FD\u793A\u4F8B

\u8BE6\u60C5\u8BF7\u53C2\u8003

`,202),p=[l];function c(r,t){return n(),o("div",null,p)}const d=s(e,[["render",c],["__file","YukiHookAPI.html.vue"]]);export{d as default};