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

API \u5F02\u5E38\u5904\u7406

\u5F02\u5E38\u662F\u5728\u5F00\u53D1\u8FC7\u7A0B\u7ECF\u5E38\u9047\u5230\u7684\u4E3B\u8981\u95EE\u9898\uFF0C\u8FD9\u91CC\u4ECB\u7ECD\u4E86 YukiHookAPI \u5728\u4F7F\u7528\u8FC7\u7A0B\u4E2D\u53EF\u80FD\u9047\u5230\u7684\u5E38\u89C1\u5F02\u5E38\u4EE5\u53CA\u5904\u7406\u65B9\u5F0F\u3002

\u8FD9\u91CC\u7684\u5F02\u5E38\u8BF4\u660E\u53EA\u4F1A\u540C\u6B65\u6700\u65B0\u7684 API \u7248\u672C\uFF0C\u8F83\u65E7\u7684 API \u7248\u672C\u7684\u5F02\u5E38\u5C06\u4E0D\u4F1A\u518D\u8FDB\u884C\u8BF4\u660E\uFF0C\u8BF7\u59CB\u7EC8\u4FDD\u6301 API \u7248\u672C\u4E3A\u6700\u65B0\u3002

\u975E\u963B\u65AD\u5F02\u5E38

\u8FD9\u4E9B\u5F02\u5E38\u4E0D\u4F1A\u5BFC\u81F4 APP \u505C\u6B62\u8FD0\u884C (FC)\uFF0C\u4F46\u662F\u4F1A\u5728\u63A7\u5236\u53F0\u6253\u5370 E \u7EA7\u522B\u7684\u65E5\u5FD7\uFF0C\u4E5F\u53EF\u80FD\u4F1A\u505C\u6B62\u7EE7\u7EED\u6267\u884C\u76F8\u5173\u529F\u80FD\u3002

exception

loggerE

Could not found any available Hook APIs in current environment! Aborted

\u5F02\u5E38\u539F\u56E0

\u4F60\u7684 Hook Framework \u672A\u5728\u5DE5\u4F5C\u6216\u5E76\u672A\u6210\u529F\u88C5\u8F7D\u5F53\u524D Hook API\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60\u5728\u6B63\u786E\u7684\u5730\u65B9\u88C5\u8F7D\u4E86 YukiHookAPI \u7684 encase \u65B9\u6CD5\uFF0C\u8BE6\u60C5\u8BF7\u53C2\u8003 \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E \u4EE5\u53CA \u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E\u3002

exception

loggerE

You cannot load a hooker in "onInit" or "onXposedEvent" method! Aborted

\u5F02\u5E38\u539F\u56E0

\u4F60\u5C1D\u8BD5\u5728\u7EE7\u627F IYukiHookXposedInit \u7684 Hook \u5165\u53E3\u7C7B\u7684 onInit \u6216 onXposedEvent \u65B9\u6CD5\u4E2D\u88C5\u8F7D\u4E86 encase \u65B9\u6CD5\u3002

\u793A\u4F8B\u5982\u4E0B

object HookEntry : IYukiHookXposedInit {

    override fun onInit() {
        // \u2757\u9519\u8BEF\u7684\u4F7F\u7528\u65B9\u6CD5
        YukiHookAPI.encase {
            // Your code here.
        }
    }

    override fun onXposedEvent() {
        // \u2757\u9519\u8BEF\u7684\u4F7F\u7528\u65B9\u6CD5
        YukiHookAPI.encase {
            // Your code here.
        }
    }

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

\u89E3\u51B3\u65B9\u6848

\u8BF7\u5728 onHook \u65B9\u6CD5\u4E2D\u88C5\u8F7D encase \u65B9\u6CD5\u3002

\u793A\u4F8B\u5982\u4E0B

object HookEntry : IYukiHookXposedInit {

    override fun onInit() {
        // \u8FD9\u91CC\u53EA\u80FD\u88C5\u8F7D configs \u65B9\u6CD5
        YukiHookAPI.configs {
            // Your code here.
        }
    }

    override fun onHook() {
        // \u2705 \u6B63\u786E\u7684\u4F7F\u7528\u65B9\u6CD5
        YukiHookAPI.encase {
            // Your code here.
        }
    }
}
exception

loggerE

An exception occurred in the Hooking Process of YukiHookAPI

\u5F02\u5E38\u539F\u56E0

YukiHookAPI \u5728\u88C5\u8F7D Xposed \u5165\u53E3\u65B9\u6CD5\u65F6\u53D1\u751F\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u8FD9\u662F\u4E00\u4E2A\u5F02\u5E38\u6C47\u603B\uFF0C\u5982\u679C\u4F60\u5F53\u524D\u7684 Hook \u8FDB\u7A0B\u4E2D\u53D1\u751F\u4E86\u4EFB\u4F55\u5F02\u5E38 (Hook \u8FDB\u7A0B\u5D29\u6E83)\uFF0C\u90FD\u4F1A\u4F7F\u7528\u6B64\u65B9\u5F0F\u6253\u5370\u5230\u63A7\u5236\u53F0\uFF0C\u8BF7\u8FFD\u6EAF\u5F02\u5E38\u53D1\u751F\u7684\u5806\u6808\u4EE5\u5B9A\u4F4D\u4F60\u7684\u4EE3\u7801\u95EE\u9898\u4F4D\u7F6E\u3002

exception

loggerE

An exception occurred when hooking internal function

\u5F02\u5E38\u539F\u56E0

YukiHookAPI \u5728\u8FDB\u884C\u81EA\u8EAB\u521D\u59CB\u5316 Hook \u8FC7\u7A0B\u4E2D\u53D1\u751F\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u901A\u5E38\u60C5\u51B5\u4E0B\u8FD9\u79CD\u9519\u8BEF\u4E0D\u4F1A\u8F7B\u6613\u53D1\u751F\uFF0C\u82E5\u4E00\u65E6\u53D1\u751F\u6B64\u9519\u8BEF\uFF0C\u53EF\u76F4\u63A5\u63D0\u4EA4\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

YukiHookAPI try to load hook entry class failed

\u5F02\u5E38\u539F\u56E0

YukiHookAPI \u5728\u5C1D\u8BD5\u88C5\u8F7D Hook \u5165\u53E3\u7C7B onInit \u6216 onHook \u65B9\u6CD5\u65F6\u53D1\u751F\u4E86\u4E0D\u80FD\u5904\u7406\u7684\u5F02\u5E38\u6216\u627E\u4E0D\u5230\u5165\u53E3\u7C7B\u3002

\u89E3\u51B3\u65B9\u6848

\u901A\u5E38\u60C5\u51B5\u4E0B\u8FD9\u79CD\u9519\u8BEF\u4E0D\u4F1A\u8F7B\u6613\u53D1\u751F\uFF0C\u82E5\u4E00\u65E6\u53D1\u751F\u6B64\u9519\u8BEF\uFF0C\u8BF7\u81EA\u884C\u67E5\u770B\u63A7\u5236\u53F0\u6253\u5370\u7684\u65E5\u5FD7\u5B9A\u4F4D\u95EE\u9898\uFF0C\u786E\u5B9A\u5E76\u975E\u81EA\u5DF1\u7684\u4EE3\u7801\u53D1\u751F\u7684\u95EE\u9898\u540E\uFF0C\u53EF\u63D0\u4EA4\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

An exception occurred when YukiHookAPI loading Xposed Module

\u5F02\u5E38\u539F\u56E0

YukiHookAPI \u5728\u5C1D\u8BD5\u4F7F\u7528 Xposed \u539F\u751F\u63A5\u53E3\u88C5\u8F7D Xposed \u6A21\u5757\u65F6\u53D1\u751F\u4E86\u4E0D\u80FD\u5904\u7406\u7684\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u901A\u5E38\u60C5\u51B5\u4E0B\u8FD9\u79CD\u9519\u8BEF\u4E0D\u4F1A\u8F7B\u6613\u53D1\u751F\uFF0C\u82E5\u4E00\u65E6\u53D1\u751F\u6B64\u9519\u8BEF\uFF0C\u8BF7\u81EA\u884C\u67E5\u770B\u63A7\u5236\u53F0\u6253\u5370\u7684\u65E5\u5FD7\u5B9A\u4F4D\u95EE\u9898\uFF0C\u786E\u5B9A\u5E76\u975E\u81EA\u5DF1\u7684\u4EE3\u7801\u53D1\u751F\u7684\u95EE\u9898\u540E\uFF0C\u53EF\u63D0\u4EA4\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

Failed to execute method "NAME", maybe your Hook Framework not support Resources Hook

\u5F02\u5E38\u539F\u56E0

YukiHookAPI \u5728\u5C1D\u8BD5\u8FDB\u884C Resources Hook \u65F6\u53D1\u751F\u9519\u8BEF\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u4ED4\u7EC6\u68C0\u67E5\u9519\u8BEF\u65E5\u5FD7\u7684\u8BE6\u7EC6\u4FE1\u606F\u3002

\u82E5\u53D1\u751F Resources$NotFoundException \u5219\u53EF\u80FD\u4E3A\u4F60\u67E5\u627E\u7684 Resources Id \u4E0D\u6B63\u786E\u3002

\u82E5\u53D1\u751F ClassNotFound \u6216 NoClassDefFoundError \u53EF\u80FD\u662F Hook Framework \u4E0D\u652F\u6301 Resources Hook(\u8D44\u6E90\u94A9\u5B50)\u3002

exception

loggerE

HookClass [NAME] not found

\u5F02\u5E38\u539F\u56E0

\u5F53\u524D\u88AB Hook \u7684 Class \u6CA1\u6709\u88AB\u627E\u5230\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u68C0\u67E5\u76EE\u6807 Class \u662F\u5426\u5B58\u5728\uFF0C\u82E5\u60F3\u5FFD\u7565\u6B64\u9519\u8BEF\u8BF7\u4F7F\u7528 ignoredHookClassNotFoundFailure \u65B9\u6CD5\u3002

exception

loggerE

Hook Member [NAME] failed

\u5F02\u5E38\u539F\u56E0

Hook \u76EE\u6807\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u65F6\u53D1\u751F\u9519\u8BEF\u3002

\u89E3\u51B3\u65B9\u6848

\u6B64\u95EE\u9898\u901A\u5E38\u7531 Hook Framework \u4EA7\u751F\uFF0C\u8BF7\u68C0\u67E5\u5BF9\u5E94\u7684\u65E5\u5FD7\u5185\u5BB9\uFF0C\u82E5\u95EE\u9898\u6301\u7EED\u51FA\u73B0\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

Hooked Member with a finding error by CLASS

\u5F02\u5E38\u539F\u56E0

\u5728 Hook \u6267\u884C\u540E\u88AB Hook \u7684 member \u4E3A null \u4E14\u5DF2\u7ECF\u8BBE\u7F6E\u76EE\u6807 Hook \u65B9\u6CD5\u3001\u6784\u9020\u7C7B\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u68C0\u67E5\u6B64\u9519\u8BEF\u53D1\u751F\u524D\u7684\u4E0A\u4E00\u4E2A\u9519\u8BEF\u65E5\u5FD7\uFF0C\u6216\u8BB8\u5728\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u65F6\u5019\u53D1\u751F\u4E86\u627E\u4E0D\u5230\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u9519\u8BEF\u3002

exception

loggerE

Hooked Member cannot be non-null by CLASS

\u5F02\u5E38\u539F\u56E0

\u5728 Hook \u6267\u884C\u540E\u88AB Hook \u7684 member \u4E3A null \u4E14\u6CA1\u6709\u8BBE\u7F6E\u76EE\u6807 Hook \u65B9\u6CD5\u3001\u6784\u9020\u7C7B\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // \u8FD9\u91CC\u5E76\u6CA1\u6709\u8BBE\u7F6E\u9700\u8981 Hook \u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u67E5\u627E\u6761\u4EF6
    afterHook {
        // ...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60\u5DF2\u7ECF\u5728 Hook \u4E4B\u524D\u6B63\u786E\u8BBE\u7F6E\u4E86\u8981 Hook \u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u67E5\u627E\u65B9\u5F0F\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // \u2705 \u6B63\u786E\u7684\u4F7F\u7528\u65B9\u6CD5\u4E3E\u4F8B
    method {
        // Your code here.
    }
    afterHook {
        // ...
    }
}
exception

loggerE

Hooked method return type match failed, required [TYPE] but got [TYPE]

\u5F02\u5E38\u539F\u56E0

\u5728 Hook \u56DE\u8C03\u65B9\u6CD5\u4F53\u4E2D\u8BBE\u7F6E\u4E86 HookParam.result \u6216\u4F7F\u7528\u4E86 replaceHook \u4F46\u662F\u88AB Hook \u7684\u65B9\u6CD5\u8FD4\u56DE\u503C\u7C7B\u578B\u4E0E\u539F\u8FD4\u56DE\u503C\u7C7B\u578B\u4E0D\u5339\u914D\u3002

\u793A\u4F8B\u5982\u4E0B

\u5047\u8BBE\u8FD9\u4E2A\u662F\u88AB Hook \u7684\u65B9\u6CD5\u3002

private boolean test()

\u4E0B\u9762\u662F\u4E00\u4E2A\u9519\u8BEF\u7684\u6848\u5217\u3002

injectMember {
    method {
        name = "test"
        emptyParam()
    }
    // <\u60C5\u666F1> \u8BBE\u7F6E\u4E86\u9519\u8BEF\u7684\u7C7B\u578B\uFF0C\u539F\u7C7B\u578B\u4E3A Boolean
    beforeHook {
        result = 0
    }
    // <\u60C5\u666F2> \u8FD4\u56DE\u4E86\u9519\u8BEF\u7684\u7C7B\u578B\uFF0C\u539F\u7C7B\u578B\u4E3A Boolean
    replaceAny {
        0
    }
    // <\u60C5\u666F3> \u76F4\u63A5\u4F7F\u7528\u4E86\u9519\u8BEF\u7684\u7C7B\u578B\uFF0C\u539F\u7C7B\u578B\u4E3A Boolean
    replaceTo(any = 0)
}

\u6CE8\u610F

\u82E5\u4E0A\u8FF0\u573A\u666F\u5728 beforeHook \u6216 afterHook \u4E2D\u53D1\u751F\uFF0C\u5219\u4F1A\u9020\u6210\u88AB Hook \u7684 APP (\u5BBF\u4E3B) \u7531 XposedBridge \u629B\u51FA\u5F02\u5E38 (\u4F1A\u5BF9\u5176\u66B4\u9732\u88AB Hook \u7684\u4E8B\u5B9E)\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u5F53\u524D\u88AB Hook \u65B9\u6CD5\u7684\u6B63\u786E\u8FD4\u56DE\u503C\u7C7B\u578B\uFF0C\u4FEE\u6539\u540E\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

Hook initialization failed because got an Exception

\u5F02\u5E38\u539F\u56E0

\u5728\u51C6\u5907 Hook \u65F6\u53D1\u751F\u4E86\u4EFB\u610F\u7684\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u8FD9\u662F\u4E00\u4E2A\u51C6\u5907 Hook \u9636\u6BB5\u5C31\u53D1\u751F\u5F02\u5E38\u7684\u63D0\u9192\uFF0C\u8BF7\u4ED4\u7EC6\u67E5\u770B\u5177\u4F53\u7684\u5F02\u5E38\u662F\u4EC0\u4E48\u4EE5\u91CD\u65B0\u786E\u5B9A\u95EE\u9898\u3002

exception

loggerE

Try to hook NAME[NAME] got an Exception

\u5F02\u5E38\u539F\u56E0

\u5728 Hook \u5F00\u59CB\u65F6\u53D1\u751F\u4E86\u4EFB\u610F\u7684\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u8FD9\u662F\u4E00\u4E2A Hook \u5F00\u59CB\u5C31\u53D1\u751F\u5F02\u5E38\u7684\u63D0\u9192\uFF0C\u8BF7\u4ED4\u7EC6\u67E5\u770B\u5177\u4F53\u7684\u5F02\u5E38\u662F\u4EC0\u4E48\u4EE5\u91CD\u65B0\u786E\u5B9A\u95EE\u9898\u3002

exception

loggerE

Method/Constructor/Field match type "TYPE" not allowed

\u5F02\u5E38\u539F\u56E0

\u5728\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u4EE5\u53CA\u53D8\u91CF\u65F6\u8BBE\u7F6E\u4E86\u4E0D\u5141\u8BB8\u7684\u53C2\u6570\u7C7B\u578B\u3002

\u793A\u4F8B\u5982\u4E0B

// \u67E5\u627E\u4E00\u4E2A\u65B9\u6CD5
method {
    // \u2757\u8BBE\u7F6E\u4E86\u65E0\u6548\u7684\u7C7B\u578B\u4E3E\u4F8B
    param(false, 1, 0)
    // \u2757\u8BBE\u7F6E\u4E86\u65E0\u6548\u7684\u7C7B\u578B\u4E3E\u4F8B
    returnType = false
}

// \u67E5\u627E\u4E00\u4E2A\u53D8\u91CF
field {
    // \u2757\u8BBE\u7F6E\u4E86\u65E0\u6548\u7684\u7C7B\u578B\u4E3E\u4F8B
    type = false
}

\u89E3\u51B3\u65B9\u6848

\u5728\u67E5\u627E\u4E2D param\u3001returnType\u3001type \u4E2D\u4EC5\u63A5\u53D7 Class\u3001String\u3001VariousClass \u7C7B\u578B\u7684\u4F20\u503C\uFF0C\u4E0D\u53EF\u4F20\u5165\u53C2\u6570\u5B9E\u4F8B\u3002

\u793A\u4F8B\u5982\u4E0B

// \u67E5\u627E\u4E00\u4E2A\u65B9\u6CD5
method {
    // \u2705 \u6B63\u786E\u7684\u4F7F\u7528\u65B9\u6CD5\u4E3E\u4F8B
    param(BooleanType, IntType, IntType)
    // \u2705 \u6B63\u786E\u7684\u4F7F\u7528\u65B9\u6CD5\u4E3E\u4F8B
    returnType = BooleanType
    // \u2705 \u4EE5\u4E0B\u65B9\u6848\u4E5F\u662F\u6B63\u786E\u7684
    returnType = "java.lang.Boolean"
}

// \u67E5\u627E\u4E00\u4E2A\u53D8\u91CF
field {
    // \u2705 \u6B63\u786E\u7684\u4F7F\u7528\u65B9\u6CD5\u4E3E\u4F8B
    type = BooleanType
}
exception

loggerE

NoSuchMethod/NoSuchConstructor/NoSuchField happend in [NAME]

\u5F02\u5E38\u539F\u56E0

\u5728\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u4EE5\u53CA\u53D8\u91CF\u65F6\u5E76\u672A\u627E\u5230\u76EE\u6807\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u4EE5\u53CA\u53D8\u91CF\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60\u7684\u67E5\u627E\u6761\u4EF6\u662F\u5426\u80FD\u6B63\u786E\u5339\u914D\u5230\u76EE\u6807 Class \u4E2D\u7684\u6307\u5B9A\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u4EE5\u53CA\u53D8\u91CF\u3002

exception

loggerE

Trying COUNT times and all failure by RemedyPlan

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 RemedyPlan \u91CD\u65B0\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u3001\u53D8\u91CF\u65F6\u4F9D\u7136\u6CA1\u6709\u627E\u5230\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u3001\u53D8\u91CF\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60\u8BBE\u7F6E\u7684 RemedyPlan \u53C2\u6570\u4EE5\u53CA\u5BBF\u4E3B\u5185\u5B58\u5728\u7684 Class\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

You must set a condition when finding a Method/Constructor/Field

\u5F02\u5E38\u539F\u56E0

\u5728\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u4EE5\u53CA\u53D8\u91CF\u65F6\u5E76\u672A\u8BBE\u7F6E\u4EFB\u4F55\u6761\u4EF6\u3002

\u793A\u4F8B\u5982\u4E0B

method {
    // \u8FD9\u91CC\u6CA1\u6709\u8BBE\u7F6E\u4EFB\u4F55\u6761\u4EF6
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u5C06\u67E5\u627E\u6761\u4EF6\u8865\u5145\u5B8C\u6574\u5E76\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

Can't find this Class in [CLASSLOADER]: CONTENT Generated by YukiHookAPI#ReflectionTool

\u5F02\u5E38\u539F\u56E0

\u901A\u8FC7 ClassLoader.searchClass \u6216 PackageParam.searchClass \u627E\u4E0D\u5230\u9700\u8981\u67E5\u627E\u7684 Class \u5BF9\u8C61\u3002

\u793A\u4F8B\u5982\u4E0B

customClassLoader?.searchClass {
    from(...)
    // ...
}.get()

\u89E3\u51B3\u65B9\u6848

\u8FD9\u662F\u4E00\u4E2A\u5B89\u5168\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\u4F60\u8BBE\u7F6E\u7684\u6761\u4EF6\uFF0C\u4F7F\u7528\u76F8\u5173\u5DE5\u5177\u67E5\u770B\u6240\u5728 Dex \u4E2D\u7684 Class \u4EE5\u53CA\u5B57\u8282\u7801\u5BF9\u8C61\u7279\u5F81\uFF0C\u5E76\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

Can't find this Method/Constructor/Field in [CLASS]: CONTENT Generated by YukiHookAPI#ReflectionTool

\u5F02\u5E38\u539F\u56E0

\u901A\u8FC7\u6307\u5B9A\u6761\u4EF6\u627E\u4E0D\u5230\u9700\u8981\u67E5\u627E\u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u4EE5\u53CA\u53D8\u91CF\u3002

\u793A\u4F8B\u5982\u4E0B

TargetClass.method {
    name = "test"
    param(BooleanType)
}

\u89E3\u51B3\u65B9\u6848

\u8FD9\u662F\u4E00\u4E2A\u5B89\u5168\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\u4F60\u8BBE\u7F6E\u7684\u6761\u4EF6\uFF0C\u4F7F\u7528\u76F8\u5173\u5DE5\u5177\u67E5\u770B\u6240\u5728 Class \u4E2D\u7684\u5B57\u8282\u7801\u5BF9\u8C61\u7279\u5F81\uFF0C\u5E76\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

The number of VagueType must be at least less than the count of paramTypes

\u5F02\u5E38\u539F\u56E0

\u5728 Method\u3001Constructor \u67E5\u627E\u6761\u4EF6\u4E2D\u9519\u8BEF\u5730\u4F7F\u7528\u4E86 VagueType\u3002

\u793A\u4F8B\u5982\u4E0B

TargetClass.method {
    name = "test"
    // <\u60C5\u666F1>
    param(VagueType)
    // <\u60C5\u666F2>
    param(VagueType, VagueType ...)
}

\u89E3\u51B3\u65B9\u6848

VagueType \u4E0D\u80FD\u5728\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u53C2\u6570\u4E2D\u5B8C\u5168\u586B\u5145\uFF0C\u82E5\u5B58\u5728\u8FD9\u6837\u7684\u9700\u6C42\u8BF7\u4F7F\u7528 paramCount\u3002

exception

loggerE

Field match type class is not found

\u5F02\u5E38\u539F\u56E0

\u5728\u67E5\u627E\u53D8\u91CF\u65F6\u6240\u8BBE\u7F6E\u7684\u67E5\u627E\u6761\u4EF6\u4E2D type \u7684 Class \u5B9E\u4F8B\u672A\u88AB\u627E\u5230\u3002

\u793A\u4F8B\u5982\u4E0B

field {
    name = "test"
    // \u5047\u8BBE\u8FD9\u91CC\u8BBE\u7F6E\u7684 type \u7684 Class \u5E76\u4E0D\u5B58\u5728
    type = "com.example.TestClass"
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u68C0\u67E5\u67E5\u627E\u6761\u4EF6\u4E2D type \u7684 Class \u662F\u5426\u5B58\u5728\uFF0C\u7136\u540E\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

Method match returnType class is not found

\u5F02\u5E38\u539F\u56E0

\u5728\u67E5\u627E\u65B9\u6CD5\u65F6\u6240\u8BBE\u7F6E\u7684\u67E5\u627E\u6761\u4EF6\u4E2D returnType \u7684 Class \u5B9E\u4F8B\u672A\u88AB\u627E\u5230\u3002

\u793A\u4F8B\u5982\u4E0B

method {
    name = "test"
    // \u5047\u8BBE\u8FD9\u91CC\u8BBE\u7F6E\u7684 returnType \u7684 Class \u5E76\u4E0D\u5B58\u5728
    returnType = "com.example.TestClass"
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u68C0\u67E5\u67E5\u627E\u6761\u4EF6\u4E2D returnType \u7684 Class \u662F\u5426\u5B58\u5728\uFF0C\u7136\u540E\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

Method/Constructor match paramType[INDEX] class is not found

\u5F02\u5E38\u539F\u56E0

\u5728\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u65F6\u6240\u8BBE\u7F6E\u7684\u67E5\u627E\u6761\u4EF6\u4E2D param \u7684 index \u53F7\u4E0B\u6807\u7684 Class \u5B9E\u4F8B\u672A\u88AB\u627E\u5230\u3002

method {
    name = "test"
    // \u5047\u8BBE\u8FD9\u91CC\u8BBE\u7F6E\u7684 1 \u53F7\u4E0B\u6807\u7684 Class \u5E76\u4E0D\u5B58\u5728
    param(StringClass, "com.example.TestClass", BooleanType)
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u68C0\u67E5\u67E5\u627E\u6761\u4EF6\u4E2D param \u7684 index \u53F7\u4E0B\u6807\u7684 Class \u662F\u5426\u5B58\u5728\uFF0C\u7136\u540E\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

Invoke original Member [MEMBER] failed

\u5F02\u5E38\u539F\u56E0

\u5728\u4F7F\u7528 HookParam.callOriginal\u3001HookParam.invokeOriginal\u3001method { ... }.get(...).original() \u8C03\u7528\u672A\u7ECF Hook \u7684\u539F\u59CB\u65B9\u6CD5\u65F6\u53D1\u751F\u9519\u8BEF\u3002

\u89E3\u51B3\u65B9\u6848

\u4E00\u822C\u60C5\u51B5\u4E0B\uFF0C\u6B64\u9519\u8BEF\u57FA\u672C\u4E0A\u4E0D\u4F1A\u53D1\u751F\uFF0C\u82E5\u53D1\u751F\u6B64\u9519\u8BEF\uFF0C\u53EF\u80FD\u4E3A\u5F53\u524D\u4F7F\u7528\u7684 Hook Framework \u95EE\u9898\uFF0C\u6392\u9664\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u540E\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

Resources Hook condition name/type cannot be empty [TAG]

\u5F02\u5E38\u539F\u56E0

\u5728\u67E5\u627E Resources \u65F6\u5E76\u672A\u8BBE\u7F6E\u4EFB\u4F55\u6761\u4EF6\u3002

\u793A\u4F8B\u5982\u4E0B

// \u60C5\u51B5 1
conditions {
    // \u8FD9\u91CC\u6CA1\u6709\u8BBE\u7F6E\u4EFB\u4F55\u6761\u4EF6
}
// \u60C5\u51B5 2
conditions {
    name = "test"
    // \u8FD9\u91CC\u7F3A\u5C11\u4E86 type \u6761\u4EF6
}

\u89E3\u51B3\u65B9\u6848

Resources \u7684 Hook \u5E76\u975E\u7C7B\u4F3C\u65B9\u6CD5\u7684 Hook\uFF0C\u5176\u5FC5\u987B\u62E5\u6709\u5B8C\u6574\u7684\u540D\u79F0\u548C\u7C7B\u578B\u63CF\u8FF0\u624D\u80FD\u67E5\u627E\u6210\u529F\uFF0C\u8BF7\u5C06\u67E5\u627E\u6761\u4EF6\u8865\u5145\u5B8C\u6574\u5E76\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

Resources Hook type is invalid [TAG]

\u5F02\u5E38\u539F\u56E0

\u5728 Hook Resources \u65F6\u53D1\u751F\u4E86\u7C7B\u578B\u9519\u8BEF\u7684\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

YukiHookAPI \u4F1A\u5C1D\u8BD5\u5728 initZygote \u4E0E handleInitPackageResources \u4E2D\u88C5\u8F7D Resources Hook\uFF0C\u82E5\u5168\u90E8\u88C5\u8F7D\u5931\u8D25\u53EF\u80FD\u4F1A\u53D1\u751F\u6B64\u5F02\u5E38\uFF0C\u5F53\u524D Hook Framework \u9700\u8981\u652F\u6301\u5E76\u542F\u7528\u8D44\u6E90\u94A9\u5B50 (Resources Hook) \u529F\u80FD\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5\u4E00\u6B21\u3002

exception

loggerE

Resources Hook got an Exception [TAG]

\u5F02\u5E38\u539F\u56E0

\u5728 Hook Resources \u65F6\u53D1\u751F\u4E86\u4EFB\u610F\u7684\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u8FD9\u662F\u4E00\u4E2A\u5F02\u5E38\u6C47\u603B\uFF0C\u8BF7\u81EA\u884C\u5411\u4E0B\u67E5\u770B\u65E5\u5FD7\u5177\u4F53\u7684\u5F02\u5E38\u662F\u4EC0\u4E48\uFF0C\u4F8B\u5982\u627E\u4E0D\u5230 Resources Id \u7684\u95EE\u9898\u3002

exception

loggerE

Received action "ACTION" failed

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 YukiHookDataChannel \u65F6\u56DE\u8C03\u5E7F\u64AD\u4E8B\u4EF6\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u6B64\u5F02\u5E38\u591A\u4E3A\u4E00\u4E9B\u5173\u8054\u6027\u5F02\u5E38\u5F15\u53D1\uFF0C\u8BF7\u68C0\u67E5\u81EA\u8EAB\u4EE3\u7801\u662F\u5426\u5B58\u5728\u95EE\u9898\uFF0C\u6392\u9664\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u540E\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

Received data type TYPE is not a vailed YukiHookDataChannel's data

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 YukiHookDataChannel \u65F6\u56DE\u8C03\u5E7F\u64AD\u6536\u5230\u4E86\u4E0D\u5C5E\u4E8E YukiHookDataChannel \u7684\u6570\u636E\u3002

\u89E3\u51B3\u65B9\u6848

\u4E3A\u4E86\u786E\u4FDD\u6570\u636E\u5B89\u5168\u6027\uFF0CYukiHookDataChannel \u4F1A\u5BF9\u53D1\u9001\u7684\u6570\u636E\u8FDB\u884C\u5305\u88C5\uFF0C\u4EFB\u4F55\u7B2C\u4E09\u65B9\u5E7F\u64AD\u4E8B\u4EF6\u5747\u4E0D\u80FD\u88AB YukiHookDataChannel \u63A5\u6536\uFF0C\u8BF7\u68C0\u67E5\u4F60\u7684\u4EE3\u7801\u662F\u5426\u6B63\u786E\u3002

exception

loggerE

Unsupported segments data key of "KEY"'s type

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 YukiHookDataChannel \u65F6\u56DE\u8C03\u5E7F\u64AD\u6536\u5230\u4E86\u4E0D\u652F\u6301\u7684\u5206\u6BB5\u6570\u636E\u7C7B\u578B\u3002

\u89E3\u51B3\u65B9\u6848

\u4E00\u822C\u60C5\u51B5\u4E0B\uFF0C\u6B64\u9519\u8BEF\u4E0D\u53EF\u80FD\u53D1\u751F\uFF0C\u56E0\u4E3A YukiHookDataChannel \u6240\u652F\u6301\u7684\u5206\u6BB5\u6570\u636E\u7C7B\u578B\u662F\u56FA\u5B9A\u7684\uFF0C\u4E0D\u4F1A\u52A8\u6001\u6539\u53D8\uFF0C\u82E5\u53D1\u751F\u8FD9\u79CD\u60C5\u51B5\uFF0C\u8BF7\u68C0\u67E5\u662F\u5426\u6539\u52A8\u4E86 API \u76F8\u5173\u4EE3\u7801\u3002

exception

loggerE

YukiHookDataChannel cannot merge this segments data key of "KEY"

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 YukiHookDataChannel \u65F6\u56DE\u8C03\u5E7F\u64AD\u6536\u5230\u4E86\u65E0\u6CD5\u5904\u7406\u7684\u5206\u6BB5\u6570\u636E\u5BFC\u81F4\u65E0\u6CD5\u5408\u5E76\u5206\u6BB5\u6570\u636E\u3002

\u89E3\u51B3\u65B9\u6848

\u4E00\u822C\u60C5\u51B5\u4E0B\uFF0C\u6B64\u9519\u8BEF\u57FA\u672C\u4E0A\u4E0D\u4F1A\u53D1\u751F\uFF0C\u9664\u975E\u6536\u5230\u8FDE\u7EED\u53D1\u9001\u6216\u91CD\u590D\u53D1\u9001\u7684\u5E7F\u64AD (\u65F6\u5E8F\u5F02\u5E38) \u6216\u5728\u63A5\u6536\u6570\u636E\u65F6\u8BBE\u7F6E\u4E86\u9519\u8BEF\u7684\u6CDB\u578B\u7C7B\u578B\uFF0C\u6392\u9664\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u540E\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

YukiHookDataChannel cannot calculate the byte size of the data key of "KEY" to be sent, so this data cannot be sent

If you want to lift this restriction, use the allowSendTooLargeData function when calling, but this may cause the app crash

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 YukiHookDataChannel \u53D1\u9001\u5E7F\u64AD\u6570\u636E\u65F6\u8BA1\u7B97\u6570\u636E\u5927\u5C0F\u5931\u8D25\u3002

\u89E3\u51B3\u65B9\u6848

\u4E00\u822C\u60C5\u51B5\u4E0B\uFF0C\u6B64\u9519\u8BEF\u57FA\u672C\u4E0A\u4E0D\u4F1A\u53D1\u751F\uFF0C\u6392\u9664\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u540E\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

YukiHookDataChannel cannot send this data key of "KEY" type TYPE, because it is too large (total TOTAL KB, limit LIMIT KB) and cannot be segmented

SUGGESTION_MESSAGE

If you want to lift this restriction, use the allowSendTooLargeData function when calling, but this may cause the app crash

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 YukiHookDataChannel \u53D1\u9001\u5E7F\u64AD\u6570\u636E\u65F6\u6570\u636E\u8FC7\u5927\uFF0C\u4F46\u662F\u6B64\u6570\u636E\u7C7B\u578B\u5E76\u4E0D\u652F\u6301\u88AB\u5206\u6BB5\u53D1\u9001\u3002

\u89E3\u51B3\u65B9\u6848

\u5F53\u4F60\u53D1\u9001\u7684\u6570\u636E\u8D85\u51FA\u7CFB\u7EDF\u5E7F\u64AD\u7684\u4E0A\u9650\u65F6\uFF0CYukiHookDataChannel \u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u5C06\u6B64\u6570\u636E\u5206\u6BB5\u540E\u4F9D\u6B21\u53D1\u9001\uFF0C\u4F46\u4EC5\u652F\u6301\u5904\u7406 List\u3001Map\u3001Set\u3001String \u5E38\u89C1\u7C7B\u578B\u7684\u81EA\u52A8\u5206\u6BB5\u529F\u80FD\u3002

\u5C0F\u63D0\u793A

\u82E5\u4F60\u4ECD\u8981\u4F7F\u7528\u6B64\u529F\u80FD\uFF0C\u8BF7\u53C2\u8003 YukiHookDataChannel.NameSpace.allowSendTooLargeData \u65B9\u6CD5\u3002

\u4F46\u662F\u5F3A\u70C8\u5EFA\u8BAE\u4E0D\u8981\u8FD9\u6837\u505A\uFF0C\u8FD9\u6709\u53EF\u80FD\u4F1A\u5BFC\u81F4\u7CFB\u7EDF\u4E0D\u5141\u8BB8\u8FC7\u5927\u7684\u6570\u636E\u53D1\u9001\u800C\u9020\u6210\u5E94\u7528\u5D29\u6E83\u3002

exception

loggerE

Failed to sendBroadcast like "KEY", because got null context in "PACKAGENAME"

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 YukiHookDataChannel \u65F6\u53D1\u9001\u5E7F\u64AD\u53D6\u5230\u4E86\u7A7A\u7684\u4E0A\u4E0B\u6587\u5B9E\u4F8B\u3002

\u89E3\u51B3\u65B9\u6848

\u4E00\u822C\u60C5\u51B5\u4E0B\uFF0C\u6B64\u9519\u8BEF\u57FA\u672C\u4E0A\u4E0D\u4F1A\u53D1\u751F\uFF0C\u5728\u6700\u65B0\u7248\u672C\u4E2D\u5DF2\u7ECF\u4FEE\u590D\u5BBF\u4E3B\u4F7F\u7528\u65F6\u53EF\u80FD\u53D1\u751F\u7684\u95EE\u9898\uFF0C\u82E5\u6700\u65B0\u7248\u672C\u4F9D\u7136\u53D1\u751F\u9519\u8BEF\uFF0C\u6392\u9664\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u540E\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

Failed to inject module resources into [RESOURCES]

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528 injectModuleAppResources \u6CE8\u5165\u6A21\u5757\u8D44\u6E90\u65F6\u53D1\u751F\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u4E00\u822C\u60C5\u51B5\u4E0B\uFF0C\u6B64\u9519\u8BEF\u57FA\u672C\u4E0A\u4E0D\u4F1A\u53D1\u751F\uFF0C\u6392\u9664\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u540E\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

You cannot inject module resources into yourself

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883 (\u6A21\u5757\u81EA\u8EAB\u7684 Xposed \u73AF\u5883) \u4E2D\u4F7F\u7528 injectModuleAppResources \u5C06\u6A21\u5757\u81EA\u8EAB\u7684\u8D44\u6E90\u6CE8\u5165\u81EA\u8EAB\u3002

\u89E3\u51B3\u65B9\u6848

\u7531\u4E8E\u6A21\u5757\u81EA\u8EAB\u4E5F\u53EF\u4EE5\u88AB\u81EA\u8EAB Hook\uFF0C\u4F46\u4F60\u5E76\u4E0D\u53EF\u4EE5\u5728\u6A21\u5757\u81EA\u8EAB\u6CE8\u5165\u81EA\u5DF1 (\u4E0D\u80FD\u9012\u5F52\u81EA\u8EAB\u7684\u8D44\u6E90)\uFF0C\u82E5\u4F60\u4E00\u5B9A\u8981\u83B7\u53D6\u6A21\u5757\u81EA\u8EAB\u7684\u8D44\u6E90\uFF0C\u8BF7\u76F4\u63A5\u4F7F\u7528\u5373\u53EF\uFF0C\u65E0\u9700\u4EFB\u4F55\u5176\u5B83\u64CD\u4F5C\u3002

exception

loggerE

Activity Proxy initialization failed because got an Exception

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528 registerModuleAppActivities \u6CE8\u5165\u6A21\u5757 Activity \u65F6\u53D1\u751F\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u68C0\u67E5\u6B64\u9519\u8BEF\u53D1\u751F\u540E\u7684\u4E0B\u4E00\u4E2A\u9519\u8BEF\u65E5\u5FD7\uFF0C\u6216\u8BB8\u5728\u914D\u7F6E\u53C2\u6570\u4E0A\u53EF\u80FD\u53D1\u751F\u4E86\u4E00\u4E9B\u95EE\u9898\uFF0C\u82E5\u627E\u4E0D\u5230\u76F8\u5173\u9519\u8BEF\u65E5\u5FD7\u7684\u8BF4\u660E\uFF0C\u6392\u9664\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u540E\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

Activity Proxy got an Exception in msg.what [WHAT]

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528 registerModuleAppActivities \u6CE8\u5165\u6A21\u5757 Activity \u65F6\u53D1\u751F\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u4E00\u822C\u60C5\u51B5\u4E0B\uFF0C\u6B64\u9519\u8BEF\u57FA\u672C\u4E0A\u4E0D\u4F1A\u53D1\u751F\uFF0C\u4F46\u6839\u636E\u7CFB\u7EDF\u7248\u672C\u5DEE\u5F02\u6027\u5E76\u672A\u505A\u8BE6\u7EC6\u6D4B\u8BD5\uFF0C\u6392\u9664\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u540E\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

loggerE

This proxy [TYPE] type is not allowed

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528 registerModuleAppActivities \u6CE8\u5165\u6A21\u5757 Activity \u65F6\u586B\u5165\u4E86\u65E0\u6548\u7684\u53C2\u6570\u3002

\u793A\u4F8B\u5982\u4E0B

// \u2757 \u8FD9\u91CC\u586B\u5165\u7684\u5185\u5BB9\u4EC5\u4E3A\u4E3E\u4F8B\uFF0C\u5176\u4E2D proxy \u586B\u5165\u4E86\u4E0D\u80FD\u7406\u89E3\u7684\u65E0\u6548\u53C2\u6570
registerModuleAppActivities(proxy = false)

\u89E3\u51B3\u65B9\u6848

\u65B9\u6CD5\u4E2D\u7684 proxy \u53C2\u6570\u53EA\u63A5\u53D7 String\u3001CharSequence\u3001Class \u7C7B\u578B\uFF0C\u8BF7\u67E5\u770B\u76F8\u5173\u4F7F\u7528\u65B9\u6CD5\u6B63\u786E\u586B\u5165\u65B9\u6CD5\u53C2\u6570\u3002

exception

loggerE

Cound not got launch intent for package "NAME"

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528 registerModuleAppActivities \u6CE8\u5165\u6A21\u5757 Activity \u65F6\u627E\u4E0D\u5230\u5BBF\u4E3B\u7684\u542F\u52A8 Activity\u3002

\u793A\u4F8B\u5982\u4E0B

// \u4F7F\u7528\u4E86\u9ED8\u8BA4\u53C2\u6570\u76F4\u63A5\u8FDB\u884C\u6CE8\u518C
registerModuleAppActivities()

\u89E3\u51B3\u65B9\u6848

\u9ED8\u8BA4\u53C2\u6570 (\u65E0\u53C2) \u53EA\u80FD\u7528\u4E8E\u53EF\u88AB\u542F\u52A8\u7684 APP\uFF0C\u82E5 APP \u5E76\u672A\u58F0\u660E\u542F\u52A8\u5165\u53E3 Activity\uFF0C\u4F60\u5C31\u9700\u8981\u624B\u52A8\u6307\u5B9A\u65B9\u6CD5\u7684 proxy \u53C2\u6570\u3002

exception

loggerE

Could not found "NAME" or Class is not a type of Activity

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528 registerModuleAppActivities \u6CE8\u5165\u6A21\u5757 Activity \u65F6\u65E0\u6CD5\u627E\u5230\u88AB\u586B\u5165\u53C2\u6570 proxy \u7684 Activity\u3002

\u793A\u4F8B\u5982\u4E0B

registerModuleAppActivities(proxy = "com.demo.test.TestActivity")

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60\u586B\u5165\u7684 Activity \u540D\u79F0\u771F\u5B9E\u6709\u6548\u5730\u5B58\u5728\u4E8E\u5BBF\u4E3B\u4E2D\uFF0C\u4E14\u76EE\u6807 Class \u7EE7\u627F\u4E8E Activity\u3002

exception

loggerE

You cannot register Activity Proxy into yourself

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883 (\u6A21\u5757\u81EA\u8EAB\u7684 Xposed \u73AF\u5883) \u4E2D\u4F7F\u7528 registerModuleAppActivities \u5C06\u6A21\u5757\u81EA\u8EAB Activity \u6CE8\u5165\u81EA\u8EAB\u3002

\u89E3\u51B3\u65B9\u6848

\u7531\u4E8E\u6A21\u5757\u81EA\u8EAB\u4E5F\u53EF\u4EE5\u88AB\u81EA\u8EAB Hook\uFF0C\u4F46\u4F60\u5E76\u4E0D\u53EF\u4EE5\u5728\u6A21\u5757\u81EA\u8EAB\u6CE8\u5165\u81EA\u5DF1 (\u4E0D\u80FD\u9012\u5F52\u81EA\u8EAB\u7684\u8D44\u6E90)\uFF0C\u82E5\u4F60\u4E00\u5B9A\u8981\u83B7\u53D6\u6A21\u5757\u81EA\u8EAB\u7684\u8D44\u6E90\uFF0C\u8BF7\u76F4\u63A5\u4F7F\u7528\u5373\u53EF\uFF0C\u65E0\u9700\u4EFB\u4F55\u5176\u5B83\u64CD\u4F5C\u3002

exception

loggerE

Activity Proxy only support for Android 7.0 (API 24) or higher

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883 (\u6A21\u5757\u81EA\u8EAB\u7684 Xposed \u73AF\u5883) \u4E2D\u4F7F\u7528 registerModuleAppActivities \u4F46\u662F\u5F53\u524D\u7CFB\u7EDF\u7248\u672C\u4E0D\u6EE1\u8DB3 Android 7.0 (API 24) \u6700\u4F4E\u8981\u6C42\u3002

\u89E3\u51B3\u65B9\u6848

Activity Proxy \u4EC5\u652F\u6301\u9AD8\u4E8E\u6216\u7B49\u4E8E Android 7.0 (API 24) \u7684\u7CFB\u7EDF\uFF0C\u8BF7\u5C1D\u8BD5\u5347\u7EA7\u4F60\u7684\u7CFB\u7EDF\u6216\u5BF9\u6A21\u5757 APP \u6700\u4F4E\u7CFB\u7EDF\u7248\u672C\u517C\u5BB9\u6027\u505A\u51FA\u8981\u6C42\uFF0C\u4F8B\u5982\u8BBE\u7F6E Min API \u4E3A 24\u3002

exception

loggerE

An exception occurred during AppLifecycle event

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528 onAppLifecycle \u76D1\u542C\u5BBF\u4E3B\u751F\u547D\u5468\u671F\u671F\u95F4\u53D1\u751F\u5F02\u5E38\u3002

\u89E3\u51B3\u65B9\u6848

\u6B64\u5F02\u5E38\u4E3A onAppLifecycle \u4E2D\u629B\u51FA\uFF0C\u7531\u4E8E\u4F60\u8BBE\u7F6E\u4E86\u53C2\u6570 isOnFailureThrowToApp = false\uFF0C\u5F02\u5E38\u6CA1\u6709\u5728\u5BBF\u4E3B\u4E2D\u88AB\u629B\u51FA\u800C\u662F\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u8FDB\u884C\u6253\u5370\uFF0C\u8FD9\u4E0D\u5C5E\u4E8E API \u7684\u5F02\u5E38\uFF0C\u8BF7\u4ED4\u7EC6\u68C0\u67E5\u81EA\u8EAB\u4EE3\u7801\u7684\u95EE\u9898\u3002

\u963B\u65AD\u5F02\u5E38

\u8FD9\u4E9B\u5F02\u5E38\u4F1A\u76F4\u63A5\u5BFC\u81F4 APP \u505C\u6B62\u8FD0\u884C (FC)\uFF0C\u540C\u65F6\u4F1A\u5728\u63A7\u5236\u53F0\u6253\u5370 E \u7EA7\u522B\u7684\u65E5\u5FD7\uFF0C\u8FD8\u4F1A\u9020\u6210 Hook \u8FDB\u7A0B\u201C\u6B7B\u6389\u201D\u3002

exception

IllegalStateException

YukiHookAPI cannot support current Hook API or cannot found any available Hook APIs in current environment

\u5F02\u5E38\u539F\u56E0

YukiHookAPI \u4E0D\u652F\u6301\u5F53\u524D\u73AF\u5883\u4F7F\u7528\u7684 Hook API \u6216\u4E0D\u5B58\u5728 Hook API \u53EF\u88AB\u8C03\u7528\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60\u5728\u6B63\u786E\u7684\u5730\u65B9\u88C5\u8F7D\u4E86 YukiHookAPI \u7684 encase \u65B9\u6CD5\uFF0C\u8BE6\u60C5\u8BF7\u53C2\u8003 \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E \u4EE5\u53CA \u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E\u3002

exception

UnsupportedOperationException

!!!DANGEROUS!!! Hook [CLASS] Class is a dangerous behavior! [CONTENT] [SOLVE]

\u5F02\u5E38\u539F\u56E0

\u4F60\u5C1D\u8BD5 Hook \u4E86\u5904\u4E8E\u5371\u9669\u884C\u4E3A\u5217\u8868\u4E2D\u7684 Class \u5BF9\u8C61\uFF0C\u4F8B\u5982 Class\u3001ClassLoader\u3001Method\u3002

\u793A\u4F8B\u5982\u4E0B

// <\u60C5\u666F1>
JavaClassLoader.hook {
    // ...
}
// <\u60C5\u666F2>
JavaClass.hook {
    // ...
}
// <\u60C5\u666F3>
JavaMethod.hook {
    // ...
}
// ...

\u89E3\u51B3\u65B9\u6848

\u8FD9\u4E9B\u529F\u80FD\u662F\u7CFB\u7EDF\u5185\u90E8\u7684\uFF0C\u5B83\u4EEC\u4E0D\u5E94\u8BE5\u88AB Hook\uFF0C\u5728\u90E8\u5206 Hook Framework \u4E0A\u53EF\u80FD\u4E0D\u88AB\u652F\u6301\uFF0C\u8FD8\u4F1A\u5F15\u53D1\u5176\u5B83\u9519\u8BEF\uFF0C\u8BF7\u5C1D\u8BD5\u66F4\u6362 Hook \u70B9\u3002

\u5C0F\u63D0\u793A

\u82E5\u4F60\u4ECD\u8981\u4F7F\u7528\u6B64\u529F\u80FD\uFF0C\u8BF7\u53C2\u8003 YukiMemberHookCreator.useDangerousOperation \u65B9\u6CD5\u3002

\u4F46\u662F\u5F3A\u70C8\u5EFA\u8BAE\u4E0D\u8981\u8FD9\u6837\u505A\uFF0C\u53D1\u751F\u95EE\u9898\u8BF7\u4E0D\u8981\u53CD\u9988\uFF0C\u81EA\u884C\u627F\u62C5\u4E00\u5207\u540E\u679C\u3002

exception

NoClassDefFoundError

Can't find this Class in [CLASSLOADER]: CONTENT Generated by YukiHookAPI#ReflectionTool

\u5F02\u5E38\u539F\u56E0

\u901A\u8FC7 String.toClass(...) \u6216 classOf<...>() \u627E\u4E0D\u5230\u9700\u8981\u67E5\u627E\u7684 Class \u5BF9\u8C61\u3002

\u793A\u4F8B\u5982\u4E0B

"com.demo.Test".toClass()

\u89E3\u51B3\u65B9\u6848

\u8BF7\u68C0\u67E5\u5F53\u524D\u5B57\u7B26\u4E32\u6216\u5B9E\u4F53\u5339\u914D\u5230\u7684 Class \u662F\u5426\u5B58\u5728\u4E8E\u5F53\u524D ClassLoader\uFF0C\u5E76\u518D\u8BD5\u4E00\u6B21\u3002

exception

IllegalStateException

ClassLoader [CLASSLOADER] is not a DexClassLoader

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 ClassLoader.searchClass \u6216 PackageParam.searchClass \u67E5\u627E Class \u4F46\u662F\u5F53\u524D ClassLoader \u5E76\u4E0D\u7EE7\u627F\u4E8E BaseDexClassLoader\u3002

\u89E3\u51B3\u65B9\u6848

\u8FD9\u79CD\u60C5\u51B5\u57FA\u672C\u4E0D\u5B58\u5728\uFF0C\u9664\u975E\u5F53\u524D APP \u5F15\u7528\u4E86\u975E ART \u5E73\u53F0\u7684\u53EF\u6267\u884C\u6587\u4EF6 (\u4F46\u662F\u8FD9\u79CD\u60C5\u51B5\u8FD8\u662F\u4E0D\u4F1A\u5B58\u5728) \u6216\u5F53\u524D ClassLoader \u4E3A\u7A7A\u3002

exception

IllegalStateException

Failed to got SystemContext

\u5F02\u5E38\u539F\u56E0

\u5728\u88AB Hook \u7684\u5BBF\u4E3B\u5185\u8C03\u7528\u4E86 systemContext \u4F46\u5E76\u672A\u6210\u529F\u83B7\u53D6\u5230\u5B9E\u4F8B\u5BF9\u8C61\u3002

\u793A\u4F8B\u5982\u4E0B

encase {
    // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
    systemContext...
}

\u89E3\u51B3\u65B9\u6848

\u8FD9\u79CD\u60C5\u51B5\u4E0D\u5E94\u8BE5\u5B58\u5728\uFF0C\u7531\u4E8E systemContext \u901A\u8FC7\u53CD\u5C04\u4ECE ActivityThread \u4E2D\u5F97\u5230\uFF0C\u9664\u975E\u7CFB\u7EDF\u8FDB\u7A0B\u53D1\u751F\u5F02\u5E38\uFF0C\u5426\u5219\u83B7\u53D6\u5230\u7684\u5BF9\u8C61\u4E0D\u4F1A\u4E3A\u7A7A\u3002

exception

IllegalStateException

App is dead, You cannot call to appContext

\u5F02\u5E38\u539F\u56E0

\u7B2C\u4E00\u79CD\u60C5\u51B5

\u5728\u88AB Hook \u7684\u5BBF\u4E3B\u5185\u8C03\u7528\u4E86 ModuleApplication \u7684 appContext\u3002

\u793A\u4F8B\u5982\u4E0B

encase {
    // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
    ModuleApplication.appContext...
}

\u7B2C\u4E8C\u79CD\u60C5\u51B5

\u4F7F\u7528 ModuleApplication \u65F6\u8C03\u7528\u4E86 appContext \u4F46\u662F APP \u53EF\u80FD\u5DF2\u7ECF\u88AB\u9500\u6BC1\u6216\u6CA1\u6709\u6B63\u786E\u542F\u52A8\u3002

\u793A\u4F8B\u5982\u4E0B

// \u8C03\u7528\u4E86\u6B64\u53D8\u91CF\u4F46\u662F APP \u53EF\u80FD\u5DF2\u88AB\u9500\u6BC1\u6216\u6CA1\u6709\u6B63\u786E\u542F\u52A8
ModuleApplication.appContext...

\u89E3\u51B3\u65B9\u6848

\u7B2C\u4E00\u79CD\u60C5\u51B5

\u4F60\u53EA\u80FD\u5728\u6A21\u5757\u5185\u4F7F\u7528 ModuleApplication \u7684 appContext\uFF0C\u5728\u5BBF\u4E3B\u5185\u8BF7\u4F7F\u7528 PackageParam \u4E2D\u7684 appContext\uFF0C\u8BF7\u786E\u8BA4\u4F60\u4F7F\u7528\u7684\u662F\u5426\u6B63\u786E\u3002

\u7B2C\u4E8C\u79CD\u60C5\u51B5

\u8FD9\u79CD\u60C5\u51B5\u57FA\u672C\u4E0D\u5B58\u5728\uFF0C\u7531\u4E8E appContext \u662F\u5728 onCreate \u4E2D\u88AB\u8D4B\u503C\u7684\uFF0C\u9664\u975E\u9047\u5230\u591A\u8FDB\u7A0B\u5E76\u53D1\u542F\u52A8\u6216 APP \u6CA1\u6709\u542F\u52A8\u5B8C\u6210\u524D\u88AB\u53CD\u5C04\u8C03\u7528\u4E86\u7236\u7C7B\u7684 onCreate \u65B9\u6CD5\u3002

exception

IllegalStateException

YukiHookPrefsBridge not allowed in Custom Hook API

\u5F02\u5E38\u539F\u56E0

\u5728 Hook \u81EA\u8EAB APP(\u975E Xposed \u6A21\u5757) \u4E2D\u4F7F\u7528\u4E86 YukiHookPrefsBridge\u3002

\u793A\u4F8B\u5982\u4E0B

class MyApplication : Application() {

    override fun attachBaseContext(base: Context?) {
        YukiHookAPI.encase(base) {
            // \u2757\u4E0D\u80FD\u5728\u8FD9\u79CD\u60C5\u51B5\u4E0B\u4F7F\u7528 prefs
            prefs.getBoolean("test_data")
        }
        super.attachBaseContext(base)
    }
}

\u89E3\u51B3\u65B9\u6848

\u4F60\u53EA\u80FD\u5728 \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528 \u65F6\u4F7F\u7528 YukiHookPrefsBridge\uFF0C\u5728 Hook \u81EA\u8EAB APP \u4E2D\u8BF7\u4F7F\u7528\u539F\u751F\u7684 Sp \u5B58\u50A8\u3002

exception

IllegalStateException

Cannot load the XSharedPreferences, maybe is your Hook Framework not support it

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u4E86 YukiHookPrefsBridge \u4F46\u662F\u65E0\u6CD5\u5F97\u5230 XSharedPreferences \u5BF9\u8C61\u3002

\u793A\u4F8B\u5982\u4E0B

encase {
    // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
    prefs...
}

\u89E3\u51B3\u65B9\u6848

\u4E00\u822C\u60C5\u51B5\u4E0B\u4E0D\u4F1A\u53D1\u751F\u6B64\u95EE\u9898\uFF0C\u82E5\u6301\u7EED\u65E0\u6CD5\u83B7\u53D6 XSharedPreferences \u5BF9\u8C61\u5219\u53EF\u80FD\u662F\u4F60\u4F7F\u7528\u7684 Hook Framework \u4E0D\u652F\u6301\u6B64\u529F\u80FD\u6216\u81EA\u8EAB\u5B58\u5728\u9519\u8BEF\u3002

exception

IllegalStateException

YukiHookDataChannel not allowed in Custom Hook API

\u5F02\u5E38\u539F\u56E0

\u5728 Hook \u81EA\u8EAB APP(\u975E Xposed \u6A21\u5757) \u4E2D\u4F7F\u7528\u4E86 YukiHookDataChannel\u3002

\u793A\u4F8B\u5982\u4E0B

class MyApplication : Application() {

    override fun attachBaseContext(base: Context?) {
        YukiHookAPI.encase(base) {
            // \u2757\u4E0D\u80FD\u5728\u8FD9\u79CD\u60C5\u51B5\u4E0B\u4F7F\u7528 dataChannel
            dataChannel.wait(key = "test_data") {
                // ...
            }
        }
        super.attachBaseContext(base)
    }
}

\u89E3\u51B3\u65B9\u6848

\u4F60\u53EA\u80FD\u5728 \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528 \u65F6\u4F7F\u7528 YukiHookDataChannel\u3002

exception

IllegalStateException

Xposed modulePackageName load failed, please reset and rebuild it

\u5F02\u5E38\u539F\u56E0

\u5728 Hook \u8FC7\u7A0B\u4E2D\u4F7F\u7528 YukiHookPrefsBridge \u6216 YukiHookDataChannel \u65F6\u65E0\u6CD5\u8BFB\u53D6\u88C5\u8F7D\u65F6\u7684 modulePackageName \u5BFC\u81F4\u4E0D\u80FD\u786E\u5B9A\u81EA\u8EAB\u6A21\u5757\u7684\u5305\u540D\u3002

\u89E3\u51B3\u65B9\u6848

\u8BF7\u4ED4\u7EC6\u9605\u8BFB \u8FD9\u91CC \u7684\u5E2E\u52A9\u6587\u6863\uFF0C\u6B63\u786E\u914D\u7F6E\u6A21\u5757\u7684 Hook \u5165\u53E3\u7C7B\u5305\u540D\u3002

exception

IllegalStateException

YukiHookPrefsBridge missing Context instance

\u5F02\u5E38\u539F\u56E0

\u5728\u6A21\u5757\u4E2D\u4F7F\u7528\u4E86 YukiHookPrefsBridge \u5B58\u50A8\u6570\u636E\u4F46\u5E76\u672A\u4F20\u5165 Context \u5B9E\u4F8B\u3002

\u793A\u4F8B\u5982\u4E0B

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // \u2757\u9519\u8BEF\u7684\u4F7F\u7528\u65B9\u6CD5
        // \u6784\u9020\u65B9\u6CD5\u5DF2\u5728 API 1.0.88 \u53CA\u4EE5\u540E\u7684\u7248\u672C\u4E2D\u8BBE\u7F6E\u4E3A private
        YukiHookPrefsBridge().getBoolean("test_data")
    }
}

\u89E3\u51B3\u65B9\u6848

\u5728 Activity \u4E2D\u63A8\u8350\u4F7F\u7528 prefs(...) \u65B9\u6CD5\u6765\u88C5\u8F7D YukiHookPrefsBridge\u3002

\u793A\u4F8B\u5982\u4E0B

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // \u2705 \u6B63\u786E\u7684\u4F7F\u7528\u65B9\u6CD5
        prefs().getBoolean("test_data")
    }
}
exception

IllegalStateException

The Host App's Context has not yet initialized successfully, the native function cannot be used at this time

\u5F02\u5E38\u539F\u56E0

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883 PackageParam \u4E2D\u4F7F\u7528\u4E86 YukiHookPrefsBridge \u5E76\u8C03\u7528\u4E86 native \u65B9\u6CD5\u4F46\u6B64\u65F6\u5BBF\u4E3B\u7684\u751F\u547D\u5468\u671F\u5E76\u672A\u521D\u59CB\u5316\u3002

\u793A\u4F8B\u5982\u4E0B

encase {
    // \u8C03\u7528\u4E86\u6B64\u65B9\u6CD5
    prefs.native()
}

\u89E3\u51B3\u65B9\u6848

native \u65B9\u6CD5\u9700\u8981\u4E00\u4E2A\u5B58\u5728\u7684 Context \u5BF9\u8C61\u7528\u4E8E\u5B58\u50A8\u6570\u636E\uFF0C\u4F60\u53EF\u4EE5\u5728\u76D1\u542C\u5BBF\u4E3B\u751F\u547D\u5468\u671F\u72B6\u6001\u4E2D\u4F7F\u7528\u6B64\u65B9\u6CD5\u3002

exception

IllegalStateException

Key-Value type TYPE is not allowed

\u5F02\u5E38\u539F\u56E0

\u5728\u4F7F\u7528 YukiHookPrefsBridge \u7684 get \u6216 put \u65B9\u6CD5\u6216 YukiHookDataChannel \u7684 wait \u6216 put \u65B9\u6CD5\u65F6\u4F20\u5165\u4E86\u4E0D\u652F\u6301\u7684\u5B58\u50A8\u7C7B\u578B\u3002

\u89E3\u51B3\u65B9\u6848

YukiHookPrefsBridge \u652F\u6301\u7684\u7C7B\u578B\u53EA\u6709 String\u3001Set<String>\u3001Int\u3001Float\u3001Long\u3001Boolean\uFF0C\u8BF7\u4F20\u5165\u652F\u6301\u7684\u7C7B\u578B\u3002

YukiHookDataChannel \u652F\u6301\u7684\u7C7B\u578B\u4E3A Intent.putExtra \u9650\u5236\u7684\u7C7B\u578B\uFF0C\u8BF7\u4F20\u5165\u652F\u6301\u7684\u7C7B\u578B\u3002

exception

IllegalStateException

loadApp/loadZygote/loadSystem/withProcess method need a "NAME" param

\u5F02\u5E38\u539F\u56E0

\u5728 loadApp\u3001loadZygote\u3001loadSystem\u3001withProcess \u4E2D\u7F3A\u5C11\u4E86\u9700\u8981\u586B\u5199\u7684\u53EF\u53D8\u6570\u7EC4\u53D8\u91CF\u53C2\u6570\u3002

\u793A\u4F8B\u5982\u4E0B

// <\u60C5\u666F 1>
loadApp()
// <\u60C5\u666F 2> 
loadZygote()
// <\u60C5\u666F 3>
loadSystem()
// <\u60C5\u666F 4>
withProcess()

\u89E3\u51B3\u65B9\u6848

\u8BF7\u67E5\u770B PackageParam \u4E2D\u7684\u7528\u6CD5\u6B63\u786E\u5730\u4F7F\u7528\u6B64\u529F\u80FD\u3002

exception

IllegalStateException

YukiHookDataChannel cannot used in zygote

\u5F02\u5E38\u539F\u56E0

\u5728 loadZygote \u4E2D\u4F7F\u7528\u4E86 YukiHookDataChannel\u3002

\u793A\u4F8B\u5982\u4E0B

loadZygote {
    // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
    dataChannel...
}

\u89E3\u51B3\u65B9\u6848

YukiHookDataChannel \u53EA\u80FD\u5728 loadSystem\u3001loadApp \u4E2D\u4F7F\u7528\u3002

exception

IllegalStateException

Custom Hooking Members is empty

\u5F02\u5E38\u539F\u56E0

\u5728 MemberHookCreator \u4E2D\u8C03\u7528 members() \u4F46\u662F\u672A\u8BBE\u7F6E\u9700\u8981 Hook \u7684 Member \u5B9E\u4F8B\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // \u62EC\u53F7\u91CC\u7684\u65B9\u6CD5\u53C2\u6570\u88AB\u7559\u7A7A\u4E86
    members()
    afterHook {
        // ...
    }
}

\u89E3\u51B3\u65B9\u6848

\u82E5\u8981\u4F7F\u7528 members() \u8BBE\u7F6E\u81EA\u5B9A\u4E49 Hook \u65B9\u6CD5\uFF0C\u4F60\u5FC5\u987B\u4FDD\u8BC1\u5176\u65B9\u6CD5\u53C2\u6570\u91CC\u7684 Member \u6570\u7EC4\u5BF9\u8C61\u4E0D\u80FD\u4E3A\u7A7A\u3002

exception

IllegalStateException

HookParam Method args index must be >= 0

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 args().last() \u4F46\u662F\u76EE\u6807 param \u4E3A\u7A7A\u6216 args \u4E2D\u7684 index \u8BBE\u7F6E\u4E86\u5C0F\u4E8E 0 \u7684\u6570\u503C\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u5047\u8BBE param \u662F\u7A7A\u7684
        args().last()...
        // \u8BBE\u7F6E\u4E86\u5C0F\u4E8E 0 \u7684 index
        args(index = -5)...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60 Hook \u7684\u76EE\u6807\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u65B9\u6CD5\u53C2\u6570\u6570\u91CF\u662F\u5426\u4E0D\u4E3A\u7A7A\uFF0C\u4E14\u4E0D\u80FD\u5BF9 args \u7684\u4E0B\u6807\u8BBE\u7F6E\u5C0F\u4E8E 0 \u7684\u6570\u503C\u3002

exception

IllegalStateException

HookParam instance got null! Is this a static member?

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 instance \u53D8\u91CF\u6216 instance \u65B9\u6CD5\u4F46\u83B7\u53D6\u4E0D\u5230\u5F53\u524D\u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
        instance...
        // \u8C03\u7528\u4E86\u6B64\u65B9\u6CD5
        instance<Any>()...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60 Hook \u7684\u65B9\u6CD5\u662F\u5426\u4E3A\u9759\u6001\u7C7B\u578B\uFF0C\u9759\u6001\u7C7B\u578B\u7684\u65B9\u6CD5\u6CA1\u6709\u5B9E\u4F8B\uFF0C\u4E0D\u80FD\u4F7F\u7528\u6B64\u529F\u80FD\uFF0C\u82E5\u975E\u9759\u6001\u65B9\u6CD5\uFF0C\u8BF7\u68C0\u67E5\u5B9E\u4F8B\u662F\u5426\u5DF2\u7ECF\u9500\u6BC1\u3002

exception

IllegalStateException

Current hooked Member args is null

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 args \u53D8\u91CF\u4F46\u83B7\u53D6\u4E0D\u5230\u5F53\u524D\u5B9E\u4F8B\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u53C2\u6570\u6570\u7EC4\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
        args...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8FD9\u79CD\u95EE\u9898\u4E00\u822C\u4E0D\u4F1A\u53D1\u751F\uFF0C\u771F\u7684\u53D1\u751F\u4E86\u6B64\u95EE\u9898\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

IllegalStateException

Current hooked Member is null

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 member \u53D8\u91CF\u4F46\u83B7\u53D6\u4E0D\u5230\u5F53\u524D\u5B9E\u4F8B\u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u5B9E\u4F8B\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
        member...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8FD9\u79CD\u95EE\u9898\u4E00\u822C\u4E0D\u4F1A\u53D1\u751F\uFF0C\u771F\u7684\u53D1\u751F\u4E86\u6B64\u95EE\u9898\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

IllegalStateException

Current hooked Member is not a Method

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 method \u53D8\u91CF\u4F46\u83B7\u53D6\u4E0D\u5230\u5F53\u524D\u5B9E\u4F8B\u7684\u65B9\u6CD5\u5B9E\u4F8B\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
        method...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60 Hook \u7684\u65B9\u6CD5\u662F\u6784\u9020\u65B9\u6CD5\u8FD8\u662F\u666E\u901A\u65B9\u6CD5\u5E76\u4F7F\u7528\u5BF9\u5E94\u7C7B\u578B\u7684\u65B9\u6CD5\u83B7\u53D6\u6307\u5B9A\u7684\u5B9E\u4F8B\uFF0C\u82E5\u4E0D\u77E5\u9053\u5B57\u8282\u7801\u7684\u7C7B\u578B\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 member \u6765\u83B7\u53D6\u3002

exception

IllegalStateException

Current hooked Member is not a Constructor

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 constructor \u53D8\u91CF\u4F46\u83B7\u53D6\u4E0D\u5230\u5F53\u524D\u5B9E\u4F8B\u7684\u65B9\u6CD5\u5B9E\u4F8B\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
        constructor...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60 Hook \u7684\u65B9\u6CD5\u662F\u666E\u901A\u65B9\u6CD5\u8FD8\u662F\u6784\u9020\u65B9\u6CD5\u5E76\u4F7F\u7528\u5BF9\u5E94\u7C7B\u578B\u7684\u65B9\u6CD5\u83B7\u53D6\u6307\u5B9A\u7684\u5B9E\u4F8B\uFF0C\u82E5\u4E0D\u77E5\u9053\u5B57\u8282\u7801\u7684\u7C7B\u578B\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 member \u6765\u83B7\u53D6\u3002

exception

IllegalStateException

HookParam instance cannot cast to TYPE

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 instance \u65B9\u6CD5\u6307\u5B9A\u4E86\u9519\u8BEF\u7684\u7C7B\u578B\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u7C7B\u578B\u88AB cast \u4E3A Activity \u4F46\u5047\u8BBE\u5F53\u524D\u5B9E\u4F8B\u7684\u7C7B\u578B\u5E76\u975E\u6B64\u7C7B\u578B
        instance<Activity>()...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u6B63\u786E\u7C7B\u578B\u5E76\u91CD\u65B0\u586B\u5199\u6CDB\u578B\u4E2D\u7684\u7C7B\u578B\uFF0C\u82E5\u4E0D\u80FD\u786E\u5B9A\u8BF7\u4F7F\u7528 Any \u6216\u76F4\u63A5\u4F7F\u7528 instance \u53D8\u91CF\u3002

exception

IllegalStateException

HookParam Method args is empty, mabe not has args

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 ArgsModifyer.set \u65B9\u6CD5\u4F46\u662F\u5F53\u524D\u5B9E\u4F8B\u7684\u65B9\u6CD5\u53C2\u6570\u6570\u7EC4\u4E3A\u7A7A\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u8C03\u7528\u4E86\u6B64\u65B9\u6CD5
        args(...).set(...)
    }
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60 Hook \u7684\u76EE\u6807\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u65B9\u6CD5\u53C2\u6570\u6570\u91CF\u662F\u5426\u4E0D\u4E3A\u7A7A\uFF0C\u5426\u5219\u4F60\u65E0\u6CD5\u4F7F\u7528\u6B64\u529F\u80FD\u3002

exception

IllegalStateException

HookParam Method args index out of bounds, max is NUMBER

\u5F02\u5E38\u539F\u56E0

\u5728 HookParam \u4E2D\u8C03\u7528 ArgsModifyer.set \u65B9\u6CD5\u6307\u5B9A\u4E86\u8D85\u51FA\u65B9\u6CD5\u53C2\u6570\u4E0B\u6807\u7684\u6570\u7EC4\u5E8F\u53F7\u3002

\u793A\u4F8B\u5982\u4E0B

injectMember {
    // ...
    afterHook {
        // \u4E0B\u6807\u4ECE 0 \u5F00\u59CB\uFF0C\u5047\u8BBE\u539F\u59CB\u7684\u53C2\u6570\u4E0B\u6807\u662F 5 \u4E2A\uFF0C\u4F46\u662F\u8FD9\u91CC\u586B\u5199\u4E86 6
        args(index = 6).set(...)
    }
}

\u89E3\u51B3\u65B9\u6848

\u8BF7\u786E\u8BA4\u4F60 Hook \u7684\u76EE\u6807\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u65B9\u6CD5\u53C2\u6570\u4E2A\u6570\uFF0C\u5E76\u91CD\u65B0\u8BBE\u7F6E\u6570\u7EC4\u4E0B\u6807\u3002

exception

IllegalStateException

Current Hook Framework not support moduleAppResources

\u5F02\u5E38\u539F\u56E0

\u5728 PackageParam \u4E2D\u8C03\u7528\u4E86 moduleAppResources \u53D8\u91CF\u4F46\u662F\u65E0\u6CD5\u83B7\u53D6\u5230\u5B9E\u4F8B\u5BF9\u8C61\u3002

\u793A\u4F8B\u5982\u4E0B

encase {
    // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
    moduleAppResources...
}

\u89E3\u51B3\u65B9\u6848

\u8FD9\u79CD\u60C5\u51B5\u51E0\u4E4E\u4E0D\u5B58\u5728\uFF0C\u9664\u975E\u76EE\u6807 Hook Framework \u81EA\u8EAB\u5B58\u5728\u95EE\u9898\uFF0C\u82E5\u771F\u7684\u53D1\u751F\u4E86\u6B64\u95EE\u9898\uFF0C\u8BF7\u643A\u5E26\u8BE6\u7EC6\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

IllegalStateException

VariousClass match failed of those CLASSES

\u5F02\u5E38\u539F\u56E0

\u5728\u4F7F\u7528 VariousClass \u521B\u5EFA\u4E0D\u786E\u5B9A\u7684 Class \u5BF9\u8C61\u65F6\u5168\u90E8\u7684 Class \u90FD\u6CA1\u6709\u88AB\u627E\u5230\u3002

\u89E3\u51B3\u65B9\u6848

\u68C0\u67E5\u5F53\u524D Hook \u7684\u5BBF\u4E3B\u5185\u662F\u5426\u5B58\u5728\u5176\u4E2D\u80FD\u591F\u5339\u914D\u7684 Class \u540E\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002

exception

IllegalStateException

Cannot get hook class "NAME" cause THROWABLE

\u5F02\u5E38\u539F\u56E0

\u5728 hook \u65B9\u6CD5\u4F53\u975E onPrepareHook \u65B9\u6CD5\u5185\u8C03\u7528\u4E86 instanceClass \u53D8\u91CF\u4E14\u5F53\u524D Hook \u7684 Class \u4E0D\u5B58\u5728\u3002

\u793A\u4F8B\u5982\u4E0B

TargetClass.hook {
    // \u53EF\u80FD\u7684\u60C5\u51B5\u4E3A\u5728\u975E onPrepareHook \u65B9\u6CD5\u4F53\u5185\u8C03\u7528\u4E86 instanceClass \u53D8\u91CF\u7528\u4E8E\u6253\u5370\u65E5\u5FD7
    loggerD(msg = "$instanceClass hook start")
}

\u89E3\u51B3\u65B9\u6848

\u5728 hook \u5185\u76F4\u63A5\u4F7F\u7528 instanceClass \u662F\u5F88\u5371\u9669\u7684\uFF0C\u82E5 Class \u4E0D\u5B58\u5728\u5219\u4F1A\u76F4\u63A5\u5BFC\u81F4 Hook \u8FDB\u7A0B\u201C\u6B7B\u6389\u201D\u3002

\u8BE6\u60C5\u8BF7\u53C2\u8003 \u72B6\u6001\u76D1\u542C\u3002

exception

IllegalStateException

LayoutInflatedParam View instance got null

\u5F02\u5E38\u539F\u56E0

\u5728\u5E03\u5C40 Hook \u56DE\u8C03\u4E2D\u8C03\u7528\u4E86 currentView \u4F46\u6CA1\u53D6\u5230\u5B9E\u4F8B\u5BF9\u8C61\u3002

\u793A\u4F8B\u5982\u4E0B

injectResource {
    conditions {
        name = "activity_main"
        layout()
    }
    injectAsLayout {
        // \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
        currentView...
    }
}

\u89E3\u51B3\u65B9\u6848

\u8FD9\u79CD\u60C5\u51B5\u57FA\u672C\u4E0A\u4E0D\u5B58\u5728\uFF0C\u9664\u975E\u88AB Hook \u7684\u5BBF\u4E3B\u5F53\u524D Activity \u5DF2\u7ECF\u9500\u6BC1\u6216 Hook Framework \u81EA\u8EAB\u5B58\u5728\u95EE\u9898\u3002

exception

IllegalStateException

XResForwarder is invalid

\u5F02\u5E38\u539F\u56E0

\u5728 YukiResForwarder \u4E2D\u8C03\u7528\u4E86 resources \u4F46\u6CA1\u53D6\u5230\u5B9E\u4F8B\u5BF9\u8C61\u3002

\u793A\u4F8B\u5982\u4E0B

// \u8C03\u7528\u4E86\u6B64\u53D8\u91CF
moduleAppResources.fwd(...).resources

\u89E3\u51B3\u65B9\u6848

\u8FD9\u79CD\u60C5\u51B5\u57FA\u672C\u4E0A\u4E0D\u5B58\u5728\uFF0C\u9664\u975E Hook Framework \u81EA\u8EAB\u5B58\u5728\u95EE\u9898\u3002

exception

IllegalStateException

paramTypes is empty, please use emptyParam() instead

\u5F02\u5E38\u539F\u56E0

\u5728\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u65F6\u4FDD\u7559\u4E86\u7A7A\u7684 param \u65B9\u6CD5\u3002

\u793A\u4F8B\u5982\u4E0B

method {
    name = "test"
    // \u62EC\u53F7\u5185\u6CA1\u6709\u586B\u5199\u4EFB\u4F55\u53C2\u6570
    param()
}

\u89E3\u51B3\u65B9\u6848

\u82E5\u8981\u6807\u8BC6\u6B64\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u6CA1\u6709\u53C2\u6570\uFF0C\u4F60\u53EF\u4EE5\u6709\u5982\u4E0B\u8BBE\u7F6E\u65B9\u6CD5\u3002

\u7B2C\u4E00\u79CD\uFF0C\u8BBE\u7F6E emptyParam (\u63A8\u8350)

\u793A\u4F8B\u5982\u4E0B

method {
    name = "test"
    emptyParam()
}

\u7B2C\u4E8C\u79CD\uFF0C\u8BBE\u7F6E paramCount = 0

\u793A\u4F8B\u5982\u4E0B

method {
    name = "test"
    paramCount = 0
}
exception

IllegalStateException

Invalid YukiHookCallback type

\u5F02\u5E38\u539F\u56E0

YukiHookAPI \u7684\u6838\u5FC3 Hook \u529F\u80FD\u53D1\u751F\u6545\u969C\u3002

\u89E3\u51B3\u65B9\u6848

\u8FD9\u79CD\u60C5\u51B5\u57FA\u672C\u4E0A\u4E0D\u5B58\u5728\uFF0C\u82E5\u53D1\u751F\u4E0A\u8FF0\u95EE\u9898\uFF0C\u786E\u5B9A\u5E76\u975E\u81EA\u5DF1\u7684\u4EE3\u7801\u53D1\u751F\u7684\u95EE\u9898\u540E\uFF0C\u53EF\u63D0\u4EA4\u65E5\u5FD7\u8FDB\u884C\u53CD\u9988\u3002

exception

IllegalStateException

ModuleContextThemeWrapper already loaded

\u5F02\u5E38\u539F\u56E0

\u5728 Context \u4E2D\u4F7F\u7528 applyModuleTheme \u65B9\u6CD5\u65F6\u91CD\u590D\u8FDB\u884C\u8C03\u7528\u3002

\u793A\u4F8B\u5982\u4E0B

// \u5047\u8BBE\u8FD9\u5C31\u662F\u5F53\u524D\u7684 Context \u5BF9\u8C61
context.applyModuleTheme(R.style.Theme_AppCompat).applyModuleTheme(R.style.Theme_AppCompat)

\u89E3\u51B3\u65B9\u6848

\u5728 Context \u4E2D\u53EA\u80FD\u521B\u5EFA\u4E00\u6B21 ModuleContextThemeWrapper\uFF0C\u8BF7\u68C0\u67E5\u4EE3\u7801\u662F\u5426\u6709\u5FAA\u73AF\u8C03\u7528\u95EE\u9898\u3002

exception

IllegalStateException

Cannot create classes cache for "android", please remove "name" param

\u5F02\u5E38\u539F\u56E0

\u5728\u7CFB\u7EDF\u6846\u67B6 (android) \u5BBF\u4E3B\u4F7F\u7528\u4E86 DexClassFinder \u7684\u7F13\u5B58\u529F\u80FD searchClass(name = ...)\u3002

\u793A\u4F8B\u5982\u4E0B

loadSystem {
    searchClass(name = "test") {
        from(...)
        // ...
    }.get()
}

\u89E3\u51B3\u65B9\u6848

\u7531\u4E8E\u7F13\u5B58\u4F1A\u5C06\u627E\u5230\u7684 Class \u540D\u79F0\u5B58\u5165 SharedPreferences\uFF0C\u4F46\u662F\u7CFB\u7EDF\u6846\u67B6\u4E0D\u5B58\u5728 data \u76EE\u5F55\uFF0C\u6240\u4EE5\u8BF7\u4E0D\u8981\u5728\u7CFB\u7EDF\u6846\u67B6\u4E2D\u4F7F\u7528\u6B64\u529F\u80FD\u3002

exception

IllegalStateException

Target Class type cannot cast to TYPE

\u5F02\u5E38\u539F\u56E0

\u4F7F\u7528 Class.toClass\u3001Class.toClassOrNull\u3001GenericClass.argument \u65B9\u6CD5\u5C06\u5B57\u7B26\u4E32\u7C7B\u540D\u8F6C\u6362\u4E3A\u76EE\u6807 Class \u65F6\u58F0\u660E\u4E86\u9519\u8BEF\u7684\u7C7B\u578B\u3002

\u4EE5\u4E0B\u4F7F\u7528 Class.toClass \u65B9\u6CD5\u6765\u8FDB\u884C\u793A\u4F8B\u3002

\u793A\u4F8B\u5982\u4E0B

// \u5047\u8BBE\u76EE\u6807\u7C7B\u578B\u662F Activity \u4F46\u662F\u88AB\u9519\u8BEF\u5730\u8F6C\u6362\u4E3A\u4E86 WrongClass \u7C7B\u578B
val clazz = "android.app.Activity".toClass<WrongClass>()

\u89E3\u51B3\u65B9\u6848

\u793A\u4F8B\u5982\u4E0B

// <\u89E3\u51B3\u65B9\u6848 1> \u586B\u5199\u6B63\u786E\u7684\u7C7B\u578B
val clazz1 = "android.app.Activity".toClass<Activity>()
// <\u89E3\u51B3\u65B9\u6848 2> \u4E0D\u586B\u5199\u6CDB\u578B\u58F0\u660E
val clazz2 = "android.app.Activity".toClass()

\u8BF7\u786E\u4FDD\u6267\u884C\u65B9\u6CD5\u540E\u58F0\u660E\u7684\u6CDB\u578B\u662F\u6307\u5B9A\u7684\u76EE\u6807 Class \u7C7B\u578B\uFF0C\u5728\u4E0D\u786E\u5B9A\u76EE\u6807\u7C7B\u578B\u7684\u60C5\u51B5\u4E0B\u4F60\u53EF\u4EE5\u4E0D\u9700\u8981\u586B\u5199\u6CDB\u578B\u58F0\u660E\u3002

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