import{_ as s,o,c as n,a as e}from"./app.99fcdd51.js";const a={},l=e(`
class YukiMemberHookCreator(internal val packageParam: PackageParam, internal val hookClass: HookClass)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.80
\u4FEE\u6539
\u5BF9 hookClass
\u8FDB\u884C inline \u5904\u7406
v1.1.0
\u4FEE\u6539
\u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 Creater \u547D\u540D\u5230 Creator
\u529F\u80FD\u63CF\u8FF0
YukiHookAPI
\u7684Member
\u6838\u5FC3 Hook \u5B9E\u73B0\u7C7B\u3002
val PRIORITY_DEFAULT: Int
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u9ED8\u8BA4 Hook \u56DE\u8C03\u4F18\u5148\u7EA7\u3002
val PRIORITY_LOWEST: Int
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5EF6\u8FDF\u56DE\u8C03 Hook \u65B9\u6CD5\u7ED3\u679C\u3002
val PRIORITY_HIGHEST: Int
\u53D8\u66F4\u8BB0\u5F55
v1.0.80
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u66F4\u5FEB\u56DE\u8C03 Hook \u65B9\u6CD5\u7ED3\u679C\u3002
val instanceClass: Class<*>
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.2
\u4FEE\u6539
\u66F4\u540D\u4E3A thisClass
instanceClass
\u529F\u80FD\u63CF\u8FF0
\u5F97\u5230\u5F53\u524D\u88AB Hook \u7684
Class
\u3002
\u7279\u522B\u6CE8\u610F
\u4E0D\u63A8\u8350\u76F4\u63A5\u4F7F\u7528\uFF0C\u4E07\u4E00\u5F97\u4E0D\u5230 Class \u5BF9\u8C61\u5219\u4F1A\u65E0\u6CD5\u5904\u7406\u5F02\u5E38\u5BFC\u81F4\u5D29\u6E83\u3002
inline fun injectMember(priority: Int, tag: String, initiate: MemberHookCreator.() -> Unit): MemberHookCreator.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u589E\u52A0 priority
Hook \u4F18\u5148\u7EA7
\u529F\u80FD\u63CF\u8FF0
\u6CE8\u5165\u8981 Hook \u7684
Method
\u3001Constructor
\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u6CE8\u5165\u4EFB\u610F Method
\u4E0E Constructor
\uFF0C\u4F7F\u7528 injectMember
\u5373\u53EF\u521B\u5EFA\u4E00\u4E2A Hook
\u5BF9\u8C61\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
// Your code here.
}
\u4F60\u8FD8\u53EF\u4EE5\u81EA\u5B9A\u4E49 tag
\uFF0C\u65B9\u4FBF\u4F60\u5728\u8C03\u8BD5\u7684\u65F6\u5019\u80FD\u591F\u533A\u5206\u4F60\u7684 Hook
\u5BF9\u8C61\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember(tag = "KuriharaYuki") {
// Your code here.
}
\u4F60\u8FD8\u53EF\u4EE5\u81EA\u5B9A\u4E49 priority
\uFF0C\u4EE5\u63A7\u5236\u5F53\u524D Hook \u5BF9\u8C61\u5E76\u5217\u6267\u884C\u7684\u4F18\u5148\u7EA7\u901F\u5EA6\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember(priority = PRIORITY_HIGHEST) {
// Your code here.
}
fun useDangerousOperation(option: String)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5141\u8BB8 Hook \u8FC7\u7A0B\u4E2D\u7684\u6240\u6709\u5371\u9669\u884C\u4E3A\u3002
\u8BF7\u5728 option
\u4E2D\u952E\u5165 Yes do as I say!
\u4EE3\u8868\u4F60\u540C\u610F\u5141\u8BB8\u6240\u6709\u5371\u9669\u884C\u4E3A\u3002
\u4F60\u8FD8\u9700\u8981\u5728\u6574\u4E2A\u8C03\u7528\u57DF\u4E2D\u58F0\u660E\u6CE8\u89E3 CauseProblemsApi
\u4EE5\u6D88\u9664\u8B66\u544A\u3002
\u82E5\u4F60\u53EA\u9700\u8981 Hook ClassLoader
\u7684 loadClass
\u65B9\u6CD5\uFF0C\u8BF7\u53C2\u8003 ClassLoader.onLoadClass\u3002
\u7279\u522B\u6CE8\u610F
\u82E5\u4F60\u4E0D\u77E5\u9053\u5141\u8BB8\u6B64\u529F\u80FD\u4F1A\u5E26\u6765\u4F55\u79CD\u540E\u679C\uFF0C\u8BF7\u52FF\u4F7F\u7528\u3002
inner class MemberHookCreator internal constructor(private val priority: Int, internal val tag: String)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.80
\u4FEE\u6539
\u589E\u52A0 priority
Hook \u4F18\u5148\u7EA7
v1.0.81
\u4FEE\u6539
\u589E\u52A0 packageName
\u5F53\u524D Hook \u7684 APP \u5305\u540D
v1.1.0
\u4FEE\u6539
\u79FB\u9664 packageName
\u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 Creater \u547D\u540D\u5230 Creator
\u529F\u80FD\u63CF\u8FF0
Hook \u6838\u5FC3\u529F\u80FD\u5B9E\u73B0\u7C7B\uFF0C\u67E5\u627E\u548C\u5904\u7406\u9700\u8981 Hook \u7684
Method
\u3001Constructor
\u3002
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u79FB\u9664
\u8BF7\u8F6C\u79FB\u5230 members
fun members(vararg member: Member?)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u624B\u52A8\u6307\u5B9A\u8981 Hook \u7684
Method
\u3001Constructor
\u3002
\u6CE8\u610F
\u4E0D\u5EFA\u8BAE\u4F7F\u7528\u6B64\u65B9\u6CD5\u8BBE\u7F6E\u76EE\u6807\u9700\u8981 Hook \u7684 Member \u5BF9\u8C61\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 method \u6216 constructor \u65B9\u6CD5\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u8C03\u7528 instanceClass
\u6765\u624B\u52A8\u67E5\u627E\u8981 Hook \u7684 Method
\u3001Constructor
\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
members(instanceClass.getDeclaredMethod("test", StringType))
beforeHook {}
afterHook {}
}
\u540C\u6837\u5730\uFF0C\u4F60\u4E5F\u53EF\u4EE5\u4F20\u5165\u4E00\u7EC4 Member
\u540C\u65F6\u8FDB\u884C Hook\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
members(
instanceClass.getDeclaredMethod("test1", StringType),
instanceClass.getDeclaredMethod("test2", StringType),
instanceClass.getDeclaredMethod("test3", StringType)
)
beforeHook {}
afterHook {}
}
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4F5C\u5E9F
\u8BF7\u4F7F\u7528 method { name = /** name */ }.all()
\u6765\u53D6\u4EE3\u5B83
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4F5C\u5E9F
\u8BF7\u4F7F\u7528 allMembers(MembersType.CONSTRUCTOR)
\u6765\u53D6\u4EE3\u5B83
fun allMembers(type: MembersType)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u67E5\u627E\u5E76 Hook
hookClass
\u4E2D\u7684\u5168\u90E8Method
\u3001Constructor
\u3002
\u6CE8\u610F
\u65E0\u6CD5\u51C6\u786E\u5904\u7406\u6BCF\u4E2A Member \u7684\u8FD4\u56DE\u503C\u548C param\uFF0C\u5EFA\u8BAE\u4F7F\u7528 method or constructor \u5BF9\u6BCF\u4E2A Member \u5355\u72EC Hook\u3002
inline fun method(initiate: MethodConditions): MethodFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u67E5\u627E\u5F53\u524D
Class
\u9700\u8981 Hook \u7684Method
\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u53C2\u8003 MethodFinder \u67E5\u770B\u8BE6\u7EC6\u7528\u6CD5\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
method {
name = "test"
param(StringType)
returnType = UnitType
}
beforeHook {}
afterHook {}
}
\u82E5\u60F3 Hook \u5F53\u524D\u67E5\u627E method { ... }
\u6761\u4EF6\u7684\u5168\u90E8\u7ED3\u679C\uFF0C\u4F60\u53EA\u9700\u8981\u5728\u6700\u540E\u52A0\u5165 all
\u5373\u53EF\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
method {
name = "test"
paramCount(1..5)
}.all()
beforeHook {}
afterHook {}
}
\u6B64\u65F6 beforeHook
\u4E0E afterHook
\u4F1A\u5728\u6BCF\u4E2A\u67E5\u627E\u5230\u7684\u7ED3\u679C\u4E2D\u591A\u6B21\u56DE\u8C03 Hook \u65B9\u6CD5\u4F53\u3002
\u6CE8\u610F
\u82E5\u6CA1\u6709 all\uFF0C\u9ED8\u8BA4\u53EA\u4F1A Hook \u5F53\u524D\u6761\u4EF6\u67E5\u627E\u5230\u7684\u6570\u7EC4\u4E0B\u6807\u7ED3\u679C\u7B2C\u4E00\u4F4D\u3002
inline fun constructor(initiate: ConstructorConditions): ConstructorFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u67E5\u627E\u5F53\u524D
Class
\u9700\u8981 Hook \u7684Constructor
\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u53C2\u8003 ConstructorFinder \u67E5\u770B\u8BE6\u7EC6\u7528\u6CD5\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
constructor { param(StringType) }
beforeHook {}
afterHook {}
}
\u82E5\u60F3 Hook \u5F53\u524D\u67E5\u627E constructor { ... }
\u6761\u4EF6\u7684\u5168\u90E8\u7ED3\u679C\uFF0C\u4F60\u53EA\u9700\u8981\u5728\u6700\u540E\u52A0\u5165 all
\u5373\u53EF\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
constructor { paramCount(1..5) }.all()
beforeHook {}
afterHook {}
}
\u6B64\u65F6 beforeHook
\u4E0E afterHook
\u4F1A\u5728\u6BCF\u4E2A\u67E5\u627E\u5230\u7684\u7ED3\u679C\u4E2D\u591A\u6B21\u56DE\u8C03 Hook \u65B9\u6CD5\u4F53\u3002
\u6CE8\u610F
\u82E5\u6CA1\u6709 all\uFF0C\u9ED8\u8BA4\u53EA\u4F1A Hook \u5F53\u524D\u6761\u4EF6\u67E5\u627E\u5230\u7684\u6570\u7EC4\u4E0B\u6807\u7ED3\u679C\u7B2C\u4E00\u4F4D\u3002
inline fun HookParam.field(initiate: FieldConditions): FieldFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u4F7F\u7528\u5F53\u524D
hookClass
\u67E5\u627E\u5E76\u5F97\u5230Field
\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u53C2\u8003 FieldFinder \u67E5\u770B\u8BE6\u7EC6\u7528\u6CD5\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
method {
name = "test"
param(StringType)
returnType = UnitType
}
afterHook {
// \u8FD9\u91CC\u4E0D\u9700\u8981\u518D\u8C03\u7528 instanceClass.field \u8FDB\u884C\u67E5\u627E
field {
name = "isSweet"
type = BooleanType
}.get(instance).setTrue()
}
}
inline fun HookParam.method(initiate: MethodConditions): MethodFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.2
\u6DFB\u52A0
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u4F7F\u7528\u5F53\u524D
hookClass
\u67E5\u627E\u5E76\u5F97\u5230Method
\u3002
inline fun HookParam.constructor(initiate: ConstructorConditions): ConstructorFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.2
\u6DFB\u52A0
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u4F7F\u7528\u5F53\u524D
hookClass
\u67E5\u627E\u5E76\u5F97\u5230Constructor
\u3002
inline fun HookParam.injectMember(priority: Int, tag: String, initiate: MemberHookCreator.() -> Unit): MemberHookCreator.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.88
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u6CE8\u5165\u8981 Hook \u7684
Method
\u3001Constructor
(\u5D4C\u5957 Hook)\u3002
fun beforeHook(initiate: HookParam.() -> Unit): HookCallback
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4FEE\u6539
\u65B0\u589E HookCallback
\u8FD4\u56DE\u7C7B\u578B
\u529F\u80FD\u63CF\u8FF0
\u5728
Member
\u6267\u884C\u5B8C\u6210\u524D Hook\u3002
fun afterHook(initiate: HookParam.() -> Unit): HookCallback
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4FEE\u6539
\u65B0\u589E HookCallback
\u8FD4\u56DE\u7C7B\u578B
\u529F\u80FD\u63CF\u8FF0
\u5728
Member
\u6267\u884C\u5B8C\u6210\u540E Hook\u3002
fun replaceAny(initiate: HookParam.() -> Any?)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u62E6\u622A\u5E76\u66FF\u6362\u6B64
Member
\u5185\u5BB9\uFF0C\u7ED9\u51FA\u8FD4\u56DE\u503C\u3002
fun replaceUnit(initiate: HookParam.() -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u62E6\u622A\u5E76\u66FF\u6362\u6B64
Member
\u5185\u5BB9\uFF0C\u6CA1\u6709\u8FD4\u56DE\u503C\uFF0C\u53EF\u4EE5\u79F0\u4E3AVoid
\u3002
fun replaceTo(any: Any?)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u62E6\u622A\u5E76\u66FF
Member
\u8FD4\u56DE\u503C\u3002
fun replaceToTrue()
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u62E6\u622A\u5E76\u66FF\u6362
Member
\u8FD4\u56DE\u503C\u4E3Atrue
\u3002
\u7279\u522B\u6CE8\u610F
\u786E\u4FDD\u66FF\u6362 Member \u7684\u8FD4\u56DE\u5BF9\u8C61\u4E3A Boolean\u3002
fun replaceToFalse()
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u62E6\u622A\u5E76\u66FF\u6362
Member
\u8FD4\u56DE\u503C\u4E3Afalse
\u3002
\u7279\u522B\u6CE8\u610F
\u786E\u4FDD\u66FF\u6362 Member \u7684\u8FD4\u56DE\u5BF9\u8C61\u4E3A Boolean\u3002
fun intercept()
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u62E6\u622A\u6B64
Member
\u3002
\u8FD9\u5C06\u4F1A\u7981\u6B62\u6B64 Member
\u6267\u884C\u5E76\u8FD4\u56DE null
\u3002
\u7279\u522B\u6CE8\u610F
\u4F8B\u5982 Int\u3001Long\u3001Boolean \u5E38\u91CF\u8FD4\u56DE\u503C\u7684 Member \u4E00\u65E6\u88AB\u8BBE\u7F6E\u4E3A null \u53EF\u80FD\u4F1A\u9020\u6210 Hook APP \u629B\u51FA\u5F02\u5E38\u3002
fun removeSelf(result: (Boolean) -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u79FB\u9664\u5F53\u524D\u6CE8\u5165\u7684 Hook
Method
\u3001Constructor
(\u89E3\u9664 Hook)\u3002
\u7279\u522B\u6CE8\u610F
\u4F60\u53EA\u80FD\u5728 Hook \u56DE\u8C03\u65B9\u6CD5\u4E2D\u4F7F\u7528\u6B64\u529F\u80FD\u3002
inner class HookCallback internal constructor()
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
Hook \u65B9\u6CD5\u4F53\u56DE\u8C03\u5B9E\u73B0\u7C7B\u3002
fun onFailureThrowToApp()
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5F53\u56DE\u8C03\u65B9\u6CD5\u4F53\u5185\u53D1\u751F\u5F02\u5E38\u65F6\u5C06\u5F02\u5E38\u629B\u51FA\u7ED9\u5F53\u524D Hook APP\u3002
inner class Result internal constructor()
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C Hook \u7ED3\u679C\u5B9E\u73B0\u7C7B\u3002
inline fun result(initiate: Result.() -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.5
\u4FEE\u6539
\u4FEE\u6539\u4E3A failures
result
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u521B\u5EFA\u76D1\u542C\u5931\u8D25\u4E8B\u4EF6\u65B9\u6CD5\u4F53\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u4E3A Result
\u7C7B\u521B\u5EFA lambda
\u65B9\u6CD5\u4F53\u3002
\u793A\u4F8B\u5982\u4E0B
injectMember {
// Your code here.
}.result {
onHooked {}
onAlreadyHooked {}
ignoredConductFailure()
onHookingFailure {}
// ...
}
inline fun by(condition: () -> Boolean): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.5
\u65B0\u589E
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u6DFB\u52A0\u6267\u884C Hook \u9700\u8981\u6EE1\u8DB3\u7684\u6761\u4EF6\uFF0C\u4E0D\u6EE1\u8DB3\u6761\u4EF6\u5C06\u76F4\u63A5\u505C\u6B62 Hook\u3002
fun onHooked(result: (Member) -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.70
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C
members
Hook \u6210\u529F\u7684\u56DE\u8C03\u65B9\u6CD5\u3002
\u5728\u9996\u6B21 Hook \u6210\u529F\u540E\u56DE\u8C03\u3002
\u5728\u91CD\u590D Hook \u65F6\u4F1A\u56DE\u8C03 onAlreadyHooked
\u3002
fun onAlreadyHooked(result: (Member) -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.89
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C
members
\u91CD\u590D Hook \u7684\u56DE\u8C03\u65B9\u6CD5\u3002
\u6CE8\u610F
\u540C\u4E00\u4E2A hookClass \u4E2D\u7684\u540C\u4E00\u4E2A members \u4E0D\u4F1A\u88AB API \u91CD\u590D Hook\uFF0C\u82E5\u7531\u4E8E\u5404\u79CD\u539F\u56E0\u91CD\u590D Hook \u4F1A\u56DE\u8C03\u6B64\u65B9\u6CD5\u3002
fun onNoSuchMemberFailure(result: (Throwable) -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.5
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C
members
\u4E0D\u5B58\u5728\u53D1\u751F\u9519\u8BEF\u7684\u56DE\u8C03\u65B9\u6CD5\u3002
fun onConductFailure(result: (HookParam, Throwable) -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C Hook \u8FDB\u884C\u8FC7\u7A0B\u4E2D\u53D1\u751F\u9519\u8BEF\u7684\u56DE\u8C03\u65B9\u6CD5\u3002
fun onHookingFailure(result: (Throwable) -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C Hook \u5F00\u59CB\u65F6\u53D1\u751F\u7684\u9519\u8BEF\u7684\u56DE\u8C03\u65B9\u6CD5\u3002
fun onAllFailure(result: (Throwable) -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C\u5168\u90E8 Hook \u8FC7\u7A0B\u53D1\u751F\u9519\u8BEF\u7684\u56DE\u8C03\u65B9\u6CD5\u3002
fun ignoredNoSuchMemberFailure(): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.5
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5FFD\u7565
members
\u4E0D\u5B58\u5728\u53D1\u751F\u7684\u9519\u8BEF\u3002
fun ignoredConductFailure(): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u5FFD\u7565 Hook \u8FDB\u884C\u8FC7\u7A0B\u4E2D\u53D1\u751F\u7684\u9519\u8BEF\u3002
fun ignoredHookingFailure(): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u5FFD\u7565 Hook \u5F00\u59CB\u65F6\u53D1\u751F\u7684\u9519\u8BEF\u3002
fun ignoredAllFailure(): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u5FFD\u7565\u5168\u90E8 Hook \u8FC7\u7A0B\u53D1\u751F\u7684\u9519\u8BEF\u3002
fun remove(result: (Boolean) -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u79FB\u9664\u5F53\u524D\u6CE8\u5165\u7684 Hook
Method
\u3001Constructor
(\u89E3\u9664 Hook)\u3002
\u6CE8\u610F
\u4F60\u53EA\u80FD\u5728 Hook \u6210\u529F\u540E\u624D\u80FD\u89E3\u9664 Hook\uFF0C\u53EF\u76D1\u542C onHooked \u4E8B\u4EF6\u3002
inner class Result internal constructor()
\u53D8\u66F4\u8BB0\u5F55
v1.0.3
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C\u5168\u90E8 Hook \u7ED3\u679C\u5B9E\u73B0\u7C7B\u3002
inline fun result(initiate: Result.() -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.3
\u65B0\u589E
v1.0.5
\u4FEE\u6539
\u4FEE\u6539\u4E3A failures
result
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u521B\u5EFA\u76D1\u542C\u4E8B\u4EF6\u65B9\u6CD5\u4F53\u3002
inline fun by(condition: () -> Boolean): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.5
\u65B0\u589E
v1.0.80
\u4FEE\u6539
\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline
\u529F\u80FD\u63CF\u8FF0
\u6DFB\u52A0\u6267\u884C Hook \u9700\u8981\u6EE1\u8DB3\u7684\u6761\u4EF6\uFF0C\u4E0D\u6EE1\u8DB3\u6761\u4EF6\u5C06\u76F4\u63A5\u505C\u6B62 Hook\u3002
fun onPrepareHook(callback: () -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.70
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C
hookClass
\u5B58\u5728\u65F6\u51C6\u5907\u5F00\u59CB Hook \u7684\u64CD\u4F5C\u3002
fun onHookClassNotFoundFailure(result: (Throwable) -> Unit): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.3
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C
hookClass
\u627E\u4E0D\u5230\u65F6\u53D1\u751F\u9519\u8BEF\u7684\u56DE\u8C03\u65B9\u6CD5\u3002
fun ignoredHookClassNotFoundFailure(): Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.3
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
`,398),p=[l];function c(r,t){return o(),n("div",null,p)}const i=s(a,[["render",c],["__file","YukiMemberHookCreator.html.vue"]]);export{i as default};\u5FFD\u7565
hookClass
\u627E\u4E0D\u5230\u65F6\u51FA\u73B0\u7684\u9519\u8BEF\u3002