diff --git a/docs/404.html b/docs/404.html index 519e25a80..8a0880d09 100644 --- a/docs/404.html +++ b/docs/404.html @@ -23,11 +23,11 @@ } Yuki Hook API - +

404

That's a Four-Oh-Four.
Take me home
- + diff --git a/docs/assets/404.html.55c9a3c0.js b/docs/assets/404.html.13217b1e.js similarity index 63% rename from docs/assets/404.html.55c9a3c0.js rename to docs/assets/404.html.13217b1e.js index 6ce8cfe50..6acf46ce3 100644 --- a/docs/assets/404.html.55c9a3c0.js +++ b/docs/assets/404.html.13217b1e.js @@ -1 +1 @@ -import{_ as e,o as c,c as t}from"./app.09f06ad9.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default}; +import{_ as e,o as c,c as t}from"./app.0312b331.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default}; diff --git a/docs/assets/BaseFinder.html.7ef93005.js b/docs/assets/BaseFinder.html.8c619ce9.js similarity index 99% rename from docs/assets/BaseFinder.html.7ef93005.js rename to docs/assets/BaseFinder.html.8c619ce9.js index 1d1eb1c05..22941b869 100644 --- a/docs/assets/BaseFinder.html.7ef93005.js +++ b/docs/assets/BaseFinder.html.8c619ce9.js @@ -1,4 +1,4 @@ -import{_ as s,o as e,c as n,a as o}from"./app.09f06ad9.js";const a={},l=o(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

BaseFinder - class

abstract class BaseFinder
+import{_ as s,o as e,c as n,a as o}from"./app.0312b331.js";const a={},l=o(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

BaseFinder - class

abstract class BaseFinder
 

Change Records

v1.0.70 added

v1.1.0 modified

\u5206\u79BB\u539F\u59CB\u547D\u540D BaseFinder \u4E2D\u7684\u90E8\u5206\u65B9\u6CD5\u4E0E\u53C2\u6570\u5230 MemberBaseFinder

Function Illustrate

\u8FD9\u662F Class \u4E0E Member \u67E5\u627E\u7C7B\u529F\u80FD\u7684\u57FA\u672C\u7C7B\u5B9E\u73B0\u3002

BaseFinder.IndexTypeCondition - class

inner class IndexTypeCondition internal constructor(private val type: IndexConfigType)
 

Change Records

v1.0.70 added

Function Illustrate

\u5B57\u8282\u7801\u4E0B\u6807\u7B5B\u9009\u5B9E\u73B0\u7C7B\u3002

index - method

fun index(num: Int)
 

Change Records

v1.0.70 added

Function Illustrate

\u8BBE\u7F6E\u4E0B\u6807\u3002

\u82E5 index \u5C0F\u4E8E\u96F6\u5219\u4E3A\u5012\u5E8F\uFF0C\u6B64\u65F6\u53EF\u4EE5\u4F7F\u7528 IndexTypeConditionSort.reverse \u65B9\u6CD5\u5B9E\u73B0\u3002

\u53EF\u4F7F\u7528 IndexTypeConditionSort.first \u548C IndexTypeConditionSort.last \u8BBE\u7F6E\u9996\u4F4D\u548C\u672B\u4F4D\u7B5B\u9009\u6761\u4EF6\u3002

index - method

fun index(): IndexTypeConditionSort
diff --git a/docs/assets/BaseFinder.html.20817d84.js b/docs/assets/BaseFinder.html.fe72b61b.js
similarity index 99%
rename from docs/assets/BaseFinder.html.20817d84.js
rename to docs/assets/BaseFinder.html.fe72b61b.js
index fa0cddb5f..b97498574 100644
--- a/docs/assets/BaseFinder.html.20817d84.js
+++ b/docs/assets/BaseFinder.html.fe72b61b.js
@@ -1,4 +1,4 @@
-import{_ as s,o as e,c as o,a as n}from"./app.09f06ad9.js";const a={},p=n(`

BaseFinder - class

abstract class BaseFinder
+import{_ as s,o as e,c as o,a as n}from"./app.0312b331.js";const a={},p=n(`

BaseFinder - class

abstract class BaseFinder
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

v1.1.0 \u4FEE\u6539

\u5206\u79BB\u539F\u59CB\u547D\u540D BaseFinder \u4E2D\u7684\u90E8\u5206\u65B9\u6CD5\u4E0E\u53C2\u6570\u5230 MemberBaseFinder

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F Class \u4E0E Member \u67E5\u627E\u7C7B\u529F\u80FD\u7684\u57FA\u672C\u7C7B\u5B9E\u73B0\u3002

BaseFinder.IndexTypeCondition - class

inner class IndexTypeCondition internal constructor(private val type: IndexConfigType)
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5B57\u8282\u7801\u4E0B\u6807\u7B5B\u9009\u5B9E\u73B0\u7C7B\u3002

index - method

fun index(num: Int)
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E\u4E0B\u6807\u3002

\u82E5 index \u5C0F\u4E8E\u96F6\u5219\u4E3A\u5012\u5E8F\uFF0C\u6B64\u65F6\u53EF\u4EE5\u4F7F\u7528 IndexTypeConditionSort.reverse \u65B9\u6CD5\u5B9E\u73B0\u3002

\u53EF\u4F7F\u7528 IndexTypeConditionSort.first \u548C IndexTypeConditionSort.last \u8BBE\u7F6E\u9996\u4F4D\u548C\u672B\u4F4D\u7B5B\u9009\u6761\u4EF6\u3002

index - method

fun index(): IndexTypeConditionSort
diff --git a/docs/assets/ChannelData.html.95b7e8c9.js b/docs/assets/ChannelData.html.794ea796.js
similarity index 99%
rename from docs/assets/ChannelData.html.95b7e8c9.js
rename to docs/assets/ChannelData.html.794ea796.js
index df58a1e93..86cdc9739 100644
--- a/docs/assets/ChannelData.html.95b7e8c9.js
+++ b/docs/assets/ChannelData.html.794ea796.js
@@ -1,4 +1,4 @@
-import{_ as s,o as a,c as n,a as l}from"./app.09f06ad9.js";const e={},o=l(`

ChannelData - class

data class ChannelData<T>(var key: String, var value: T?) : Serializable
+import{_ as s,o as a,c as n,a as l}from"./app.0312b331.js";const e={},o=l(`

ChannelData - class

data class ChannelData<T>(var key: String, var value: T?) : Serializable
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.88 \u65B0\u589E

v1.1.5 \u4FEE\u6539

\u5B9E\u73B0\u4E86 Serializable \u63A5\u53E3

\u529F\u80FD\u63CF\u8FF0

\u6570\u636E\u901A\u8BAF\u6865\u952E\u503C\u6784\u9020\u7C7B\u3002

\u8FD9\u4E2A\u7C7B\u662F\u5BF9 YukiHookDataChannel \u7684\u4E00\u4E2A\u6269\u5C55\u7528\u6CD5\u3002

\u529F\u80FD\u793A\u4F8B

\u5EFA\u7ACB\u4E00\u4E2A\u6A21\u677F\u7C7B\u5B9A\u4E49\u6A21\u5757\u4E0E\u5BBF\u4E3B\u9700\u8981\u53D1\u9001\u7684\u952E\u503C\u6570\u636E\u3002

\u793A\u4F8B\u5982\u4E0B

object DataConst {
 
     val TEST_KV_DATA_1 = ChannelData("test_data_1", "defalut value")
diff --git a/docs/assets/ChannelData.html.9058d1b5.js b/docs/assets/ChannelData.html.c27a7621.js
similarity index 99%
rename from docs/assets/ChannelData.html.9058d1b5.js
rename to docs/assets/ChannelData.html.c27a7621.js
index bf5ca31c5..56913b6e4 100644
--- a/docs/assets/ChannelData.html.9058d1b5.js
+++ b/docs/assets/ChannelData.html.c27a7621.js
@@ -1,4 +1,4 @@
-import{_ as s,o as a,c as n,a as l}from"./app.09f06ad9.js";const e={},o=l(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ChannelData - class

data class ChannelData<T>(var key: String, var value: T?) : Serializable
+import{_ as s,o as a,c as n,a as l}from"./app.0312b331.js";const e={},o=l(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ChannelData - class

data class ChannelData<T>(var key: String, var value: T?) : Serializable
 

Change Records

v1.0.88 added

v1.1.5 modified

\u5B9E\u73B0\u4E86 Serializable \u63A5\u53E3

Function Illustrate

\u6570\u636E\u901A\u8BAF\u6865\u952E\u503C\u6784\u9020\u7C7B\u3002

\u8FD9\u4E2A\u7C7B\u662F\u5BF9 YukiHookDataChannel \u7684\u4E00\u4E2A\u6269\u5C55\u7528\u6CD5\u3002

Function Example

\u5EFA\u7ACB\u4E00\u4E2A\u6A21\u677F\u7C7B\u5B9A\u4E49\u6A21\u5757\u4E0E\u5BBF\u4E3B\u9700\u8981\u53D1\u9001\u7684\u952E\u503C\u6570\u636E\u3002

The following example

object DataConst {
 
     val TEST_KV_DATA_1 = ChannelData("test_data_1", "defalut value")
diff --git a/docs/assets/ChannelPriority.html.d26c0620.js b/docs/assets/ChannelPriority.html.58169034.js
similarity index 95%
rename from docs/assets/ChannelPriority.html.d26c0620.js
rename to docs/assets/ChannelPriority.html.58169034.js
index 9558b0908..d0a499513 100644
--- a/docs/assets/ChannelPriority.html.d26c0620.js
+++ b/docs/assets/ChannelPriority.html.58169034.js
@@ -1,2 +1,2 @@
-import{_ as s,o as a,c as o,a as n}from"./app.09f06ad9.js";const e={},l=n(`

ChannelPriority - class

class ChannelPriority(private val conditions: () -> Boolean)
+import{_ as s,o as a,c as o,a as n}from"./app.0312b331.js";const e={},l=n(`

ChannelPriority - class

class ChannelPriority(private val conditions: () -> Boolean)
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.5 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u6570\u636E\u901A\u8BAF\u6865\u54CD\u5E94\u4F18\u5148\u7EA7\u6784\u9020\u7C7B\u3002

\u8FD9\u4E2A\u7C7B\u662F\u5BF9 YukiHookDataChannel \u7684\u4E00\u4E2A\u6269\u5C55\u7528\u6CD5\u3002

`,7),c=[l];function t(p,r){return a(),o("div",null,c)}const d=s(e,[["render",t],["__file","ChannelPriority.html.vue"]]);export{d as default}; diff --git a/docs/assets/ChannelPriority.html.67227f77.js b/docs/assets/ChannelPriority.html.813db29c.js similarity index 96% rename from docs/assets/ChannelPriority.html.67227f77.js rename to docs/assets/ChannelPriority.html.813db29c.js index 1755af9ff..82e63f84e 100644 --- a/docs/assets/ChannelPriority.html.67227f77.js +++ b/docs/assets/ChannelPriority.html.813db29c.js @@ -1,2 +1,2 @@ -import{_ as s,o as n,c as o,a}from"./app.09f06ad9.js";const e={},t=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ChannelPriority - class

class ChannelPriority(private val conditions: () -> Boolean)
+import{_ as s,o as n,c as o,a}from"./app.0312b331.js";const e={},t=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ChannelPriority - class

class ChannelPriority(private val conditions: () -> Boolean)
 

Change Records

v1.1.5 added

Function Illustrate

\u6570\u636E\u901A\u8BAF\u6865\u54CD\u5E94\u4F18\u5148\u7EA7\u6784\u9020\u7C7B\u3002

\u8FD9\u4E2A\u7C7B\u662F\u5BF9 YukiHookDataChannel \u7684\u4E00\u4E2A\u6269\u5C55\u7528\u6CD5\u3002

`,8),l=[t];function c(r,p){return n(),o("div",null,l)}const d=s(e,[["render",c],["__file","ChannelPriority.html.vue"]]);export{d as default}; diff --git a/docs/assets/ComponentTypeFactory.html.ce8d84e9.js b/docs/assets/ComponentTypeFactory.html.11aade0e.js similarity index 94% rename from docs/assets/ComponentTypeFactory.html.ce8d84e9.js rename to docs/assets/ComponentTypeFactory.html.11aade0e.js index a390faa0b..20b60a9cb 100644 --- a/docs/assets/ComponentTypeFactory.html.ce8d84e9.js +++ b/docs/assets/ComponentTypeFactory.html.11aade0e.js @@ -1 +1 @@ -import{_ as n,r as c,o as a,c as r,b as e,d as s,a as p,e as o}from"./app.09f06ad9.js";const d={},i=p('

ComponentTypeFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173\u7EC4\u4EF6\u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

',5),l=o("\u8BE6\u60C5\u53EF "),_={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},h=o("\u70B9\u51FB\u8FD9\u91CC"),k=o(" \u8FDB\u884C\u67E5\u770B\u3002");function m(y,f){const t=c("ExternalLinkIcon");return a(),r("div",null,[i,e("p",null,[l,e("a",_,[h,s(t)]),k])])}const b=n(d,[["render",m],["__file","ComponentTypeFactory.html.vue"]]);export{b as default}; +import{_ as n,r as c,o as a,c as r,b as e,d as s,a as p,e as o}from"./app.0312b331.js";const d={},i=p('

ComponentTypeFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173\u7EC4\u4EF6\u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

',5),l=o("\u8BE6\u60C5\u53EF "),_={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},h=o("\u70B9\u51FB\u8FD9\u91CC"),k=o(" \u8FDB\u884C\u67E5\u770B\u3002");function m(y,f){const t=c("ExternalLinkIcon");return a(),r("div",null,[i,e("p",null,[l,e("a",_,[h,s(t)]),k])])}const b=n(d,[["render",m],["__file","ComponentTypeFactory.html.vue"]]);export{b as default}; diff --git a/docs/assets/ComponentTypeFactory.html.c763fcd5.js b/docs/assets/ComponentTypeFactory.html.b986f35a.js similarity index 95% rename from docs/assets/ComponentTypeFactory.html.c763fcd5.js rename to docs/assets/ComponentTypeFactory.html.b986f35a.js index c05f9bc65..d1acffda2 100644 --- a/docs/assets/ComponentTypeFactory.html.c763fcd5.js +++ b/docs/assets/ComponentTypeFactory.html.b986f35a.js @@ -1 +1 @@ -import{_ as n,r as a,o as c,c as s,b as o,d as r,a as i,e}from"./app.09f06ad9.js";const p={},l=i('

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ComponentTypeFactory - kt

Change Records

v1.0 first

Function Illustrate

\u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173\u7EC4\u4EF6\u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

',6),d=e("\u8BE6\u60C5\u53EF "),h={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),m=e(" \u8FDB\u884C\u67E5\u770B\u3002");function u(k,f){const t=a("ExternalLinkIcon");return c(),s("div",null,[l,o("p",null,[d,o("a",h,[_,r(t)]),m])])}const g=n(p,[["render",u],["__file","ComponentTypeFactory.html.vue"]]);export{g as default}; +import{_ as n,r as a,o as c,c as s,b as o,d as r,a as i,e}from"./app.0312b331.js";const p={},l=i('

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ComponentTypeFactory - kt

Change Records

v1.0 first

Function Illustrate

\u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173\u7EC4\u4EF6\u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

',6),d=e("\u8BE6\u60C5\u53EF "),h={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),m=e(" \u8FDB\u884C\u67E5\u770B\u3002");function u(k,f){const t=a("ExternalLinkIcon");return c(),s("div",null,[l,o("p",null,[d,o("a",h,[_,r(t)]),m])])}const g=n(p,[["render",u],["__file","ComponentTypeFactory.html.vue"]]);export{g as default}; diff --git a/docs/assets/ConstructorFinder.html.7b697bd3.js b/docs/assets/ConstructorFinder.html.282236a6.js similarity index 96% rename from docs/assets/ConstructorFinder.html.7b697bd3.js rename to docs/assets/ConstructorFinder.html.282236a6.js index 44fcc6a56..e703f970b 100644 --- a/docs/assets/ConstructorFinder.html.7b697bd3.js +++ b/docs/assets/ConstructorFinder.html.282236a6.js @@ -1 +1 @@ -const e=JSON.parse('{"key":"v-a71937aa","path":"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html","title":"ConstructorFinder - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"paramCount - field","slug":"paramcount-field","link":"#paramcount-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"emptyParam - method","slug":"emptyparam-method","link":"#emptyparam-method","children":[]},{"level":2,"title":"param - method","slug":"param-method","link":"#param-method","children":[]},{"level":2,"title":"param - method","slug":"param-method-1","link":"#param-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method","link":"#paramcount-method","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-1","link":"#paramcount-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-2","link":"#paramcount-method-2","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"constructor - method","slug":"constructor-method","link":"#constructor-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Process - class","slug":"process-class","link":"#process-class","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchConstructor - method","slug":"onnosuchconstructor-method","link":"#onnosuchconstructor-method","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method-1","link":"#result-method-1","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method-1","link":"#all-method-1","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method-1","link":"#remedys-method-1","children":[]},{"level":3,"title":"onNoSuchConstructor - method","slug":"onnosuchconstructor-method-1","link":"#onnosuchconstructor-method-1","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]}]}],"git":{"updatedTime":1675187575000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.md"}');export{e as data}; +const e=JSON.parse('{"key":"v-a71937aa","path":"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html","title":"ConstructorFinder - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"paramCount - field","slug":"paramcount-field","link":"#paramcount-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"emptyParam - method","slug":"emptyparam-method","link":"#emptyparam-method","children":[]},{"level":2,"title":"param - method","slug":"param-method","link":"#param-method","children":[]},{"level":2,"title":"param - method","slug":"param-method-1","link":"#param-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method","link":"#paramcount-method","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-1","link":"#paramcount-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-2","link":"#paramcount-method-2","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"constructor - method","slug":"constructor-method","link":"#constructor-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Process - class","slug":"process-class","link":"#process-class","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchConstructor - method","slug":"onnosuchconstructor-method","link":"#onnosuchconstructor-method","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method-1","link":"#result-method-1","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method-1","link":"#all-method-1","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method-1","link":"#remedys-method-1","children":[]},{"level":3,"title":"onNoSuchConstructor - method","slug":"onnosuchconstructor-method-1","link":"#onnosuchconstructor-method-1","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.md"}');export{e as data}; diff --git a/docs/assets/ConstructorFinder.html.4d826255.js b/docs/assets/ConstructorFinder.html.3569a905.js similarity index 99% rename from docs/assets/ConstructorFinder.html.4d826255.js rename to docs/assets/ConstructorFinder.html.3569a905.js index 47210388f..69e4532a0 100644 --- a/docs/assets/ConstructorFinder.html.4d826255.js +++ b/docs/assets/ConstructorFinder.html.3569a905.js @@ -1,5 +1,5 @@ -import{_ as s,o as n,c as o,a}from"./app.09f06ad9.js";const e={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ConstructorFinder - class

class ConstructorFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
-

Change Records

v1.0 first

v1.0.2 modified

\u5408\u5E76\u5230 BaseFinder

v1.1.0 modified

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.7 modified

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

Function Illustrate

Constructor \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Constructor \u6216\u4E00\u7EC4 Constructor\u3002

paramCount - field

var paramCount: Int
+import{_ as s,o as n,c as o,a}from"./app.0312b331.js";const e={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ConstructorFinder - class

class ConstructorFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
+

Change Records

v1.0 first

v1.0.2 modified

\u5408\u5E76\u5230 BaseFinder

v1.1.0 modified

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.8 modified

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

Function Illustrate

Constructor \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Constructor \u6216\u4E00\u7EC4 Constructor\u3002

paramCount - field

var paramCount: Int
 

Change Records

v1.0.67 added

Function Illustrate

\u8BBE\u7F6E Constructor \u53C2\u6570\u4E2A\u6570\u3002

\u4F60\u53EF\u4EE5\u4E0D\u4F7F\u7528 param \u6307\u5B9A\u53C2\u6570\u7C7B\u578B\u800C\u662F\u4EC5\u4F7F\u7528\u6B64\u53D8\u91CF\u6307\u5B9A\u53C2\u6570\u4E2A\u6570\u3002

\u82E5\u53C2\u6570\u4E2A\u6570\u5C0F\u4E8E\u96F6\u5219\u5FFD\u7565\u5E76\u4F7F\u7528 param\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions): IndexTypeCondition
 

Change Records

v1.0.67 added

v1.0.80 modified

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

v1.1.0 modified

\u5408\u5E76\u5230 ModifierConditions

Function Illustrate

\u8BBE\u7F6E Constructor \u6807\u8BC6\u7B26\u7B5B\u9009\u6761\u4EF6\u3002

\u53EF\u4E0D\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6\uFF0C\u9ED8\u8BA4\u6A21\u7CCA\u67E5\u627E\u5E76\u53D6\u7B2C\u4E00\u4E2A\u5339\u914D\u7684 Constructor\u3002

Pay Attention

\u5B58\u5728\u591A\u4E2A IndexTypeCondition \u65F6\u9664\u4E86 order \u53EA\u4F1A\u751F\u6548\u6700\u540E\u4E00\u4E2A\u3002

emptyParam - method

fun emptyParam(): IndexTypeCondition
 

Change Records

v1.0.75 added

Function Illustrate

\u8BBE\u7F6E Constructor \u7A7A\u53C2\u6570\u3001\u65E0\u53C2\u6570\u3002

param - method

fun param(vararg paramType: Any): IndexTypeCondition
diff --git a/docs/assets/ConstructorFinder.html.0ce7ed02.js b/docs/assets/ConstructorFinder.html.8e38ad6f.js
similarity index 96%
rename from docs/assets/ConstructorFinder.html.0ce7ed02.js
rename to docs/assets/ConstructorFinder.html.8e38ad6f.js
index a90c9b256..070557377 100644
--- a/docs/assets/ConstructorFinder.html.0ce7ed02.js
+++ b/docs/assets/ConstructorFinder.html.8e38ad6f.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-1e2cbc9c","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html","title":"ConstructorFinder - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"paramCount - field","slug":"paramcount-field","link":"#paramcount-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"emptyParam - method","slug":"emptyparam-method","link":"#emptyparam-method","children":[]},{"level":2,"title":"param - method","slug":"param-method","link":"#param-method","children":[]},{"level":2,"title":"param - method","slug":"param-method-1","link":"#param-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method","link":"#paramcount-method","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-1","link":"#paramcount-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-2","link":"#paramcount-method-2","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"constructor - method","slug":"constructor-method","link":"#constructor-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Process - class","slug":"process-class","link":"#process-class","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchConstructor - method","slug":"onnosuchconstructor-method","link":"#onnosuchconstructor-method","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method-1","link":"#result-method-1","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method-1","link":"#all-method-1","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method-1","link":"#remedys-method-1","children":[]},{"level":3,"title":"onNoSuchConstructor - method","slug":"onnosuchconstructor-method-1","link":"#onnosuchconstructor-method-1","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]}]}],"git":{"updatedTime":1675187575000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-1e2cbc9c","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html","title":"ConstructorFinder - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"paramCount - field","slug":"paramcount-field","link":"#paramcount-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"emptyParam - method","slug":"emptyparam-method","link":"#emptyparam-method","children":[]},{"level":2,"title":"param - method","slug":"param-method","link":"#param-method","children":[]},{"level":2,"title":"param - method","slug":"param-method-1","link":"#param-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method","link":"#paramcount-method","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-1","link":"#paramcount-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-2","link":"#paramcount-method-2","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"constructor - method","slug":"constructor-method","link":"#constructor-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Process - class","slug":"process-class","link":"#process-class","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchConstructor - method","slug":"onnosuchconstructor-method","link":"#onnosuchconstructor-method","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method-1","link":"#result-method-1","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method-1","link":"#all-method-1","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method-1","link":"#remedys-method-1","children":[]},{"level":3,"title":"onNoSuchConstructor - method","slug":"onnosuchconstructor-method-1","link":"#onnosuchconstructor-method-1","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":6}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.md"}');export{e as data};
diff --git a/docs/assets/ConstructorFinder.html.4cb6fe26.js b/docs/assets/ConstructorFinder.html.e96cece3.js
similarity index 99%
rename from docs/assets/ConstructorFinder.html.4cb6fe26.js
rename to docs/assets/ConstructorFinder.html.e96cece3.js
index 4a5ad7baf..0cc4f7849 100644
--- a/docs/assets/ConstructorFinder.html.4cb6fe26.js
+++ b/docs/assets/ConstructorFinder.html.e96cece3.js
@@ -1,5 +1,5 @@
-import{_ as s,o,c as n,a}from"./app.09f06ad9.js";const e={},l=a(`

ConstructorFinder - class

class ConstructorFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
-

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.2 \u4FEE\u6539

\u5408\u5E76\u5230 BaseFinder

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.7 \u4FEE\u6539

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

\u529F\u80FD\u63CF\u8FF0

Constructor \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Constructor \u6216\u4E00\u7EC4 Constructor\u3002

paramCount - field

var paramCount: Int
+import{_ as s,o,c as n,a}from"./app.0312b331.js";const e={},l=a(`

ConstructorFinder - class

class ConstructorFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
+

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.2 \u4FEE\u6539

\u5408\u5E76\u5230 BaseFinder

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.8 \u4FEE\u6539

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

\u529F\u80FD\u63CF\u8FF0

Constructor \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Constructor \u6216\u4E00\u7EC4 Constructor\u3002

paramCount - field

var paramCount: Int
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.67 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Constructor \u53C2\u6570\u4E2A\u6570\u3002

\u4F60\u53EF\u4EE5\u4E0D\u4F7F\u7528 param \u6307\u5B9A\u53C2\u6570\u7C7B\u578B\u800C\u662F\u4EC5\u4F7F\u7528\u6B64\u53D8\u91CF\u6307\u5B9A\u53C2\u6570\u4E2A\u6570\u3002

\u82E5\u53C2\u6570\u4E2A\u6570\u5C0F\u4E8E\u96F6\u5219\u5FFD\u7565\u5E76\u4F7F\u7528 param\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions): IndexTypeCondition
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.67 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 ModifierConditions

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Constructor \u6807\u8BC6\u7B26\u7B5B\u9009\u6761\u4EF6\u3002

\u53EF\u4E0D\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6\uFF0C\u9ED8\u8BA4\u6A21\u7CCA\u67E5\u627E\u5E76\u53D6\u7B2C\u4E00\u4E2A\u5339\u914D\u7684 Constructor\u3002

\u7279\u522B\u6CE8\u610F

\u5B58\u5728\u591A\u4E2A IndexTypeCondition \u65F6\u9664\u4E86 order \u53EA\u4F1A\u751F\u6548\u6700\u540E\u4E00\u4E2A\u3002

emptyParam - method

fun emptyParam(): IndexTypeCondition
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.75 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Constructor \u7A7A\u53C2\u6570\u3001\u65E0\u53C2\u6570\u3002

param - method

fun param(vararg paramType: Any): IndexTypeCondition
diff --git a/docs/assets/ConstructorRules.html.30bc7679.js b/docs/assets/ConstructorRules.html.99f29679.js
similarity index 99%
rename from docs/assets/ConstructorRules.html.30bc7679.js
rename to docs/assets/ConstructorRules.html.99f29679.js
index 18188ce6d..6ec78c69e 100644
--- a/docs/assets/ConstructorRules.html.30bc7679.js
+++ b/docs/assets/ConstructorRules.html.99f29679.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},t=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ConstructorRules - class

class ConstructorRules internal constructor(internal val rulesData: ConstructorRulesData) : BaseRules
+import{_ as s,o,c as a,a as n}from"./app.0312b331.js";const e={},t=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ConstructorRules - class

class ConstructorRules internal constructor(internal val rulesData: ConstructorRulesData) : BaseRules
 

Change Records

v1.1.0 added

Function Illustrate

Constructor \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

paramCount - field

var paramCount: Int
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E Constructor \u53C2\u6570\u4E2A\u6570\u3002

\u4F60\u53EF\u4EE5\u4E0D\u4F7F\u7528 param \u6307\u5B9A\u53C2\u6570\u7C7B\u578B\u800C\u662F\u4EC5\u4F7F\u7528\u6B64\u53D8\u91CF\u6307\u5B9A\u53C2\u6570\u4E2A\u6570\u3002

\u82E5\u53C2\u6570\u4E2A\u6570\u5C0F\u4E8E\u96F6\u5219\u5FFD\u7565\u5E76\u4F7F\u7528 param\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions)
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E Constructor \u6807\u8BC6\u7B26\u7B5B\u9009\u6761\u4EF6\u3002

\u53EF\u4E0D\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6\u3002

emptyParam - method

fun emptyParam()
diff --git a/docs/assets/ConstructorRules.html.d7bdd50e.js b/docs/assets/ConstructorRules.html.d4fa8cb3.js
similarity index 99%
rename from docs/assets/ConstructorRules.html.d7bdd50e.js
rename to docs/assets/ConstructorRules.html.d4fa8cb3.js
index 6017e5947..1226c18ec 100644
--- a/docs/assets/ConstructorRules.html.d7bdd50e.js
+++ b/docs/assets/ConstructorRules.html.d4fa8cb3.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},p=n(`

ConstructorRules - class

class ConstructorRules internal constructor(internal val rulesData: ConstructorRulesData) : BaseRules
+import{_ as s,o,c as a,a as n}from"./app.0312b331.js";const e={},p=n(`

ConstructorRules - class

class ConstructorRules internal constructor(internal val rulesData: ConstructorRulesData) : BaseRules
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

Constructor \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

paramCount - field

var paramCount: Int
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Constructor \u53C2\u6570\u4E2A\u6570\u3002

\u4F60\u53EF\u4EE5\u4E0D\u4F7F\u7528 param \u6307\u5B9A\u53C2\u6570\u7C7B\u578B\u800C\u662F\u4EC5\u4F7F\u7528\u6B64\u53D8\u91CF\u6307\u5B9A\u53C2\u6570\u4E2A\u6570\u3002

\u82E5\u53C2\u6570\u4E2A\u6570\u5C0F\u4E8E\u96F6\u5219\u5FFD\u7565\u5E76\u4F7F\u7528 param\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions)
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Constructor \u6807\u8BC6\u7B26\u7B5B\u9009\u6761\u4EF6\u3002

\u53EF\u4E0D\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6\u3002

emptyParam - method

fun emptyParam()
diff --git a/docs/assets/CountRules.html.a241a5ac.js b/docs/assets/CountRules.html.d35cf62b.js
similarity index 98%
rename from docs/assets/CountRules.html.a241a5ac.js
rename to docs/assets/CountRules.html.d35cf62b.js
index 8000ee7ae..a36b1aa76 100644
--- a/docs/assets/CountRules.html.a241a5ac.js
+++ b/docs/assets/CountRules.html.d35cf62b.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as n,a as e}from"./app.09f06ad9.js";const a={},l=e(`

CountRules - class

class CountRules private constructor()
+import{_ as s,o,c as n,a as e}from"./app.0312b331.js";const a={},l=e(`

CountRules - class

class CountRules private constructor()
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A\u6A21\u7CCA Class\u3001Member \u6570\u7EC4 (\u4E0B\u6807) \u4E2A\u6570\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

\u53EF\u5BF9 R8 \u6DF7\u6DC6\u540E\u7684 Class\u3001Member \u8FDB\u884C\u66F4\u52A0\u8BE6\u7EC6\u7684\u5B9A\u4F4D\u3002

Int.isZero - i-ext-method

fun Int.isZero(): Boolean
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u662F\u5426\u4E3A 0\u3002

Int.moreThan - i-ext-method

fun Int.moreThan(count: Int): Boolean
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5927\u4E8E count\u3002

Int.lessThan - i-ext-method

fun Int.lessThan(count: Int): Boolean
diff --git a/docs/assets/CountRules.html.36628291.js b/docs/assets/CountRules.html.dc0369ea.js
similarity index 98%
rename from docs/assets/CountRules.html.36628291.js
rename to docs/assets/CountRules.html.dc0369ea.js
index 61475e016..b2ff83d2f 100644
--- a/docs/assets/CountRules.html.36628291.js
+++ b/docs/assets/CountRules.html.dc0369ea.js
@@ -1,4 +1,4 @@
-import{_ as s,o as n,c as o,a as e}from"./app.09f06ad9.js";const a={},t=e(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

CountRules - class

class CountRules private constructor()
+import{_ as s,o as n,c as o,a as e}from"./app.0312b331.js";const a={},t=e(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

CountRules - class

class CountRules private constructor()
 

Change Records

v1.1.0 added

Function Illustrate

\u8FD9\u662F\u4E00\u4E2A\u6A21\u7CCA Class\u3001Member \u6570\u7EC4 (\u4E0B\u6807) \u4E2A\u6570\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

\u53EF\u5BF9 R8 \u6DF7\u6DC6\u540E\u7684 Class\u3001Member \u8FDB\u884C\u66F4\u52A0\u8BE6\u7EC6\u7684\u5B9A\u4F4D\u3002

Int.isZero - i-ext-method

fun Int.isZero(): Boolean
 

Change Records

v1.1.0 added

Function Illustrate

\u662F\u5426\u4E3A 0\u3002

Int.moreThan - i-ext-method

fun Int.moreThan(count: Int): Boolean
 

Change Records

v1.1.0 added

Function Illustrate

\u5927\u4E8E count\u3002

Int.lessThan - i-ext-method

fun Int.lessThan(count: Int): Boolean
diff --git a/docs/assets/CurrentClass.html.afb1278c.js b/docs/assets/CurrentClass.html.5dcf9530.js
similarity index 99%
rename from docs/assets/CurrentClass.html.afb1278c.js
rename to docs/assets/CurrentClass.html.5dcf9530.js
index 73548e63e..fe7d61c84 100644
--- a/docs/assets/CurrentClass.html.afb1278c.js
+++ b/docs/assets/CurrentClass.html.5dcf9530.js
@@ -1,4 +1,4 @@
-import{_ as s,o as a,c as e,a as n}from"./app.09f06ad9.js";const o={},l=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

CurrentClass - class

class CurrentClass internal constructor(internal val classSet: Class<*>, internal val instance: Any)
+import{_ as s,o as a,c as e,a as n}from"./app.0312b331.js";const o={},l=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

CurrentClass - class

class CurrentClass internal constructor(internal val classSet: Class<*>, internal val instance: Any)
 

Change Records

v1.0.70 added

v1.1.0 modified

\u8C03\u6574\u4E86\u6784\u9020\u65B9\u6CD5\u7684\u53C2\u6570\u540D\u79F0

Function Illustrate

\u5F53\u524D\u5B9E\u4F8B\u7684\u7C7B\u64CD\u4F5C\u5BF9\u8C61\u3002

name - field

val name: String
 

Change Records

v1.1.0 added

Function Illustrate

\u83B7\u5F97\u5F53\u524D classSet \u7684 Class.getName\u3002

simpleName - field

val simpleName: String
 

Change Records

v1.1.0 added

Function Illustrate

\u83B7\u5F97\u5F53\u524D classSet \u7684 Class.getSimpleName\u3002

generic - method

fun generic(): GenericClass?
diff --git a/docs/assets/CurrentClass.html.d9a7c134.js b/docs/assets/CurrentClass.html.acca6892.js
similarity index 99%
rename from docs/assets/CurrentClass.html.d9a7c134.js
rename to docs/assets/CurrentClass.html.acca6892.js
index 57b1373a2..da1a301f9 100644
--- a/docs/assets/CurrentClass.html.d9a7c134.js
+++ b/docs/assets/CurrentClass.html.acca6892.js
@@ -1,4 +1,4 @@
-import{_ as s,o as a,c as n,a as o}from"./app.09f06ad9.js";const e={},l=o(`

CurrentClass - class

class CurrentClass internal constructor(internal val classSet: Class<*>, internal val instance: Any)
+import{_ as s,o as a,c as n,a as o}from"./app.0312b331.js";const e={},l=o(`

CurrentClass - class

class CurrentClass internal constructor(internal val classSet: Class<*>, internal val instance: Any)
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

v1.1.0 \u4FEE\u6539

\u8C03\u6574\u4E86\u6784\u9020\u65B9\u6CD5\u7684\u53C2\u6570\u540D\u79F0

\u529F\u80FD\u63CF\u8FF0

\u5F53\u524D\u5B9E\u4F8B\u7684\u7C7B\u64CD\u4F5C\u5BF9\u8C61\u3002

name - field

val name: String
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u5F97\u5F53\u524D classSet \u7684 Class.getName\u3002

simpleName - field

val simpleName: String
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u5F97\u5F53\u524D classSet \u7684 Class.getSimpleName\u3002

generic - method

fun generic(): GenericClass?
diff --git a/docs/assets/DefinedTypeFactory.html.dd9e60d2.js b/docs/assets/DefinedTypeFactory.html.0b9fa893.js
similarity index 96%
rename from docs/assets/DefinedTypeFactory.html.dd9e60d2.js
rename to docs/assets/DefinedTypeFactory.html.0b9fa893.js
index 06478d9eb..df2ddf8f9 100644
--- a/docs/assets/DefinedTypeFactory.html.dd9e60d2.js
+++ b/docs/assets/DefinedTypeFactory.html.0b9fa893.js
@@ -1,2 +1,2 @@
-import{_ as e,o as s,c as o,a}from"./app.09f06ad9.js";const t={},n=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

DefinedTypeFactory - kt

Change Records

v1.1.0 added

Function Illustrate

\u8FD9\u662F\u4E00\u4E2A\u5185\u90E8\u7C7B\u578B\u7684\u5B9A\u4E49\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u7528\u4E8E\u53CD\u5C04 API \u76F8\u5173\u7528\u6CD5\u7684\u5EF6\u4F38\u3002

VagueType - field

val VagueType: Class<*>
+import{_ as e,o as s,c as o,a}from"./app.0312b331.js";const t={},n=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

DefinedTypeFactory - kt

Change Records

v1.1.0 added

Function Illustrate

\u8FD9\u662F\u4E00\u4E2A\u5185\u90E8\u7C7B\u578B\u7684\u5B9A\u4E49\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u7528\u4E8E\u53CD\u5C04 API \u76F8\u5173\u7528\u6CD5\u7684\u5EF6\u4F38\u3002

VagueType - field

val VagueType: Class<*>
 

Change Records

v1.1.0 added

Function Illustrate

\u5F97\u5230\u6A21\u7CCA\u7C7B\u578B\u3002

`,12),c=[n];function r(l,p){return s(),o("div",null,c)}const i=e(t,[["render",r],["__file","DefinedTypeFactory.html.vue"]]);export{i as default}; diff --git a/docs/assets/DefinedTypeFactory.html.a54b20e5.js b/docs/assets/DefinedTypeFactory.html.be1de716.js similarity index 95% rename from docs/assets/DefinedTypeFactory.html.a54b20e5.js rename to docs/assets/DefinedTypeFactory.html.be1de716.js index 382de5e00..57a650f56 100644 --- a/docs/assets/DefinedTypeFactory.html.a54b20e5.js +++ b/docs/assets/DefinedTypeFactory.html.be1de716.js @@ -1,2 +1,2 @@ -import{_ as e,o as s,c as a,a as o}from"./app.09f06ad9.js";const t={},n=o(`

DefinedTypeFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A\u5185\u90E8\u7C7B\u578B\u7684\u5B9A\u4E49\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u7528\u4E8E\u53CD\u5C04 API \u76F8\u5173\u7528\u6CD5\u7684\u5EF6\u4F38\u3002

VagueType - field

val VagueType: Class<*>
+import{_ as e,o as s,c as a,a as o}from"./app.0312b331.js";const t={},n=o(`

DefinedTypeFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A\u5185\u90E8\u7C7B\u578B\u7684\u5B9A\u4E49\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u7528\u4E8E\u53CD\u5C04 API \u76F8\u5173\u7528\u6CD5\u7684\u5EF6\u4F38\u3002

VagueType - field

val VagueType: Class<*>
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5F97\u5230\u6A21\u7CCA\u7C7B\u578B\u3002

`,11),c=[n];function p(l,r){return s(),a("div",null,c)}const i=e(t,[["render",p],["__file","DefinedTypeFactory.html.vue"]]);export{i as default}; diff --git a/docs/assets/DexClassFinder.html.a77da4d5.js b/docs/assets/DexClassFinder.html.1b24aa40.js similarity index 99% rename from docs/assets/DexClassFinder.html.a77da4d5.js rename to docs/assets/DexClassFinder.html.1b24aa40.js index b6398ea99..c7c57a926 100644 --- a/docs/assets/DexClassFinder.html.a77da4d5.js +++ b/docs/assets/DexClassFinder.html.1b24aa40.js @@ -1,4 +1,4 @@ -import{_ as s,o,c as a,a as e}from"./app.09f06ad9.js";const n={},l=e(`

DexClassFinder - class

class DexClassFinder internal constructor(
+import{_ as s,o,c as a,a as e}from"./app.0312b331.js";const n={},l=e(`

DexClassFinder - class

class DexClassFinder internal constructor(
     internal var name: String,
     internal var async: Boolean,
     override val loaderSet: ClassLoader?
diff --git a/docs/assets/DexClassFinder.html.389730c5.js b/docs/assets/DexClassFinder.html.5f82f3de.js
similarity index 99%
rename from docs/assets/DexClassFinder.html.389730c5.js
rename to docs/assets/DexClassFinder.html.5f82f3de.js
index 2f7a8bae4..0b2ba11e2 100644
--- a/docs/assets/DexClassFinder.html.389730c5.js
+++ b/docs/assets/DexClassFinder.html.5f82f3de.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

DexClassFinder - class

class DexClassFinder internal constructor(
+import{_ as s,o,c as e,a}from"./app.0312b331.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

DexClassFinder - class

class DexClassFinder internal constructor(
     internal var name: String,
     internal var async: Boolean,
     override val loaderSet: ClassLoader?
diff --git a/docs/assets/FieldFinder.html.320f7c00.js b/docs/assets/FieldFinder.html.2eae76af.js
similarity index 99%
rename from docs/assets/FieldFinder.html.320f7c00.js
rename to docs/assets/FieldFinder.html.2eae76af.js
index 1f46aa815..89eb29224 100644
--- a/docs/assets/FieldFinder.html.320f7c00.js
+++ b/docs/assets/FieldFinder.html.2eae76af.js
@@ -1,5 +1,5 @@
-import{_ as s,o as e,c as o,a as n}from"./app.09f06ad9.js";const a={},l=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

FieldFinder - class

class FieldFinder internal constructor(override val classSet: Class<*>?) : MemberBaseFinder
-

Change Records

v1.0 first

v1.0.2 modified

\u5408\u5E76\u5230 BaseFinder

v1.1.0 modified

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.7 modified

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

Function Illustrate

Field \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Field \u6216\u4E00\u7EC4 Field\u3002

classSet - field

Change Records

v1.0 first

v1.0.2 removed

name - field

var name: String
+import{_ as s,o as e,c as o,a as n}from"./app.0312b331.js";const a={},l=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

FieldFinder - class

class FieldFinder internal constructor(override val classSet: Class<*>?) : MemberBaseFinder
+

Change Records

v1.0 first

v1.0.2 modified

\u5408\u5E76\u5230 BaseFinder

v1.1.0 modified

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.8 modified

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

Function Illustrate

Field \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Field \u6216\u4E00\u7EC4 Field\u3002

classSet - field

Change Records

v1.0 first

v1.0.2 removed

name - field

var name: String
 

Change Records

v1.0 first

v1.0.70 modified

\u5141\u8BB8\u4E0D\u586B\u5199\u540D\u79F0

Function Illustrate

\u8BBE\u7F6E Field \u540D\u79F0\u3002

Pay Attention

\u82E5\u4E0D\u586B\u5199\u540D\u79F0\u5219\u5FC5\u987B\u5B58\u5728\u4E00\u4E2A\u5176\u5B83\u6761\u4EF6\u3002

type - field

var type: Any?
 

Change Records

v1.0 first

Function Illustrate

\u8BBE\u7F6E Field \u7C7B\u578B\u3002

\u53EF\u4E0D\u586B\u5199\u7C7B\u578B\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions): IndexTypeCondition
 

Change Records

v1.0.67 added

v1.0.80 modified

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

v1.1.0 modified

\u5408\u5E76\u5230 ModifierConditions

Function Illustrate

\u8BBE\u7F6E Field \u6807\u8BC6\u7B26\u7B5B\u9009\u6761\u4EF6\u3002

\u53EF\u4E0D\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6\u3002

Pay Attention

\u5B58\u5728\u591A\u4E2A IndexTypeCondition \u65F6\u9664\u4E86 order \u53EA\u4F1A\u751F\u6548\u6700\u540E\u4E00\u4E2A\u3002

order - method

fun order(): IndexTypeCondition
diff --git a/docs/assets/FieldFinder.html.6095903f.js b/docs/assets/FieldFinder.html.30e6d2df.js
similarity index 95%
rename from docs/assets/FieldFinder.html.6095903f.js
rename to docs/assets/FieldFinder.html.30e6d2df.js
index f48052b69..6c6568e18 100644
--- a/docs/assets/FieldFinder.html.6095903f.js
+++ b/docs/assets/FieldFinder.html.30e6d2df.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-22449c48","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html","title":"FieldFinder - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"name - field","slug":"name-field","link":"#name-field","children":[]},{"level":2,"title":"type - field","slug":"type-field","link":"#type-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"order - method","slug":"order-method","link":"#order-method","children":[]},{"level":2,"title":"name - method","slug":"name-method","link":"#name-method","children":[]},{"level":2,"title":"name - method","slug":"name-method-1","link":"#name-method-1","children":[]},{"level":2,"title":"type - method","slug":"type-method","link":"#type-method","children":[]},{"level":2,"title":"type - method","slug":"type-method-1","link":"#type-method-1","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"field - method","slug":"field-method","link":"#field-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchField - method","slug":"onnosuchfield-method","link":"#onnosuchfield-method","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]}]}],"git":{"updatedTime":1675187575000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-22449c48","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html","title":"FieldFinder - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"name - field","slug":"name-field","link":"#name-field","children":[]},{"level":2,"title":"type - field","slug":"type-field","link":"#type-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"order - method","slug":"order-method","link":"#order-method","children":[]},{"level":2,"title":"name - method","slug":"name-method","link":"#name-method","children":[]},{"level":2,"title":"name - method","slug":"name-method-1","link":"#name-method-1","children":[]},{"level":2,"title":"type - method","slug":"type-method","link":"#type-method","children":[]},{"level":2,"title":"type - method","slug":"type-method-1","link":"#type-method-1","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"field - method","slug":"field-method","link":"#field-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchField - method","slug":"onnosuchfield-method","link":"#onnosuchfield-method","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.md"}');export{e as data};
diff --git a/docs/assets/FieldFinder.html.6061f475.js b/docs/assets/FieldFinder.html.681fea0b.js
similarity index 99%
rename from docs/assets/FieldFinder.html.6061f475.js
rename to docs/assets/FieldFinder.html.681fea0b.js
index 6249fb724..b07327b3e 100644
--- a/docs/assets/FieldFinder.html.6061f475.js
+++ b/docs/assets/FieldFinder.html.681fea0b.js
@@ -1,5 +1,5 @@
-import{_ as s,o,c as e,a as n}from"./app.09f06ad9.js";const a={},l=n(`

FieldFinder - class

class FieldFinder internal constructor(override val classSet: Class<*>?) : MemberBaseFinder
-

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.2 \u4FEE\u6539

\u5408\u5E76\u5230 BaseFinder

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.7 \u4FEE\u6539

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

\u529F\u80FD\u63CF\u8FF0

Field \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Field \u6216\u4E00\u7EC4 Field\u3002

classSet - field

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.2 \u79FB\u9664

name - field

var name: String
+import{_ as s,o,c as e,a as n}from"./app.0312b331.js";const a={},l=n(`

FieldFinder - class

class FieldFinder internal constructor(override val classSet: Class<*>?) : MemberBaseFinder
+

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.2 \u4FEE\u6539

\u5408\u5E76\u5230 BaseFinder

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.8 \u4FEE\u6539

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

\u529F\u80FD\u63CF\u8FF0

Field \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Field \u6216\u4E00\u7EC4 Field\u3002

classSet - field

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.2 \u79FB\u9664

name - field

var name: String
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.70 \u4FEE\u6539

\u5141\u8BB8\u4E0D\u586B\u5199\u540D\u79F0

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Field \u540D\u79F0\u3002

\u7279\u522B\u6CE8\u610F

\u82E5\u4E0D\u586B\u5199\u540D\u79F0\u5219\u5FC5\u987B\u5B58\u5728\u4E00\u4E2A\u5176\u5B83\u6761\u4EF6\u3002

type - field

var type: Any?
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Field \u7C7B\u578B\u3002

\u53EF\u4E0D\u586B\u5199\u7C7B\u578B\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions): IndexTypeCondition
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.67 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 ModifierConditions

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Field \u6807\u8BC6\u7B26\u7B5B\u9009\u6761\u4EF6\u3002

\u53EF\u4E0D\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6\u3002

\u7279\u522B\u6CE8\u610F

\u5B58\u5728\u591A\u4E2A IndexTypeCondition \u65F6\u9664\u4E86 order \u53EA\u4F1A\u751F\u6548\u6700\u540E\u4E00\u4E2A\u3002

order - method

fun order(): IndexTypeCondition
diff --git a/docs/assets/FieldFinder.html.c036e61d.js b/docs/assets/FieldFinder.html.ce7337a4.js
similarity index 95%
rename from docs/assets/FieldFinder.html.c036e61d.js
rename to docs/assets/FieldFinder.html.ce7337a4.js
index e8b82f3c9..ddc4f96c2 100644
--- a/docs/assets/FieldFinder.html.c036e61d.js
+++ b/docs/assets/FieldFinder.html.ce7337a4.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-42e0f0ab","path":"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html","title":"FieldFinder - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"name - field","slug":"name-field","link":"#name-field","children":[]},{"level":2,"title":"type - field","slug":"type-field","link":"#type-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"order - method","slug":"order-method","link":"#order-method","children":[]},{"level":2,"title":"name - method","slug":"name-method","link":"#name-method","children":[]},{"level":2,"title":"name - method","slug":"name-method-1","link":"#name-method-1","children":[]},{"level":2,"title":"type - method","slug":"type-method","link":"#type-method","children":[]},{"level":2,"title":"type - method","slug":"type-method-1","link":"#type-method-1","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"field - method","slug":"field-method","link":"#field-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchField - method","slug":"onnosuchfield-method","link":"#onnosuchfield-method","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]}]}],"git":{"updatedTime":1675187575000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":3}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-42e0f0ab","path":"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html","title":"FieldFinder - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"name - field","slug":"name-field","link":"#name-field","children":[]},{"level":2,"title":"type - field","slug":"type-field","link":"#type-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"order - method","slug":"order-method","link":"#order-method","children":[]},{"level":2,"title":"name - method","slug":"name-method","link":"#name-method","children":[]},{"level":2,"title":"name - method","slug":"name-method-1","link":"#name-method-1","children":[]},{"level":2,"title":"type - method","slug":"type-method","link":"#type-method","children":[]},{"level":2,"title":"type - method","slug":"type-method-1","link":"#type-method-1","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"field - method","slug":"field-method","link":"#field-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchField - method","slug":"onnosuchfield-method","link":"#onnosuchfield-method","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.md"}');export{e as data};
diff --git a/docs/assets/FieldRules.html.ba1ffc3f.js b/docs/assets/FieldRules.html.625313e0.js
similarity index 98%
rename from docs/assets/FieldRules.html.ba1ffc3f.js
rename to docs/assets/FieldRules.html.625313e0.js
index 3328d315f..cd2057891 100644
--- a/docs/assets/FieldRules.html.ba1ffc3f.js
+++ b/docs/assets/FieldRules.html.625313e0.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},l=a(`

FieldRules - class

class FieldRules internal constructor(internal val rulesData: FieldRulesData) : BaseRules
+import{_ as s,o,c as e,a}from"./app.0312b331.js";const n={},l=a(`

FieldRules - class

class FieldRules internal constructor(internal val rulesData: FieldRulesData) : BaseRules
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

Field \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

name - field

var name: String
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Field \u540D\u79F0\u3002

type - field

var type: Any?
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Field \u7C7B\u578B\u3002

\u53EF\u4E0D\u586B\u5199\u7C7B\u578B\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions)
diff --git a/docs/assets/FieldRules.html.3bfc5e31.js b/docs/assets/FieldRules.html.97be01a9.js
similarity index 98%
rename from docs/assets/FieldRules.html.3bfc5e31.js
rename to docs/assets/FieldRules.html.97be01a9.js
index 2270bbd8b..f171c8bad 100644
--- a/docs/assets/FieldRules.html.3bfc5e31.js
+++ b/docs/assets/FieldRules.html.97be01a9.js
@@ -1,4 +1,4 @@
-import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

FieldRules - class

class FieldRules internal constructor(internal val rulesData: FieldRulesData) : BaseRules
+import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

FieldRules - class

class FieldRules internal constructor(internal val rulesData: FieldRulesData) : BaseRules
 

Change Records

v1.1.0 added

Function Illustrate

Field \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

name - field

var name: String
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E Field \u540D\u79F0\u3002

type - field

var type: Any?
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E Field \u7C7B\u578B\u3002

\u53EF\u4E0D\u586B\u5199\u7C7B\u578B\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions)
diff --git a/docs/assets/GenericClass.html.a98bd49c.js b/docs/assets/GenericClass.html.88e7eecb.js
similarity index 98%
rename from docs/assets/GenericClass.html.a98bd49c.js
rename to docs/assets/GenericClass.html.88e7eecb.js
index e741ce2a9..44ea5a77b 100644
--- a/docs/assets/GenericClass.html.a98bd49c.js
+++ b/docs/assets/GenericClass.html.88e7eecb.js
@@ -1,4 +1,4 @@
-import{_ as s,o as a,c as n,a as o}from"./app.09f06ad9.js";const l={},e=o(`

GenericClass - class

class GenericClass internal constructor(private val type: ParameterizedType)
+import{_ as s,o as a,c as n,a as o}from"./app.0312b331.js";const l={},e=o(`

GenericClass - class

class GenericClass internal constructor(private val type: ParameterizedType)
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5F53\u524D Class \u7684\u6CDB\u578B\u7236\u7C7B\u64CD\u4F5C\u5BF9\u8C61\u3002

argument - method

fun argument(index: Int): Class<*>
 
inline fun <reified T> argument(index: Int): Class<T>
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

v1.1.5 \u4FEE\u6539

\u65B0\u589E\u6CDB\u578B\u8FD4\u56DE\u503C Class<T> \u65B9\u6CD5

\u529F\u80FD\u63CF\u8FF0

\u83B7\u5F97\u6CDB\u578B\u53C2\u6570\u6570\u7EC4\u4E0B\u6807\u7684 Class \u5B9E\u4F8B\u3002

`,15),p=[e];function c(t,r){return a(),n("div",null,p)}const y=s(l,[["render",c],["__file","GenericClass.html.vue"]]);export{y as default}; diff --git a/docs/assets/GenericClass.html.ffea293b.js b/docs/assets/GenericClass.html.f616491b.js similarity index 98% rename from docs/assets/GenericClass.html.ffea293b.js rename to docs/assets/GenericClass.html.f616491b.js index 406b4096c..f0d38bb66 100644 --- a/docs/assets/GenericClass.html.ffea293b.js +++ b/docs/assets/GenericClass.html.f616491b.js @@ -1,4 +1,4 @@ -import{_ as s,o as a,c as n,a as o}from"./app.09f06ad9.js";const e={},l=o(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

GenericClass - class

class GenericClass internal constructor(private val type: ParameterizedType)
+import{_ as s,o as a,c as n,a as o}from"./app.0312b331.js";const e={},l=o(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

GenericClass - class

class GenericClass internal constructor(private val type: ParameterizedType)
 

Change Records

v1.1.0 added

Function Illustrate

\u5F53\u524D Class \u7684\u6CDB\u578B\u7236\u7C7B\u64CD\u4F5C\u5BF9\u8C61\u3002

argument - method

fun argument(index: Int): Class<*>
 
inline fun <reified T> argument(index: Int): Class<T>
 

Change Records

v1.1.0 added

v1.1.5 modified

\u65B0\u589E\u6CDB\u578B\u8FD4\u56DE\u503C Class<T> \u65B9\u6CD5

Function Illustrate

\u83B7\u5F97\u6CDB\u578B\u53C2\u6570\u6570\u7EC4\u4E0B\u6807\u7684 Class \u5B9E\u4F8B\u3002

`,16),p=[l];function t(c,r){return a(),n("div",null,p)}const d=s(e,[["render",t],["__file","GenericClass.html.vue"]]);export{d as default}; diff --git a/docs/assets/GraphicsTypeFactory.html.e2899df0.js b/docs/assets/GraphicsTypeFactory.html.20526874.js similarity index 95% rename from docs/assets/GraphicsTypeFactory.html.e2899df0.js rename to docs/assets/GraphicsTypeFactory.html.20526874.js index 56dbbebdc..da7f3d833 100644 --- a/docs/assets/GraphicsTypeFactory.html.e2899df0.js +++ b/docs/assets/GraphicsTypeFactory.html.20526874.js @@ -1 +1 @@ -import{_ as a,r as c,o as s,c as r,b as o,d as n,a as i,e}from"./app.09f06ad9.js";const p={},l=i('

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

GraphicsTypeFactory - kt

Change Records

v1.0 first

Function Illustrate

\u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173 Graphics \u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

',6),d=e("\u8BE6\u60C5\u53EF "),h={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),u=e(" \u8FDB\u884C\u67E5\u770B\u3002");function k(f,g){const t=c("ExternalLinkIcon");return s(),r("div",null,[l,o("p",null,[d,o("a",h,[_,n(t)]),u])])}const y=a(p,[["render",k],["__file","GraphicsTypeFactory.html.vue"]]);export{y as default}; +import{_ as a,r as c,o as s,c as r,b as o,d as n,a as i,e}from"./app.0312b331.js";const p={},l=i('

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

GraphicsTypeFactory - kt

Change Records

v1.0 first

Function Illustrate

\u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173 Graphics \u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

',6),d=e("\u8BE6\u60C5\u53EF "),h={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),u=e(" \u8FDB\u884C\u67E5\u770B\u3002");function k(f,g){const t=c("ExternalLinkIcon");return s(),r("div",null,[l,o("p",null,[d,o("a",h,[_,n(t)]),u])])}const y=a(p,[["render",k],["__file","GraphicsTypeFactory.html.vue"]]);export{y as default}; diff --git a/docs/assets/GraphicsTypeFactory.html.521d2c84.js b/docs/assets/GraphicsTypeFactory.html.ecb0bd8d.js similarity index 94% rename from docs/assets/GraphicsTypeFactory.html.521d2c84.js rename to docs/assets/GraphicsTypeFactory.html.ecb0bd8d.js index a63d1f55a..5e08eb016 100644 --- a/docs/assets/GraphicsTypeFactory.html.521d2c84.js +++ b/docs/assets/GraphicsTypeFactory.html.ecb0bd8d.js @@ -1 +1 @@ -import{_ as c,r as a,o as r,c as s,b as o,d as n,a as p,e}from"./app.09f06ad9.js";const i={},d=p('

GraphicsTypeFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173 Graphics \u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

',5),h=e("\u8BE6\u60C5\u53EF "),l={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),k=e(" \u8FDB\u884C\u67E5\u770B\u3002");function y(f,u){const t=a("ExternalLinkIcon");return r(),s("div",null,[d,o("p",null,[h,o("a",l,[_,n(t)]),k])])}const b=c(i,[["render",y],["__file","GraphicsTypeFactory.html.vue"]]);export{b as default}; +import{_ as c,r as a,o as r,c as s,b as o,d as n,a as p,e}from"./app.0312b331.js";const i={},d=p('

GraphicsTypeFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173 Graphics \u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

',5),h=e("\u8BE6\u60C5\u53EF "),l={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),k=e(" \u8FDB\u884C\u67E5\u770B\u3002");function y(f,u){const t=a("ExternalLinkIcon");return r(),s("div",null,[d,o("p",null,[h,o("a",l,[_,n(t)]),k])])}const b=c(i,[["render",y],["__file","GraphicsTypeFactory.html.vue"]]);export{b as default}; diff --git a/docs/assets/HookClass.html.f84ce52c.js b/docs/assets/HookClass.html.9b59b543.js similarity index 97% rename from docs/assets/HookClass.html.f84ce52c.js rename to docs/assets/HookClass.html.9b59b543.js index be07d1efe..24c04a005 100644 --- a/docs/assets/HookClass.html.f84ce52c.js +++ b/docs/assets/HookClass.html.9b59b543.js @@ -1,2 +1,2 @@ -import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const l={},e=n(`

HookClass - class

class HookClass internal constructor(internal var instance: Class<*>?, internal var name: String, internal var throwable: Throwable?)
+import{_ as s,o,c as a,a as n}from"./app.0312b331.js";const l={},e=n(`

HookClass - class

class HookClass internal constructor(internal var instance: Class<*>?, internal var name: String, internal var throwable: Throwable?)
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4FEE\u6539

HookClass \u76F8\u5173\u529F\u80FD\u4E0D\u518D\u5BF9\u5916\u5F00\u653E

\u529F\u80FD\u63CF\u8FF0

\u521B\u5EFA\u4E00\u4E2A\u5F53\u524D Hook \u7684 Class \u63A5\u7BA1\u7C7B\u3002

instance \u4E3A\u5B9E\u4F8B\uFF0Cname \u4E3A\u5B9E\u4F8B\u5B8C\u6574\u5305\u540D\uFF0Cthrowable \u4E3A\u627E\u4E0D\u5230\u5B9E\u4F8B\u7684\u65F6\u5019\u629B\u51FA\u7684\u5F02\u5E38\u3002

`,9),p=[e];function c(t,r){return o(),a("div",null,p)}const y=s(l,[["render",c],["__file","HookClass.html.vue"]]);export{y as default}; diff --git a/docs/assets/HookClass.html.3c57c428.js b/docs/assets/HookClass.html.eb6b15cd.js similarity index 97% rename from docs/assets/HookClass.html.3c57c428.js rename to docs/assets/HookClass.html.eb6b15cd.js index 03fc62f5b..2787b5cf6 100644 --- a/docs/assets/HookClass.html.3c57c428.js +++ b/docs/assets/HookClass.html.eb6b15cd.js @@ -1,2 +1,2 @@ -import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},l=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

HookClass - class

class HookClass internal constructor(internal var instance: Class<*>?, internal var name: String, internal var throwable: Throwable?)
+import{_ as s,o,c as a,a as n}from"./app.0312b331.js";const e={},l=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

HookClass - class

class HookClass internal constructor(internal var instance: Class<*>?, internal var name: String, internal var throwable: Throwable?)
 

Change Records

v1.0 first

v1.1.0 modified

HookClass \u76F8\u5173\u529F\u80FD\u4E0D\u518D\u5BF9\u5916\u5F00\u653E

Function Illustrate

\u521B\u5EFA\u4E00\u4E2A\u5F53\u524D Hook \u7684 Class \u63A5\u7BA1\u7C7B\u3002

instance \u4E3A\u5B9E\u4F8B\uFF0Cname \u4E3A\u5B9E\u4F8B\u5B8C\u6574\u5305\u540D\uFF0Cthrowable \u4E3A\u627E\u4E0D\u5230\u5B9E\u4F8B\u7684\u65F6\u5019\u629B\u51FA\u7684\u5F02\u5E38\u3002

`,10),t=[l];function c(p,r){return o(),a("div",null,t)}const d=s(e,[["render",c],["__file","HookClass.html.vue"]]);export{d as default}; diff --git a/docs/assets/HookParam.html.ae01e1f2.js b/docs/assets/HookParam.html.61e05f29.js similarity index 97% rename from docs/assets/HookParam.html.ae01e1f2.js rename to docs/assets/HookParam.html.61e05f29.js index aab1d97b5..f21620e03 100644 --- a/docs/assets/HookParam.html.ae01e1f2.js +++ b/docs/assets/HookParam.html.61e05f29.js @@ -1 +1 @@ -const e=JSON.parse('{"key":"v-60cbe1b4","path":"/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html","title":"HookParam - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"args - field","slug":"args-field","link":"#args-field","children":[]},{"level":2,"title":"instance - field","slug":"instance-field","link":"#instance-field","children":[]},{"level":2,"title":"instanceOrNull - field","slug":"instanceornull-field","link":"#instanceornull-field","children":[]},{"level":2,"title":"instanceClass - field","slug":"instanceclass-field","link":"#instanceclass-field","children":[]},{"level":2,"title":"member - field","slug":"member-field","link":"#member-field","children":[]},{"level":2,"title":"method - field","slug":"method-field","link":"#method-field","children":[]},{"level":2,"title":"constructor - field","slug":"constructor-field","link":"#constructor-field","children":[]},{"level":2,"title":"result - field","slug":"result-field","link":"#result-field","children":[]},{"level":2,"title":"dataExtra - field","slug":"dataextra-field","link":"#dataextra-field","children":[]},{"level":2,"title":"hasThrowable - field","slug":"hasthrowable-field","link":"#hasthrowable-field","children":[]},{"level":2,"title":"throwable - field","slug":"throwable-field","link":"#throwable-field","children":[]},{"level":2,"title":"Throwable.throwToApp - i-ext-method","slug":"throwable-throwtoapp-i-ext-method","link":"#throwable-throwtoapp-i-ext-method","children":[]},{"level":2,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":2,"title":"instance - method","slug":"instance-method","link":"#instance-method","children":[]},{"level":2,"title":"instanceOrNull - method","slug":"instanceornull-method","link":"#instanceornull-method","children":[]},{"level":2,"title":"args - method","slug":"args-method","link":"#args-method","children":[]},{"level":2,"title":"args - method","slug":"args-method-1","link":"#args-method-1","children":[]},{"level":2,"title":"callOriginal - method","slug":"calloriginal-method","link":"#calloriginal-method","children":[]},{"level":2,"title":"invokeOriginal - method","slug":"invokeoriginal-method","link":"#invokeoriginal-method","children":[]},{"level":2,"title":"resultTrue - method","slug":"resulttrue-method","link":"#resulttrue-method","children":[]},{"level":2,"title":"resultFalse - method","slug":"resultfalse-method","link":"#resultfalse-method","children":[]},{"level":2,"title":"resultNull - method","slug":"resultnull-method","link":"#resultnull-method","children":[]},{"level":2,"title":"ArgsIndexCondition - class","slug":"argsindexcondition-class","link":"#argsindexcondition-class","children":[{"level":3,"title":"first - method","slug":"first-method","link":"#first-method","children":[]},{"level":3,"title":"last - method","slug":"last-method","link":"#last-method","children":[]}]},{"level":2,"title":"ArgsModifyer - class","slug":"argsmodifyer-class","link":"#argsmodifyer-class","children":[{"level":3,"title":"cast - method","slug":"cast-method","link":"#cast-method","children":[]},{"level":3,"title":"byte - method","slug":"byte-method","link":"#byte-method","children":[]},{"level":3,"title":"int - method","slug":"int-method","link":"#int-method","children":[]},{"level":3,"title":"long - method","slug":"long-method","link":"#long-method","children":[]},{"level":3,"title":"short - method","slug":"short-method","link":"#short-method","children":[]},{"level":3,"title":"double - method","slug":"double-method","link":"#double-method","children":[]},{"level":3,"title":"float - method","slug":"float-method","link":"#float-method","children":[]},{"level":3,"title":"string - method","slug":"string-method","link":"#string-method","children":[]},{"level":3,"title":"char - method","slug":"char-method","link":"#char-method","children":[]},{"level":3,"title":"boolean - method","slug":"boolean-method","link":"#boolean-method","children":[]},{"level":3,"title":"any - method","slug":"any-method","link":"#any-method","children":[]},{"level":3,"title":"array - method","slug":"array-method","link":"#array-method","children":[]},{"level":3,"title":"list - method","slug":"list-method","link":"#list-method","children":[]},{"level":3,"title":"set - method","slug":"set-method","link":"#set-method","children":[]},{"level":3,"title":"setNull - method","slug":"setnull-method","link":"#setnull-method","children":[]},{"level":3,"title":"setTrue - method","slug":"settrue-method","link":"#settrue-method","children":[]},{"level":3,"title":"setFalse - method","slug":"setfalse-method","link":"#setfalse-method","children":[]}]}],"git":{"updatedTime":1675171827000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md"}');export{e as data}; +const e=JSON.parse('{"key":"v-60cbe1b4","path":"/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html","title":"HookParam - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"args - field","slug":"args-field","link":"#args-field","children":[]},{"level":2,"title":"instance - field","slug":"instance-field","link":"#instance-field","children":[]},{"level":2,"title":"instanceOrNull - field","slug":"instanceornull-field","link":"#instanceornull-field","children":[]},{"level":2,"title":"instanceClass - field","slug":"instanceclass-field","link":"#instanceclass-field","children":[]},{"level":2,"title":"member - field","slug":"member-field","link":"#member-field","children":[]},{"level":2,"title":"method - field","slug":"method-field","link":"#method-field","children":[]},{"level":2,"title":"constructor - field","slug":"constructor-field","link":"#constructor-field","children":[]},{"level":2,"title":"result - field","slug":"result-field","link":"#result-field","children":[]},{"level":2,"title":"dataExtra - field","slug":"dataextra-field","link":"#dataextra-field","children":[]},{"level":2,"title":"hasThrowable - field","slug":"hasthrowable-field","link":"#hasthrowable-field","children":[]},{"level":2,"title":"throwable - field","slug":"throwable-field","link":"#throwable-field","children":[]},{"level":2,"title":"Throwable.throwToApp - i-ext-method","slug":"throwable-throwtoapp-i-ext-method","link":"#throwable-throwtoapp-i-ext-method","children":[]},{"level":2,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":2,"title":"instance - method","slug":"instance-method","link":"#instance-method","children":[]},{"level":2,"title":"instanceOrNull - method","slug":"instanceornull-method","link":"#instanceornull-method","children":[]},{"level":2,"title":"args - method","slug":"args-method","link":"#args-method","children":[]},{"level":2,"title":"args - method","slug":"args-method-1","link":"#args-method-1","children":[]},{"level":2,"title":"callOriginal - method","slug":"calloriginal-method","link":"#calloriginal-method","children":[]},{"level":2,"title":"invokeOriginal - method","slug":"invokeoriginal-method","link":"#invokeoriginal-method","children":[]},{"level":2,"title":"resultTrue - method","slug":"resulttrue-method","link":"#resulttrue-method","children":[]},{"level":2,"title":"resultFalse - method","slug":"resultfalse-method","link":"#resultfalse-method","children":[]},{"level":2,"title":"resultNull - method","slug":"resultnull-method","link":"#resultnull-method","children":[]},{"level":2,"title":"ArgsIndexCondition - class","slug":"argsindexcondition-class","link":"#argsindexcondition-class","children":[{"level":3,"title":"first - method","slug":"first-method","link":"#first-method","children":[]},{"level":3,"title":"last - method","slug":"last-method","link":"#last-method","children":[]}]},{"level":2,"title":"ArgsModifyer - class","slug":"argsmodifyer-class","link":"#argsmodifyer-class","children":[{"level":3,"title":"cast - method","slug":"cast-method","link":"#cast-method","children":[]},{"level":3,"title":"byte - method","slug":"byte-method","link":"#byte-method","children":[]},{"level":3,"title":"int - method","slug":"int-method","link":"#int-method","children":[]},{"level":3,"title":"long - method","slug":"long-method","link":"#long-method","children":[]},{"level":3,"title":"short - method","slug":"short-method","link":"#short-method","children":[]},{"level":3,"title":"double - method","slug":"double-method","link":"#double-method","children":[]},{"level":3,"title":"float - method","slug":"float-method","link":"#float-method","children":[]},{"level":3,"title":"string - method","slug":"string-method","link":"#string-method","children":[]},{"level":3,"title":"char - method","slug":"char-method","link":"#char-method","children":[]},{"level":3,"title":"boolean - method","slug":"boolean-method","link":"#boolean-method","children":[]},{"level":3,"title":"any - method","slug":"any-method","link":"#any-method","children":[]},{"level":3,"title":"array - method","slug":"array-method","link":"#array-method","children":[]},{"level":3,"title":"list - method","slug":"list-method","link":"#list-method","children":[]},{"level":3,"title":"set - method","slug":"set-method","link":"#set-method","children":[]},{"level":3,"title":"setNull - method","slug":"setnull-method","link":"#setnull-method","children":[]},{"level":3,"title":"setTrue - method","slug":"settrue-method","link":"#settrue-method","children":[]},{"level":3,"title":"setFalse - method","slug":"setfalse-method","link":"#setfalse-method","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md"}');export{e as data}; diff --git a/docs/assets/HookParam.html.1dc8c1c3.js b/docs/assets/HookParam.html.7f4b3657.js similarity index 99% rename from docs/assets/HookParam.html.1dc8c1c3.js rename to docs/assets/HookParam.html.7f4b3657.js index 477832370..8d248390d 100644 --- a/docs/assets/HookParam.html.1dc8c1c3.js +++ b/docs/assets/HookParam.html.7f4b3657.js @@ -1,4 +1,4 @@ -import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},l=n(`

HookParam - class

class HookParam internal constructor(
+import{_ as s,o,c as a,a as n}from"./app.0312b331.js";const e={},l=n(`

HookParam - class

class HookParam internal constructor(
     private val creatorInstance: YukiMemberHookCreator,
     private var paramId: String,
     private var param: YukiHookCallback.Param?
@@ -6,7 +6,7 @@ import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},l=n(`

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4FEE\u6539

\u79FB\u52A8 HookParamWrapper \u5230 YukiHookCallback.Param

\u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 creater \u547D\u540D\u5230 creator

v1.1.5 \u4FEE\u6539

\u65B0\u589E paramId \u53C2\u6570

\u529F\u80FD\u63CF\u8FF0

Hook \u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u76EE\u6807\u5BF9\u8C61\u5B9E\u73B0\u7C7B\u3002

args - field

val args: Array<Any?>
 

\u53D8\u66F4\u8BB0\u5F55

\u5728 v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61 member \u6216 constructor \u7684\u53C2\u6570\u5BF9\u8C61\u6570\u7EC4\u3002

\u8FD9\u91CC\u7684\u6570\u7EC4\u6BCF\u9879\u7C7B\u578B\u9ED8\u8BA4\u4E3A Any\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 args \u65B9\u6CD5\u6765\u5B9E\u73B0 ArgsModifyer.cast \u529F\u80FD\u3002

firstArgs - field

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.75 \u79FB\u9664

\u8BF7\u4F7F\u7528 args(index = 0) \u6216 args().first()

lastArgs - field

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.75 \u79FB\u9664

\u8BF7\u4F7F\u7528 args().last()

instance - field

val instance: Any
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

\u7279\u522B\u6CE8\u610F

\u5982\u679C\u4F60\u5F53\u524D Hook \u7684\u5BF9\u8C61\u662F\u4E00\u4E2A\u9759\u6001\uFF0C\u90A3\u4E48\u5B83\u5C06\u4E0D\u5B58\u5728\u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

\u5982\u679C\u4F60\u4E0D\u786E\u5B9A\u5F53\u524D\u5B9E\u4F8B\u7684\u5BF9\u8C61\u662F\u5426\u4E3A null\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 instanceOrNull\u3002

instanceOrNull - field

val instanceOrNull: Any?
-

\u53D8\u66F4\u8BB0\u5F55

v1.1.7 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

\u7279\u522B\u6CE8\u610F

\u5982\u679C\u4F60\u5F53\u524D Hook \u7684\u5BF9\u8C61\u662F\u4E00\u4E2A\u9759\u6001\uFF0C\u90A3\u4E48\u5B83\u5C06\u4E0D\u5B58\u5728\u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

instanceClass - field

val instanceClass: Class<*>
+

\u53D8\u66F4\u8BB0\u5F55

v1.1.8 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

\u7279\u522B\u6CE8\u610F

\u5982\u679C\u4F60\u5F53\u524D Hook \u7684\u5BF9\u8C61\u662F\u4E00\u4E2A\u9759\u6001\uFF0C\u90A3\u4E48\u5B83\u5C06\u4E0D\u5B58\u5728\u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

instanceClass - field

val instanceClass: Class<*>
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u7C7B\u5BF9\u8C61\u3002

member - field

val member: Member
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 Member\u3002

\u5728\u4E0D\u786E\u5B9A Member \u7C7B\u578B\u4E3A Method \u6216 Constructor \u65F6\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u3002

method - field

val method: Method
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684\u65B9\u6CD5\u3002

constructor - field

val constructor: Constructor
@@ -27,7 +27,7 @@ import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},l=n(`

\u53D8\u66F4\u8BB0\u5F55

v1.0.75 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u8FD4\u56DE\u503C T\u3002

firstArg - method

\u53D8\u66F4\u8BB0\u5F55

v1.0.66 \u65B0\u589E

v1.0.75 \u79FB\u9664

lastArgs - method

\u53D8\u66F4\u8BB0\u5F55

v1.0.66 \u65B0\u589E

v1.0.75 \u79FB\u9664

instance - method

inline fun <reified T> instance(): T
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61 T\u3002

\u529F\u80FD\u793A\u4F8B

\u4F60\u53EF\u4EE5\u901A\u8FC7 instance \u65B9\u6CD5\u8F7B\u677E\u4F7F\u7528\u6CDB\u578B cast \u4E3A\u76EE\u6807\u5BF9\u8C61\u7684\u7C7B\u578B\u3002

\u793A\u4F8B\u5982\u4E0B

instance<Activity>().finish()
 

instanceOrNull - method

inline fun <reified T> instanceOrNull(): T?
-

\u53D8\u66F4\u8BB0\u5F55

v1.1.7 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61 T\u3002

\u529F\u80FD\u793A\u4F8B

\u7528\u6CD5\u8BF7\u53C2\u8003 instance \u65B9\u6CD5\u3002

args - method

fun args(): ArgsIndexCondition
+

\u53D8\u66F4\u8BB0\u5F55

v1.1.8 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61 T\u3002

\u529F\u80FD\u793A\u4F8B

\u7528\u6CD5\u8BF7\u53C2\u8003 instance \u65B9\u6CD5\u3002

args - method

fun args(): ArgsIndexCondition
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.75 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u53C2\u6570\u6570\u7EC4\u4E0B\u6807\u5B9E\u4F8B\u5316\u7C7B\u3002

args - method

fun args(index: Int): ArgsModifyer
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.75 \u4FEE\u6539

\u9ED8\u8BA4\u503C index = 0 \u79FB\u52A8\u5230\u65B0\u7684\u4F7F\u7528\u65B9\u6CD5 args().first()

\u529F\u80FD\u63CF\u8FF0

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u53C2\u6570\u5B9E\u4F8B\u5316\u5BF9\u8C61\u7C7B\u3002

\u529F\u80FD\u793A\u4F8B

\u4F60\u53EF\u4EE5\u901A\u8FC7 args \u65B9\u6CD5\u4FEE\u6539\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u53C2\u6570\u5185\u5BB9\u3002

\u4F60\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 set \u65B9\u6CD5\u8BBE\u7F6E param \u4E3A\u4F60\u7684\u76EE\u6807\u5B9E\u4F8B\uFF0C\u63A5\u53D7 Any \u7C7B\u578B\u3002

\u7279\u522B\u6CE8\u610F

\u8BF7\u786E\u4FDD param \u7C7B\u578B\u4E3A\u4F60\u7684\u76EE\u6807\u5B9E\u4F8B\u7C7B\u578B\u3002

\u793A\u4F8B\u5982\u4E0B

args(index = 0).set("modify the value")
 

\u4F60\u53EF\u4EE5\u8FD9\u6837\u76F4\u63A5\u8BBE\u7F6E\u7B2C\u4E00\u4F4D param \u7684\u503C\u3002

\u793A\u4F8B\u5982\u4E0B

args().first().set("modify the value")
diff --git a/docs/assets/HookParam.html.348e4551.js b/docs/assets/HookParam.html.90ff717c.js
similarity index 99%
rename from docs/assets/HookParam.html.348e4551.js
rename to docs/assets/HookParam.html.90ff717c.js
index 04b7d1e61..7c9c90edb 100644
--- a/docs/assets/HookParam.html.348e4551.js
+++ b/docs/assets/HookParam.html.90ff717c.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

HookParam - class

class HookParam internal constructor(
+import{_ as s,o,c as e,a}from"./app.0312b331.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

HookParam - class

class HookParam internal constructor(
     private val creatorInstance: YukiMemberHookCreator,
     private var paramId: String,
     private var param: YukiHookCallback.Param?
@@ -6,7 +6,7 @@ import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},l=a(`

Change Records

v1.0 first

v1.1.0 modified

\u79FB\u52A8 HookParamWrapper \u5230 YukiHookCallback.Param

\u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 creater \u547D\u540D\u5230 creator

v1.1.5 modified

\u65B0\u589E paramId \u53C2\u6570

Function Illustrate

Hook \u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u76EE\u6807\u5BF9\u8C61\u5B9E\u73B0\u7C7B\u3002

args - field

val args: Array<Any?>
 

Change Records

\u5728 v1.0 \u6DFB\u52A0

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61 member \u6216 constructor \u7684\u53C2\u6570\u5BF9\u8C61\u6570\u7EC4\u3002

\u8FD9\u91CC\u7684\u6570\u7EC4\u6BCF\u9879\u7C7B\u578B\u9ED8\u8BA4\u4E3A Any\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 args \u65B9\u6CD5\u6765\u5B9E\u73B0 ArgsModifyer.cast \u529F\u80FD\u3002

firstArgs - field

Change Records

v1.0 first

v1.0.75 removed

\u8BF7\u4F7F\u7528 args(index = 0) \u6216 args().first()

lastArgs - field

Change Records

v1.0 first

v1.0.75 removed

\u8BF7\u4F7F\u7528 args().last()

instance - field

val instance: Any
 

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

Pay Attention

\u5982\u679C\u4F60\u5F53\u524D Hook \u7684\u5BF9\u8C61\u662F\u4E00\u4E2A\u9759\u6001\uFF0C\u90A3\u4E48\u5B83\u5C06\u4E0D\u5B58\u5728\u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

\u5982\u679C\u4F60\u4E0D\u786E\u5B9A\u5F53\u524D\u5B9E\u4F8B\u7684\u5BF9\u8C61\u662F\u5426\u4E3A null\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 instanceOrNull\u3002

instanceOrNull - field

val instanceOrNull: Any?
-

Change Records

v1.1.7 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

Pay Attention

\u5982\u679C\u4F60\u5F53\u524D Hook \u7684\u5BF9\u8C61\u662F\u4E00\u4E2A\u9759\u6001\uFF0C\u90A3\u4E48\u5B83\u5C06\u4E0D\u5B58\u5728\u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

instanceClass - field

val instanceClass: Class<*>
+

Change Records

v1.1.8 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

Pay Attention

\u5982\u679C\u4F60\u5F53\u524D Hook \u7684\u5BF9\u8C61\u662F\u4E00\u4E2A\u9759\u6001\uFF0C\u90A3\u4E48\u5B83\u5C06\u4E0D\u5B58\u5728\u5B9E\u4F8B\u7684\u5BF9\u8C61\u3002

instanceClass - field

val instanceClass: Class<*>
 

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u7C7B\u5BF9\u8C61\u3002

member - field

val member: Member
 

Change Records

v1.1.0 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 Member\u3002

\u5728\u4E0D\u786E\u5B9A Member \u7C7B\u578B\u4E3A Method \u6216 Constructor \u65F6\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u3002

method - field

val method: Method
 

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684\u65B9\u6CD5\u3002

constructor - field

val constructor: Constructor
@@ -27,7 +27,7 @@ import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},l=a(`

Change Records

v1.0.75 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u8FD4\u56DE\u503C T\u3002

firstArg - method

Change Records

v1.0.66 added

v1.0.75 removed

lastArgs - method

Change Records

v1.0.66 added

v1.0.75 removed

instance - method

inline fun <reified T> instance(): T
 

Change Records

v1.0 first

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61 T\u3002

Function Example

\u4F60\u53EF\u4EE5\u901A\u8FC7 instance \u65B9\u6CD5\u8F7B\u677E\u4F7F\u7528\u6CDB\u578B cast \u4E3A\u76EE\u6807\u5BF9\u8C61\u7684\u7C7B\u578B\u3002

The following example

instance<Activity>().finish()
 

instanceOrNull - method

inline fun <reified T> instanceOrNull(): T?
-

Function Illustrate

v1.1.7 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61 T\u3002

Function Example

\u7528\u6CD5\u8BF7\u53C2\u8003 instance \u65B9\u6CD5\u3002

args - method

fun args(): ArgsIndexCondition
+

Function Illustrate

v1.1.8 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u5BF9\u8C61 T\u3002

Function Example

\u7528\u6CD5\u8BF7\u53C2\u8003 instance \u65B9\u6CD5\u3002

args - method

fun args(): ArgsIndexCondition
 

Change Records

v1.0.75 added

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u53C2\u6570\u6570\u7EC4\u4E0B\u6807\u5B9E\u4F8B\u5316\u7C7B\u3002

args - method

fun args(index: Int): ArgsModifyer
 

Change Records

v1.0 first

v1.0.75 modified

\u9ED8\u8BA4\u503C index = 0 \u79FB\u52A8\u5230\u65B0\u7684\u4F7F\u7528\u65B9\u6CD5 args().first()

Function Illustrate

\u83B7\u53D6\u5F53\u524D Hook \u5BF9\u8C61\u7684 method \u6216 constructor \u7684\u53C2\u6570\u5B9E\u4F8B\u5316\u5BF9\u8C61\u7C7B\u3002

Function Example

\u4F60\u53EF\u4EE5\u901A\u8FC7 args \u65B9\u6CD5\u4FEE\u6539\u5F53\u524D Hook \u5B9E\u4F8B\u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u7684\u53C2\u6570\u5185\u5BB9\u3002

\u4F60\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 set \u65B9\u6CD5\u8BBE\u7F6E param \u4E3A\u4F60\u7684\u76EE\u6807\u5B9E\u4F8B\uFF0C\u63A5\u53D7 Any \u7C7B\u578B\u3002

Pay Attention

\u8BF7\u786E\u4FDD param \u7C7B\u578B\u4E3A\u4F60\u7684\u76EE\u6807\u5B9E\u4F8B\u7C7B\u578B\u3002

The following example

args(index = 0).set("modify the value")
 

\u4F60\u53EF\u4EE5\u8FD9\u6837\u76F4\u63A5\u8BBE\u7F6E\u7B2C\u4E00\u4F4D param \u7684\u503C\u3002

The following example

args().first().set("modify the value")
diff --git a/docs/assets/HookParam.html.b6aa94a9.js b/docs/assets/HookParam.html.9db30e67.js
similarity index 97%
rename from docs/assets/HookParam.html.b6aa94a9.js
rename to docs/assets/HookParam.html.9db30e67.js
index 59f70273f..0b8654241 100644
--- a/docs/assets/HookParam.html.b6aa94a9.js
+++ b/docs/assets/HookParam.html.9db30e67.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-75a9b636","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html","title":"HookParam - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"args - field","slug":"args-field","link":"#args-field","children":[]},{"level":2,"title":"instance - field","slug":"instance-field","link":"#instance-field","children":[]},{"level":2,"title":"instanceOrNull - field","slug":"instanceornull-field","link":"#instanceornull-field","children":[]},{"level":2,"title":"instanceClass - field","slug":"instanceclass-field","link":"#instanceclass-field","children":[]},{"level":2,"title":"member - field","slug":"member-field","link":"#member-field","children":[]},{"level":2,"title":"method - field","slug":"method-field","link":"#method-field","children":[]},{"level":2,"title":"constructor - field","slug":"constructor-field","link":"#constructor-field","children":[]},{"level":2,"title":"result - field","slug":"result-field","link":"#result-field","children":[]},{"level":2,"title":"dataExtra - field","slug":"dataextra-field","link":"#dataextra-field","children":[]},{"level":2,"title":"hasThrowable - field","slug":"hasthrowable-field","link":"#hasthrowable-field","children":[]},{"level":2,"title":"throwable - field","slug":"throwable-field","link":"#throwable-field","children":[]},{"level":2,"title":"Throwable.throwToApp - i-ext-method","slug":"throwable-throwtoapp-i-ext-method","link":"#throwable-throwtoapp-i-ext-method","children":[]},{"level":2,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":2,"title":"instance - method","slug":"instance-method","link":"#instance-method","children":[]},{"level":2,"title":"instanceOrNull - method","slug":"instanceornull-method","link":"#instanceornull-method","children":[]},{"level":2,"title":"args - method","slug":"args-method","link":"#args-method","children":[]},{"level":2,"title":"args - method","slug":"args-method-1","link":"#args-method-1","children":[]},{"level":2,"title":"callOriginal - method","slug":"calloriginal-method","link":"#calloriginal-method","children":[]},{"level":2,"title":"invokeOriginal - method","slug":"invokeoriginal-method","link":"#invokeoriginal-method","children":[]},{"level":2,"title":"resultTrue - method","slug":"resulttrue-method","link":"#resulttrue-method","children":[]},{"level":2,"title":"resultFalse - method","slug":"resultfalse-method","link":"#resultfalse-method","children":[]},{"level":2,"title":"resultNull - method","slug":"resultnull-method","link":"#resultnull-method","children":[]},{"level":2,"title":"ArgsIndexCondition - class","slug":"argsindexcondition-class","link":"#argsindexcondition-class","children":[{"level":3,"title":"first - method","slug":"first-method","link":"#first-method","children":[]},{"level":3,"title":"last - method","slug":"last-method","link":"#last-method","children":[]}]},{"level":2,"title":"ArgsModifyer - class","slug":"argsmodifyer-class","link":"#argsmodifyer-class","children":[{"level":3,"title":"cast - method","slug":"cast-method","link":"#cast-method","children":[]},{"level":3,"title":"byte - method","slug":"byte-method","link":"#byte-method","children":[]},{"level":3,"title":"int - method","slug":"int-method","link":"#int-method","children":[]},{"level":3,"title":"long - method","slug":"long-method","link":"#long-method","children":[]},{"level":3,"title":"short - method","slug":"short-method","link":"#short-method","children":[]},{"level":3,"title":"double - method","slug":"double-method","link":"#double-method","children":[]},{"level":3,"title":"float - method","slug":"float-method","link":"#float-method","children":[]},{"level":3,"title":"string - method","slug":"string-method","link":"#string-method","children":[]},{"level":3,"title":"char - method","slug":"char-method","link":"#char-method","children":[]},{"level":3,"title":"boolean - method","slug":"boolean-method","link":"#boolean-method","children":[]},{"level":3,"title":"any - method","slug":"any-method","link":"#any-method","children":[]},{"level":3,"title":"array - method","slug":"array-method","link":"#array-method","children":[]},{"level":3,"title":"list - method","slug":"list-method","link":"#list-method","children":[]},{"level":3,"title":"set - method","slug":"set-method","link":"#set-method","children":[]},{"level":3,"title":"setNull - method","slug":"setnull-method","link":"#setnull-method","children":[]},{"level":3,"title":"setTrue - method","slug":"settrue-method","link":"#settrue-method","children":[]},{"level":3,"title":"setFalse - method","slug":"setfalse-method","link":"#setfalse-method","children":[]}]}],"git":{"updatedTime":1675171827000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-75a9b636","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html","title":"HookParam - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"args - field","slug":"args-field","link":"#args-field","children":[]},{"level":2,"title":"instance - field","slug":"instance-field","link":"#instance-field","children":[]},{"level":2,"title":"instanceOrNull - field","slug":"instanceornull-field","link":"#instanceornull-field","children":[]},{"level":2,"title":"instanceClass - field","slug":"instanceclass-field","link":"#instanceclass-field","children":[]},{"level":2,"title":"member - field","slug":"member-field","link":"#member-field","children":[]},{"level":2,"title":"method - field","slug":"method-field","link":"#method-field","children":[]},{"level":2,"title":"constructor - field","slug":"constructor-field","link":"#constructor-field","children":[]},{"level":2,"title":"result - field","slug":"result-field","link":"#result-field","children":[]},{"level":2,"title":"dataExtra - field","slug":"dataextra-field","link":"#dataextra-field","children":[]},{"level":2,"title":"hasThrowable - field","slug":"hasthrowable-field","link":"#hasthrowable-field","children":[]},{"level":2,"title":"throwable - field","slug":"throwable-field","link":"#throwable-field","children":[]},{"level":2,"title":"Throwable.throwToApp - i-ext-method","slug":"throwable-throwtoapp-i-ext-method","link":"#throwable-throwtoapp-i-ext-method","children":[]},{"level":2,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":2,"title":"instance - method","slug":"instance-method","link":"#instance-method","children":[]},{"level":2,"title":"instanceOrNull - method","slug":"instanceornull-method","link":"#instanceornull-method","children":[]},{"level":2,"title":"args - method","slug":"args-method","link":"#args-method","children":[]},{"level":2,"title":"args - method","slug":"args-method-1","link":"#args-method-1","children":[]},{"level":2,"title":"callOriginal - method","slug":"calloriginal-method","link":"#calloriginal-method","children":[]},{"level":2,"title":"invokeOriginal - method","slug":"invokeoriginal-method","link":"#invokeoriginal-method","children":[]},{"level":2,"title":"resultTrue - method","slug":"resulttrue-method","link":"#resulttrue-method","children":[]},{"level":2,"title":"resultFalse - method","slug":"resultfalse-method","link":"#resultfalse-method","children":[]},{"level":2,"title":"resultNull - method","slug":"resultnull-method","link":"#resultnull-method","children":[]},{"level":2,"title":"ArgsIndexCondition - class","slug":"argsindexcondition-class","link":"#argsindexcondition-class","children":[{"level":3,"title":"first - method","slug":"first-method","link":"#first-method","children":[]},{"level":3,"title":"last - method","slug":"last-method","link":"#last-method","children":[]}]},{"level":2,"title":"ArgsModifyer - class","slug":"argsmodifyer-class","link":"#argsmodifyer-class","children":[{"level":3,"title":"cast - method","slug":"cast-method","link":"#cast-method","children":[]},{"level":3,"title":"byte - method","slug":"byte-method","link":"#byte-method","children":[]},{"level":3,"title":"int - method","slug":"int-method","link":"#int-method","children":[]},{"level":3,"title":"long - method","slug":"long-method","link":"#long-method","children":[]},{"level":3,"title":"short - method","slug":"short-method","link":"#short-method","children":[]},{"level":3,"title":"double - method","slug":"double-method","link":"#double-method","children":[]},{"level":3,"title":"float - method","slug":"float-method","link":"#float-method","children":[]},{"level":3,"title":"string - method","slug":"string-method","link":"#string-method","children":[]},{"level":3,"title":"char - method","slug":"char-method","link":"#char-method","children":[]},{"level":3,"title":"boolean - method","slug":"boolean-method","link":"#boolean-method","children":[]},{"level":3,"title":"any - method","slug":"any-method","link":"#any-method","children":[]},{"level":3,"title":"array - method","slug":"array-method","link":"#array-method","children":[]},{"level":3,"title":"list - method","slug":"list-method","link":"#list-method","children":[]},{"level":3,"title":"set - method","slug":"set-method","link":"#set-method","children":[]},{"level":3,"title":"setNull - method","slug":"setnull-method","link":"#setnull-method","children":[]},{"level":3,"title":"setTrue - method","slug":"settrue-method","link":"#settrue-method","children":[]},{"level":3,"title":"setFalse - method","slug":"setfalse-method","link":"#setfalse-method","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":6}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md"}');export{e as data};
diff --git a/docs/assets/HookResources.html.a6c7f5fa.js b/docs/assets/HookResources.html.ac6970af.js
similarity index 96%
rename from docs/assets/HookResources.html.a6c7f5fa.js
rename to docs/assets/HookResources.html.ac6970af.js
index 7f8bd98d4..2500a4143 100644
--- a/docs/assets/HookResources.html.a6c7f5fa.js
+++ b/docs/assets/HookResources.html.ac6970af.js
@@ -1,2 +1,2 @@
-import{_ as s,o,c as e,a as n}from"./app.09f06ad9.js";const a={},c=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

HookResources - class

class HookResources internal constructor(var instance: YukiResources?)
+import{_ as s,o,c as e,a as n}from"./app.0312b331.js";const a={},c=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

HookResources - class

class HookResources internal constructor(var instance: YukiResources?)
 

Change Records

v1.0.80 added

Function Illustrate

\u521B\u5EFA\u4E00\u4E2A\u5F53\u524D Hook \u7684 YukiResources \u63A5\u7BA1\u7C7B\u3002

`,7),t=[c];function r(l,p){return o(),e("div",null,t)}const u=s(a,[["render",r],["__file","HookResources.html.vue"]]);export{u as default}; diff --git a/docs/assets/HookResources.html.7f8f3edf.js b/docs/assets/HookResources.html.e3b4f06e.js similarity index 95% rename from docs/assets/HookResources.html.7f8f3edf.js rename to docs/assets/HookResources.html.e3b4f06e.js index f627e0a73..b43b7f6b1 100644 --- a/docs/assets/HookResources.html.7f8f3edf.js +++ b/docs/assets/HookResources.html.e3b4f06e.js @@ -1,2 +1,2 @@ -import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const c={},n=a(`

HookResources - class

class HookResources internal constructor(var instance: YukiResources?)
+import{_ as s,o,c as e,a}from"./app.0312b331.js";const c={},n=a(`

HookResources - class

class HookResources internal constructor(var instance: YukiResources?)
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.80 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u521B\u5EFA\u4E00\u4E2A\u5F53\u524D Hook \u7684 YukiResources \u63A5\u7BA1\u7C7B\u3002

`,6),l=[n];function r(t,p){return o(),e("div",null,l)}const i=s(c,[["render",r],["__file","HookResources.html.vue"]]);export{i as default}; diff --git a/docs/assets/IYukiHookXposedInit.html.409cc7f4.js b/docs/assets/IYukiHookXposedInit.html.215a36b4.js similarity index 98% rename from docs/assets/IYukiHookXposedInit.html.409cc7f4.js rename to docs/assets/IYukiHookXposedInit.html.215a36b4.js index 346508e8a..a0633e994 100644 --- a/docs/assets/IYukiHookXposedInit.html.409cc7f4.js +++ b/docs/assets/IYukiHookXposedInit.html.215a36b4.js @@ -1,4 +1,4 @@ -import{_ as o,o as e,c as s,a as n}from"./app.09f06ad9.js";const p={},a=n(`

IYukiHookXposedInit - interface

interface IYukiHookXposedInit
+import{_ as o,o as e,c as s,a as n}from"./app.0312b331.js";const p={},a=n(`

IYukiHookXposedInit - interface

interface IYukiHookXposedInit
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.80 \u4FEE\u6539 \u4F5C\u5E9F

\u4F5C\u5E9F\u4E86 YukiHookXposedInitProxy \u540D\u79F0\u4F46\u4FDD\u7559\u63A5\u53E3

\u8F6C\u79FB\u5230 IYukiHookXposedInit \u65B0\u540D\u79F0

\u529F\u80FD\u63CF\u8FF0

YukiHookAPI \u7684 Xposed \u88C5\u8F7D API \u8C03\u7528\u63A5\u53E3\u3002

onInit - method

fun onInit()
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.5 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u914D\u7F6E YukiHookAPI.Configs \u7684\u521D\u59CB\u5316\u65B9\u6CD5\u3002

\u7279\u522B\u6CE8\u610F

\u5728\u8FD9\u91CC\u53EA\u80FD\u8FDB\u884C\u521D\u59CB\u5316\u914D\u7F6E\uFF0C\u4E0D\u80FD\u8FDB\u884C Hook \u64CD\u4F5C\u3002

\u6B64\u65B9\u6CD5\u53EF\u9009\uFF0C\u4F60\u4E5F\u53EF\u4EE5\u9009\u62E9\u4E0D\u5BF9 YukiHookAPI.Configs \u8FDB\u884C\u914D\u7F6E\u3002

onHook - method

fun onHook()
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

Xposed API \u7684\u6A21\u5757\u88C5\u8F7D\u8C03\u7528\u5165\u53E3\u65B9\u6CD5\u3002

onXposedEvent - method

fun onXposedEvent()
diff --git a/docs/assets/IYukiHookXposedInit.html.85343862.js b/docs/assets/IYukiHookXposedInit.html.a1792104.js
similarity index 98%
rename from docs/assets/IYukiHookXposedInit.html.85343862.js
rename to docs/assets/IYukiHookXposedInit.html.a1792104.js
index 7b3fc773b..02faf1f95 100644
--- a/docs/assets/IYukiHookXposedInit.html.85343862.js
+++ b/docs/assets/IYukiHookXposedInit.html.a1792104.js
@@ -1,4 +1,4 @@
-import{_ as o,o as e,c as s,a as n}from"./app.09f06ad9.js";const a={},t=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

IYukiHookXposedInit - interface

interface IYukiHookXposedInit
+import{_ as o,o as e,c as s,a as n}from"./app.0312b331.js";const a={},t=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

IYukiHookXposedInit - interface

interface IYukiHookXposedInit
 

Change Records

v1.0 first

v1.0.80 modified deprecated

\u4F5C\u5E9F\u4E86 YukiHookXposedInitProxy \u540D\u79F0\u4F46\u4FDD\u7559\u63A5\u53E3

\u8F6C\u79FB\u5230 IYukiHookXposedInit \u65B0\u540D\u79F0

Function Illustrate

YukiHookAPI \u7684 Xposed \u88C5\u8F7D API \u8C03\u7528\u63A5\u53E3\u3002

onInit - method

fun onInit()
 

Change Records

v1.0.5 added

Function Illustrate

\u914D\u7F6E YukiHookAPI.Configs \u7684\u521D\u59CB\u5316\u65B9\u6CD5\u3002

Pay Attention

\u5728\u8FD9\u91CC\u53EA\u80FD\u8FDB\u884C\u521D\u59CB\u5316\u914D\u7F6E\uFF0C\u4E0D\u80FD\u8FDB\u884C Hook \u64CD\u4F5C\u3002

\u6B64\u65B9\u6CD5\u53EF\u9009\uFF0C\u4F60\u4E5F\u53EF\u4EE5\u9009\u62E9\u4E0D\u5BF9 YukiHookAPI.Configs \u8FDB\u884C\u914D\u7F6E\u3002

onHook - method

fun onHook()
 

Change Records

v1.0 first

Function Illustrate

Xposed API \u7684\u6A21\u5757\u88C5\u8F7D\u8C03\u7528\u5165\u53E3\u65B9\u6CD5\u3002

onXposedEvent - method

fun onXposedEvent()
diff --git a/docs/assets/InjectYukiHookWithXposed.html.719f3908.js b/docs/assets/InjectYukiHookWithXposed.html.e7b82c22.js
similarity index 97%
rename from docs/assets/InjectYukiHookWithXposed.html.719f3908.js
rename to docs/assets/InjectYukiHookWithXposed.html.e7b82c22.js
index c4aae3b07..5ec0c3831 100644
--- a/docs/assets/InjectYukiHookWithXposed.html.719f3908.js
+++ b/docs/assets/InjectYukiHookWithXposed.html.e7b82c22.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as n,a}from"./app.09f06ad9.js";const e={},p=a(`

InjectYukiHookWithXposed - annotation

annotation class InjectYukiHookWithXposed(
+import{_ as s,o,c as n,a}from"./app.0312b331.js";const e={},p=a(`

InjectYukiHookWithXposed - annotation

annotation class InjectYukiHookWithXposed(
     val sourcePath: String,
     val modulePackageName: String,
     val entryClassName: String,
diff --git a/docs/assets/InjectYukiHookWithXposed.html.d0a3ec72.js b/docs/assets/InjectYukiHookWithXposed.html.fea16d37.js
similarity index 97%
rename from docs/assets/InjectYukiHookWithXposed.html.d0a3ec72.js
rename to docs/assets/InjectYukiHookWithXposed.html.fea16d37.js
index 3729ab5da..69ebb90d6 100644
--- a/docs/assets/InjectYukiHookWithXposed.html.d0a3ec72.js
+++ b/docs/assets/InjectYukiHookWithXposed.html.fea16d37.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as n,a}from"./app.09f06ad9.js";const e={},t=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

InjectYukiHookWithXposed - annotation

annotation class InjectYukiHookWithXposed(
+import{_ as s,o,c as n,a}from"./app.0312b331.js";const e={},t=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

InjectYukiHookWithXposed - annotation

annotation class InjectYukiHookWithXposed(
     val sourcePath: String,
     val modulePackageName: String,
     val entryClassName: String,
diff --git a/docs/assets/LoggerFactory.html.b79c9fde.js b/docs/assets/LoggerFactory.html.25110f87.js
similarity index 99%
rename from docs/assets/LoggerFactory.html.b79c9fde.js
rename to docs/assets/LoggerFactory.html.25110f87.js
index 04c5e3977..0bda19f5b 100644
--- a/docs/assets/LoggerFactory.html.b79c9fde.js
+++ b/docs/assets/LoggerFactory.html.25110f87.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as a,a as e}from"./app.09f06ad9.js";const n={},p=e(`

LoggerFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F YukiHookAPI \u7684\u65E5\u5FD7\u5C01\u88C5\u7C7B\uFF0C\u53EF\u5B9E\u73B0\u540C\u65F6\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\u7684\u529F\u80FD\u3002

LoggerType - class

enum class LoggerType
+import{_ as s,o,c as a,a as e}from"./app.0312b331.js";const n={},p=e(`

LoggerFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F YukiHookAPI \u7684\u65E5\u5FD7\u5C01\u88C5\u7C7B\uFF0C\u53EF\u5B9E\u73B0\u540C\u65F6\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\u7684\u529F\u80FD\u3002

LoggerType - class

enum class LoggerType
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u9700\u8981\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\u3002

\u51B3\u5B9A\u4E8E\u6A21\u5757\u4E0E (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u7684\u6253\u5370\u65B9\u5F0F\u3002

LOGD - enum

LOGD
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4EC5\u4F7F\u7528 android.util.Log\u3002

XPOSEDBRIDGE - enum

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

v1.1.5 \u4F5C\u5E9F

\u8BF7\u8F6C\u79FB\u5230 XPOSED_ENVIRONMENT

XPOSED_ENVIRONMENT - enum

XPOSED_ENVIRONMENT
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.5 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4EC5\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u3002

\u7279\u522B\u6CE8\u610F

\u53EA\u80FD\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528\uFF0C\u6A21\u5757\u73AF\u5883\u5C06\u4E0D\u751F\u6548\u3002

SCOPE - enum

SCOPE
diff --git a/docs/assets/LoggerFactory.html.79463cd1.js b/docs/assets/LoggerFactory.html.f83822e7.js
similarity index 99%
rename from docs/assets/LoggerFactory.html.79463cd1.js
rename to docs/assets/LoggerFactory.html.f83822e7.js
index 3a24aa252..00efe3724 100644
--- a/docs/assets/LoggerFactory.html.79463cd1.js
+++ b/docs/assets/LoggerFactory.html.f83822e7.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

LoggerFactory - kt

Change Records

v1.0 first

Function Illustrate

\u8FD9\u662F YukiHookAPI \u7684\u65E5\u5FD7\u5C01\u88C5\u7C7B\uFF0C\u53EF\u5B9E\u73B0\u540C\u65F6\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\u7684\u529F\u80FD\u3002

LoggerType - class

enum class LoggerType
+import{_ as s,o,c as e,a}from"./app.0312b331.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

LoggerFactory - kt

Change Records

v1.0 first

Function Illustrate

\u8FD9\u662F YukiHookAPI \u7684\u65E5\u5FD7\u5C01\u88C5\u7C7B\uFF0C\u53EF\u5B9E\u73B0\u540C\u65F6\u5411 Logcat \u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\u6253\u5370\u65E5\u5FD7\u7684\u529F\u80FD\u3002

LoggerType - class

enum class LoggerType
 

Change Records

v1.1.0 added

Function Illustrate

\u9700\u8981\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\u3002

\u51B3\u5B9A\u4E8E\u6A21\u5757\u4E0E (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u7684\u6253\u5370\u65B9\u5F0F\u3002

LOGD - enum

LOGD
 

Change Records

v1.1.0 added

Function Illustrate

\u4EC5\u4F7F\u7528 android.util.Log\u3002

XPOSEDBRIDGE - enum

Change Records

v1.1.0 added

v1.1.5 deprecated

\u8BF7\u8F6C\u79FB\u5230 XPOSED_ENVIRONMENT

XPOSED_ENVIRONMENT - enum

XPOSED_ENVIRONMENT
 

Change Records

v1.1.5 added

Function Illustrate

\u4EC5\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u3002

Pay Attention

\u53EA\u80FD\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528\uFF0C\u6A21\u5757\u73AF\u5883\u5C06\u4E0D\u751F\u6548\u3002

SCOPE - enum

SCOPE
diff --git a/docs/assets/MemberRules.html.6452439d.js b/docs/assets/MemberRules.html.7794296d.js
similarity index 97%
rename from docs/assets/MemberRules.html.6452439d.js
rename to docs/assets/MemberRules.html.7794296d.js
index 8b31e4fd0..0a90253bf 100644
--- a/docs/assets/MemberRules.html.6452439d.js
+++ b/docs/assets/MemberRules.html.7794296d.js
@@ -1,3 +1,3 @@
-import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},l=a(`

MemberRules - class

class MemberRules internal constructor(internal val rulesData: MemberRulesData) : BaseRules
+import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},l=a(`

MemberRules - class

class MemberRules internal constructor(internal val rulesData: MemberRulesData) : BaseRules
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

Member \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions)
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Member \u6807\u8BC6\u7B26\u7B5B\u9009\u6761\u4EF6\u3002

\u53EF\u4E0D\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6\u3002

`,13),p=[l];function c(r,t){return e(),o("div",null,p)}const i=s(n,[["render",c],["__file","MemberRules.html.vue"]]);export{i as default}; diff --git a/docs/assets/MemberRules.html.560af7d0.js b/docs/assets/MemberRules.html.c1fd5756.js similarity index 97% rename from docs/assets/MemberRules.html.560af7d0.js rename to docs/assets/MemberRules.html.c1fd5756.js index a44f6b8e3..27b758606 100644 --- a/docs/assets/MemberRules.html.560af7d0.js +++ b/docs/assets/MemberRules.html.c1fd5756.js @@ -1,3 +1,3 @@ -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

MemberRules - class

class MemberRules internal constructor(internal val rulesData: MemberRulesData) : BaseRules
+import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

MemberRules - class

class MemberRules internal constructor(internal val rulesData: MemberRulesData) : BaseRules
 

Change Records

v1.1.0 added

Function Illustrate

Member \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions)
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E Member \u6807\u8BC6\u7B26\u7B5B\u9009\u6761\u4EF6\u3002

\u53EF\u4E0D\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6\u3002

`,14),t=[l];function r(c,p){return e(),o("div",null,t)}const d=s(n,[["render",r],["__file","MemberRules.html.vue"]]);export{d as default}; diff --git a/docs/assets/MemberRulesResult.html.8ad8be97.js b/docs/assets/MemberRulesResult.html.31eda204.js similarity index 98% rename from docs/assets/MemberRulesResult.html.8ad8be97.js rename to docs/assets/MemberRulesResult.html.31eda204.js index 4b8723fc7..6c3e47181 100644 --- a/docs/assets/MemberRulesResult.html.8ad8be97.js +++ b/docs/assets/MemberRulesResult.html.31eda204.js @@ -1,4 +1,4 @@ -import{_ as s,o as e,c as o,a as n}from"./app.09f06ad9.js";const a={},l=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

MemberRulesResult - class

class MemberRulesResult internal constructor(private val rulesData: MemberRulesData)
+import{_ as s,o as e,c as o,a as n}from"./app.0312b331.js";const a={},l=n(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

MemberRulesResult - class

class MemberRulesResult internal constructor(private val rulesData: MemberRulesData)
 

Change Records

v1.1.0 added

Function Illustrate

\u5F53\u524D Member \u67E5\u627E\u6761\u4EF6\u7ED3\u679C\u5B9E\u73B0\u7C7B\u3002

none - method

fun none(): MemberRulesResult
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E\u5F53\u524D Member \u5728\u67E5\u627E\u6761\u4EF6\u4E2D\u4E2A\u6570\u4E3A 0\u3002

count - method

fun count(num: Int): MemberRulesResult
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E\u5F53\u524D Member \u5728\u67E5\u627E\u6761\u4EF6\u4E2D\u9700\u8981\u5168\u90E8\u5339\u914D\u7684\u4E2A\u6570\u3002

count - method

fun count(numRange: IntRange): MemberRulesResult
diff --git a/docs/assets/MemberRulesResult.html.037f8719.js b/docs/assets/MemberRulesResult.html.71b4402a.js
similarity index 98%
rename from docs/assets/MemberRulesResult.html.037f8719.js
rename to docs/assets/MemberRulesResult.html.71b4402a.js
index bfc9593d8..24c68f2ad 100644
--- a/docs/assets/MemberRulesResult.html.037f8719.js
+++ b/docs/assets/MemberRulesResult.html.71b4402a.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as e,a as n}from"./app.09f06ad9.js";const a={},l=n(`

MemberRulesResult - class

class MemberRulesResult internal constructor(private val rulesData: MemberRulesData)
+import{_ as s,o,c as e,a as n}from"./app.0312b331.js";const a={},l=n(`

MemberRulesResult - class

class MemberRulesResult internal constructor(private val rulesData: MemberRulesData)
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5F53\u524D Member \u67E5\u627E\u6761\u4EF6\u7ED3\u679C\u5B9E\u73B0\u7C7B\u3002

none - method

fun none(): MemberRulesResult
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E\u5F53\u524D Member \u5728\u67E5\u627E\u6761\u4EF6\u4E2D\u4E2A\u6570\u4E3A 0\u3002

count - method

fun count(num: Int): MemberRulesResult
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E\u5F53\u524D Member \u5728\u67E5\u627E\u6761\u4EF6\u4E2D\u9700\u8981\u5168\u90E8\u5339\u914D\u7684\u4E2A\u6570\u3002

count - method

fun count(numRange: IntRange): MemberRulesResult
diff --git a/docs/assets/MethodFinder.html.e6937ebf.js b/docs/assets/MethodFinder.html.4d9623fd.js
similarity index 99%
rename from docs/assets/MethodFinder.html.e6937ebf.js
rename to docs/assets/MethodFinder.html.4d9623fd.js
index 584af691c..300946369 100644
--- a/docs/assets/MethodFinder.html.e6937ebf.js
+++ b/docs/assets/MethodFinder.html.4d9623fd.js
@@ -1,5 +1,5 @@
-import{_ as s,o,c as n,a as e}from"./app.09f06ad9.js";const a={},l=e(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

MethodFinder - class

class MethodFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
-

Change Records

v1.0 first

v1.0.2 modified

\u5408\u5E76\u5230 BaseFinder

v1.1.0 modified

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.7 modified

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

Function Illustrate

Method \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Method \u6216\u4E00\u7EC4 Method\u3002

name - field

var name: String
+import{_ as s,o,c as n,a as e}from"./app.0312b331.js";const a={},l=e(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

MethodFinder - class

class MethodFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
+

Change Records

v1.0 first

v1.0.2 modified

\u5408\u5E76\u5230 BaseFinder

v1.1.0 modified

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.8 modified

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

Function Illustrate

Method \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Method \u6216\u4E00\u7EC4 Method\u3002

name - field

var name: String
 

Change Records

v1.0 first

v1.0.70 modified

\u5141\u8BB8\u4E0D\u586B\u5199\u540D\u79F0

Function Illustrate

\u8BBE\u7F6E Method \u540D\u79F0\u3002

Pay Attention

\u82E5\u4E0D\u586B\u5199\u540D\u79F0\u5219\u5FC5\u987B\u5B58\u5728\u4E00\u4E2A\u5176\u5B83\u6761\u4EF6\u3002

paramCount - field

var paramCount: Int
 

Change Records

v1.0.67 added

Function Illustrate

\u8BBE\u7F6E Method \u53C2\u6570\u4E2A\u6570\u3002

\u4F60\u53EF\u4EE5\u4E0D\u4F7F\u7528 param \u6307\u5B9A\u53C2\u6570\u7C7B\u578B\u800C\u662F\u4EC5\u4F7F\u7528\u6B64\u53D8\u91CF\u6307\u5B9A\u53C2\u6570\u4E2A\u6570\u3002

\u82E5\u53C2\u6570\u4E2A\u6570\u5C0F\u4E8E\u96F6\u5219\u5FFD\u7565\u5E76\u4F7F\u7528 param\u3002

returnType - field

var returnType: Any?
 

Change Records

v1.0 first

Function Illustrate

\u8BBE\u7F6E Method \u8FD4\u56DE\u503C\uFF0C\u53EF\u4E0D\u586B\u5199\u8FD4\u56DE\u503C\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions): IndexTypeCondition
diff --git a/docs/assets/MethodFinder.html.d48580de.js b/docs/assets/MethodFinder.html.8836e5f6.js
similarity index 99%
rename from docs/assets/MethodFinder.html.d48580de.js
rename to docs/assets/MethodFinder.html.8836e5f6.js
index 62895610f..e4c4324a2 100644
--- a/docs/assets/MethodFinder.html.d48580de.js
+++ b/docs/assets/MethodFinder.html.8836e5f6.js
@@ -1,5 +1,5 @@
-import{_ as s,o,c as n,a}from"./app.09f06ad9.js";const e={},p=a(`

MethodFinder - class

class MethodFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
-

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.2 \u4FEE\u6539

\u5408\u5E76\u5230 BaseFinder

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.7 \u4FEE\u6539

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

\u529F\u80FD\u63CF\u8FF0

Method \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Method \u6216\u4E00\u7EC4 Method\u3002

name - field

var name: String
+import{_ as s,o,c as n,a}from"./app.0312b331.js";const e={},p=a(`

MethodFinder - class

class MethodFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
+

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.2 \u4FEE\u6539

\u5408\u5E76\u5230 BaseFinder

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 MemberBaseFinder

v1.1.8 \u4FEE\u6539

\u79FB\u52A8 hookInstance \u53C2\u6570\u5230 MemberBaseFinder.MemberHookerManager

\u529F\u80FD\u63CF\u8FF0

Method \u67E5\u627E\u7C7B\u3002

\u53EF\u901A\u8FC7\u6307\u5B9A\u7C7B\u578B\u67E5\u627E\u6307\u5B9A Method \u6216\u4E00\u7EC4 Method\u3002

name - field

var name: String
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.70 \u4FEE\u6539

\u5141\u8BB8\u4E0D\u586B\u5199\u540D\u79F0

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Method \u540D\u79F0\u3002

\u7279\u522B\u6CE8\u610F

\u82E5\u4E0D\u586B\u5199\u540D\u79F0\u5219\u5FC5\u987B\u5B58\u5728\u4E00\u4E2A\u5176\u5B83\u6761\u4EF6\u3002

paramCount - field

var paramCount: Int
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.67 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Method \u53C2\u6570\u4E2A\u6570\u3002

\u4F60\u53EF\u4EE5\u4E0D\u4F7F\u7528 param \u6307\u5B9A\u53C2\u6570\u7C7B\u578B\u800C\u662F\u4EC5\u4F7F\u7528\u6B64\u53D8\u91CF\u6307\u5B9A\u53C2\u6570\u4E2A\u6570\u3002

\u82E5\u53C2\u6570\u4E2A\u6570\u5C0F\u4E8E\u96F6\u5219\u5FFD\u7565\u5E76\u4F7F\u7528 param\u3002

returnType - field

var returnType: Any?
 

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Method \u8FD4\u56DE\u503C\uFF0C\u53EF\u4E0D\u586B\u5199\u8FD4\u56DE\u503C\u3002

modifiers - method

fun modifiers(conditions: ModifierConditions): IndexTypeCondition
diff --git a/docs/assets/MethodFinder.html.f1f39c84.js b/docs/assets/MethodFinder.html.9a97f14f.js
similarity index 97%
rename from docs/assets/MethodFinder.html.f1f39c84.js
rename to docs/assets/MethodFinder.html.9a97f14f.js
index 8277c5ede..6969576f2 100644
--- a/docs/assets/MethodFinder.html.f1f39c84.js
+++ b/docs/assets/MethodFinder.html.9a97f14f.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-a4aa4d00","path":"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html","title":"MethodFinder - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"name - field","slug":"name-field","link":"#name-field","children":[]},{"level":2,"title":"paramCount - field","slug":"paramcount-field","link":"#paramcount-field","children":[]},{"level":2,"title":"returnType - field","slug":"returntype-field","link":"#returntype-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"emptyParam - method","slug":"emptyparam-method","link":"#emptyparam-method","children":[]},{"level":2,"title":"param - method","slug":"param-method","link":"#param-method","children":[]},{"level":2,"title":"param - method","slug":"param-method-1","link":"#param-method-1","children":[]},{"level":2,"title":"order - method","slug":"order-method","link":"#order-method","children":[]},{"level":2,"title":"name - method","slug":"name-method","link":"#name-method","children":[]},{"level":2,"title":"name - method","slug":"name-method-1","link":"#name-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method","link":"#paramcount-method","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-1","link":"#paramcount-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-2","link":"#paramcount-method-2","children":[]},{"level":2,"title":"returnType - method","slug":"returntype-method","link":"#returntype-method","children":[]},{"level":2,"title":"returnType - method","slug":"returntype-method-1","link":"#returntype-method-1","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"method - method","slug":"method-method","link":"#method-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Process - class","slug":"process-class","link":"#process-class","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchMethod - method","slug":"onnosuchmethod-method","link":"#onnosuchmethod-method","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method-1","link":"#result-method-1","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method-1","link":"#all-method-1","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method-1","link":"#remedys-method-1","children":[]},{"level":3,"title":"onNoSuchMethod - method","slug":"onnosuchmethod-method-1","link":"#onnosuchmethod-method-1","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]},{"level":3,"title":"array - method","slug":"array-method","link":"#array-method","children":[]},{"level":3,"title":"list - method","slug":"list-method","link":"#list-method","children":[]}]}],"git":{"updatedTime":1675187575000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-a4aa4d00","path":"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html","title":"MethodFinder - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"name - field","slug":"name-field","link":"#name-field","children":[]},{"level":2,"title":"paramCount - field","slug":"paramcount-field","link":"#paramcount-field","children":[]},{"level":2,"title":"returnType - field","slug":"returntype-field","link":"#returntype-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"emptyParam - method","slug":"emptyparam-method","link":"#emptyparam-method","children":[]},{"level":2,"title":"param - method","slug":"param-method","link":"#param-method","children":[]},{"level":2,"title":"param - method","slug":"param-method-1","link":"#param-method-1","children":[]},{"level":2,"title":"order - method","slug":"order-method","link":"#order-method","children":[]},{"level":2,"title":"name - method","slug":"name-method","link":"#name-method","children":[]},{"level":2,"title":"name - method","slug":"name-method-1","link":"#name-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method","link":"#paramcount-method","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-1","link":"#paramcount-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-2","link":"#paramcount-method-2","children":[]},{"level":2,"title":"returnType - method","slug":"returntype-method","link":"#returntype-method","children":[]},{"level":2,"title":"returnType - method","slug":"returntype-method-1","link":"#returntype-method-1","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"method - method","slug":"method-method","link":"#method-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Process - class","slug":"process-class","link":"#process-class","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchMethod - method","slug":"onnosuchmethod-method","link":"#onnosuchmethod-method","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method-1","link":"#result-method-1","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method-1","link":"#all-method-1","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method-1","link":"#remedys-method-1","children":[]},{"level":3,"title":"onNoSuchMethod - method","slug":"onnosuchmethod-method-1","link":"#onnosuchmethod-method-1","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]},{"level":3,"title":"array - method","slug":"array-method","link":"#array-method","children":[]},{"level":3,"title":"list - method","slug":"list-method","link":"#list-method","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.md"}');export{e as data};
diff --git a/docs/assets/MethodFinder.html.57ad9ffd.js b/docs/assets/MethodFinder.html.9be50874.js
similarity index 97%
rename from docs/assets/MethodFinder.html.57ad9ffd.js
rename to docs/assets/MethodFinder.html.9be50874.js
index ede6f4279..4947c38dd 100644
--- a/docs/assets/MethodFinder.html.57ad9ffd.js
+++ b/docs/assets/MethodFinder.html.9be50874.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-fd738322","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html","title":"MethodFinder - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"name - field","slug":"name-field","link":"#name-field","children":[]},{"level":2,"title":"paramCount - field","slug":"paramcount-field","link":"#paramcount-field","children":[]},{"level":2,"title":"returnType - field","slug":"returntype-field","link":"#returntype-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"emptyParam - method","slug":"emptyparam-method","link":"#emptyparam-method","children":[]},{"level":2,"title":"param - method","slug":"param-method","link":"#param-method","children":[]},{"level":2,"title":"param - method","slug":"param-method-1","link":"#param-method-1","children":[]},{"level":2,"title":"order - method","slug":"order-method","link":"#order-method","children":[]},{"level":2,"title":"name - method","slug":"name-method","link":"#name-method","children":[]},{"level":2,"title":"name - method","slug":"name-method-1","link":"#name-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method","link":"#paramcount-method","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-1","link":"#paramcount-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-2","link":"#paramcount-method-2","children":[]},{"level":2,"title":"returnType - method","slug":"returntype-method","link":"#returntype-method","children":[]},{"level":2,"title":"returnType - method","slug":"returntype-method-1","link":"#returntype-method-1","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"method - method","slug":"method-method","link":"#method-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Process - class","slug":"process-class","link":"#process-class","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchMethod - method","slug":"onnosuchmethod-method","link":"#onnosuchmethod-method","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method-1","link":"#result-method-1","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method-1","link":"#all-method-1","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method-1","link":"#remedys-method-1","children":[]},{"level":3,"title":"onNoSuchMethod - method","slug":"onnosuchmethod-method-1","link":"#onnosuchmethod-method-1","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]},{"level":3,"title":"array - method","slug":"array-method","link":"#array-method","children":[]},{"level":3,"title":"list - method","slug":"list-method","link":"#list-method","children":[]}]}],"git":{"updatedTime":1675187575000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-fd738322","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html","title":"MethodFinder - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"name - field","slug":"name-field","link":"#name-field","children":[]},{"level":2,"title":"paramCount - field","slug":"paramcount-field","link":"#paramcount-field","children":[]},{"level":2,"title":"returnType - field","slug":"returntype-field","link":"#returntype-field","children":[]},{"level":2,"title":"modifiers - method","slug":"modifiers-method","link":"#modifiers-method","children":[]},{"level":2,"title":"emptyParam - method","slug":"emptyparam-method","link":"#emptyparam-method","children":[]},{"level":2,"title":"param - method","slug":"param-method","link":"#param-method","children":[]},{"level":2,"title":"param - method","slug":"param-method-1","link":"#param-method-1","children":[]},{"level":2,"title":"order - method","slug":"order-method","link":"#order-method","children":[]},{"level":2,"title":"name - method","slug":"name-method","link":"#name-method","children":[]},{"level":2,"title":"name - method","slug":"name-method-1","link":"#name-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method","link":"#paramcount-method","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-1","link":"#paramcount-method-1","children":[]},{"level":2,"title":"paramCount - method","slug":"paramcount-method-2","link":"#paramcount-method-2","children":[]},{"level":2,"title":"returnType - method","slug":"returntype-method","link":"#returntype-method","children":[]},{"level":2,"title":"returnType - method","slug":"returntype-method-1","link":"#returntype-method-1","children":[]},{"level":2,"title":"superClass - method","slug":"superclass-method","link":"#superclass-method","children":[]},{"level":2,"title":"RemedyPlan - class","slug":"remedyplan-class","link":"#remedyplan-class","children":[{"level":3,"title":"method - method","slug":"method-method","link":"#method-method","children":[]},{"level":3,"title":"Result - class","slug":"result-class","link":"#result-class","children":[]}]},{"level":2,"title":"Process - class","slug":"process-class","link":"#process-class","children":[{"level":3,"title":"result - method","slug":"result-method","link":"#result-method","children":[]},{"level":3,"title":"all - method","slug":"all-method","link":"#all-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method","link":"#remedys-method","children":[]},{"level":3,"title":"onNoSuchMethod - method","slug":"onnosuchmethod-method","link":"#onnosuchmethod-method","children":[]}]},{"level":2,"title":"Result - class","slug":"result-class-1","link":"#result-class-1","children":[{"level":3,"title":"result - method","slug":"result-method-1","link":"#result-method-1","children":[]},{"level":3,"title":"get - method","slug":"get-method","link":"#get-method","children":[]},{"level":3,"title":"all - method","slug":"all-method-1","link":"#all-method-1","children":[]},{"level":3,"title":"give - method","slug":"give-method","link":"#give-method","children":[]},{"level":3,"title":"giveAll - method","slug":"giveall-method","link":"#giveall-method","children":[]},{"level":3,"title":"wait - method","slug":"wait-method","link":"#wait-method","children":[]},{"level":3,"title":"waitAll - method","slug":"waitall-method","link":"#waitall-method","children":[]},{"level":3,"title":"remedys - method","slug":"remedys-method-1","link":"#remedys-method-1","children":[]},{"level":3,"title":"onNoSuchMethod - method","slug":"onnosuchmethod-method-1","link":"#onnosuchmethod-method-1","children":[]},{"level":3,"title":"ignored - method","slug":"ignored-method","link":"#ignored-method","children":[]},{"level":3,"title":"Instance - class","slug":"instance-class","link":"#instance-class","children":[]},{"level":3,"title":"array - method","slug":"array-method","link":"#array-method","children":[]},{"level":3,"title":"list - method","slug":"list-method","link":"#list-method","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":6}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.md"}');export{e as data};
diff --git a/docs/assets/MethodRules.html.0717f3bd.js b/docs/assets/MethodRules.html.0d471f1d.js
similarity index 99%
rename from docs/assets/MethodRules.html.0717f3bd.js
rename to docs/assets/MethodRules.html.0d471f1d.js
index 8f2495f95..d21b7805b 100644
--- a/docs/assets/MethodRules.html.0717f3bd.js
+++ b/docs/assets/MethodRules.html.0d471f1d.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as a,a as e}from"./app.09f06ad9.js";const n={},p=e(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

MethodRules - class

class MethodRules internal constructor(internal val rulesData: MethodRulesData) : BaseRules
+import{_ as s,o,c as a,a as e}from"./app.0312b331.js";const n={},p=e(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

MethodRules - class

class MethodRules internal constructor(internal val rulesData: MethodRulesData) : BaseRules
 

Change Records

v1.1.0 added

Function Illustrate

Method \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

name - field

var name: String
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E Method \u540D\u79F0\u3002

paramCount - field

var paramCount: Int
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E Method \u53C2\u6570\u4E2A\u6570\u3002

\u4F60\u53EF\u4EE5\u4E0D\u4F7F\u7528 param \u6307\u5B9A\u53C2\u6570\u7C7B\u578B\u800C\u662F\u4EC5\u4F7F\u7528\u6B64\u53D8\u91CF\u6307\u5B9A\u53C2\u6570\u4E2A\u6570\u3002

\u82E5\u53C2\u6570\u4E2A\u6570\u5C0F\u4E8E\u96F6\u5219\u5FFD\u7565\u5E76\u4F7F\u7528 param\u3002

returnType - field

var returnType: Any?
diff --git a/docs/assets/MethodRules.html.6a1bc04d.js b/docs/assets/MethodRules.html.5c90a284.js
similarity index 99%
rename from docs/assets/MethodRules.html.6a1bc04d.js
rename to docs/assets/MethodRules.html.5c90a284.js
index 1dc2774c3..6500db34d 100644
--- a/docs/assets/MethodRules.html.6a1bc04d.js
+++ b/docs/assets/MethodRules.html.5c90a284.js
@@ -1,4 +1,4 @@
-import{_ as s,o,c as a,a as e}from"./app.09f06ad9.js";const n={},p=e(`

MethodRules - class

class MethodRules internal constructor(internal val rulesData: MethodRulesData) : BaseRules
+import{_ as s,o,c as a,a as e}from"./app.0312b331.js";const n={},p=e(`

MethodRules - class

class MethodRules internal constructor(internal val rulesData: MethodRulesData) : BaseRules
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

Method \u67E5\u627E\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

name - field

var name: String
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Method \u540D\u79F0\u3002

paramCount - field

var paramCount: Int
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E Method \u53C2\u6570\u4E2A\u6570\u3002

\u4F60\u53EF\u4EE5\u4E0D\u4F7F\u7528 param \u6307\u5B9A\u53C2\u6570\u7C7B\u578B\u800C\u662F\u4EC5\u4F7F\u7528\u6B64\u53D8\u91CF\u6307\u5B9A\u53C2\u6570\u4E2A\u6570\u3002

\u82E5\u53C2\u6570\u4E2A\u6570\u5C0F\u4E8E\u96F6\u5219\u5FFD\u7565\u5E76\u4F7F\u7528 param\u3002

returnType - field

var returnType: Any?
diff --git a/docs/assets/ModifierRules.html.02d159c3.js b/docs/assets/ModifierRules.html.343e738e.js
similarity index 99%
rename from docs/assets/ModifierRules.html.02d159c3.js
rename to docs/assets/ModifierRules.html.343e738e.js
index 853cdab19..f107200d5 100644
--- a/docs/assets/ModifierRules.html.02d159c3.js
+++ b/docs/assets/ModifierRules.html.343e738e.js
@@ -1,4 +1,4 @@
-import{_ as e,o as s,c as o,a}from"./app.09f06ad9.js";const c={},n=a(`

ModifierRules - class

class ModifierRules private constructor()
+import{_ as e,o as s,c as o,a}from"./app.0312b331.js";const c={},n=a(`

ModifierRules - class

class ModifierRules private constructor()
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.67 \u65B0\u589E

v1.1.0 \u4FEE\u6539

\u65B0\u589E Class \u7684\u63CF\u8FF0\u7B26\u5224\u65AD

\u4F5C\u4E3A lambda \u6574\u4F53\u5224\u65AD\u6761\u4EF6\u4F7F\u7528

\u79FB\u52A8\u5230 base \u5305\u540D

\u79C1\u6709\u5316\u6784\u9020\u65B9\u6CD5

\u529F\u80FD\u63CF\u8FF0

\u8FD9\u662F\u4E00\u4E2A Class\u3001Member \u63CF\u8FF0\u7B26\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

\u53EF\u5BF9 R8 \u6DF7\u6DC6\u540E\u7684 Class\u3001Member \u8FDB\u884C\u66F4\u52A0\u8BE6\u7EC6\u7684\u5B9A\u4F4D\u3002

isPublic - i-ext-field

val isPublic: Boolean
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.67 \u65B0\u589E

v1.1.0 \u4FEE\u6539

\u7EDF\u4E00\u5408\u5E76\u5230\u6269\u5C55\u65B9\u6CD5\u5E76\u6539\u540D

\u529F\u80FD\u63CF\u8FF0

Class\u3001Member \u7C7B\u578B\u662F\u5426\u5305\u542B public\u3002

isPrivate - i-ext-field

val isPrivate: Boolean
 

\u53D8\u66F4\u8BB0\u5F55

v1.0.67 \u65B0\u589E

v1.1.0 \u4FEE\u6539

\u7EDF\u4E00\u5408\u5E76\u5230\u6269\u5C55\u65B9\u6CD5\u5E76\u6539\u540D

\u529F\u80FD\u63CF\u8FF0

Class\u3001Member \u7C7B\u578B\u662F\u5426\u5305\u542B private\u3002

isProtected - i-ext-field

val isProtected: Boolean
diff --git a/docs/assets/ModifierRules.html.39c7153d.js b/docs/assets/ModifierRules.html.aaeaa7c2.js
similarity index 99%
rename from docs/assets/ModifierRules.html.39c7153d.js
rename to docs/assets/ModifierRules.html.aaeaa7c2.js
index 34be6076b..7f658a8cb 100644
--- a/docs/assets/ModifierRules.html.39c7153d.js
+++ b/docs/assets/ModifierRules.html.aaeaa7c2.js
@@ -1,4 +1,4 @@
-import{_ as e,o as s,c as o,a}from"./app.09f06ad9.js";const c={},n=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ModifierRules - class

class ModifierRules private constructor()
+import{_ as e,o as s,c as o,a}from"./app.0312b331.js";const c={},n=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ModifierRules - class

class ModifierRules private constructor()
 

Change Records

v1.0.67 added

v1.1.0 modified

\u65B0\u589E Class \u7684\u63CF\u8FF0\u7B26\u5224\u65AD

\u4F5C\u4E3A lambda \u6574\u4F53\u5224\u65AD\u6761\u4EF6\u4F7F\u7528

\u79FB\u52A8\u5230 base \u5305\u540D

\u79C1\u6709\u5316\u6784\u9020\u65B9\u6CD5

Function Illustrate

\u8FD9\u662F\u4E00\u4E2A Class\u3001Member \u63CF\u8FF0\u7B26\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

\u53EF\u5BF9 R8 \u6DF7\u6DC6\u540E\u7684 Class\u3001Member \u8FDB\u884C\u66F4\u52A0\u8BE6\u7EC6\u7684\u5B9A\u4F4D\u3002

isPublic - i-ext-field

val isPublic: Boolean
 

Change Records

v1.0.67 added

v1.1.0 modified

\u7EDF\u4E00\u5408\u5E76\u5230\u6269\u5C55\u65B9\u6CD5\u5E76\u6539\u540D

Function Illustrate

Class\u3001Member \u7C7B\u578B\u662F\u5426\u5305\u542B public\u3002

isPrivate - i-ext-field

val isPrivate: Boolean
 

Change Records

v1.0.67 added

v1.1.0 modified

\u7EDF\u4E00\u5408\u5E76\u5230\u6269\u5C55\u65B9\u6CD5\u5E76\u6539\u540D

Function Illustrate

Class\u3001Member \u7C7B\u578B\u662F\u5426\u5305\u542B private\u3002

isProtected - i-ext-field

val isProtected: Boolean
diff --git a/docs/assets/ModuleAppActivity.html.bbe7c316.js b/docs/assets/ModuleAppActivity.html.94e8e6d9.js
similarity index 95%
rename from docs/assets/ModuleAppActivity.html.bbe7c316.js
rename to docs/assets/ModuleAppActivity.html.94e8e6d9.js
index fbc3e6c88..f18a63200 100644
--- a/docs/assets/ModuleAppActivity.html.bbe7c316.js
+++ b/docs/assets/ModuleAppActivity.html.94e8e6d9.js
@@ -1,2 +1,2 @@
-import{_ as s,o as e,c as o,a as t}from"./app.09f06ad9.js";const c={},a=t(`

ModuleAppActivity - class

open class ModuleAppActivity : Activity()
+import{_ as s,o as e,c as o,a as t}from"./app.0312b331.js";const c={},a=t(`

ModuleAppActivity - class

open class ModuleAppActivity : Activity()
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4EE3\u7406 Activity\u3002

\u7EE7\u627F\u4E8E\u6B64\u7C7B\u7684 Activity \u53EF\u4EE5\u540C\u65F6\u5728\u5BBF\u4E3B\u4E0E\u6A21\u5757\u4E2D\u542F\u52A8\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u9700\u8981\u5728\u5BBF\u4E3B\u542F\u52A8\u65F6\u8C03\u7528 Context.registerModuleAppActivities \u8FDB\u884C\u6CE8\u518C\u3002

`,8),p=[a];function l(n,i){return e(),o("div",null,p)}const d=s(c,[["render",l],["__file","ModuleAppActivity.html.vue"]]);export{d as default}; diff --git a/docs/assets/ModuleAppActivity.html.80481dc2.js b/docs/assets/ModuleAppActivity.html.f3eec9eb.js similarity index 96% rename from docs/assets/ModuleAppActivity.html.80481dc2.js rename to docs/assets/ModuleAppActivity.html.f3eec9eb.js index 2a449e91a..37526a324 100644 --- a/docs/assets/ModuleAppActivity.html.80481dc2.js +++ b/docs/assets/ModuleAppActivity.html.f3eec9eb.js @@ -1,2 +1,2 @@ -import{_ as e,o as s,c as o,a as t}from"./app.09f06ad9.js";const a={},n=t(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ModuleAppActivity - class

open class ModuleAppActivity : Activity()
+import{_ as e,o as s,c as o,a as t}from"./app.0312b331.js";const a={},n=t(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ModuleAppActivity - class

open class ModuleAppActivity : Activity()
 

Change Records

v1.1.0 added

Function Illustrate

\u4EE3\u7406 Activity\u3002

\u7EE7\u627F\u4E8E\u6B64\u7C7B\u7684 Activity \u53EF\u4EE5\u540C\u65F6\u5728\u5BBF\u4E3B\u4E0E\u6A21\u5757\u4E2D\u542F\u52A8\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u9700\u8981\u5728\u5BBF\u4E3B\u542F\u52A8\u65F6\u8C03\u7528 Context.registerModuleAppActivities \u8FDB\u884C\u6CE8\u518C\u3002

`,9),c=[n];function p(l,i){return s(),o("div",null,c)}const d=e(a,[["render",p],["__file","ModuleAppActivity.html.vue"]]);export{d as default}; diff --git a/docs/assets/ModuleAppCompatActivity.html.9fd94c1a.js b/docs/assets/ModuleAppCompatActivity.html.ba9dbba7.js similarity index 97% rename from docs/assets/ModuleAppCompatActivity.html.9fd94c1a.js rename to docs/assets/ModuleAppCompatActivity.html.ba9dbba7.js index e5057097e..960a76935 100644 --- a/docs/assets/ModuleAppCompatActivity.html.9fd94c1a.js +++ b/docs/assets/ModuleAppCompatActivity.html.ba9dbba7.js @@ -1,3 +1,3 @@ -import{_ as s,o,c as e,a as p}from"./app.09f06ad9.js";const a={},t=p(`

ModuleAppCompatActivity - class

open class ModuleAppCompatActivity : AppCompatActivity()
+import{_ as s,o,c as e,a as p}from"./app.0312b331.js";const a={},t=p(`

ModuleAppCompatActivity - class

open class ModuleAppCompatActivity : AppCompatActivity()
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u4EE3\u7406 AppCompatActivity\u3002

\u7EE7\u627F\u4E8E\u6B64\u7C7B\u7684 Activity \u53EF\u4EE5\u540C\u65F6\u5728\u5BBF\u4E3B\u4E0E\u6A21\u5757\u4E2D\u542F\u52A8\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u9700\u8981\u5728\u5BBF\u4E3B\u542F\u52A8\u65F6\u8C03\u7528 Context.registerModuleAppActivities \u8FDB\u884C\u6CE8\u518C\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u9700\u8981\u91CD\u5199 moduleTheme \u8BBE\u7F6E AppCompat \u4E3B\u9898\uFF0C\u5426\u5219\u4F1A\u65E0\u6CD5\u542F\u52A8\u3002

moduleTheme - field

open val moduleTheme: Int
 

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u8BBE\u7F6E\u5F53\u524D\u4EE3\u7406\u7684 Activity \u4E3B\u9898\u3002

`,15),c=[t];function l(n,d){return o(),e("div",null,c)}const r=s(a,[["render",l],["__file","ModuleAppCompatActivity.html.vue"]]);export{r as default}; diff --git a/docs/assets/ModuleAppCompatActivity.html.0e562315.js b/docs/assets/ModuleAppCompatActivity.html.f41ef35e.js similarity index 97% rename from docs/assets/ModuleAppCompatActivity.html.0e562315.js rename to docs/assets/ModuleAppCompatActivity.html.f41ef35e.js index 43cb3cb3f..8d94d7f89 100644 --- a/docs/assets/ModuleAppCompatActivity.html.0e562315.js +++ b/docs/assets/ModuleAppCompatActivity.html.f41ef35e.js @@ -1,3 +1,3 @@ -import{_ as e,o,c as s,a}from"./app.09f06ad9.js";const t={},n=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ModuleAppCompatActivity - class

open class ModuleAppCompatActivity : AppCompatActivity()
+import{_ as e,o,c as s,a}from"./app.0312b331.js";const t={},n=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ModuleAppCompatActivity - class

open class ModuleAppCompatActivity : AppCompatActivity()
 

Change Records

v1.1.0 added

Function Illustrate

\u4EE3\u7406 AppCompatActivity\u3002

\u7EE7\u627F\u4E8E\u6B64\u7C7B\u7684 Activity \u53EF\u4EE5\u540C\u65F6\u5728\u5BBF\u4E3B\u4E0E\u6A21\u5757\u4E2D\u542F\u52A8\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u9700\u8981\u5728\u5BBF\u4E3B\u542F\u52A8\u65F6\u8C03\u7528 Context.registerModuleAppActivities \u8FDB\u884C\u6CE8\u518C\u3002

\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u9700\u8981\u91CD\u5199 moduleTheme \u8BBE\u7F6E AppCompat \u4E3B\u9898\uFF0C\u5426\u5219\u4F1A\u65E0\u6CD5\u542F\u52A8\u3002

moduleTheme - field

open val moduleTheme: Int
 

Change Records

v1.1.0 added

Function Illustrate

\u8BBE\u7F6E\u5F53\u524D\u4EE3\u7406\u7684 Activity \u4E3B\u9898\u3002

`,16),p=[n];function c(l,r){return o(),s("div",null,p)}const d=e(t,[["render",c],["__file","ModuleAppCompatActivity.html.vue"]]);export{d as default}; diff --git a/docs/assets/ModuleApplication.html.e1314ce4.js b/docs/assets/ModuleApplication.html.29bf2738.js similarity index 99% rename from docs/assets/ModuleApplication.html.e1314ce4.js rename to docs/assets/ModuleApplication.html.29bf2738.js index 33f38d1db..6d626ec33 100644 --- a/docs/assets/ModuleApplication.html.e1314ce4.js +++ b/docs/assets/ModuleApplication.html.29bf2738.js @@ -1,4 +1,4 @@ -import{_ as a,r as l,o as p,c,b as s,d as i,a as e,e as n}from"./app.09f06ad9.js";const t={},d=e(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ModuleApplication - class

open class ModuleApplication: Application()
+import{_ as a,r as l,o as p,c,b as s,d as i,a as e,e as n}from"./app.0312b331.js";const t={},d=e(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ModuleApplication - class

open class ModuleApplication: Application()
 

Change Records

v1.0.77 added

Function Illustrate

\u8FD9\u662F\u5BF9\u4F7F\u7528 YukiHookAPI Xposed \u6A21\u5757\u5B9E\u73B0\u4E2D\u7684\u4E00\u4E2A\u6269\u5C55\u529F\u80FD\u3002

\u5728\u4F60\u7684 Xposed \u6A21\u5757\u7684 Application \u4E2D\u7EE7\u627F\u6B64\u7C7B\u3002

\u6216\u5728 AndroidManifest.xml \u7684 application \u6807\u7B7E\u4E2D\u6307\u5B9A\u6B64\u7C7B\u3002

\u76EE\u524D\u53EF\u5B9E\u73B0\u529F\u80FD\u5982\u4E0B

`,10),r=e("
  • \u5168\u5C40\u5171\u4EAB\u6A21\u5757\u4E2D\u9759\u6001\u7684 appContext

  • \u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E2D\u88C5\u8F7D YukiHookAPI.Config \u4EE5\u786E\u4FDD YukiHookAPI.Configs.debugTag \u4E0D\u9700\u8981\u91CD\u590D\u5B9A\u4E49

  • \u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E2D\u4F7F\u7528 YukiHookDataChannel \u8FDB\u884C\u901A\u8BAF

  • ",3),u=n("\u5728\u6A21\u5757\u4E2D\u4F7F\u7528\u7CFB\u7EDF\u9690\u85CF API\uFF0C\u6838\u5FC3\u6280\u672F\u5F15\u7528\u4E86\u5F00\u6E90\u9879\u76EE "),A={href:"https://github.com/tiann/FreeReflection",target:"_blank",rel:"noopener noreferrer"},y=n("FreeReflection"),m=s("li",null,[s("p",null,[n("\u5728\u6A21\u5757\u4E2D\u4F7F\u7528 "),s("code",null,"YukiHookAPI.Status.isTaiChiModuleActive"),n(" \u5224\u65AD\u592A\u6781\u3001\u65E0\u6781\u6FC0\u6D3B\u72B6\u6001")])],-1),v=e(`

    Function Example

    \u5C06\u6B64\u7C7B\u7EE7\u627F\u5230\u4F60\u7684\u81EA\u5B9A\u4E49 Application \u4E0A\u3002

    The following example

    package com.demo
     
     class MyApplication: ModuleApplication() {
    diff --git a/docs/assets/ModuleApplication.html.2208a499.js b/docs/assets/ModuleApplication.html.a1f5afe7.js
    similarity index 99%
    rename from docs/assets/ModuleApplication.html.2208a499.js
    rename to docs/assets/ModuleApplication.html.a1f5afe7.js
    index f352df8ab..81bb09823 100644
    --- a/docs/assets/ModuleApplication.html.2208a499.js
    +++ b/docs/assets/ModuleApplication.html.a1f5afe7.js
    @@ -1,4 +1,4 @@
    -import{_ as a,r as l,o as p,c,b as s,d as i,a as o,e as n}from"./app.09f06ad9.js";const t={},d=o(`

    ModuleApplication - class

    open class ModuleApplication: Application()
    +import{_ as a,r as l,o as p,c,b as s,d as i,a as o,e as n}from"./app.0312b331.js";const t={},d=o(`

    ModuleApplication - class

    open class ModuleApplication: Application()
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.77 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u5BF9\u4F7F\u7528 YukiHookAPI Xposed \u6A21\u5757\u5B9E\u73B0\u4E2D\u7684\u4E00\u4E2A\u6269\u5C55\u529F\u80FD\u3002

    \u5728\u4F60\u7684 Xposed \u6A21\u5757\u7684 Application \u4E2D\u7EE7\u627F\u6B64\u7C7B\u3002

    \u6216\u5728 AndroidManifest.xml \u7684 application \u6807\u7B7E\u4E2D\u6307\u5B9A\u6B64\u7C7B\u3002

    \u76EE\u524D\u53EF\u5B9E\u73B0\u529F\u80FD\u5982\u4E0B

    `,9),r=o("
  • \u5168\u5C40\u5171\u4EAB\u6A21\u5757\u4E2D\u9759\u6001\u7684 appContext

  • \u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E2D\u88C5\u8F7D YukiHookAPI.Config \u4EE5\u786E\u4FDD YukiHookAPI.Configs.debugTag \u4E0D\u9700\u8981\u91CD\u590D\u5B9A\u4E49

  • \u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E2D\u4F7F\u7528 YukiHookDataChannel \u8FDB\u884C\u901A\u8BAF

  • ",3),u=n("\u5728\u6A21\u5757\u4E2D\u4F7F\u7528\u7CFB\u7EDF\u9690\u85CF API\uFF0C\u6838\u5FC3\u6280\u672F\u5F15\u7528\u4E86\u5F00\u6E90\u9879\u76EE "),A={href:"https://github.com/tiann/FreeReflection",target:"_blank",rel:"noopener noreferrer"},y=n("FreeReflection"),v=s("li",null,[s("p",null,[n("\u5728\u6A21\u5757\u4E2D\u4F7F\u7528 "),s("code",null,"YukiHookAPI.Status.isTaiChiModuleActive"),n(" \u5224\u65AD\u592A\u6781\u3001\u65E0\u6781\u6FC0\u6D3B\u72B6\u6001")])],-1),m=o(`

    \u529F\u80FD\u793A\u4F8B

    \u5C06\u6B64\u7C7B\u7EE7\u627F\u5230\u4F60\u7684\u81EA\u5B9A\u4E49 Application \u4E0A\u3002

    \u793A\u4F8B\u5982\u4E0B

    package com.demo
     
     class MyApplication: ModuleApplication() {
    diff --git a/docs/assets/ModuleClassLoader.html.516e1b4c.js b/docs/assets/ModuleClassLoader.html.1d43a5d2.js
    similarity index 98%
    rename from docs/assets/ModuleClassLoader.html.516e1b4c.js
    rename to docs/assets/ModuleClassLoader.html.1d43a5d2.js
    index e20fe23c6..e29a5e2e8 100644
    --- a/docs/assets/ModuleClassLoader.html.516e1b4c.js
    +++ b/docs/assets/ModuleClassLoader.html.1d43a5d2.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},l=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModuleClassLoader - class

    class ModuleClassLoader private constructor() : ClassLoader
    +import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},l=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModuleClassLoader - class

    class ModuleClassLoader private constructor() : ClassLoader
     

    Change Records

    v1.1.2 added

    Function Illustrate

    \u81EA\u52A8\u5904\u7406 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E0E\u6A21\u5757\u73AF\u5883\u7684 ClassLoader\u3002

    companion object - object

    Change Records

    v1.1.2 added

    excludeHostClasses - method

    fun excludeHostClasses(vararg name: String)
     

    Change Records

    v1.1.2 added

    Function Illustrate

    \u6DFB\u52A0\u5230 Hook APP (\u5BBF\u4E3B) Class \u6392\u9664\u5217\u8868\u3002

    \u6392\u9664\u5217\u8868\u4E2D\u7684 Class \u5C06\u4F1A\u4F7F\u7528\u5BBF\u4E3B\u7684 ClassLoader \u8FDB\u884C\u88C5\u8F7D\u3002

    Pay Attention

    \u6392\u9664\u5217\u8868\u4EC5\u4F1A\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u751F\u6548\u3002

    excludeModuleClasses - method

    fun excludeModuleClasses(vararg name: String)
     

    Change Records

    v1.1.2 added

    Function Illustrate

    \u6DFB\u52A0\u5230\u6A21\u5757 Class \u6392\u9664\u5217\u8868\u3002

    \u6392\u9664\u5217\u8868\u4E2D\u7684 Class \u5C06\u4F1A\u4F7F\u7528\u6A21\u5757 (\u5F53\u524D\u5BBF\u4E3B\u73AF\u5883\u7684\u6A21\u5757\u6CE8\u5165\u8FDB\u7A0B) \u7684 ClassLoader \u8FDB\u884C\u88C5\u8F7D\u3002

    Pay Attention

    \u6392\u9664\u5217\u8868\u4EC5\u4F1A\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u751F\u6548\u3002

    `,26),c=[l];function t(p,r){return e(),o("div",null,c)}const i=s(n,[["render",t],["__file","ModuleClassLoader.html.vue"]]);export{i as default}; diff --git a/docs/assets/ModuleClassLoader.html.518c9958.js b/docs/assets/ModuleClassLoader.html.e3fa4086.js similarity index 98% rename from docs/assets/ModuleClassLoader.html.518c9958.js rename to docs/assets/ModuleClassLoader.html.e3fa4086.js index d61eedd38..440a7c069 100644 --- a/docs/assets/ModuleClassLoader.html.518c9958.js +++ b/docs/assets/ModuleClassLoader.html.e3fa4086.js @@ -1,4 +1,4 @@ -import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const l={},n=a(`

    ModuleClassLoader - class

    class ModuleClassLoader private constructor() : ClassLoader
    +import{_ as s,o,c as e,a}from"./app.0312b331.js";const l={},n=a(`

    ModuleClassLoader - class

    class ModuleClassLoader private constructor() : ClassLoader
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.2 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u81EA\u52A8\u5904\u7406 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E0E\u6A21\u5757\u73AF\u5883\u7684 ClassLoader\u3002

    companion object - object

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.2 \u65B0\u589E

    excludeHostClasses - method

    fun excludeHostClasses(vararg name: String)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.2 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u6DFB\u52A0\u5230 Hook APP (\u5BBF\u4E3B) Class \u6392\u9664\u5217\u8868\u3002

    \u6392\u9664\u5217\u8868\u4E2D\u7684 Class \u5C06\u4F1A\u4F7F\u7528\u5BBF\u4E3B\u7684 ClassLoader \u8FDB\u884C\u88C5\u8F7D\u3002

    \u7279\u522B\u6CE8\u610F

    \u6392\u9664\u5217\u8868\u4EC5\u4F1A\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u751F\u6548\u3002

    excludeModuleClasses - method

    fun excludeModuleClasses(vararg name: String)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.2 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u6DFB\u52A0\u5230\u6A21\u5757 Class \u6392\u9664\u5217\u8868\u3002

    \u6392\u9664\u5217\u8868\u4E2D\u7684 Class \u5C06\u4F1A\u4F7F\u7528\u6A21\u5757 (\u5F53\u524D\u5BBF\u4E3B\u73AF\u5883\u7684\u6A21\u5757\u6CE8\u5165\u8FDB\u7A0B) \u7684 ClassLoader \u8FDB\u884C\u88C5\u8F7D\u3002

    \u7279\u522B\u6CE8\u610F

    \u6392\u9664\u5217\u8868\u4EC5\u4F1A\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u751F\u6548\u3002

    `,25),c=[n];function p(t,d){return o(),e("div",null,c)}const i=s(l,[["render",p],["__file","ModuleClassLoader.html.vue"]]);export{i as default}; diff --git a/docs/assets/ModuleContextThemeWrapper.html.bc74e24e.js b/docs/assets/ModuleContextThemeWrapper.html.1be57ca3.js similarity index 98% rename from docs/assets/ModuleContextThemeWrapper.html.bc74e24e.js rename to docs/assets/ModuleContextThemeWrapper.html.1be57ca3.js index 93adafa5d..6d150b535 100644 --- a/docs/assets/ModuleContextThemeWrapper.html.bc74e24e.js +++ b/docs/assets/ModuleContextThemeWrapper.html.1be57ca3.js @@ -1,3 +1,3 @@ -import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},p=a(`

    ModuleContextThemeWrapper - class

    class ModuleContextThemeWrapper private constructor(baseContext: Context, theme: Int, configuration: Configuration?) : ContextThemeWrapper
    +import{_ as s,o,c as e,a}from"./app.0312b331.js";const n={},p=a(`

    ModuleContextThemeWrapper - class

    class ModuleContextThemeWrapper private constructor(baseContext: Context, theme: Int, configuration: Configuration?) : ContextThemeWrapper
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.0 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u4EE3\u7406 ContextThemeWrapper\u3002

    \u901A\u8FC7\u5305\u88C5\uFF0C\u4F60\u53EF\u4EE5\u8F7B\u677E\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u6765\u81EA\u6A21\u5757\u7684\u4E3B\u9898\u8D44\u6E90\u3002

    applyConfiguration - method

    fun applyConfiguration(initiate: Configuration.() -> Unit): ModuleContextThemeWrapper
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.0 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u8BBE\u7F6E\u5F53\u524D ModuleContextThemeWrapper \u7684 Configuration\u3002

    \u8BBE\u7F6E\u540E\u4F1A\u81EA\u52A8\u8C03\u7528 Resources.updateConfiguration\u3002

    `,14),l=[p];function t(c,r){return o(),e("div",null,l)}const i=s(n,[["render",t],["__file","ModuleContextThemeWrapper.html.vue"]]);export{i as default}; diff --git a/docs/assets/ModuleContextThemeWrapper.html.9051f98a.js b/docs/assets/ModuleContextThemeWrapper.html.25f70921.js similarity index 98% rename from docs/assets/ModuleContextThemeWrapper.html.9051f98a.js rename to docs/assets/ModuleContextThemeWrapper.html.25f70921.js index d4fb43abf..f81fd2de1 100644 --- a/docs/assets/ModuleContextThemeWrapper.html.9051f98a.js +++ b/docs/assets/ModuleContextThemeWrapper.html.25f70921.js @@ -1,3 +1,3 @@ -import{_ as s,o,c as e,a as n}from"./app.09f06ad9.js";const a={},t=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModuleContextThemeWrapper - class

    class ModuleContextThemeWrapper private constructor(baseContext: Context, theme: Int, configuration: Configuration?) : ContextThemeWrapper
    +import{_ as s,o,c as e,a as n}from"./app.0312b331.js";const a={},t=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModuleContextThemeWrapper - class

    class ModuleContextThemeWrapper private constructor(baseContext: Context, theme: Int, configuration: Configuration?) : ContextThemeWrapper
     

    Change Records

    v1.1.0 added

    Function Illustrate

    \u4EE3\u7406 ContextThemeWrapper\u3002

    \u901A\u8FC7\u5305\u88C5\uFF0C\u4F60\u53EF\u4EE5\u8F7B\u677E\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u6765\u81EA\u6A21\u5757\u7684\u4E3B\u9898\u8D44\u6E90\u3002

    applyConfiguration - method

    fun applyConfiguration(initiate: Configuration.() -> Unit): ModuleContextThemeWrapper
     

    Change Records

    v1.1.0 added

    Function Illustrate

    \u8BBE\u7F6E\u5F53\u524D ModuleContextThemeWrapper \u7684 Configuration\u3002

    \u8BBE\u7F6E\u540E\u4F1A\u81EA\u52A8\u8C03\u7528 Resources.updateConfiguration\u3002

    `,15),p=[t];function l(r,c){return o(),e("div",null,p)}const d=s(a,[["render",l],["__file","ModuleContextThemeWrapper.html.vue"]]);export{d as default}; diff --git a/docs/assets/ModulePreferenceFragment.html.acaa7c53.js b/docs/assets/ModulePreferenceFragment.html.0446868f.js similarity index 99% rename from docs/assets/ModulePreferenceFragment.html.acaa7c53.js rename to docs/assets/ModulePreferenceFragment.html.0446868f.js index 2122d6d6b..d5a808b81 100644 --- a/docs/assets/ModulePreferenceFragment.html.acaa7c53.js +++ b/docs/assets/ModulePreferenceFragment.html.0446868f.js @@ -1,4 +1,4 @@ -import{_ as s,o as e,c as n,a}from"./app.09f06ad9.js";const o={},l=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModulePreferenceFragment - class

    abstract class ModulePreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener
    +import{_ as s,o as e,c as n,a}from"./app.0312b331.js";const o={},l=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModulePreferenceFragment - class

    abstract class ModulePreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener
     

    Change Records

    v1.0.78 added

    Function Illustrate

    \u8FD9\u662F\u5BF9\u4F7F\u7528 YukiHookAPI Xposed \u6A21\u5757\u5B9E\u73B0\u4E2D\u7684\u4E00\u4E2A\u6269\u5C55\u529F\u80FD\u3002

    \u6B64\u7C7B\u63A5\u7BA1\u4E86 PreferenceFragmentCompat \u5E76\u5BF9\u5176\u5B9E\u73B0\u4E86 Sp \u5B58\u50A8\u5728 Xposed \u6A21\u5757\u4E2D\u7684\u5168\u5C40\u53EF\u8BFB\u53EF\u5199\u3002

    \u5728\u4F60\u4F7F\u7528 PreferenceFragmentCompat \u7684\u5B9E\u4F8B\u4E2D\uFF0C\u5C06\u7EE7\u627F\u5BF9\u8C61\u6362\u6210\u6B64\u7C7B\u3002

    \u7136\u540E\u8BF7\u5C06\u91CD\u5199\u65B9\u6CD5\u7531 onCreatePreferences \u66FF\u6362\u4E3A onCreatePreferencesInModuleApp \u5373\u53EF\u3002

    Function Example

    \u4F7F\u7528 ModulePreferenceFragment \u521B\u5EFA\u4E00\u4E2A PreferenceFragmentCompat \u5BF9\u8C61\u3002

    The following example

    class SettingsFragment : ModulePreferenceFragment() {
     
         override fun onCreatePreferencesInModuleApp(savedInstanceState: Bundle?, rootKey: String?) {
    diff --git a/docs/assets/ModulePreferenceFragment.html.3af35864.js b/docs/assets/ModulePreferenceFragment.html.7cd637b0.js
    similarity index 99%
    rename from docs/assets/ModulePreferenceFragment.html.3af35864.js
    rename to docs/assets/ModulePreferenceFragment.html.7cd637b0.js
    index 53f3fc339..eff404bea 100644
    --- a/docs/assets/ModulePreferenceFragment.html.3af35864.js
    +++ b/docs/assets/ModulePreferenceFragment.html.7cd637b0.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as e,c as n,a}from"./app.09f06ad9.js";const o={},l=a(`

    ModulePreferenceFragment - class

    abstract class ModulePreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener
    +import{_ as s,o as e,c as n,a}from"./app.0312b331.js";const o={},l=a(`

    ModulePreferenceFragment - class

    abstract class ModulePreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.78 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u5BF9\u4F7F\u7528 YukiHookAPI Xposed \u6A21\u5757\u5B9E\u73B0\u4E2D\u7684\u4E00\u4E2A\u6269\u5C55\u529F\u80FD\u3002

    \u6B64\u7C7B\u63A5\u7BA1\u4E86 PreferenceFragmentCompat \u5E76\u5BF9\u5176\u5B9E\u73B0\u4E86 Sp \u5B58\u50A8\u5728 Xposed \u6A21\u5757\u4E2D\u7684\u5168\u5C40\u53EF\u8BFB\u53EF\u5199\u3002

    \u5728\u4F60\u4F7F\u7528 PreferenceFragmentCompat \u7684\u5B9E\u4F8B\u4E2D\uFF0C\u5C06\u7EE7\u627F\u5BF9\u8C61\u6362\u6210\u6B64\u7C7B\u3002

    \u7136\u540E\u8BF7\u5C06\u91CD\u5199\u65B9\u6CD5\u7531 onCreatePreferences \u66FF\u6362\u4E3A onCreatePreferencesInModuleApp \u5373\u53EF\u3002

    \u529F\u80FD\u793A\u4F8B

    \u4F7F\u7528 ModulePreferenceFragment \u521B\u5EFA\u4E00\u4E2A PreferenceFragmentCompat \u5BF9\u8C61\u3002

    \u793A\u4F8B\u5982\u4E0B

    class SettingsFragment : ModulePreferenceFragment() {
     
         override fun onCreatePreferencesInModuleApp(savedInstanceState: Bundle?, rootKey: String?) {
    diff --git a/docs/assets/NameRules.html.f3318415.js b/docs/assets/NameRules.html.17e009b7.js
    similarity index 99%
    rename from docs/assets/NameRules.html.f3318415.js
    rename to docs/assets/NameRules.html.17e009b7.js
    index 6bc459e31..9cb623f53 100644
    --- a/docs/assets/NameRules.html.f3318415.js
    +++ b/docs/assets/NameRules.html.17e009b7.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as e,c as o,a as n}from"./app.09f06ad9.js";const a={},l=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    NameRules - class

    class NameRules private constructor()
    +import{_ as s,o as e,c as o,a as n}from"./app.0312b331.js";const a={},l=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    NameRules - class

    class NameRules private constructor()
     

    Change Records

    v1.0.88 added

    v1.1.0 modified

    NameConditions \u66F4\u540D\u4E3A NameRules

    \u4F5C\u4E3A lambda \u6574\u4F53\u5224\u65AD\u6761\u4EF6\u4F7F\u7528

    \u79FB\u52A8\u5230 base \u5305\u540D

    \u79C1\u6709\u5316\u6784\u9020\u65B9\u6CD5

    Function Illustrate

    \u8FD9\u662F\u4E00\u4E2A\u6A21\u7CCA Class\u3001Member \u540D\u79F0\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

    \u53EF\u5BF9 R8 \u6DF7\u6DC6\u540E\u7684 Class\u3001Member \u8FDB\u884C\u66F4\u52A0\u8BE6\u7EC6\u7684\u5B9A\u4F4D\u3002

    String.isSynthetic - i-ext-method

    fun String.isSynthetic(index: Int): Boolean
     

    Change Records

    v1.0.88 added

    v1.1.0 modified

    \u7EDF\u4E00\u5408\u5E76\u5230\u6269\u5C55\u65B9\u6CD5\u5E76\u6539\u540D

    Function Illustrate

    \u662F\u5426\u4E3A\u533F\u540D\u7C7B\u7684\u4E3B\u7C7B\u8C03\u7528\u5BF9\u8C61\u3002

    String.isOnlySymbols - i-ext-method

    fun String.isOnlySymbols(): Boolean
     

    Change Records

    v1.0.88 added

    v1.1.0 modified

    \u7EDF\u4E00\u5408\u5E76\u5230\u6269\u5C55\u65B9\u6CD5\u5E76\u6539\u540D

    Function Illustrate

    \u662F\u5426\u53EA\u6709\u7B26\u53F7\u3002

    String.isOnlyLetters - i-ext-method

    fun String.isOnlyLetters(): Boolean
    diff --git a/docs/assets/NameRules.html.8e351662.js b/docs/assets/NameRules.html.a6cf68ea.js
    similarity index 99%
    rename from docs/assets/NameRules.html.8e351662.js
    rename to docs/assets/NameRules.html.a6cf68ea.js
    index 0e801f414..16f608106 100644
    --- a/docs/assets/NameRules.html.8e351662.js
    +++ b/docs/assets/NameRules.html.a6cf68ea.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as e,c as o,a as n}from"./app.09f06ad9.js";const a={},p=n(`

    NameRules - class

    class NameRules private constructor()
    +import{_ as s,o as e,c as o,a as n}from"./app.0312b331.js";const a={},p=n(`

    NameRules - class

    class NameRules private constructor()
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    v1.1.0 \u4FEE\u6539

    NameConditions \u66F4\u540D\u4E3A NameRules

    \u4F5C\u4E3A lambda \u6574\u4F53\u5224\u65AD\u6761\u4EF6\u4F7F\u7528

    \u79FB\u52A8\u5230 base \u5305\u540D

    \u79C1\u6709\u5316\u6784\u9020\u65B9\u6CD5

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u4E00\u4E2A\u6A21\u7CCA Class\u3001Member \u540D\u79F0\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

    \u53EF\u5BF9 R8 \u6DF7\u6DC6\u540E\u7684 Class\u3001Member \u8FDB\u884C\u66F4\u52A0\u8BE6\u7EC6\u7684\u5B9A\u4F4D\u3002

    String.isSynthetic - i-ext-method

    fun String.isSynthetic(index: Int): Boolean
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    v1.1.0 \u4FEE\u6539

    \u7EDF\u4E00\u5408\u5E76\u5230\u6269\u5C55\u65B9\u6CD5\u5E76\u6539\u540D

    \u529F\u80FD\u63CF\u8FF0

    \u662F\u5426\u4E3A\u533F\u540D\u7C7B\u7684\u4E3B\u7C7B\u8C03\u7528\u5BF9\u8C61\u3002

    String.isOnlySymbols - i-ext-method

    fun String.isOnlySymbols(): Boolean
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    v1.1.0 \u4FEE\u6539

    \u7EDF\u4E00\u5408\u5E76\u5230\u6269\u5C55\u65B9\u6CD5\u5E76\u6539\u540D

    \u529F\u80FD\u63CF\u8FF0

    \u662F\u5426\u53EA\u6709\u7B26\u53F7\u3002

    String.isOnlyLetters - i-ext-method

    fun String.isOnlyLetters(): Boolean
    diff --git a/docs/assets/ObjectRules.html.761f5873.js b/docs/assets/ObjectRules.html.77ec5864.js
    similarity index 96%
    rename from docs/assets/ObjectRules.html.761f5873.js
    rename to docs/assets/ObjectRules.html.77ec5864.js
    index 7f0f55e1d..7b0663b81 100644
    --- a/docs/assets/ObjectRules.html.761f5873.js
    +++ b/docs/assets/ObjectRules.html.77ec5864.js
    @@ -1,2 +1,2 @@
    -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const l={},n=a(`

    ObjectRules - class

    class ObjectRules private constructor(private val instance: Any)
    +import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const l={},n=a(`

    ObjectRules - class

    class ObjectRules private constructor(private val instance: Any)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.5 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u4E00\u4E2A\u4EFB\u610F\u5BF9\u8C61\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

    \u53EF\u5BF9 R8 \u6DF7\u6DC6\u540E\u7684 Class\u3001Member \u8FDB\u884C\u66F4\u52A0\u8BE6\u7EC6\u7684\u5B9A\u4F4D\u3002

    `,7),c=[n];function t(p,r){return e(),o("div",null,c)}const i=s(l,[["render",t],["__file","ObjectRules.html.vue"]]);export{i as default}; diff --git a/docs/assets/ObjectRules.html.2f863b01.js b/docs/assets/ObjectRules.html.94573ea1.js similarity index 96% rename from docs/assets/ObjectRules.html.2f863b01.js rename to docs/assets/ObjectRules.html.94573ea1.js index 8e2892004..abe795ccf 100644 --- a/docs/assets/ObjectRules.html.2f863b01.js +++ b/docs/assets/ObjectRules.html.94573ea1.js @@ -1,2 +1,2 @@ -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},t=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ObjectRules - class

    class ObjectRules private constructor(private val instance: Any)
    +import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},t=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ObjectRules - class

    class ObjectRules private constructor(private val instance: Any)
     

    Change Records

    v1.1.5 added

    Function Illustrate

    \u8FD9\u662F\u4E00\u4E2A\u4EFB\u610F\u5BF9\u8C61\u6761\u4EF6\u5B9E\u73B0\u7C7B\u3002

    \u53EF\u5BF9 R8 \u6DF7\u6DC6\u540E\u7684 Class\u3001Member \u8FDB\u884C\u66F4\u52A0\u8BE6\u7EC6\u7684\u5B9A\u4F4D\u3002

    `,8),c=[t];function l(r,p){return e(),o("div",null,c)}const d=s(n,[["render",l],["__file","ObjectRules.html.vue"]]);export{d as default}; diff --git a/docs/assets/PackageParam.html.68d751b6.js b/docs/assets/PackageParam.html.0e757b95.js similarity index 99% rename from docs/assets/PackageParam.html.68d751b6.js rename to docs/assets/PackageParam.html.0e757b95.js index fd2413f88..1a5c2398c 100644 --- a/docs/assets/PackageParam.html.68d751b6.js +++ b/docs/assets/PackageParam.html.0e757b95.js @@ -1,4 +1,4 @@ -import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},l=n(`

    PackageParam - class

    open class PackageParam internal constructor(internal var wrapper: PackageParamWrapper?)
    +import{_ as s,o,c as a,a as n}from"./app.0312b331.js";const e={},l=n(`

    PackageParam - class

    open class PackageParam internal constructor(internal var wrapper: PackageParamWrapper?)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u88C5\u8F7D Hook \u7684\u76EE\u6807 APP \u5165\u53E3\u5BF9\u8C61\u5B9E\u73B0\u7C7B\u3002

    appClassLoader - field

    var appClassLoader\uFF1AClassLoader
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    v1.1.5 \u4FEE\u6539

    \u53EF\u4EE5\u52A8\u6001\u4FEE\u6539\u6B64\u53D8\u91CF\u7684\u503C

    \u529F\u80FD\u63CF\u8FF0

    \u83B7\u53D6\u3001\u8BBE\u7F6E\u5F53\u524D Hook APP \u7684 ClassLoader\u3002

    \u4F60\u53EF\u4EE5\u5728\u8FD9\u91CC\u624B\u52A8\u8BBE\u7F6E\u5F53\u524D Hook APP \u7684 ClassLoader\uFF0C\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u81EA\u52A8\u83B7\u53D6\u3002

    \u7279\u522B\u6CE8\u610F

    \u5982\u679C\u8BBE\u7F6E\u4E86\u9519\u8BEF\u6216\u65E0\u6548\u7684 ClassLoader \u4F1A\u9020\u6210\u529F\u80FD\u5F02\u5E38\uFF0C\u8BF7\u8C28\u614E\u64CD\u4F5C\u3002

    appInfo - field

    val appInfo: ApplicationInfo
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u83B7\u53D6\u5F53\u524D Hook APP \u7684 ApplicationInfo\u3002

    appUserId - field

    val appUserId: Int
    @@ -139,4 +139,4 @@ import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},l=n(`

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onTrimMemory\u3002

    onConfigurationChanged - method

    fun onConfigurationChanged(result: (self: Application, config: Configuration) -> Unit)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onConfigurationChanged\u3002

    registerReceiver - method

    fun registerReceiver(vararg action: String, result: (context: Context, intent: Intent) -> Unit)
     
    fun registerReceiver(filter: IntentFilter, result: (context: Context, intent: Intent) -> Unit)
    -

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    v1.1.7 \u4FEE\u6539

    \u65B0\u589E\u76F4\u63A5\u4F7F\u7528 IntentFilter \u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C

    \u529F\u80FD\u63CF\u8FF0

    \u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C\u3002

    `,436),p=[l];function c(r,t){return o(),a("div",null,p)}const i=s(e,[["render",c],["__file","PackageParam.html.vue"]]);export{i as default}; +

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    v1.1.8 \u4FEE\u6539

    \u65B0\u589E\u76F4\u63A5\u4F7F\u7528 IntentFilter \u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C

    \u529F\u80FD\u63CF\u8FF0

    \u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C\u3002

    `,436),p=[l];function c(r,t){return o(),a("div",null,p)}const i=s(e,[["render",c],["__file","PackageParam.html.vue"]]);export{i as default}; diff --git a/docs/assets/PackageParam.html.ffad7496.js b/docs/assets/PackageParam.html.2233e4f2.js similarity index 97% rename from docs/assets/PackageParam.html.ffad7496.js rename to docs/assets/PackageParam.html.2233e4f2.js index 69e2d34b2..101831e70 100644 --- a/docs/assets/PackageParam.html.ffad7496.js +++ b/docs/assets/PackageParam.html.2233e4f2.js @@ -1 +1 @@ -const e=JSON.parse('{"key":"v-b381a126","path":"/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html","title":"PackageParam - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"appClassLoader - field","slug":"appclassloader-field","link":"#appclassloader-field","children":[]},{"level":2,"title":"appInfo - field","slug":"appinfo-field","link":"#appinfo-field","children":[]},{"level":2,"title":"appUserId - field","slug":"appuserid-field","link":"#appuserid-field","children":[]},{"level":2,"title":"appContext - field","slug":"appcontext-field","link":"#appcontext-field","children":[]},{"level":2,"title":"appResources - field","slug":"appresources-field","link":"#appresources-field","children":[]},{"level":2,"title":"systemContext - field","slug":"systemcontext-field","link":"#systemcontext-field","children":[]},{"level":2,"title":"processName - field","slug":"processname-field","link":"#processname-field","children":[]},{"level":2,"title":"packageName - field","slug":"packagename-field","link":"#packagename-field","children":[]},{"level":2,"title":"isFirstApplication - field","slug":"isfirstapplication-field","link":"#isfirstapplication-field","children":[]},{"level":2,"title":"mainProcessName - field","slug":"mainprocessname-field","link":"#mainprocessname-field","children":[]},{"level":2,"title":"moduleAppFilePath - field","slug":"moduleappfilepath-field","link":"#moduleappfilepath-field","children":[]},{"level":2,"title":"moduleAppResources - field","slug":"moduleappresources-field","link":"#moduleappresources-field","children":[]},{"level":2,"title":"prefs - field","slug":"prefs-field","link":"#prefs-field","children":[]},{"level":2,"title":"prefs - method","slug":"prefs-method","link":"#prefs-method","children":[]},{"level":2,"title":"dataChannel - field","slug":"datachannel-field","link":"#datachannel-field","children":[]},{"level":2,"title":"resources - method","slug":"resources-method","link":"#resources-method","children":[]},{"level":2,"title":"refreshModuleAppResources - method","slug":"refreshmoduleappresources-method","link":"#refreshmoduleappresources-method","children":[]},{"level":2,"title":"onAppLifecycle - method","slug":"onapplifecycle-method","link":"#onapplifecycle-method","children":[]},{"level":2,"title":"loadApp - method","slug":"loadapp-method","link":"#loadapp-method","children":[]},{"level":2,"title":"loadZygote - method","slug":"loadzygote-method","link":"#loadzygote-method","children":[]},{"level":2,"title":"loadSystem - method","slug":"loadsystem-method","link":"#loadsystem-method","children":[]},{"level":2,"title":"withProcess - method","slug":"withprocess-method","link":"#withprocess-method","children":[]},{"level":2,"title":"loadHooker - method","slug":"loadhooker-method","link":"#loadhooker-method","children":[]},{"level":2,"title":"searchClass - method","slug":"searchclass-method","link":"#searchclass-method","children":[]},{"level":2,"title":"String+VariousClass.toClass - i-ext-method","slug":"string-variousclass-toclass-i-ext-method","link":"#string-variousclass-toclass-i-ext-method","children":[]},{"level":2,"title":"String+VariousClass.toClassOrNull - i-ext-method","slug":"string-variousclass-toclassornull-i-ext-method","link":"#string-variousclass-toclassornull-i-ext-method","children":[]},{"level":2,"title":"String.hasClass - i-ext-method","slug":"string-hasclass-i-ext-method","link":"#string-hasclass-i-ext-method","children":[]},{"level":2,"title":"findClass - method","slug":"findclass-method","link":"#findclass-method","children":[]},{"level":2,"title":"String+Class+VariousClass+HookClass.hook - i-ext-method","slug":"string-class-variousclass-hookclass-hook-i-ext-method","link":"#string-class-variousclass-hookclass-hook-i-ext-method","children":[]},{"level":2,"title":"HookResources.hook - i-ext-method","slug":"hookresources-hook-i-ext-method","link":"#hookresources-hook-i-ext-method","children":[]},{"level":2,"title":"AppLifecycle - class","slug":"applifecycle-class","link":"#applifecycle-class","children":[{"level":3,"title":"attachBaseContext - method","slug":"attachbasecontext-method","link":"#attachbasecontext-method","children":[]},{"level":3,"title":"onCreate - method","slug":"oncreate-method","link":"#oncreate-method","children":[]},{"level":3,"title":"onTerminate - method","slug":"onterminate-method","link":"#onterminate-method","children":[]},{"level":3,"title":"onLowMemory - method","slug":"onlowmemory-method","link":"#onlowmemory-method","children":[]},{"level":3,"title":"onTrimMemory - method","slug":"ontrimmemory-method","link":"#ontrimmemory-method","children":[]},{"level":3,"title":"onConfigurationChanged - method","slug":"onconfigurationchanged-method","link":"#onconfigurationchanged-method","children":[]},{"level":3,"title":"registerReceiver - method","slug":"registerreceiver-method","link":"#registerreceiver-method","children":[]}]}],"git":{"updatedTime":1675174760000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":8}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md"}');export{e as data}; +const e=JSON.parse('{"key":"v-b381a126","path":"/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html","title":"PackageParam - class","lang":"en-US","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"appClassLoader - field","slug":"appclassloader-field","link":"#appclassloader-field","children":[]},{"level":2,"title":"appInfo - field","slug":"appinfo-field","link":"#appinfo-field","children":[]},{"level":2,"title":"appUserId - field","slug":"appuserid-field","link":"#appuserid-field","children":[]},{"level":2,"title":"appContext - field","slug":"appcontext-field","link":"#appcontext-field","children":[]},{"level":2,"title":"appResources - field","slug":"appresources-field","link":"#appresources-field","children":[]},{"level":2,"title":"systemContext - field","slug":"systemcontext-field","link":"#systemcontext-field","children":[]},{"level":2,"title":"processName - field","slug":"processname-field","link":"#processname-field","children":[]},{"level":2,"title":"packageName - field","slug":"packagename-field","link":"#packagename-field","children":[]},{"level":2,"title":"isFirstApplication - field","slug":"isfirstapplication-field","link":"#isfirstapplication-field","children":[]},{"level":2,"title":"mainProcessName - field","slug":"mainprocessname-field","link":"#mainprocessname-field","children":[]},{"level":2,"title":"moduleAppFilePath - field","slug":"moduleappfilepath-field","link":"#moduleappfilepath-field","children":[]},{"level":2,"title":"moduleAppResources - field","slug":"moduleappresources-field","link":"#moduleappresources-field","children":[]},{"level":2,"title":"prefs - field","slug":"prefs-field","link":"#prefs-field","children":[]},{"level":2,"title":"prefs - method","slug":"prefs-method","link":"#prefs-method","children":[]},{"level":2,"title":"dataChannel - field","slug":"datachannel-field","link":"#datachannel-field","children":[]},{"level":2,"title":"resources - method","slug":"resources-method","link":"#resources-method","children":[]},{"level":2,"title":"refreshModuleAppResources - method","slug":"refreshmoduleappresources-method","link":"#refreshmoduleappresources-method","children":[]},{"level":2,"title":"onAppLifecycle - method","slug":"onapplifecycle-method","link":"#onapplifecycle-method","children":[]},{"level":2,"title":"loadApp - method","slug":"loadapp-method","link":"#loadapp-method","children":[]},{"level":2,"title":"loadZygote - method","slug":"loadzygote-method","link":"#loadzygote-method","children":[]},{"level":2,"title":"loadSystem - method","slug":"loadsystem-method","link":"#loadsystem-method","children":[]},{"level":2,"title":"withProcess - method","slug":"withprocess-method","link":"#withprocess-method","children":[]},{"level":2,"title":"loadHooker - method","slug":"loadhooker-method","link":"#loadhooker-method","children":[]},{"level":2,"title":"searchClass - method","slug":"searchclass-method","link":"#searchclass-method","children":[]},{"level":2,"title":"String+VariousClass.toClass - i-ext-method","slug":"string-variousclass-toclass-i-ext-method","link":"#string-variousclass-toclass-i-ext-method","children":[]},{"level":2,"title":"String+VariousClass.toClassOrNull - i-ext-method","slug":"string-variousclass-toclassornull-i-ext-method","link":"#string-variousclass-toclassornull-i-ext-method","children":[]},{"level":2,"title":"String.hasClass - i-ext-method","slug":"string-hasclass-i-ext-method","link":"#string-hasclass-i-ext-method","children":[]},{"level":2,"title":"findClass - method","slug":"findclass-method","link":"#findclass-method","children":[]},{"level":2,"title":"String+Class+VariousClass+HookClass.hook - i-ext-method","slug":"string-class-variousclass-hookclass-hook-i-ext-method","link":"#string-class-variousclass-hookclass-hook-i-ext-method","children":[]},{"level":2,"title":"HookResources.hook - i-ext-method","slug":"hookresources-hook-i-ext-method","link":"#hookresources-hook-i-ext-method","children":[]},{"level":2,"title":"AppLifecycle - class","slug":"applifecycle-class","link":"#applifecycle-class","children":[{"level":3,"title":"attachBaseContext - method","slug":"attachbasecontext-method","link":"#attachbasecontext-method","children":[]},{"level":3,"title":"onCreate - method","slug":"oncreate-method","link":"#oncreate-method","children":[]},{"level":3,"title":"onTerminate - method","slug":"onterminate-method","link":"#onterminate-method","children":[]},{"level":3,"title":"onLowMemory - method","slug":"onlowmemory-method","link":"#onlowmemory-method","children":[]},{"level":3,"title":"onTrimMemory - method","slug":"ontrimmemory-method","link":"#ontrimmemory-method","children":[]},{"level":3,"title":"onConfigurationChanged - method","slug":"onconfigurationchanged-method","link":"#onconfigurationchanged-method","children":[]},{"level":3,"title":"registerReceiver - method","slug":"registerreceiver-method","link":"#registerreceiver-method","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":9}]},"filePathRelative":"en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md"}');export{e as data}; diff --git a/docs/assets/PackageParam.html.8ce464d4.js b/docs/assets/PackageParam.html.268f9198.js similarity index 97% rename from docs/assets/PackageParam.html.8ce464d4.js rename to docs/assets/PackageParam.html.268f9198.js index 77ab947f8..baa60d610 100644 --- a/docs/assets/PackageParam.html.8ce464d4.js +++ b/docs/assets/PackageParam.html.268f9198.js @@ -1 +1 @@ -const e=JSON.parse('{"key":"v-100b529c","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html","title":"PackageParam - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"appClassLoader - field","slug":"appclassloader-field","link":"#appclassloader-field","children":[]},{"level":2,"title":"appInfo - field","slug":"appinfo-field","link":"#appinfo-field","children":[]},{"level":2,"title":"appUserId - field","slug":"appuserid-field","link":"#appuserid-field","children":[]},{"level":2,"title":"appContext - field","slug":"appcontext-field","link":"#appcontext-field","children":[]},{"level":2,"title":"appResources - field","slug":"appresources-field","link":"#appresources-field","children":[]},{"level":2,"title":"systemContext - field","slug":"systemcontext-field","link":"#systemcontext-field","children":[]},{"level":2,"title":"processName - field","slug":"processname-field","link":"#processname-field","children":[]},{"level":2,"title":"packageName - field","slug":"packagename-field","link":"#packagename-field","children":[]},{"level":2,"title":"isFirstApplication - field","slug":"isfirstapplication-field","link":"#isfirstapplication-field","children":[]},{"level":2,"title":"mainProcessName - field","slug":"mainprocessname-field","link":"#mainprocessname-field","children":[]},{"level":2,"title":"moduleAppFilePath - field","slug":"moduleappfilepath-field","link":"#moduleappfilepath-field","children":[]},{"level":2,"title":"moduleAppResources - field","slug":"moduleappresources-field","link":"#moduleappresources-field","children":[]},{"level":2,"title":"prefs - field","slug":"prefs-field","link":"#prefs-field","children":[]},{"level":2,"title":"prefs - method","slug":"prefs-method","link":"#prefs-method","children":[]},{"level":2,"title":"dataChannel - field","slug":"datachannel-field","link":"#datachannel-field","children":[]},{"level":2,"title":"resources - method","slug":"resources-method","link":"#resources-method","children":[]},{"level":2,"title":"refreshModuleAppResources - method","slug":"refreshmoduleappresources-method","link":"#refreshmoduleappresources-method","children":[]},{"level":2,"title":"onAppLifecycle - method","slug":"onapplifecycle-method","link":"#onapplifecycle-method","children":[]},{"level":2,"title":"loadApp - method","slug":"loadapp-method","link":"#loadapp-method","children":[]},{"level":2,"title":"loadZygote - method","slug":"loadzygote-method","link":"#loadzygote-method","children":[]},{"level":2,"title":"loadSystem - method","slug":"loadsystem-method","link":"#loadsystem-method","children":[]},{"level":2,"title":"withProcess - method","slug":"withprocess-method","link":"#withprocess-method","children":[]},{"level":2,"title":"loadHooker - method","slug":"loadhooker-method","link":"#loadhooker-method","children":[]},{"level":2,"title":"searchClass - method","slug":"searchclass-method","link":"#searchclass-method","children":[]},{"level":2,"title":"String+VariousClass.toClass - i-ext-method","slug":"string-variousclass-toclass-i-ext-method","link":"#string-variousclass-toclass-i-ext-method","children":[]},{"level":2,"title":"String+VariousClass.toClassOrNull - i-ext-method","slug":"string-variousclass-toclassornull-i-ext-method","link":"#string-variousclass-toclassornull-i-ext-method","children":[]},{"level":2,"title":"String.hasClass - i-ext-method","slug":"string-hasclass-i-ext-method","link":"#string-hasclass-i-ext-method","children":[]},{"level":2,"title":"findClass - method","slug":"findclass-method","link":"#findclass-method","children":[]},{"level":2,"title":"String+Class+VariousClass+HookClass.hook - i-ext-method","slug":"string-class-variousclass-hookclass-hook-i-ext-method","link":"#string-class-variousclass-hookclass-hook-i-ext-method","children":[]},{"level":2,"title":"HookResources.hook - i-ext-method","slug":"hookresources-hook-i-ext-method","link":"#hookresources-hook-i-ext-method","children":[]},{"level":2,"title":"AppLifecycle - class","slug":"applifecycle-class","link":"#applifecycle-class","children":[{"level":3,"title":"attachBaseContext - method","slug":"attachbasecontext-method","link":"#attachbasecontext-method","children":[]},{"level":3,"title":"onCreate - method","slug":"oncreate-method","link":"#oncreate-method","children":[]},{"level":3,"title":"onTerminate - method","slug":"onterminate-method","link":"#onterminate-method","children":[]},{"level":3,"title":"onLowMemory - method","slug":"onlowmemory-method","link":"#onlowmemory-method","children":[]},{"level":3,"title":"onTrimMemory - method","slug":"ontrimmemory-method","link":"#ontrimmemory-method","children":[]},{"level":3,"title":"onConfigurationChanged - method","slug":"onconfigurationchanged-method","link":"#onconfigurationchanged-method","children":[]},{"level":3,"title":"registerReceiver - method","slug":"registerreceiver-method","link":"#registerreceiver-method","children":[]}]}],"git":{"updatedTime":1675174760000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":10}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md"}');export{e as data}; +const e=JSON.parse('{"key":"v-100b529c","path":"/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html","title":"PackageParam - class","lang":"zh-CN","frontmatter":{"pageClass":"code-page"},"excerpt":"","headers":[{"level":2,"title":"appClassLoader - field","slug":"appclassloader-field","link":"#appclassloader-field","children":[]},{"level":2,"title":"appInfo - field","slug":"appinfo-field","link":"#appinfo-field","children":[]},{"level":2,"title":"appUserId - field","slug":"appuserid-field","link":"#appuserid-field","children":[]},{"level":2,"title":"appContext - field","slug":"appcontext-field","link":"#appcontext-field","children":[]},{"level":2,"title":"appResources - field","slug":"appresources-field","link":"#appresources-field","children":[]},{"level":2,"title":"systemContext - field","slug":"systemcontext-field","link":"#systemcontext-field","children":[]},{"level":2,"title":"processName - field","slug":"processname-field","link":"#processname-field","children":[]},{"level":2,"title":"packageName - field","slug":"packagename-field","link":"#packagename-field","children":[]},{"level":2,"title":"isFirstApplication - field","slug":"isfirstapplication-field","link":"#isfirstapplication-field","children":[]},{"level":2,"title":"mainProcessName - field","slug":"mainprocessname-field","link":"#mainprocessname-field","children":[]},{"level":2,"title":"moduleAppFilePath - field","slug":"moduleappfilepath-field","link":"#moduleappfilepath-field","children":[]},{"level":2,"title":"moduleAppResources - field","slug":"moduleappresources-field","link":"#moduleappresources-field","children":[]},{"level":2,"title":"prefs - field","slug":"prefs-field","link":"#prefs-field","children":[]},{"level":2,"title":"prefs - method","slug":"prefs-method","link":"#prefs-method","children":[]},{"level":2,"title":"dataChannel - field","slug":"datachannel-field","link":"#datachannel-field","children":[]},{"level":2,"title":"resources - method","slug":"resources-method","link":"#resources-method","children":[]},{"level":2,"title":"refreshModuleAppResources - method","slug":"refreshmoduleappresources-method","link":"#refreshmoduleappresources-method","children":[]},{"level":2,"title":"onAppLifecycle - method","slug":"onapplifecycle-method","link":"#onapplifecycle-method","children":[]},{"level":2,"title":"loadApp - method","slug":"loadapp-method","link":"#loadapp-method","children":[]},{"level":2,"title":"loadZygote - method","slug":"loadzygote-method","link":"#loadzygote-method","children":[]},{"level":2,"title":"loadSystem - method","slug":"loadsystem-method","link":"#loadsystem-method","children":[]},{"level":2,"title":"withProcess - method","slug":"withprocess-method","link":"#withprocess-method","children":[]},{"level":2,"title":"loadHooker - method","slug":"loadhooker-method","link":"#loadhooker-method","children":[]},{"level":2,"title":"searchClass - method","slug":"searchclass-method","link":"#searchclass-method","children":[]},{"level":2,"title":"String+VariousClass.toClass - i-ext-method","slug":"string-variousclass-toclass-i-ext-method","link":"#string-variousclass-toclass-i-ext-method","children":[]},{"level":2,"title":"String+VariousClass.toClassOrNull - i-ext-method","slug":"string-variousclass-toclassornull-i-ext-method","link":"#string-variousclass-toclassornull-i-ext-method","children":[]},{"level":2,"title":"String.hasClass - i-ext-method","slug":"string-hasclass-i-ext-method","link":"#string-hasclass-i-ext-method","children":[]},{"level":2,"title":"findClass - method","slug":"findclass-method","link":"#findclass-method","children":[]},{"level":2,"title":"String+Class+VariousClass+HookClass.hook - i-ext-method","slug":"string-class-variousclass-hookclass-hook-i-ext-method","link":"#string-class-variousclass-hookclass-hook-i-ext-method","children":[]},{"level":2,"title":"HookResources.hook - i-ext-method","slug":"hookresources-hook-i-ext-method","link":"#hookresources-hook-i-ext-method","children":[]},{"level":2,"title":"AppLifecycle - class","slug":"applifecycle-class","link":"#applifecycle-class","children":[{"level":3,"title":"attachBaseContext - method","slug":"attachbasecontext-method","link":"#attachbasecontext-method","children":[]},{"level":3,"title":"onCreate - method","slug":"oncreate-method","link":"#oncreate-method","children":[]},{"level":3,"title":"onTerminate - method","slug":"onterminate-method","link":"#onterminate-method","children":[]},{"level":3,"title":"onLowMemory - method","slug":"onlowmemory-method","link":"#onlowmemory-method","children":[]},{"level":3,"title":"onTrimMemory - method","slug":"ontrimmemory-method","link":"#ontrimmemory-method","children":[]},{"level":3,"title":"onConfigurationChanged - method","slug":"onconfigurationchanged-method","link":"#onconfigurationchanged-method","children":[]},{"level":3,"title":"registerReceiver - method","slug":"registerreceiver-method","link":"#registerreceiver-method","children":[]}]}],"git":{"updatedTime":1675195165000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":11}]},"filePathRelative":"zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md"}');export{e as data}; diff --git a/docs/assets/PackageParam.html.740f0247.js b/docs/assets/PackageParam.html.b6f8e276.js similarity index 99% rename from docs/assets/PackageParam.html.740f0247.js rename to docs/assets/PackageParam.html.b6f8e276.js index 78e5f4977..8a67d1f97 100644 --- a/docs/assets/PackageParam.html.740f0247.js +++ b/docs/assets/PackageParam.html.b6f8e276.js @@ -1,4 +1,4 @@ -import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},l=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    PackageParam - class

    open class PackageParam internal constructor(internal var wrapper: PackageParamWrapper?)
    +import{_ as s,o,c as a,a as n}from"./app.0312b331.js";const e={},l=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    PackageParam - class

    open class PackageParam internal constructor(internal var wrapper: PackageParamWrapper?)
     

    Change Records

    v1.0 first

    Function Illustrate

    \u88C5\u8F7D Hook \u7684\u76EE\u6807 APP \u5165\u53E3\u5BF9\u8C61\u5B9E\u73B0\u7C7B\u3002

    appClassLoader - field

    var appClassLoader\uFF1AClassLoader
     

    Change Records

    v1.0 first

    v1.1.5 modified

    \u53EF\u4EE5\u52A8\u6001\u4FEE\u6539\u6B64\u53D8\u91CF\u7684\u503C

    Function Illustrate

    \u83B7\u53D6\u3001\u8BBE\u7F6E\u5F53\u524D Hook APP \u7684 ClassLoader\u3002

    \u4F60\u53EF\u4EE5\u5728\u8FD9\u91CC\u624B\u52A8\u8BBE\u7F6E\u5F53\u524D Hook APP \u7684 ClassLoader\uFF0C\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u81EA\u52A8\u83B7\u53D6\u3002

    Pay Attention

    \u5982\u679C\u8BBE\u7F6E\u4E86\u9519\u8BEF\u6216\u65E0\u6548\u7684 ClassLoader \u4F1A\u9020\u6210\u529F\u80FD\u5F02\u5E38\uFF0C\u8BF7\u8C28\u614E\u64CD\u4F5C\u3002

    appInfo - field

    val appInfo: ApplicationInfo
     

    Change Records

    v1.0 first

    Function Illustrate

    \u83B7\u53D6\u5F53\u524D Hook APP \u7684 ApplicationInfo\u3002

    appUserId - field

    val appUserId: Int
    @@ -139,4 +139,4 @@ import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const e={},l=n(`

    Change Records

    v1.0.88 added

    Function Illustrate

    \u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onTrimMemory\u3002

    onConfigurationChanged - method

    fun onConfigurationChanged(result: (self: Application, config: Configuration) -> Unit)
     

    Change Records

    v1.0.88 added

    Function Illustrate

    \u76D1\u542C\u5F53\u524D Hook APP \u88C5\u8F7D Application.onConfigurationChanged\u3002

    registerReceiver - method

    fun registerReceiver(vararg action: String, result: (context: Context, intent: Intent) -> Unit)
     
    fun registerReceiver(filter: IntentFilter, result: (context: Context, intent: Intent) -> Unit)
    -

    Change Records

    v1.0.88 added

    v1.1.7 modified

    \u65B0\u589E\u76F4\u63A5\u4F7F\u7528 IntentFilter \u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C

    Function Illustrate

    \u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C\u3002

    `,437),p=[l];function c(t,r){return o(),a("div",null,p)}const i=s(e,[["render",c],["__file","PackageParam.html.vue"]]);export{i as default}; +

    Change Records

    v1.0.88 added

    v1.1.8 modified

    \u65B0\u589E\u76F4\u63A5\u4F7F\u7528 IntentFilter \u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C

    Function Illustrate

    \u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C\u3002

    `,437),p=[l];function c(t,r){return o(),a("div",null,p)}const i=s(e,[["render",c],["__file","PackageParam.html.vue"]]);export{i as default}; diff --git a/docs/assets/PrefsData.html.28f7cfe7.js b/docs/assets/PrefsData.html.003efeae.js similarity index 99% rename from docs/assets/PrefsData.html.28f7cfe7.js rename to docs/assets/PrefsData.html.003efeae.js index 5b1e83b03..4474dfbe3 100644 --- a/docs/assets/PrefsData.html.28f7cfe7.js +++ b/docs/assets/PrefsData.html.003efeae.js @@ -1,4 +1,4 @@ -import{_ as s,o as a,c as n,a as l}from"./app.09f06ad9.js";const o={},p=l(`

    PrefsData - class

    data class PrefsData<T>(var key: String, var value: T) : Serializable
    +import{_ as s,o as a,c as n,a as l}from"./app.0312b331.js";const o={},p=l(`

    PrefsData - class

    data class PrefsData<T>(var key: String, var value: T) : Serializable
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.67 \u65B0\u589E

    v1.1.5 \u4FEE\u6539

    \u5B9E\u73B0\u4E86 Serializable \u63A5\u53E3

    \u529F\u80FD\u63CF\u8FF0

    \u952E\u503C\u5BF9\u5B58\u50A8\u6784\u9020\u7C7B\u3002

    \u8FD9\u4E2A\u7C7B\u662F\u5BF9 YukiHookModulePrefs \u7684\u4E00\u4E2A\u6269\u5C55\u7528\u6CD5\u3002

    \u529F\u80FD\u793A\u4F8B

    \u5EFA\u7ACB\u4E00\u4E2A\u6A21\u677F\u7C7B\u5B9A\u4E49\u6A21\u5757\u4E0E\u5BBF\u4E3B\u9700\u8981\u4F7F\u7528\u7684\u952E\u503C\u6570\u636E\u3002

    \u793A\u4F8B\u5982\u4E0B

    object DataConst {
     
         val TEST_KV_DATA_1 = PrefsData("test_data_1", "defalut value")
    diff --git a/docs/assets/PrefsData.html.a2967765.js b/docs/assets/PrefsData.html.dd2f7075.js
    similarity index 99%
    rename from docs/assets/PrefsData.html.a2967765.js
    rename to docs/assets/PrefsData.html.dd2f7075.js
    index f9c4e4c35..418dd6b09 100644
    --- a/docs/assets/PrefsData.html.a2967765.js
    +++ b/docs/assets/PrefsData.html.dd2f7075.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as a,c as n,a as l}from"./app.09f06ad9.js";const o={},e=l(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    PrefsData - class

    data class PrefsData<T>(var key: String, var value: T) : Serializable
    +import{_ as s,o as a,c as n,a as l}from"./app.0312b331.js";const o={},e=l(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    PrefsData - class

    data class PrefsData<T>(var key: String, var value: T) : Serializable
     

    Change Records

    v1.0.67 added

    v1.1.5 modified

    \u5B9E\u73B0\u4E86 Serializable \u63A5\u53E3

    Function Illustrate

    \u952E\u503C\u5BF9\u5B58\u50A8\u6784\u9020\u7C7B\u3002

    \u8FD9\u4E2A\u7C7B\u662F\u5BF9 YukiHookModulePrefs \u7684\u4E00\u4E2A\u6269\u5C55\u7528\u6CD5\u3002

    Function Example

    \u5EFA\u7ACB\u4E00\u4E2A\u6A21\u677F\u7C7B\u5B9A\u4E49\u6A21\u5757\u4E0E\u5BBF\u4E3B\u9700\u8981\u4F7F\u7528\u7684\u952E\u503C\u6570\u636E\u3002

    The following example

    object DataConst {
     
         val TEST_KV_DATA_1 = PrefsData("test_data_1", "defalut value")
    diff --git a/docs/assets/ReflectionFactory.html.d25e33be.js b/docs/assets/ReflectionFactory.html.04358924.js
    similarity index 99%
    rename from docs/assets/ReflectionFactory.html.d25e33be.js
    rename to docs/assets/ReflectionFactory.html.04358924.js
    index 1a6741554..0057a4e6a 100644
    --- a/docs/assets/ReflectionFactory.html.d25e33be.js
    +++ b/docs/assets/ReflectionFactory.html.04358924.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o,c as a,a as n}from"./app.09f06ad9.js";const l={},e=n(`

    ReflectionFactory - kt

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u81EA\u5B9A\u4E49 Member \u548C Class \u76F8\u5173\u529F\u80FD\u7684\u67E5\u627E\u5339\u914D\u4EE5\u53CA invoke \u7684\u5C01\u88C5\u7C7B\u3002

    MembersType - class

    enum class MembersType
    +import{_ as s,o,c as a,a as n}from"./app.0312b331.js";const l={},e=n(`

    ReflectionFactory - kt

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u81EA\u5B9A\u4E49 Member \u548C Class \u76F8\u5173\u529F\u80FD\u7684\u67E5\u627E\u5339\u914D\u4EE5\u53CA invoke \u7684\u5C01\u88C5\u7C7B\u3002

    MembersType - class

    enum class MembersType
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.0 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5B9A\u4E49\u4E00\u4E2A Class \u4E2D\u7684 Member \u7C7B\u578B

    ALL - enum

    ALL
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.0 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5168\u90E8 Method \u4E0E Constructor\u3002

    METHOD - enum

    METHOD
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.0 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5168\u90E8 Method\u3002

    CONSTRUCTOR - enum

    CONSTRUCTOR
    diff --git a/docs/assets/ReflectionFactory.html.e30e708f.js b/docs/assets/ReflectionFactory.html.7187b378.js
    similarity index 99%
    rename from docs/assets/ReflectionFactory.html.e30e708f.js
    rename to docs/assets/ReflectionFactory.html.7187b378.js
    index 66dc24bbf..65d2057ae 100644
    --- a/docs/assets/ReflectionFactory.html.e30e708f.js
    +++ b/docs/assets/ReflectionFactory.html.7187b378.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o,c as a,a as e}from"./app.09f06ad9.js";const n={},l=e(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ReflectionFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    \u8FD9\u662F\u81EA\u5B9A\u4E49 Member \u548C Class \u76F8\u5173\u529F\u80FD\u7684\u67E5\u627E\u5339\u914D\u4EE5\u53CA invoke \u7684\u5C01\u88C5\u7C7B\u3002

    MembersType - class

    enum class MembersType
    +import{_ as s,o,c as a,a as e}from"./app.0312b331.js";const n={},l=e(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ReflectionFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    \u8FD9\u662F\u81EA\u5B9A\u4E49 Member \u548C Class \u76F8\u5173\u529F\u80FD\u7684\u67E5\u627E\u5339\u914D\u4EE5\u53CA invoke \u7684\u5C01\u88C5\u7C7B\u3002

    MembersType - class

    enum class MembersType
     

    Change Records

    v1.1.0 added

    Function Illustrate

    \u5B9A\u4E49\u4E00\u4E2A Class \u4E2D\u7684 Member \u7C7B\u578B

    ALL - enum

    ALL
     

    Change Records

    v1.1.0 added

    Function Illustrate

    \u5168\u90E8 Method \u4E0E Constructor\u3002

    METHOD - enum

    METHOD
     

    Change Records

    v1.1.0 added

    Function Illustrate

    \u5168\u90E8 Method\u3002

    CONSTRUCTOR - enum

    CONSTRUCTOR
    diff --git a/docs/assets/VariableTypeFactory.html.027efeb7.js b/docs/assets/VariableTypeFactory.html.2ddb5a02.js
    similarity index 95%
    rename from docs/assets/VariableTypeFactory.html.027efeb7.js
    rename to docs/assets/VariableTypeFactory.html.2ddb5a02.js
    index 8e26b45d6..a6f27c8e9 100644
    --- a/docs/assets/VariableTypeFactory.html.027efeb7.js
    +++ b/docs/assets/VariableTypeFactory.html.2ddb5a02.js
    @@ -1 +1 @@
    -import{_ as a,r as n,o as r,c as s,b as o,d as c,a as i,e}from"./app.09f06ad9.js";const l={},p=i('

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    VariableTypeFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    \u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Java \u76F8\u5173\u57FA\u672C\u53D8\u91CF\u7C7B\u578B\u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

    ',6),d=e("\u8BE6\u60C5\u53EF "),h={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),u=e(" \u8FDB\u884C\u67E5\u770B\u3002");function k(b,f){const t=n("ExternalLinkIcon");return r(),s("div",null,[p,o("p",null,[d,o("a",h,[_,c(t)]),u])])}const y=a(l,[["render",k],["__file","VariableTypeFactory.html.vue"]]);export{y as default}; +import{_ as a,r as n,o as r,c as s,b as o,d as c,a as i,e}from"./app.0312b331.js";const l={},p=i('

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    VariableTypeFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    \u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Java \u76F8\u5173\u57FA\u672C\u53D8\u91CF\u7C7B\u578B\u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

    ',6),d=e("\u8BE6\u60C5\u53EF "),h={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),u=e(" \u8FDB\u884C\u67E5\u770B\u3002");function k(b,f){const t=n("ExternalLinkIcon");return r(),s("div",null,[p,o("p",null,[d,o("a",h,[_,c(t)]),u])])}const y=a(l,[["render",k],["__file","VariableTypeFactory.html.vue"]]);export{y as default}; diff --git a/docs/assets/VariableTypeFactory.html.0ea08bcb.js b/docs/assets/VariableTypeFactory.html.4579f14b.js similarity index 94% rename from docs/assets/VariableTypeFactory.html.0ea08bcb.js rename to docs/assets/VariableTypeFactory.html.4579f14b.js index 1e0a59c75..c54daf6d0 100644 --- a/docs/assets/VariableTypeFactory.html.0ea08bcb.js +++ b/docs/assets/VariableTypeFactory.html.4579f14b.js @@ -1 +1 @@ -import{_ as t,r as c,o as r,c as s,b as o,d as n,a as i,e}from"./app.09f06ad9.js";const l={},p=i('

    VariableTypeFactory - kt

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Java \u76F8\u5173\u57FA\u672C\u53D8\u91CF\u7C7B\u578B\u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

    ',5),d=e("\u8BE6\u60C5\u53EF "),_={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},h=e("\u70B9\u51FB\u8FD9\u91CC"),k=e(" \u8FDB\u884C\u67E5\u770B\u3002");function b(y,f){const a=c("ExternalLinkIcon");return r(),s("div",null,[p,o("p",null,[d,o("a",_,[h,n(a)]),k])])}const m=t(l,[["render",b],["__file","VariableTypeFactory.html.vue"]]);export{m as default}; +import{_ as t,r as c,o as r,c as s,b as o,d as n,a as i,e}from"./app.0312b331.js";const l={},p=i('

    VariableTypeFactory - kt

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Java \u76F8\u5173\u57FA\u672C\u53D8\u91CF\u7C7B\u578B\u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

    ',5),d=e("\u8BE6\u60C5\u53EF "),_={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},h=e("\u70B9\u51FB\u8FD9\u91CC"),k=e(" \u8FDB\u884C\u67E5\u770B\u3002");function b(y,f){const a=c("ExternalLinkIcon");return r(),s("div",null,[p,o("p",null,[d,o("a",_,[h,n(a)]),k])])}const m=t(l,[["render",b],["__file","VariableTypeFactory.html.vue"]]);export{m as default}; diff --git a/docs/assets/VariousClass.html.3928e7dd.js b/docs/assets/VariousClass.html.2a34064e.js similarity index 98% rename from docs/assets/VariousClass.html.3928e7dd.js rename to docs/assets/VariousClass.html.2a34064e.js index d3313f06e..91cc0f08d 100644 --- a/docs/assets/VariousClass.html.3928e7dd.js +++ b/docs/assets/VariousClass.html.2a34064e.js @@ -1,4 +1,4 @@ -import{_ as s,o,c as a,a as l}from"./app.09f06ad9.js";const e={},n=l(`

    VariousClass - class

    class VariousClass(private vararg val name: String)
    +import{_ as s,o,c as a,a as l}from"./app.0312b331.js";const e={},n=l(`

    VariousClass - class

    class VariousClass(private vararg val name: String)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    v1.1.5 \u4FEE\u6539

    \u79C1\u6709\u5316 name \u53C2\u6570\u5E76\u8BBE\u7F6E\u4E3A\u4E0D\u53EF\u4FEE\u6539

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u4E00\u4E2A\u4E0D\u786E\u5B9A\u6027 Class \u7C7B\u540D\u88C5\u8F7D\u5668\uFF0C\u901A\u8FC7 name \u88C5\u8F7D Class \u540D\u79F0\u6570\u7EC4\u3002

    get - method

    fun get(loader: ClassLoader? = null, initialize: Boolean): Class<*>
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.70 \u65B0\u589E

    v1.1.5 \u4FEE\u6539

    \u65B0\u589E initialize \u53C2\u6570

    \u529F\u80FD\u63CF\u8FF0

    \u83B7\u53D6\u5339\u914D\u7684\u5B9E\u4F53\u7C7B\u3002

    \u4F7F\u7528\u5F53\u524D loader \u88C5\u8F7D\u76EE\u6807 Class\u3002

    getOrNull - method

    fun getOrNull(loader: ClassLoader? = null, initialize: Boolean): Class<*>?
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.1.0 \u65B0\u589E

    v1.1.5 \u4FEE\u6539

    \u65B0\u589E initialize \u53C2\u6570

    \u529F\u80FD\u63CF\u8FF0

    \u83B7\u53D6\u5339\u914D\u7684\u5B9E\u4F53\u7C7B\u3002

    \u4F7F\u7528\u5F53\u524D loader \u88C5\u8F7D\u76EE\u6807 Class\u3002

    \u5339\u914D\u4E0D\u5230 Class \u4F1A\u8FD4\u56DE null\uFF0C\u4E0D\u4F1A\u629B\u51FA\u5F02\u5E38\u3002

    `,27),p=[n];function c(t,r){return o(),a("div",null,p)}const i=s(e,[["render",c],["__file","VariousClass.html.vue"]]);export{i as default}; diff --git a/docs/assets/VariousClass.html.bddd5327.js b/docs/assets/VariousClass.html.4f7e7b0e.js similarity index 98% rename from docs/assets/VariousClass.html.bddd5327.js rename to docs/assets/VariousClass.html.4f7e7b0e.js index 004fc1669..a08db7139 100644 --- a/docs/assets/VariousClass.html.bddd5327.js +++ b/docs/assets/VariousClass.html.4f7e7b0e.js @@ -1,4 +1,4 @@ -import{_ as s,o,c as a,a as e}from"./app.09f06ad9.js";const n={},l=e(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    VariousClass - class

    class VariousClass(private vararg val name: String)
    +import{_ as s,o,c as a,a as e}from"./app.0312b331.js";const n={},l=e(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    VariousClass - class

    class VariousClass(private vararg val name: String)
     

    Change Records

    v1.0 first

    v1.1.5 modified

    \u79C1\u6709\u5316 name \u53C2\u6570\u5E76\u8BBE\u7F6E\u4E3A\u4E0D\u53EF\u4FEE\u6539

    Function Illustrate

    \u8FD9\u662F\u4E00\u4E2A\u4E0D\u786E\u5B9A\u6027 Class \u7C7B\u540D\u88C5\u8F7D\u5668\uFF0C\u901A\u8FC7 name \u88C5\u8F7D Class \u540D\u79F0\u6570\u7EC4\u3002

    get - method

    fun get(loader: ClassLoader? = null, initialize: Boolean): Class<*>
     

    Change Records

    v1.0.70 added

    v1.1.5 modified

    \u65B0\u589E initialize \u53C2\u6570

    Function Illustrate

    \u83B7\u53D6\u5339\u914D\u7684\u5B9E\u4F53\u7C7B\u3002

    \u4F7F\u7528\u5F53\u524D loader \u88C5\u8F7D\u76EE\u6807 Class\u3002

    getOrNull - method

    fun getOrNull(loader: ClassLoader? = null, initialize: Boolean): Class<*>?
     

    Change Records

    v1.1.0 added

    v1.1.5 modified

    \u65B0\u589E initialize \u53C2\u6570

    Function Illustrate

    \u83B7\u53D6\u5339\u914D\u7684\u5B9E\u4F53\u7C7B\u3002

    \u4F7F\u7528\u5F53\u524D loader \u88C5\u8F7D\u76EE\u6807 Class\u3002

    \u5339\u914D\u4E0D\u5230 Class \u4F1A\u8FD4\u56DE null\uFF0C\u4E0D\u4F1A\u629B\u51FA\u5F02\u5E38\u3002

    `,28),p=[l];function c(t,r){return o(),a("div",null,p)}const i=s(n,[["render",c],["__file","VariousClass.html.vue"]]);export{i as default}; diff --git a/docs/assets/ViewTypeFactory.html.bc0d8a90.js b/docs/assets/ViewTypeFactory.html.21b1295e.js similarity index 94% rename from docs/assets/ViewTypeFactory.html.bc0d8a90.js rename to docs/assets/ViewTypeFactory.html.21b1295e.js index 460fb7e04..c83638f61 100644 --- a/docs/assets/ViewTypeFactory.html.bc0d8a90.js +++ b/docs/assets/ViewTypeFactory.html.21b1295e.js @@ -1 +1 @@ -import{_ as c,r as a,o as r,c as n,b as o,d as s,a as i,e}from"./app.09f06ad9.js";const d={},p=i('

    ViewTypeFactory - kt

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173 Widget \u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

    ',5),l=e("\u8BE6\u60C5\u53EF "),_={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},h=e("\u70B9\u51FB\u8FD9\u91CC"),k=e(" \u8FDB\u884C\u67E5\u770B\u3002");function y(f,u){const t=a("ExternalLinkIcon");return r(),n("div",null,[p,o("p",null,[l,o("a",_,[h,s(t)]),k])])}const b=c(d,[["render",y],["__file","ViewTypeFactory.html.vue"]]);export{b as default}; +import{_ as c,r as a,o as r,c as n,b as o,d as s,a as i,e}from"./app.0312b331.js";const d={},p=i('

    ViewTypeFactory - kt

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173 Widget \u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

    ',5),l=e("\u8BE6\u60C5\u53EF "),_={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},h=e("\u70B9\u51FB\u8FD9\u91CC"),k=e(" \u8FDB\u884C\u67E5\u770B\u3002");function y(f,u){const t=a("ExternalLinkIcon");return r(),n("div",null,[p,o("p",null,[l,o("a",_,[h,s(t)]),k])])}const b=c(d,[["render",y],["__file","ViewTypeFactory.html.vue"]]);export{b as default}; diff --git a/docs/assets/ViewTypeFactory.html.ffa51b1f.js b/docs/assets/ViewTypeFactory.html.2725bf5e.js similarity index 95% rename from docs/assets/ViewTypeFactory.html.ffa51b1f.js rename to docs/assets/ViewTypeFactory.html.2725bf5e.js index 86801733f..b34fd7937 100644 --- a/docs/assets/ViewTypeFactory.html.ffa51b1f.js +++ b/docs/assets/ViewTypeFactory.html.2725bf5e.js @@ -1 +1 @@ -import{_ as a,r as n,o as c,c as s,b as o,d as r,a as i,e}from"./app.09f06ad9.js";const p={},d=i('

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ViewTypeFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    \u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173 Widget \u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

    ',6),l=e("\u8BE6\u60C5\u53EF "),h={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),u=e(" \u8FDB\u884C\u67E5\u770B\u3002");function k(f,m){const t=n("ExternalLinkIcon");return c(),s("div",null,[d,o("p",null,[l,o("a",h,[_,r(t)]),u])])}const g=a(p,[["render",k],["__file","ViewTypeFactory.html.vue"]]);export{g as default}; +import{_ as a,r as n,o as c,c as s,b as o,d as r,a as i,e}from"./app.0312b331.js";const p={},d=i('

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ViewTypeFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    \u8FD9\u662F\u4E00\u4E2A\u9884\u7F6E\u53CD\u5C04\u7C7B\u578B\u7684\u5E38\u91CF\u7C7B\uFF0C\u4E3B\u8981\u4E3A Android \u76F8\u5173 Widget \u7684 Class \u5185\u5BB9\uFF0C\u8DDF\u968F\u7248\u672C\u66F4\u65B0\u4F1A\u9010\u4E00\u8FDB\u884C\u589E\u52A0\u3002

    ',6),l=e("\u8BE6\u60C5\u53EF "),h={href:"https://github.com/fankes/YukiHookAPI/blob/master/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.kt",target:"_blank",rel:"noopener noreferrer"},_=e("\u70B9\u51FB\u8FD9\u91CC"),u=e(" \u8FDB\u884C\u67E5\u770B\u3002");function k(f,m){const t=n("ExternalLinkIcon");return c(),s("div",null,[d,o("p",null,[l,o("a",h,[_,r(t)]),u])])}const g=a(p,[["render",k],["__file","ViewTypeFactory.html.vue"]]);export{g as default}; diff --git a/docs/assets/YukiBaseHooker.html.553e75bb.js b/docs/assets/YukiBaseHooker.html.1845cb7d.js similarity index 97% rename from docs/assets/YukiBaseHooker.html.553e75bb.js rename to docs/assets/YukiBaseHooker.html.1845cb7d.js index 8649fbd18..8f6f9d132 100644 --- a/docs/assets/YukiBaseHooker.html.553e75bb.js +++ b/docs/assets/YukiBaseHooker.html.1845cb7d.js @@ -1,3 +1,3 @@ -import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},t=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiBaseHooker - class

    abstract class YukiBaseHooker : PackageParam()
    +import{_ as s,o,c as e,a}from"./app.0312b331.js";const n={},t=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiBaseHooker - class

    abstract class YukiBaseHooker : PackageParam()
     

    Change Records

    v1.0 first

    Function Illustrate

    YukiHookAPI \u7684\u5B50\u7C7B Hooker \u5B9E\u73B0\u3002

    onHook - method

    fun onHook()
     

    Change Records

    v1.0 first

    Function Illustrate

    \u5B50\u7C7B Hook \u5F00\u59CB\u3002

    `,13),c=[t];function l(r,p){return o(),e("div",null,c)}const d=s(n,[["render",l],["__file","YukiBaseHooker.html.vue"]]);export{d as default}; diff --git a/docs/assets/YukiBaseHooker.html.ba836f6d.js b/docs/assets/YukiBaseHooker.html.1fb6f12f.js similarity index 96% rename from docs/assets/YukiBaseHooker.html.ba836f6d.js rename to docs/assets/YukiBaseHooker.html.1fb6f12f.js index 149994b51..b476f3db4 100644 --- a/docs/assets/YukiBaseHooker.html.ba836f6d.js +++ b/docs/assets/YukiBaseHooker.html.1fb6f12f.js @@ -1,3 +1,3 @@ -import{_ as s,o,c as a,a as e}from"./app.09f06ad9.js";const n={},c=e(`

    YukiBaseHooker - class

    abstract class YukiBaseHooker : PackageParam()
    +import{_ as s,o,c as a,a as e}from"./app.0312b331.js";const n={},c=e(`

    YukiBaseHooker - class

    abstract class YukiBaseHooker : PackageParam()
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    YukiHookAPI \u7684\u5B50\u7C7B Hooker \u5B9E\u73B0\u3002

    onHook - method

    fun onHook()
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u5B50\u7C7B Hook \u5F00\u59CB\u3002

    `,12),l=[c];function p(t,r){return o(),a("div",null,l)}const i=s(n,[["render",p],["__file","YukiBaseHooker.html.vue"]]);export{i as default}; diff --git a/docs/assets/YukiHookAPI.html.813302be.js b/docs/assets/YukiHookAPI.html.02608ebb.js similarity index 99% rename from docs/assets/YukiHookAPI.html.813302be.js rename to docs/assets/YukiHookAPI.html.02608ebb.js index cb9b4b04d..a99cdc412 100644 --- a/docs/assets/YukiHookAPI.html.813302be.js +++ b/docs/assets/YukiHookAPI.html.02608ebb.js @@ -1,4 +1,4 @@ -import{_ as s,o as n,c as o,a}from"./app.09f06ad9.js";const e={},l=a(`

    YukiHookAPI - object

    object YukiHookAPI
    +import{_ as s,o as n,c as o,a}from"./app.0312b331.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.Executor.name

    executorVersion - field

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.5 \u65B0\u589E

    v1.0.91 \u79FB\u9664

    \u8BF7\u8F6C\u79FB\u5230 Status.Executor.apiLevel\u3001Status.Executor.versionName\u3001Status.Executor.versionCode

    Status - object

    object Status
    diff --git a/docs/assets/YukiHookAPI.html.17a7f725.js b/docs/assets/YukiHookAPI.html.f3b7f36f.js
    similarity index 99%
    rename from docs/assets/YukiHookAPI.html.17a7f725.js
    rename to docs/assets/YukiHookAPI.html.f3b7f36f.js
    index 0ae231baa..6fbace41d 100644
    --- a/docs/assets/YukiHookAPI.html.17a7f725.js
    +++ b/docs/assets/YukiHookAPI.html.f3b7f36f.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as o,a as e}from"./app.09f06ad9.js";const a={},l=e(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiHookAPI - object

    object YukiHookAPI
    +import{_ as s,o as n,c as o,a as e}from"./app.0312b331.js";const a={},l=e(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiHookAPI - object

    object YukiHookAPI
     

    Change Records

    v1.0 first

    Function Illustrate

    \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
     

    Change Records

    v1.0.4 added

    Function Illustrate

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

    API_VERSION_CODE - field

    const val API_VERSION_CODE: Int
     

    Change Records

    v1.0.4 added

    Function Illustrate

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

    executorName - field

    Change Records

    v1.0.5 added

    v1.0.91 removed

    \u8BF7\u8F6C\u79FB\u5230 Status.Executor.name

    executorVersion - field

    Change Records

    v1.0.5 added

    v1.0.91 removed

    \u8BF7\u8F6C\u79FB\u5230 Status.Executor.apiLevel\u3001Status.Executor.versionName\u3001Status.Executor.versionCode

    Status - object

    object Status
    diff --git a/docs/assets/YukiHookDataChannel.html.86ac4080.js b/docs/assets/YukiHookDataChannel.html.1cc5ed97.js
    similarity index 99%
    rename from docs/assets/YukiHookDataChannel.html.86ac4080.js
    rename to docs/assets/YukiHookDataChannel.html.1cc5ed97.js
    index 32061111b..005645c18 100644
    --- a/docs/assets/YukiHookDataChannel.html.86ac4080.js
    +++ b/docs/assets/YukiHookDataChannel.html.1cc5ed97.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as a,c as o,a as n}from"./app.09f06ad9.js";const e={},l=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiHookDataChannel - class

    class YukiHookDataChannel private constructor()
    +import{_ as s,o as a,c as o,a as n}from"./app.0312b331.js";const e={},l=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiHookDataChannel - class

    class YukiHookDataChannel private constructor()
     

    Change Records

    v1.0.88 added

    Function Illustrate

    \u5B9E\u73B0 Xposed \u6A21\u5757\u7684\u6570\u636E\u901A\u8BAF\u6865\u3002

    \u901A\u8FC7\u6A21\u5757\u4E0E\u5BBF\u4E3B\u76F8\u4E92\u6CE8\u518C BroadcastReceiver \u6765\u5B9E\u73B0\u6570\u636E\u7684\u4EA4\u4E92\u3002

    \u6A21\u5757\u9700\u8981\u5C06 Application \u7EE7\u627F\u4E8E ModuleApplication \u6765\u5B9E\u73B0\u6B64\u529F\u80FD\u3002

    Pay Attention

    \u6A21\u5757\u4E0E\u5BBF\u4E3B\u9700\u8981\u4FDD\u6301\u5B58\u6D3B\u72B6\u6001\uFF0C\u5426\u5219\u65E0\u6CD5\u5EFA\u7ACB\u901A\u8BAF\u3002

    NameSpace - class

    inner class NameSpace internal constructor(private val context: Context?, private val packageName: String, private val isSecure: Boolean)
     

    Change Records

    v1.0.88 added

    v1.0.90 modified

    \u65B0\u589E isSecure \u53C2\u6570

    Function Illustrate

    YukiHookDataChannel \u547D\u540D\u7A7A\u95F4\u3002

    with - method

    inline fun with(initiate: NameSpace.() -> Unit): NameSpace
     

    Change Records

    v1.0.88 added

    Function Illustrate

    \u521B\u5EFA\u4E00\u4E2A\u8C03\u7528\u7A7A\u95F4\u3002

    allowSendTooLargeData - method

    fun allowSendTooLargeData(): NameSpace
    diff --git a/docs/assets/YukiHookDataChannel.html.ccd797df.js b/docs/assets/YukiHookDataChannel.html.6c73dd59.js
    similarity index 99%
    rename from docs/assets/YukiHookDataChannel.html.ccd797df.js
    rename to docs/assets/YukiHookDataChannel.html.6c73dd59.js
    index 5c9667e28..dca329d5f 100644
    --- a/docs/assets/YukiHookDataChannel.html.ccd797df.js
    +++ b/docs/assets/YukiHookDataChannel.html.6c73dd59.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as a,c as o,a as n}from"./app.09f06ad9.js";const p={},l=n(`

    YukiHookDataChannel - class

    class YukiHookDataChannel private constructor()
    +import{_ as s,o as a,c as o,a as n}from"./app.0312b331.js";const p={},l=n(`

    YukiHookDataChannel - class

    class YukiHookDataChannel private constructor()
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5B9E\u73B0 Xposed \u6A21\u5757\u7684\u6570\u636E\u901A\u8BAF\u6865\u3002

    \u901A\u8FC7\u6A21\u5757\u4E0E\u5BBF\u4E3B\u76F8\u4E92\u6CE8\u518C BroadcastReceiver \u6765\u5B9E\u73B0\u6570\u636E\u7684\u4EA4\u4E92\u3002

    \u6A21\u5757\u9700\u8981\u5C06 Application \u7EE7\u627F\u4E8E ModuleApplication \u6765\u5B9E\u73B0\u6B64\u529F\u80FD\u3002

    \u7279\u522B\u6CE8\u610F

    \u6A21\u5757\u4E0E\u5BBF\u4E3B\u9700\u8981\u4FDD\u6301\u5B58\u6D3B\u72B6\u6001\uFF0C\u5426\u5219\u65E0\u6CD5\u5EFA\u7ACB\u901A\u8BAF\u3002

    NameSpace - class

    inner class NameSpace internal constructor(private val context: Context?, private val packageName: String, private val isSecure: Boolean)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    v1.0.90 \u4FEE\u6539

    \u65B0\u589E isSecure \u53C2\u6570

    \u529F\u80FD\u63CF\u8FF0

    YukiHookDataChannel \u547D\u540D\u7A7A\u95F4\u3002

    with - method

    inline fun with(initiate: NameSpace.() -> Unit): NameSpace
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.88 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u521B\u5EFA\u4E00\u4E2A\u8C03\u7528\u7A7A\u95F4\u3002

    allowSendTooLargeData - method

    fun allowSendTooLargeData(): NameSpace
    diff --git a/docs/assets/YukiHookFactory.html.95b9873f.js b/docs/assets/YukiHookFactory.html.37ac12f2.js
    similarity index 99%
    rename from docs/assets/YukiHookFactory.html.95b9873f.js
    rename to docs/assets/YukiHookFactory.html.37ac12f2.js
    index 9f88e2a3b..ad3a24e06 100644
    --- a/docs/assets/YukiHookFactory.html.95b9873f.js
    +++ b/docs/assets/YukiHookFactory.html.37ac12f2.js
    @@ -1,4 +1,4 @@
    -import{_ as o,o as e,c as s,a as n}from"./app.09f06ad9.js";const a={},p=n(`

    YukiHookFactory - kt

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    v1.0.80 \u4FEE\u6539

    \u5408\u5E76\u5230 IYukiHookXposedInit\uFF0C\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F YukiHookAPI \u76F8\u5173 lambda \u65B9\u6CD5\u7684\u5C01\u88C5\u7C7B\u4EE5\u53CA\u90E8\u5206 API \u7528\u6CD5\u3002

    IYukiHookXposedInit.configs - ext-method

    inline fun IYukiHookXposedInit.configs(initiate: YukiHookAPI.Configs.() -> Unit)
    +import{_ as o,o as e,c as s,a as n}from"./app.0312b331.js";const a={},p=n(`

    YukiHookFactory - kt

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    v1.0.80 \u4FEE\u6539

    \u5408\u5E76\u5230 IYukiHookXposedInit\uFF0C\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

    \u529F\u80FD\u63CF\u8FF0

    \u8FD9\u662F YukiHookAPI \u76F8\u5173 lambda \u65B9\u6CD5\u7684\u5C01\u88C5\u7C7B\u4EE5\u53CA\u90E8\u5206 API \u7528\u6CD5\u3002

    IYukiHookXposedInit.configs - ext-method

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

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.1 \u65B0\u589E

    v1.0.80 \u4FEE\u6539

    \u5408\u5E76\u5230 IYukiHookXposedInit

    \u529F\u80FD\u63CF\u8FF0

    \u5728 IYukiHookXposedInit \u4E2D\u914D\u7F6E Configs\u3002

    IYukiHookXposedInit.encase - ext-method

    fun IYukiHookXposedInit.encase(initiate: PackageParam.() -> Unit)
     
    fun IYukiHookXposedInit.encase(vararg hooker: YukiBaseHooker)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    v1.0.80 \u4FEE\u6539

    \u5408\u5E76\u5230 IYukiHookXposedInit

    \u529F\u80FD\u63CF\u8FF0

    \u5728 IYukiHookXposedInit \u4E2D\u8C03\u7528 YukiHookAPI\u3002

    Context.modulePrefs - ext-field

    val Context.modulePrefs: YukiHookModulePrefs
    diff --git a/docs/assets/YukiHookFactory.html.c64fe89e.js b/docs/assets/YukiHookFactory.html.e28a3356.js
    similarity index 99%
    rename from docs/assets/YukiHookFactory.html.c64fe89e.js
    rename to docs/assets/YukiHookFactory.html.e28a3356.js
    index 43c885482..290f6cd3f 100644
    --- a/docs/assets/YukiHookFactory.html.c64fe89e.js
    +++ b/docs/assets/YukiHookFactory.html.e28a3356.js
    @@ -1,4 +1,4 @@
    -import{_ as e,o,c as s,a as n}from"./app.09f06ad9.js";const a={},t=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiHookFactory - kt

    Change Records

    v1.0 first

    v1.0.80 modified

    \u5408\u5E76\u5230 IYukiHookXposedInit\uFF0C\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

    Function Illustrate

    \u8FD9\u662F YukiHookAPI \u76F8\u5173 lambda \u65B9\u6CD5\u7684\u5C01\u88C5\u7C7B\u4EE5\u53CA\u90E8\u5206 API \u7528\u6CD5\u3002

    IYukiHookXposedInit.configs - ext-method

    inline fun IYukiHookXposedInit.configs(initiate: YukiHookAPI.Configs.() -> Unit)
    +import{_ as e,o,c as s,a as n}from"./app.0312b331.js";const a={},t=n(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiHookFactory - kt

    Change Records

    v1.0 first

    v1.0.80 modified

    \u5408\u5E76\u5230 IYukiHookXposedInit\uFF0C\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

    Function Illustrate

    \u8FD9\u662F YukiHookAPI \u76F8\u5173 lambda \u65B9\u6CD5\u7684\u5C01\u88C5\u7C7B\u4EE5\u53CA\u90E8\u5206 API \u7528\u6CD5\u3002

    IYukiHookXposedInit.configs - ext-method

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

    Change Records

    v1.0.1 added

    v1.0.80 modified

    \u5408\u5E76\u5230 IYukiHookXposedInit

    Function Illustrate

    \u5728 IYukiHookXposedInit \u4E2D\u914D\u7F6E Configs\u3002

    IYukiHookXposedInit.encase - ext-method

    fun IYukiHookXposedInit.encase(initiate: PackageParam.() -> Unit)
     
    fun IYukiHookXposedInit.encase(vararg hooker: YukiBaseHooker)
     

    Change Records

    v1.0 first

    v1.0.80 modified

    \u5408\u5E76\u5230 IYukiHookXposedInit

    Function Illustrate

    \u5728 IYukiHookXposedInit \u4E2D\u8C03\u7528 YukiHookAPI\u3002

    Context.modulePrefs - ext-field

    val Context.modulePrefs: YukiHookModulePrefs
    diff --git a/docs/assets/YukiHookModulePrefs.html.e6d40b5e.js b/docs/assets/YukiHookModulePrefs.html.43739ce9.js
    similarity index 99%
    rename from docs/assets/YukiHookModulePrefs.html.e6d40b5e.js
    rename to docs/assets/YukiHookModulePrefs.html.43739ce9.js
    index 122d3c806..df931b7f9 100644
    --- a/docs/assets/YukiHookModulePrefs.html.e6d40b5e.js
    +++ b/docs/assets/YukiHookModulePrefs.html.43739ce9.js
    @@ -1,4 +1,4 @@
    -import{_ as l,r as p,o as t,c,b as o,d as n,a,e as s}from"./app.09f06ad9.js";const r={},d=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiHookModulePrefs - class

    class YukiHookModulePrefs private constructor(private var context: Context?)
    +import{_ as l,r as p,o as t,c,b as o,d as n,a,e as s}from"./app.0312b331.js";const r={},d=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiHookModulePrefs - class

    class YukiHookModulePrefs private constructor(private var context: Context?)
     

    Change Records

    v1.0 first

    Function Illustrate

    \u5B9E\u73B0 Xposed \u6A21\u5757\u7684\u6570\u636E\u5B58\u53D6\uFF0C\u5BF9\u63A5 SharedPreferences \u548C XSharedPreferences\u3002

    \u5728\u4E0D\u540C\u73AF\u5883\u667A\u80FD\u9009\u62E9\u5B58\u53D6\u4F7F\u7528\u7684\u5BF9\u8C61\u3002

    Pay Attention

    \u6B64\u529F\u80FD\u4E3A\u5B9E\u9A8C\u6027\u529F\u80FD\uFF0C\u4EC5\u5728 LSPosed \u73AF\u5883\u6D4B\u8BD5\u901A\u8FC7\uFF0CEdXposed \u7406\u8BBA\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4F46\u4E0D\u518D\u63A8\u8350\u3002

    \u4F7F\u7528 LSPosed \u73AF\u5883\u8BF7\u5728 AndroidManifests.xml \u4E2D\u5C06 xposedminversion \u6700\u4F4E\u8BBE\u7F6E\u4E3A 93\u3002

    `,10),i=s("\u8BE6\u89C1 "),y={href:"https://github.com/LSPosed/LSPosed/wiki/New-XSharedPreferences#for-the-module",target:"_blank",rel:"noopener noreferrer"},u=s("New XSharedPreferences"),g=s("\u3002"),h=o("p",null,[s("\u82E5\u4F60\u5728\u6309\u7167\u89C4\u5B9A\u914D\u7F6E\u540E\u4F9D\u7136\u65E0\u6CD5\u4F7F\u7528\u6216\u51FA\u73B0\u6587\u4EF6\u6743\u9650\u9519\u8BEF\u95EE\u9898\uFF0C\u53EF\u4EE5\u53C2\u8003 "),o("a",{href:"../../../YukiHookAPI#isenablehooksharedpreferences-field"},"isEnableHookSharedPreferences"),s("\u3002")],-1),A=o("p",null,[s("\u672A\u4F7F\u7528 LSPosed \u73AF\u5883\u8BF7\u5C06\u4F60\u7684\u6A21\u5757 "),o("code",null,"API"),s(" \u964D\u81F3 "),o("code",null,"26"),s(" \u4EE5\u4E0B\uFF0C"),o("code",null,"YukiHookAPI"),s(" \u5C06\u4F1A\u5C1D\u8BD5\u4F7F\u7528 "),o("code",null,"makeWorldReadable"),s(" \u4F46\u4ECD\u6709\u53EF\u80FD\u4E0D\u6210\u529F\u3002")],-1),F=s("\u592A\u6781\u8BF7\u53C2\u9605 "),B={href:"https://taichi.cool/zh/doc/for-xposed-dev.html#%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90-%E9%85%8D%E7%BD%AE-xsharedpreference",target:"_blank",rel:"noopener noreferrer"},C=s("\u6587\u4EF6\u6743\u9650/\u914D\u7F6E/XSharedPreference"),D=s("\u3002"),k=a('

    Pay Attention

    \u5F53\u4F60\u5728 Xposed \u6A21\u5757\u4E2D\u5B58\u53D6\u6570\u636E\u7684\u65F6\u5019 context \u5FC5\u987B\u4E0D\u80FD\u662F\u7A7A\u7684\u3002

    \u82E5\u4F60\u6B63\u5728\u4F7F\u7528 PreferenceFragmentCompat\uFF0C\u8BF7\u8FC1\u79FB\u5230 ModulePreferenceFragment \u4EE5\u9002\u914D\u4E0A\u8FF0\u529F\u80FD\u7279\u6027\u3002

    Optional Configuration

    \u82E5\u4F60\u4E0D\u60F3\u5C06\u4F60\u7684\u6A21\u5757\u7684 xposedminversion \u6700\u4F4E\u8BBE\u7F6E\u4E3A 93\uFF0C\u4F60\u53EF\u4EE5\u5728 AndroidManifest.xml \u4E2D\u6DFB\u52A0 xposedsharedprefs \u6765\u5B9E\u73B0\u652F\u6301\u3002

    ',4),m=s("\u8BE6\u89C1 "),v={href:"https://github.com/LSPosed/LSPosed/wiki/New-XSharedPreferences#for-the-module",target:"_blank",rel:"noopener noreferrer"},b=s("New XSharedPreferences"),f=s("\u3002"),x=a(`

    The following example

    <meta-data
         android:name="xposedsharedprefs"
         android:value="true"/>
    diff --git a/docs/assets/YukiHookModulePrefs.html.b6083fa5.js b/docs/assets/YukiHookModulePrefs.html.6829c06c.js
    similarity index 99%
    rename from docs/assets/YukiHookModulePrefs.html.b6083fa5.js
    rename to docs/assets/YukiHookModulePrefs.html.6829c06c.js
    index 7af9aadf3..01753b3de 100644
    --- a/docs/assets/YukiHookModulePrefs.html.b6083fa5.js
    +++ b/docs/assets/YukiHookModulePrefs.html.6829c06c.js
    @@ -1,4 +1,4 @@
    -import{_ as l,r as p,o as t,c,b as o,d as n,a,e as s}from"./app.09f06ad9.js";const r={},d=a(`

    YukiHookModulePrefs - class

    class YukiHookModulePrefs private constructor(private var context: Context?)
    +import{_ as l,r as p,o as t,c,b as o,d as n,a,e as s}from"./app.0312b331.js";const r={},d=a(`

    YukiHookModulePrefs - class

    class YukiHookModulePrefs private constructor(private var context: Context?)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u5B9E\u73B0 Xposed \u6A21\u5757\u7684\u6570\u636E\u5B58\u53D6\uFF0C\u5BF9\u63A5 SharedPreferences \u548C XSharedPreferences\u3002

    \u5728\u4E0D\u540C\u73AF\u5883\u667A\u80FD\u9009\u62E9\u5B58\u53D6\u4F7F\u7528\u7684\u5BF9\u8C61\u3002

    \u7279\u522B\u6CE8\u610F

    \u6B64\u529F\u80FD\u4E3A\u5B9E\u9A8C\u6027\u529F\u80FD\uFF0C\u4EC5\u5728 LSPosed \u73AF\u5883\u6D4B\u8BD5\u901A\u8FC7\uFF0CEdXposed \u7406\u8BBA\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4F46\u4E0D\u518D\u63A8\u8350\u3002

    \u4F7F\u7528 LSPosed \u73AF\u5883\u8BF7\u5728 AndroidManifests.xml \u4E2D\u5C06 xposedminversion \u6700\u4F4E\u8BBE\u7F6E\u4E3A 93\u3002

    `,9),i=s("\u8BE6\u89C1 "),y={href:"https://github.com/LSPosed/LSPosed/wiki/New-XSharedPreferences#for-the-module",target:"_blank",rel:"noopener noreferrer"},A=s("New XSharedPreferences"),g=s("\u3002"),h=o("p",null,[s("\u82E5\u4F60\u5728\u6309\u7167\u89C4\u5B9A\u914D\u7F6E\u540E\u4F9D\u7136\u65E0\u6CD5\u4F7F\u7528\u6216\u51FA\u73B0\u6587\u4EF6\u6743\u9650\u9519\u8BEF\u95EE\u9898\uFF0C\u53EF\u4EE5\u53C2\u8003 "),o("a",{href:"../../../YukiHookAPI#isenablehooksharedpreferences-field"},"isEnableHookSharedPreferences"),s("\u3002")],-1),u=o("p",null,[s("\u672A\u4F7F\u7528 LSPosed \u73AF\u5883\u8BF7\u5C06\u4F60\u7684\u6A21\u5757 "),o("code",null,"API"),s(" \u964D\u81F3 "),o("code",null,"26"),s(" \u4EE5\u4E0B\uFF0C"),o("code",null,"YukiHookAPI"),s(" \u5C06\u4F1A\u5C1D\u8BD5\u4F7F\u7528 "),o("code",null,"makeWorldReadable"),s(" \u4F46\u4ECD\u6709\u53EF\u80FD\u4E0D\u6210\u529F\u3002")],-1),B=s("\u592A\u6781\u8BF7\u53C2\u9605 "),F={href:"https://taichi.cool/zh/doc/for-xposed-dev.html#%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90-%E9%85%8D%E7%BD%AE-xsharedpreference",target:"_blank",rel:"noopener noreferrer"},D=s("\u6587\u4EF6\u6743\u9650/\u914D\u7F6E/XSharedPreference"),C=s("\u3002"),k=a('

    \u7279\u522B\u6CE8\u610F

    \u5F53\u4F60\u5728 Xposed \u6A21\u5757\u4E2D\u5B58\u53D6\u6570\u636E\u7684\u65F6\u5019 context \u5FC5\u987B\u4E0D\u80FD\u662F\u7A7A\u7684\u3002

    \u82E5\u4F60\u6B63\u5728\u4F7F\u7528 PreferenceFragmentCompat\uFF0C\u8BF7\u8FC1\u79FB\u5230 ModulePreferenceFragment \u4EE5\u9002\u914D\u4E0A\u8FF0\u529F\u80FD\u7279\u6027\u3002

    \u53EF\u9009\u914D\u7F6E

    \u82E5\u4F60\u4E0D\u60F3\u5C06\u4F60\u7684\u6A21\u5757\u7684 xposedminversion \u6700\u4F4E\u8BBE\u7F6E\u4E3A 93\uFF0C\u4F60\u53EF\u4EE5\u5728 AndroidManifest.xml \u4E2D\u6DFB\u52A0 xposedsharedprefs \u6765\u5B9E\u73B0\u652F\u6301\u3002

    ',4),m=s("\u8BE6\u89C1 "),v={href:"https://github.com/LSPosed/LSPosed/wiki/New-XSharedPreferences#for-the-module",target:"_blank",rel:"noopener noreferrer"},b=s("New XSharedPreferences"),f=s("\u3002"),x=a(`

    \u793A\u4F8B\u5982\u4E0B

    <meta-data
         android:name="xposedsharedprefs"
         android:value="true"/>
    diff --git a/docs/assets/YukiMemberHookCreator.html.daa5257b.js b/docs/assets/YukiMemberHookCreator.html.bd4ce523.js
    similarity index 99%
    rename from docs/assets/YukiMemberHookCreator.html.daa5257b.js
    rename to docs/assets/YukiMemberHookCreator.html.bd4ce523.js
    index 22ae8fbf0..d0a37b6c5 100644
    --- a/docs/assets/YukiMemberHookCreator.html.daa5257b.js
    +++ b/docs/assets/YukiMemberHookCreator.html.bd4ce523.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o,c as n,a as e}from"./app.09f06ad9.js";const a={},l=e(`

    YukiMemberHookCreator - class

    class YukiMemberHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookClass: HookClass)
    +import{_ as s,o,c as n,a as e}from"./app.0312b331.js";const a={},l=e(`

    YukiMemberHookCreator - class

    class YukiMemberHookCreator internal constructor(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

    v1.1.5 \u4FEE\u6539

    \u79C1\u6709\u5316\u6784\u9020\u65B9\u6CD5

    \u529F\u80FD\u63CF\u8FF0

    YukiHookAPI \u7684 Member \u6838\u5FC3 Hook \u5B9E\u73B0\u7C7B\u3002

    PRIORITY_DEFAULT - field

    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

    PRIORITY_LOWEST - field

    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

    PRIORITY_HIGHEST - field

    val PRIORITY_HIGHEST: Int
    diff --git a/docs/assets/YukiMemberHookCreator.html.014c9526.js b/docs/assets/YukiMemberHookCreator.html.fd2e4afd.js
    similarity index 99%
    rename from docs/assets/YukiMemberHookCreator.html.014c9526.js
    rename to docs/assets/YukiMemberHookCreator.html.fd2e4afd.js
    index 17aad7d45..0648cfc4c 100644
    --- a/docs/assets/YukiMemberHookCreator.html.014c9526.js
    +++ b/docs/assets/YukiMemberHookCreator.html.fd2e4afd.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o,c as n,a as e}from"./app.09f06ad9.js";const a={},l=e(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiMemberHookCreator - class

    class YukiMemberHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookClass: HookClass)
    +import{_ as s,o,c as n,a as e}from"./app.0312b331.js";const a={},l=e(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiMemberHookCreator - class

    class YukiMemberHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookClass: HookClass)
     

    Change Records

    v1.0 first

    v1.0.80 modified

    \u5BF9 hookClass \u8FDB\u884C inline \u5904\u7406

    v1.1.0 modified

    \u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 Creater \u547D\u540D\u5230 Creator

    v1.1.5 modified

    \u79C1\u6709\u5316\u6784\u9020\u65B9\u6CD5

    Function Illustrate

    YukiHookAPI \u7684 Member \u6838\u5FC3 Hook \u5B9E\u73B0\u7C7B\u3002

    PRIORITY_DEFAULT - field

    val PRIORITY_DEFAULT: Int
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u9ED8\u8BA4 Hook \u56DE\u8C03\u4F18\u5148\u7EA7\u3002

    PRIORITY_LOWEST - field

    val PRIORITY_LOWEST: Int
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u5EF6\u8FDF\u56DE\u8C03 Hook \u65B9\u6CD5\u7ED3\u679C\u3002

    PRIORITY_HIGHEST - field

    val PRIORITY_HIGHEST: Int
    diff --git a/docs/assets/YukiModuleResources.html.69e31838.js b/docs/assets/YukiModuleResources.html.0633c37d.js
    similarity index 97%
    rename from docs/assets/YukiModuleResources.html.69e31838.js
    rename to docs/assets/YukiModuleResources.html.0633c37d.js
    index f0c56cc9d..9a8a5dca9 100644
    --- a/docs/assets/YukiModuleResources.html.69e31838.js
    +++ b/docs/assets/YukiModuleResources.html.0633c37d.js
    @@ -1,3 +1,3 @@
    -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},l=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiModuleResources - class

    class YukiModuleResources private constructor(private val baseInstance: XModuleResources) : Resources
    +import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},l=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiModuleResources - class

    class YukiModuleResources private constructor(private val baseInstance: XModuleResources) : Resources
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u5BF9\u63A5 XModuleResources \u7684\u4E2D\u95F4\u5C42\u5B9E\u4F8B\u3002

    fwd - method

    fun fwd(resId: Int): YukiResForwarder
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u5BF9\u63A5 XModuleResources.fwd \u65B9\u6CD5\u3002

    \u521B\u5EFA YukiResForwarder \u4E0E XResForwarder \u5B9E\u4F8B\u3002

    `,14),c=[l];function t(r,p){return e(),o("div",null,c)}const i=s(n,[["render",t],["__file","YukiModuleResources.html.vue"]]);export{i as default}; diff --git a/docs/assets/YukiModuleResources.html.d0909f20.js b/docs/assets/YukiModuleResources.html.18734c9b.js similarity index 97% rename from docs/assets/YukiModuleResources.html.d0909f20.js rename to docs/assets/YukiModuleResources.html.18734c9b.js index 32a983654..dd1c1707e 100644 --- a/docs/assets/YukiModuleResources.html.d0909f20.js +++ b/docs/assets/YukiModuleResources.html.18734c9b.js @@ -1,3 +1,3 @@ -import{_ as s,o,c as e,a}from"./app.09f06ad9.js";const n={},l=a(`

    YukiModuleResources - class

    class YukiModuleResources private constructor(private val baseInstance: XModuleResources) : Resources
    +import{_ as s,o,c as e,a}from"./app.0312b331.js";const n={},l=a(`

    YukiModuleResources - class

    class YukiModuleResources private constructor(private val baseInstance: XModuleResources) : Resources
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5BF9\u63A5 XModuleResources \u7684\u4E2D\u95F4\u5C42\u5B9E\u4F8B\u3002

    fwd - method

    fun fwd(resId: Int): YukiResForwarder
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5BF9\u63A5 XModuleResources.fwd \u65B9\u6CD5\u3002

    \u521B\u5EFA YukiResForwarder \u4E0E XResForwarder \u5B9E\u4F8B\u3002

    `,13),c=[l];function p(r,t){return o(),e("div",null,c)}const u=s(n,[["render",p],["__file","YukiModuleResources.html.vue"]]);export{u as default}; diff --git a/docs/assets/YukiResForwarder.html.edcd2526.js b/docs/assets/YukiResForwarder.html.0d8d1b84.js similarity index 98% rename from docs/assets/YukiResForwarder.html.edcd2526.js rename to docs/assets/YukiResForwarder.html.0d8d1b84.js index e4b9751d2..146d24b73 100644 --- a/docs/assets/YukiResForwarder.html.edcd2526.js +++ b/docs/assets/YukiResForwarder.html.0d8d1b84.js @@ -1,4 +1,4 @@ -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},c=a(`

    YukiResForwarder - class

    class YukiResForwarder private constructor(private val baseInstance: XResForwarder)
    +import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},c=a(`

    YukiResForwarder - class

    class YukiResForwarder private constructor(private val baseInstance: XResForwarder)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5BF9\u63A5 XResForwarder \u7684\u4E2D\u95F4\u5C42\u5B9E\u4F8B\u3002

    instance - field

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    v1.1.0 \u4F5C\u5E9F

    \u4E0D\u518D\u5BF9\u5916\u516C\u5F00 instance \u53C2\u6570

    id - field

    val id: Int
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u83B7\u5F97\u5F53\u524D APP \u7684 Resources Id\u3002

    resources - field

    val resources: Resources
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u83B7\u5F97\u5F53\u524D APP \u7684 Resources\u3002

    `,23),l=[c];function r(p,t){return e(),o("div",null,l)}const i=s(n,[["render",r],["__file","YukiResForwarder.html.vue"]]);export{i as default}; diff --git a/docs/assets/YukiResForwarder.html.13a15436.js b/docs/assets/YukiResForwarder.html.a2ed9341.js similarity index 98% rename from docs/assets/YukiResForwarder.html.13a15436.js rename to docs/assets/YukiResForwarder.html.a2ed9341.js index 704f35fb1..f595d824d 100644 --- a/docs/assets/YukiResForwarder.html.13a15436.js +++ b/docs/assets/YukiResForwarder.html.a2ed9341.js @@ -1,4 +1,4 @@ -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},r=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiResForwarder - class

    class YukiResForwarder private constructor(private val baseInstance: XResForwarder)
    +import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},r=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiResForwarder - class

    class YukiResForwarder private constructor(private val baseInstance: XResForwarder)
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u5BF9\u63A5 XResForwarder \u7684\u4E2D\u95F4\u5C42\u5B9E\u4F8B\u3002

    instance - field

    Change Records

    v1.0.80 added

    v1.1.0 deprecated

    \u4E0D\u518D\u5BF9\u5916\u516C\u5F00 instance \u53C2\u6570

    id - field

    val id: Int
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u83B7\u5F97\u5F53\u524D APP \u7684 Resources Id\u3002

    resources - field

    val resources: Resources
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u83B7\u5F97\u5F53\u524D APP \u7684 Resources\u3002

    `,24),c=[r];function l(t,p){return e(),o("div",null,c)}const i=s(n,[["render",l],["__file","YukiResForwarder.html.vue"]]);export{i as default}; diff --git a/docs/assets/YukiResources.html.2125e8f3.js b/docs/assets/YukiResources.html.0da34e99.js similarity index 99% rename from docs/assets/YukiResources.html.2125e8f3.js rename to docs/assets/YukiResources.html.0da34e99.js index 045067a75..82cb29ef2 100644 --- a/docs/assets/YukiResources.html.2125e8f3.js +++ b/docs/assets/YukiResources.html.0da34e99.js @@ -1,4 +1,4 @@ -import{_ as s,o as a,c as n,a as o}from"./app.09f06ad9.js";const e={},l=o(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiResources - class

    class YukiResources private constructor(private val baseInstance: XResources) : Resources
    +import{_ as s,o as a,c as n,a as o}from"./app.0312b331.js";const e={},l=o(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiResources - class

    class YukiResources private constructor(private val baseInstance: XResources) : Resources
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u5BF9\u63A5 XResources \u7684\u4E2D\u95F4\u5C42\u5B9E\u4F8B\u3002

    LayoutInflatedParam - class

    class LayoutInflatedParam(internal val baseParam: XC_LayoutInflated.LayoutInflatedParam)
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u88C5\u8F7D Hook APP \u7684\u76EE\u6807\u5E03\u5C40 Resources \u5B9E\u73B0\u7C7B\u3002

    variantName - field

    val variantName: String
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u83B7\u53D6\u5F53\u524D\u88AB Hook \u7684\u5E03\u5C40\u88C5\u8F7D\u76EE\u5F55\u540D\u79F0\u3002

    \u4F8B\u5982\uFF1Alayout\u3001layout-land\u3001layout-sw600dp\u3002

    currentView - field

    val currentView: View
    diff --git a/docs/assets/YukiResources.html.fb77a30f.js b/docs/assets/YukiResources.html.a3fd00f4.js
    similarity index 99%
    rename from docs/assets/YukiResources.html.fb77a30f.js
    rename to docs/assets/YukiResources.html.a3fd00f4.js
    index c81d937f2..1f14bc61e 100644
    --- a/docs/assets/YukiResources.html.fb77a30f.js
    +++ b/docs/assets/YukiResources.html.a3fd00f4.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as a,c as o,a as n}from"./app.09f06ad9.js";const e={},l=n(`

    YukiResources - class

    class YukiResources private constructor(private val baseInstance: XResources) : Resources
    +import{_ as s,o as a,c as o,a as n}from"./app.0312b331.js";const e={},l=n(`

    YukiResources - class

    class YukiResources private constructor(private val baseInstance: XResources) : Resources
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5BF9\u63A5 XResources \u7684\u4E2D\u95F4\u5C42\u5B9E\u4F8B\u3002

    LayoutInflatedParam - class

    class LayoutInflatedParam(internal val baseParam: XC_LayoutInflated.LayoutInflatedParam)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u88C5\u8F7D Hook APP \u7684\u76EE\u6807\u5E03\u5C40 Resources \u5B9E\u73B0\u7C7B\u3002

    variantName - field

    val variantName: String
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u83B7\u53D6\u5F53\u524D\u88AB Hook \u7684\u5E03\u5C40\u88C5\u8F7D\u76EE\u5F55\u540D\u79F0\u3002

    \u4F8B\u5982\uFF1Alayout\u3001layout-land\u3001layout-sw600dp\u3002

    currentView - field

    val currentView: View
    diff --git a/docs/assets/YukiResourcesHookCreator.html.cd0732b7.js b/docs/assets/YukiResourcesHookCreator.html.6e9e4e4c.js
    similarity index 99%
    rename from docs/assets/YukiResourcesHookCreator.html.cd0732b7.js
    rename to docs/assets/YukiResourcesHookCreator.html.6e9e4e4c.js
    index 497338ec1..8ae1650bb 100644
    --- a/docs/assets/YukiResourcesHookCreator.html.cd0732b7.js
    +++ b/docs/assets/YukiResourcesHookCreator.html.6e9e4e4c.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as e,a}from"./app.09f06ad9.js";const o={},l=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiResourcesHookCreator - class

    class YukiResourcesHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookResources: HookResources)
    +import{_ as s,o as n,c as e,a}from"./app.0312b331.js";const o={},l=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiResourcesHookCreator - class

    class YukiResourcesHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookResources: HookResources)
     

    Change Records

    v1.0.80 added

    v1.1.0 modified

    \u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 Creater \u547D\u540D\u5230 Creator

    v1.1.5 modified

    \u79C1\u6709\u5316\u6784\u9020\u65B9\u6CD5

    Function Illustrate

    YukiHookAPI \u7684 Resources \u6838\u5FC3 Hook \u5B9E\u73B0\u7C7B\u3002

    injectResource - method

    inline fun injectResource(tag: String, initiate: ResourceHookCreator.() -> Unit): ResourceHookCreator.Result
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u6CE8\u5165\u8981 Hook \u7684 Resources\u3002

    Function Example

    \u4F60\u53EF\u4EE5\u6CE8\u5165\u4EFB\u610F Resources\uFF0C\u4F7F\u7528 injectResource \u5373\u53EF\u521B\u5EFA\u4E00\u4E2A Hook \u5BF9\u8C61\u3002

    The following example

    injectResource {
         // Your code here.
    diff --git a/docs/assets/YukiResourcesHookCreator.html.a197e8f3.js b/docs/assets/YukiResourcesHookCreator.html.e1a4f5ae.js
    similarity index 99%
    rename from docs/assets/YukiResourcesHookCreator.html.a197e8f3.js
    rename to docs/assets/YukiResourcesHookCreator.html.e1a4f5ae.js
    index 9a01159f8..762402255 100644
    --- a/docs/assets/YukiResourcesHookCreator.html.a197e8f3.js
    +++ b/docs/assets/YukiResourcesHookCreator.html.e1a4f5ae.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as a,a as o}from"./app.09f06ad9.js";const e={},l=o(`

    YukiResourcesHookCreator - class

    class YukiResourcesHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookResources: HookResources)
    +import{_ as s,o as n,c as a,a as o}from"./app.0312b331.js";const e={},l=o(`

    YukiResourcesHookCreator - class

    class YukiResourcesHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookResources: HookResources)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    v1.1.0 \u4FEE\u6539

    \u4FEE\u6B63\u62FC\u5199\u9519\u8BEF\u7684 Creater \u547D\u540D\u5230 Creator

    v1.1.5 \u4FEE\u6539

    \u79C1\u6709\u5316\u6784\u9020\u65B9\u6CD5

    \u529F\u80FD\u63CF\u8FF0

    YukiHookAPI \u7684 Resources \u6838\u5FC3 Hook \u5B9E\u73B0\u7C7B\u3002

    injectResource - method

    inline fun injectResource(tag: String, initiate: ResourceHookCreator.() -> Unit): ResourceHookCreator.Result
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u6CE8\u5165\u8981 Hook \u7684 Resources\u3002

    \u529F\u80FD\u793A\u4F8B

    \u4F60\u53EF\u4EE5\u6CE8\u5165\u4EFB\u610F Resources\uFF0C\u4F7F\u7528 injectResource \u5373\u53EF\u521B\u5EFA\u4E00\u4E2A Hook \u5BF9\u8C61\u3002

    \u793A\u4F8B\u5982\u4E0B

    injectResource {
         // Your code here.
    diff --git a/docs/assets/YukiXposedEvent.html.6b53cb6e.js b/docs/assets/YukiXposedEvent.html.03a4729f.js
    similarity index 98%
    rename from docs/assets/YukiXposedEvent.html.6b53cb6e.js
    rename to docs/assets/YukiXposedEvent.html.03a4729f.js
    index d86ad7b64..1969e8e1a 100644
    --- a/docs/assets/YukiXposedEvent.html.6b53cb6e.js
    +++ b/docs/assets/YukiXposedEvent.html.03a4729f.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},t=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiXposedEvent - object

    object YukiXposedEvent
    +import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},t=a(`

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiXposedEvent - object

    object YukiXposedEvent
     

    Change Records

    v1.0.80 first

    Function Illustrate

    \u5B9E\u73B0\u5BF9\u539F\u751F Xposed API \u7684\u88C5\u8F7D\u4E8B\u4EF6\u76D1\u542C\u3002

    events - method

    inline fun events(initiate: YukiXposedEvent.() -> Unit)
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u5BF9 YukiXposedEvent \u521B\u5EFA\u4E00\u4E2A\u65B9\u6CD5\u4F53\u3002

    onInitZygote - method

    fun onInitZygote(result: (StartupParam) -> Unit)
     

    Change Records

    v1.0.80 added

    Function Illustrate

    \u8BBE\u7F6E initZygote \u4E8B\u4EF6\u76D1\u542C\u3002

    onHandleLoadPackage - method

    fun onHandleLoadPackage(result: (LoadPackageParam) -> Unit)
    diff --git a/docs/assets/YukiXposedEvent.html.514c0aad.js b/docs/assets/YukiXposedEvent.html.d826b927.js
    similarity index 98%
    rename from docs/assets/YukiXposedEvent.html.514c0aad.js
    rename to docs/assets/YukiXposedEvent.html.d826b927.js
    index e98ea089e..edf293ec9 100644
    --- a/docs/assets/YukiXposedEvent.html.514c0aad.js
    +++ b/docs/assets/YukiXposedEvent.html.d826b927.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o,c as a,a as e}from"./app.09f06ad9.js";const n={},l=e(`

    YukiXposedEvent - object

    object YukiXposedEvent
    +import{_ as s,o,c as a,a as e}from"./app.0312b331.js";const n={},l=e(`

    YukiXposedEvent - object

    object YukiXposedEvent
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u6DFB\u52A0

    \u529F\u80FD\u63CF\u8FF0

    \u5B9E\u73B0\u5BF9\u539F\u751F Xposed API \u7684\u88C5\u8F7D\u4E8B\u4EF6\u76D1\u542C\u3002

    events - method

    inline fun events(initiate: YukiXposedEvent.() -> Unit)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u5BF9 YukiXposedEvent \u521B\u5EFA\u4E00\u4E2A\u65B9\u6CD5\u4F53\u3002

    onInitZygote - method

    fun onInitZygote(result: (StartupParam) -> Unit)
     

    \u53D8\u66F4\u8BB0\u5F55

    v1.0.80 \u65B0\u589E

    \u529F\u80FD\u63CF\u8FF0

    \u8BBE\u7F6E initZygote \u4E8B\u4EF6\u76D1\u542C\u3002

    onHandleLoadPackage - method

    fun onHandleLoadPackage(result: (LoadPackageParam) -> Unit)
    diff --git a/docs/assets/about.html.db1283b4.js b/docs/assets/about.html.034f0858.js
    similarity index 98%
    rename from docs/assets/about.html.db1283b4.js
    rename to docs/assets/about.html.034f0858.js
    index 0605d6872..90e2d06ae 100644
    --- a/docs/assets/about.html.db1283b4.js
    +++ b/docs/assets/about.html.034f0858.js
    @@ -1,4 +1,4 @@
    -import{_ as o,r as t,o as l,c,b as s,d as e,e as a,a as p}from"./app.09f06ad9.js";const i={},r=s("h1",{id:"about-this-document",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#about-this-document","aria-hidden":"true"},"#"),a(" About this Document")],-1),d=a("This document is powered by "),h={href:"https://v2.vuepress.vuejs.org/en",target:"_blank",rel:"noopener noreferrer"},b=a("VuePress"),T=a("."),u=s("h2",{id:"license",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#license","aria-hidden":"true"},"#"),a(" License")],-1),I={href:"https://github.com/fankes/YukiHookAPI/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"},E=a("The MIT License (MIT)"),O=p(`
    MIT License
    +import{_ as o,r as t,o as l,c,b as s,d as e,e as a,a as p}from"./app.0312b331.js";const i={},r=s("h1",{id:"about-this-document",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#about-this-document","aria-hidden":"true"},"#"),a(" About this Document")],-1),d=a("This document is powered by "),h={href:"https://v2.vuepress.vuejs.org/en",target:"_blank",rel:"noopener noreferrer"},b=a("VuePress"),T=a("."),u=s("h2",{id:"license",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#license","aria-hidden":"true"},"#"),a(" License")],-1),I={href:"https://github.com/fankes/YukiHookAPI/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"},E=a("The MIT License (MIT)"),O=p(`
    MIT License
     
     Copyright (C) 2019-2023 HighCapable
     
    diff --git a/docs/assets/about.html.e1477976.js b/docs/assets/about.html.5d46b39b.js
    similarity index 98%
    rename from docs/assets/about.html.e1477976.js
    rename to docs/assets/about.html.5d46b39b.js
    index 23278e0c2..55a61ebfe 100644
    --- a/docs/assets/about.html.e1477976.js
    +++ b/docs/assets/about.html.5d46b39b.js
    @@ -1,4 +1,4 @@
    -import{_ as o,r as t,o as l,c,b as s,d as e,e as a,a as p}from"./app.09f06ad9.js";const i={},r=s("h1",{id:"\u5173\u4E8E\u6B64\u6587\u6863",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u5173\u4E8E\u6B64\u6587\u6863","aria-hidden":"true"},"#"),a(" \u5173\u4E8E\u6B64\u6587\u6863")],-1),d=a("\u6B64\u6587\u6863\u7531 "),h={href:"https://v2.vuepress.vuejs.org/zh",target:"_blank",rel:"noopener noreferrer"},b=a("VuePress"),T=a(" \u5F3A\u529B\u9A71\u52A8\u3002"),I=s("h2",{id:"license",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#license","aria-hidden":"true"},"#"),a(" License")],-1),E={href:"https://github.com/fankes/YukiHookAPI/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"},u=a("The MIT License (MIT)"),O=p(`
    MIT License
    +import{_ as o,r as t,o as l,c,b as s,d as e,e as a,a as p}from"./app.0312b331.js";const i={},r=s("h1",{id:"\u5173\u4E8E\u6B64\u6587\u6863",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u5173\u4E8E\u6B64\u6587\u6863","aria-hidden":"true"},"#"),a(" \u5173\u4E8E\u6B64\u6587\u6863")],-1),d=a("\u6B64\u6587\u6863\u7531 "),h={href:"https://v2.vuepress.vuejs.org/zh",target:"_blank",rel:"noopener noreferrer"},b=a("VuePress"),T=a(" \u5F3A\u529B\u9A71\u52A8\u3002"),I=s("h2",{id:"license",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#license","aria-hidden":"true"},"#"),a(" License")],-1),E={href:"https://github.com/fankes/YukiHookAPI/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"},u=a("The MIT License (MIT)"),O=p(`
    MIT License
     
     Copyright (C) 2019-2023 HighCapable
     
    diff --git a/docs/assets/api-example.html.f4618d70.js b/docs/assets/api-example.html.5d378137.js
    similarity index 99%
    rename from docs/assets/api-example.html.f4618d70.js
    rename to docs/assets/api-example.html.5d378137.js
    index 49c5690b5..07b727a12 100644
    --- a/docs/assets/api-example.html.f4618d70.js
    +++ b/docs/assets/api-example.html.5d378137.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as a,a as e}from"./app.09f06ad9.js";const o={},l=e(`

    API Basic Configs

    The basic configuration method of YukiHookAPI is introduced here.

    Function Configs

    Either Use as Xposed Module Configs or Use as Hook API Configs, you can specify YukiHookAPI for configuration.

    configs Method

    fun configs(initiate: Configs.() -> Unit)
    +import{_ as s,o as n,c as a,a as e}from"./app.0312b331.js";const o={},l=e(`

    API Basic Configs

    The basic configuration method of YukiHookAPI is introduced here.

    Function Configs

    Either Use as Xposed Module Configs or Use as Hook API Configs, you can specify YukiHookAPI for configuration.

    configs Method

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

    The configs method implements a lambda method body on the Configs class, which you can easily call for configuration.

    Tips

    For more functions, please refer to the YukiHookAPI.configs method.

    Hooker Configs

    The most important part of an Xposed Module or Hook API is the creation and use of Hooker. YukiHookAPI provides two ways to use it.

    Created by lambda

    This solution is the simplest. If your module has few functions and a small amount of code, and does not need to be classified, it is recommended to create it in this way.

    encase Method

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

    The encase method is the beginning of all Hook life. In a Module App or a Hook process, the encase method can only be used once to create a Hooker.

    PackageParam is an important instance object of the Host App, and PackageParam is used to implement all Hook operations on the current Hook object.

    Tips

    For more functions, please refer to PackageParam.

    The encase method can be created in the onHook method using two schemes.

    Sample Code 1

    YukiHookAPI.encase {
         loadApp(name = "com.example.demo") {
    diff --git a/docs/assets/api-example.html.84adfbe7.js b/docs/assets/api-example.html.aaa425ed.js
    similarity index 99%
    rename from docs/assets/api-example.html.84adfbe7.js
    rename to docs/assets/api-example.html.aaa425ed.js
    index 375e0c4e6..ec37fe346 100644
    --- a/docs/assets/api-example.html.84adfbe7.js
    +++ b/docs/assets/api-example.html.aaa425ed.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as a,a as l}from"./app.09f06ad9.js";const e={},o=l(`

    API \u57FA\u672C\u914D\u7F6E

    \u8FD9\u91CC\u4ECB\u7ECD\u4E86 YukiHookAPI \u7684\u57FA\u672C\u914D\u7F6E\u65B9\u6CD5\u3002

    \u529F\u80FD\u914D\u7F6E

    \u65E0\u8BBA\u662F \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528 \u8FD8\u662F \u4F5C\u4E3A Hook API \u4F7F\u7528\uFF0C\u4F60\u90FD\u53EF\u4EE5\u5728 API \u88C5\u8F7D\u4E4B\u524D\u6216\u88C5\u8F7D\u8FC7\u7A0B\u4E2D\u5BF9 YukiHookAPI \u8FDB\u884C\u914D\u7F6E\u3002

    configs \u65B9\u6CD5

    fun configs(initiate: Configs.() -> Unit)
    +import{_ as s,o as n,c as a,a as l}from"./app.0312b331.js";const e={},o=l(`

    API \u57FA\u672C\u914D\u7F6E

    \u8FD9\u91CC\u4ECB\u7ECD\u4E86 YukiHookAPI \u7684\u57FA\u672C\u914D\u7F6E\u65B9\u6CD5\u3002

    \u529F\u80FD\u914D\u7F6E

    \u65E0\u8BBA\u662F \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528 \u8FD8\u662F \u4F5C\u4E3A Hook API \u4F7F\u7528\uFF0C\u4F60\u90FD\u53EF\u4EE5\u5728 API \u88C5\u8F7D\u4E4B\u524D\u6216\u88C5\u8F7D\u8FC7\u7A0B\u4E2D\u5BF9 YukiHookAPI \u8FDB\u884C\u914D\u7F6E\u3002

    configs \u65B9\u6CD5

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

    configs \u65B9\u6CD5\u5BF9 Configs \u7C7B\u5B9E\u73B0\u4E86\u4E00\u4E2A lambda \u65B9\u6CD5\u4F53\uFF0C\u4F60\u53EF\u4EE5\u8F7B\u677E\u5730\u8C03\u7528\u5B83\u8FDB\u884C\u914D\u7F6E\u3002

    \u5C0F\u63D0\u793A

    \u66F4\u591A\u529F\u80FD\u8BF7\u53C2\u8003 YukiHookAPI.configs \u65B9\u6CD5\u3002

    Hooker \u914D\u7F6E

    \u4E00\u4E2A Xposed \u6A21\u5757\u6216 Hook API \u6700\u91CD\u8981\u7684\u5730\u65B9\u5C31\u662F Hooker \u7684\u521B\u5EFA\u4E0E\u4F7F\u7528\uFF0CYukiHookAPI \u63D0\u4F9B\u4E86\u4E24\u79CD\u4F7F\u7528\u65B9\u6CD5\u3002

    \u901A\u8FC7 lambda \u521B\u5EFA

    \u8FD9\u79CD\u65B9\u6848\u662F\u6700\u7B80\u5355\u7684\uFF0C\u5982\u679C\u4F60\u7684\u6A21\u5757\u529F\u80FD\u4E0D\u591A\uFF0C\u4EE3\u7801\u6570\u91CF\u4E0D\u5927\uFF0C\u4E0D\u9700\u8981\u8FDB\u884C\u5206\u7C7B\u5904\u7406\uFF0C\u63A8\u8350\u4F7F\u7528\u8FD9\u79CD\u65B9\u5F0F\u8FDB\u884C\u521B\u5EFA\u3002

    encase \u65B9\u6CD5

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

    encase \u65B9\u6CD5\u662F Hook \u4E00\u5207\u751F\u547D\u7684\u5F00\u59CB\uFF0C\u5728\u4E00\u4E2A\u6A21\u5757\u6216\u4E00\u4E2A Hook \u8FC7\u7A0B\u4E2D\uFF0Cencase \u65B9\u6CD5\u53EA\u80FD\u4F5C\u7528\u4E00\u6B21\uFF0C\u7528\u4E8E\u521B\u5EFA Hooker\u3002

    PackageParam \u4E3A\u5BBF\u4E3B(\u76EE\u6807 APP)\u7684\u91CD\u8981\u5B9E\u4F8B\u5BF9\u8C61\uFF0C\u901A\u8FC7 PackageParam \u6765\u5B9E\u73B0\u5BF9\u5F53\u524D Hook \u4F5C\u7528\u5BF9\u8C61\u7684\u5168\u90E8 Hook \u64CD\u4F5C\u3002

    \u5C0F\u63D0\u793A

    \u66F4\u591A\u529F\u80FD\u8BF7\u53C2\u8003 PackageParam\u3002

    encase \u65B9\u6CD5\u53EF\u4EE5\u5728 onHook \u65B9\u6CD5\u4E2D\u4F7F\u7528\u4E24\u79CD\u65B9\u6848\u521B\u5EFA\u3002

    \u793A\u4F8B\u4EE3\u7801 1

    YukiHookAPI.encase {
         loadApp(name = "com.example.demo") {
    diff --git a/docs/assets/api-exception.html.1610230f.js b/docs/assets/api-exception.html.351ae9a9.js
    similarity index 99%
    rename from docs/assets/api-exception.html.1610230f.js
    rename to docs/assets/api-exception.html.351ae9a9.js
    index 79c474259..c230a824d 100644
    --- a/docs/assets/api-exception.html.1610230f.js
    +++ b/docs/assets/api-exception.html.351ae9a9.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as e,a}from"./app.09f06ad9.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 {
    +import{_ as s,o as n,c as e,a}from"./app.0312b331.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
    diff --git a/docs/assets/api-exception.html.726f5490.js b/docs/assets/api-exception.html.b4555902.js
    similarity index 99%
    rename from docs/assets/api-exception.html.726f5490.js
    rename to docs/assets/api-exception.html.b4555902.js
    index e3ac0cafa..b9229bb05 100644
    --- a/docs/assets/api-exception.html.726f5490.js
    +++ b/docs/assets/api-exception.html.b4555902.js
    @@ -1,4 +1,4 @@
    -import{_ as e,o as s,c as n,a}from"./app.09f06ad9.js";const o={},l=a(`

    API Exception Handling

    Exceptions are the main problems often encountered in the development process. Here are some common exceptions that may be encountered during the use of YukiHookAPI and how to deal with them.

    The exception description here will only synchronize the latest API version, and the exception of the older API version will not be described again, please always keep the API version up-to-date.

    Non-Blocking Exceptions

    These exceptions will not cause the app to stop running (FC), but will print E level logs on the console, and may also stop continuing to execute related functions.

    exception

    loggerE

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

    Abnormal

    Your Hook Framework is not working or did not successfully load the current Hook API.

    Solution

    Please make sure you have loaded the encase method of YukiHookAPI in the correct place. For details, please refer to Use as Xposed Module Configs and Use as Hook API Configs.

    exception

    loggerE

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

    Abnormal

    You try to load the encase method in the onInit or onXposedEvent method of the Hook entry class that implements IYukiHookXposedInit.

    The following example

    object HookEntry : IYukiHookXposedInit {
    +import{_ as e,o as s,c as n,a}from"./app.0312b331.js";const o={},l=a(`

    API Exception Handling

    Exceptions are the main problems often encountered in the development process. Here are some common exceptions that may be encountered during the use of YukiHookAPI and how to deal with them.

    The exception description here will only synchronize the latest API version, and the exception of the older API version will not be described again, please always keep the API version up-to-date.

    Non-Blocking Exceptions

    These exceptions will not cause the app to stop running (FC), but will print E level logs on the console, and may also stop continuing to execute related functions.

    exception

    loggerE

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

    Abnormal

    Your Hook Framework is not working or did not successfully load the current Hook API.

    Solution

    Please make sure you have loaded the encase method of YukiHookAPI in the correct place. For details, please refer to Use as Xposed Module Configs and Use as Hook API Configs.

    exception

    loggerE

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

    Abnormal

    You try to load the encase method in the onInit or onXposedEvent method of the Hook entry class that implements IYukiHookXposedInit.

    The following example

    object HookEntry : IYukiHookXposedInit {
     
         override fun onInit() {
             // \u2757 Wrong usage
    diff --git a/docs/assets/api-using.html.6f155b53.js b/docs/assets/api-using.html.c5d3a9df.js
    similarity index 99%
    rename from docs/assets/api-using.html.6f155b53.js
    rename to docs/assets/api-using.html.c5d3a9df.js
    index b75e81a67..eb1488105 100644
    --- a/docs/assets/api-using.html.6f155b53.js
    +++ b/docs/assets/api-using.html.c5d3a9df.js
    @@ -1,4 +1,4 @@
    -import{_ as l,r as p,o as c,c as r,b as s,d as e,a as o,e as n}from"./app.09f06ad9.js";const t={},i=o(`

    \u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E

    \u4F5C\u4E3A Hook API \u901A\u5E38\u4E3A\u505A\u81EA\u8EAB APP \u70ED\u66F4\u65B0\u6216\u529F\u80FD\u9700\u8981\u4EE5\u53CA\u4EA7\u54C1\u6D4B\u8BD5\u7684 Hook \u64CD\u4F5C\u3002

    \u4F9D\u8D56\u914D\u7F6E

    \u4F60\u53EA\u9700\u8981\u96C6\u6210 com.highcapable.yukihookapi:api \u4F9D\u8D56\u5373\u53EF\u3002

    \u7136\u540E\u8BF7\u96C6\u6210\u4F60\u76EE\u6807\u4F7F\u7528\u7684 Hook Framework \u4F9D\u8D56\u3002

    \u5165\u53E3\u914D\u7F6E

    \u521B\u5EFA\u4F60\u7684\u81EA\u5B9A\u4E49 Application\u3002

    \u5728 attachBaseContext \u4E2D\u6DFB\u52A0 YukiHookAPI.encase \u65B9\u6CD5\u3002

    \u793A\u4F8B\u5982\u4E0B

    class MyApplication : Application() {
    +import{_ as l,r as p,o as c,c as r,b as s,d as e,a as o,e as n}from"./app.0312b331.js";const t={},i=o(`

    \u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E

    \u4F5C\u4E3A Hook API \u901A\u5E38\u4E3A\u505A\u81EA\u8EAB APP \u70ED\u66F4\u65B0\u6216\u529F\u80FD\u9700\u8981\u4EE5\u53CA\u4EA7\u54C1\u6D4B\u8BD5\u7684 Hook \u64CD\u4F5C\u3002

    \u4F9D\u8D56\u914D\u7F6E

    \u4F60\u53EA\u9700\u8981\u96C6\u6210 com.highcapable.yukihookapi:api \u4F9D\u8D56\u5373\u53EF\u3002

    \u7136\u540E\u8BF7\u96C6\u6210\u4F60\u76EE\u6807\u4F7F\u7528\u7684 Hook Framework \u4F9D\u8D56\u3002

    \u5165\u53E3\u914D\u7F6E

    \u521B\u5EFA\u4F60\u7684\u81EA\u5B9A\u4E49 Application\u3002

    \u5728 attachBaseContext \u4E2D\u6DFB\u52A0 YukiHookAPI.encase \u65B9\u6CD5\u3002

    \u793A\u4F8B\u5982\u4E0B

    class MyApplication : Application() {
     
         override fun attachBaseContext(base: Context?) {
             // \u88C5\u8F7D Hook Framework
    diff --git a/docs/assets/api-using.html.1ee91ca3.js b/docs/assets/api-using.html.d310aade.js
    similarity index 99%
    rename from docs/assets/api-using.html.1ee91ca3.js
    rename to docs/assets/api-using.html.d310aade.js
    index b3c02352a..4bcc2d1ad 100644
    --- a/docs/assets/api-using.html.1ee91ca3.js
    +++ b/docs/assets/api-using.html.d310aade.js
    @@ -1,4 +1,4 @@
    -import{_ as l,r as p,o as c,c as t,b as s,d as e,a as o,e as n}from"./app.09f06ad9.js";const i={},r=o(`

    Use as Hook API Configs

    As a Hook API, it is usually used for Hook operations for hot updates or functional needs of its own app and product testing.

    Dependency Configs

    You just need to integrate the com.highcapable.yukihookapi:api dependency.

    Then please integrate the Hook Framework dependencies used by your target.

    Entry Configs

    Create your custom Application.

    Add YukiHookAPI.encase method to attachBaseContext.

    The following example

    class MyApplication : Application() {
    +import{_ as l,r as p,o as c,c as t,b as s,d as e,a as o,e as n}from"./app.0312b331.js";const i={},r=o(`

    Use as Hook API Configs

    As a Hook API, it is usually used for Hook operations for hot updates or functional needs of its own app and product testing.

    Dependency Configs

    You just need to integrate the com.highcapable.yukihookapi:api dependency.

    Then please integrate the Hook Framework dependencies used by your target.

    Entry Configs

    Create your custom Application.

    Add YukiHookAPI.encase method to attachBaseContext.

    The following example

    class MyApplication : Application() {
     
         override fun attachBaseContext(base: Context?) {
             // Load Hook Framework
    diff --git a/docs/assets/app.09f06ad9.js b/docs/assets/app.0312b331.js
    similarity index 93%
    rename from docs/assets/app.09f06ad9.js
    rename to docs/assets/app.0312b331.js
    index 0c76e5f41..2120c38ba 100644
    --- a/docs/assets/app.09f06ad9.js
    +++ b/docs/assets/app.0312b331.js
    @@ -1,4 +1,4 @@
    -const Jr="modulepreload",Zr=function(e){return"/YukiHookAPI/"+e},Xo={},d=function(t,l,i){return!l||l.length===0?t():Promise.all(l.map(o=>{if(o=Zr(o),o in Xo)return;Xo[o]=!0;const n=o.endsWith(".css"),a=n?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${a}`))return;const r=document.createElement("link");if(r.rel=n?"stylesheet":Jr,n||(r.as="script",r.crossOrigin=""),r.href=o,document.head.appendChild(r),n)return new Promise((s,c)=>{r.addEventListener("load",s),r.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())},es={"v-8daa1a0e":()=>d(()=>import("./index.html.1ad46905.js"),[]).then(({data:e})=>e),"v-2d0a870d":()=>d(()=>import("./index.html.58270dd2.js"),[]).then(({data:e})=>e),"v-c0c85b84":()=>d(()=>import("./index.html.962e6741.js"),[]).then(({data:e})=>e),"v-7a15fe3b":()=>d(()=>import("./about.html.bac55135.js"),[]).then(({data:e})=>e),"v-3f851d14":()=>d(()=>import("./changelog.html.bfd0982c.js"),[]).then(({data:e})=>e),"v-193cf592":()=>d(()=>import("./contacts.html.5dc8225c.js"),[]).then(({data:e})=>e),"v-ae7b83f2":()=>d(()=>import("./future.html.57365bd2.js"),[]).then(({data:e})=>e),"v-64fc7bb8":()=>d(()=>import("./home.html.f6b9c2a4.js"),[]).then(({data:e})=>e),"v-9cfea7fc":()=>d(()=>import("./api-example.html.c60371a6.js"),[]).then(({data:e})=>e),"v-72c12b7d":()=>d(()=>import("./api-exception.html.114387df.js"),[]).then(({data:e})=>e),"v-793879e8":()=>d(()=>import("./api-using.html.c794f69e.js"),[]).then(({data:e})=>e),"v-29d6c1ba":()=>d(()=>import("./r8-proguard.html.15e04e11.js"),[]).then(({data:e})=>e),"v-24e71de7":()=>d(()=>import("./xposed-using.html.09de8b71.js"),[]).then(({data:e})=>e),"v-7b22efaf":()=>d(()=>import("./example.html.3cb1bbf7.js"),[]).then(({data:e})=>e),"v-efb45d4c":()=>d(()=>import("./home.html.ca5e9385.js"),[]).then(({data:e})=>e),"v-277b35ca":()=>d(()=>import("./knowledge.html.13983a8b.js"),[]).then(({data:e})=>e),"v-77d752a2":()=>d(()=>import("./move-to-new-api.html.f91df01f.js"),[]).then(({data:e})=>e),"v-72889797":()=>d(()=>import("./quick-start.html.2c93f8c3.js"),[]).then(({data:e})=>e),"v-55c11626":()=>d(()=>import("./yukihookapi-projectbuilder.html.ed4fa356.js"),[]).then(({data:e})=>e),"v-41967128":()=>d(()=>import("./about.html.4de66a22.js"),[]).then(({data:e})=>e),"v-0e6c3476":()=>d(()=>import("./changelog.html.e02d6157.js"),[]).then(({data:e})=>e),"v-6cf86266":()=>d(()=>import("./contacts.html.3df7cacf.js"),[]).then(({data:e})=>e),"v-3106ca14":()=>d(()=>import("./future.html.58e3db7e.js"),[]).then(({data:e})=>e),"v-c8deafb2":()=>d(()=>import("./home.html.cad3998c.js"),[]).then(({data:e})=>e),"v-c6114c9e":()=>d(()=>import("./api-example.html.29a2e3ae.js"),[]).then(({data:e})=>e),"v-5b43296c":()=>d(()=>import("./api-exception.html.b8a60393.js"),[]).then(({data:e})=>e),"v-2ee67152":()=>d(()=>import("./api-using.html.0a59e2e0.js"),[]).then(({data:e})=>e),"v-154d6f69":()=>d(()=>import("./r8-proguard.html.683a5429.js"),[]).then(({data:e})=>e),"v-af73b3d0":()=>d(()=>import("./xposed-using.html.73248b21.js"),[]).then(({data:e})=>e),"v-13b430a0":()=>d(()=>import("./example.html.c868eee2.js"),[]).then(({data:e})=>e),"v-6a609e09":()=>d(()=>import("./home.html.ced3162e.js"),[]).then(({data:e})=>e),"v-b4f1a468":()=>d(()=>import("./knowledge.html.830e8c66.js"),[]).then(({data:e})=>e),"v-c0d5dada":()=>d(()=>import("./move-to-new-api.html.4bf89a9b.js"),[]).then(({data:e})=>e),"v-24840ff0":()=>d(()=>import("./quick-start.html.8abc4bb2.js"),[]).then(({data:e})=>e),"v-a2fab4d6":()=>d(()=>import("./yukihookapi-projectbuilder.html.d499d226.js"),[]).then(({data:e})=>e),"v-12042f1f":()=>d(()=>import("./host-inject.html.8e7a6aa7.js"),[]).then(({data:e})=>e),"v-deaff1d0":()=>d(()=>import("./host-lifecycle.html.7e81cf29.js"),[]).then(({data:e})=>e),"v-33c1dc26":()=>d(()=>import("./logger.html.a59ab5f0.js"),[]).then(({data:e})=>e),"v-581ddb9c":()=>d(()=>import("./reflection.html.850b6810.js"),[]).then(({data:e})=>e),"v-2e6ad66c":()=>d(()=>import("./xposed-channel.html.5975332b.js"),[]).then(({data:e})=>e),"v-68bebbf4":()=>d(()=>import("./xposed-storage.html.c35a7041.js"),[]).then(({data:e})=>e),"v-6ac5be8e":()=>d(()=>import("./host-inject.html.77802245.js"),[]).then(({data:e})=>e),"v-357a8d49":()=>d(()=>import("./host-lifecycle.html.136055f0.js"),[]).then(({data:e})=>e),"v-1f0f591e":()=>d(()=>import("./logger.html.ed51ab5d.js"),[]).then(({data:e})=>e),"v-001858e3":()=>d(()=>import("./reflection.html.eb335976.js"),[]).then(({data:e})=>e),"v-598546c6":()=>d(()=>import("./xposed-channel.html.325b6181.js"),[]).then(({data:e})=>e),"v-0d914225":()=>d(()=>import("./xposed-storage.html.5fd9a913.js"),[]).then(({data:e})=>e),"v-053599a5":()=>d(()=>import("./YukiHookAPI.html.624839d6.js"),[]).then(({data:e})=>e),"v-6931cb54":()=>d(()=>import("./YukiHookAPI.html.cf8ad756.js"),[]).then(({data:e})=>e),"v-818b3ca6":()=>d(()=>import("./InjectYukiHookWithXposed.html.56391530.js"),[]).then(({data:e})=>e),"v-b6a815c4":()=>d(()=>import("./CurrentClass.html.16c29272.js"),[]).then(({data:e})=>e),"v-0183e3fc":()=>d(()=>import("./GenericClass.html.f94281cf.js"),[]).then(({data:e})=>e),"v-57506200":()=>d(()=>import("./HookClass.html.52e59cf0.js"),[]).then(({data:e})=>e),"v-9af56c1a":()=>d(()=>import("./HookResources.html.2486cf29.js"),[]).then(({data:e})=>e),"v-032b1710":()=>d(()=>import("./VariousClass.html.153f4c39.js"),[]).then(({data:e})=>e),"v-e288ce96":()=>d(()=>import("./YukiBaseHooker.html.99eec744.js"),[]).then(({data:e})=>e),"v-0d0fcec2":()=>d(()=>import("./ReflectionFactory.html.d2d3ba9a.js"),[]).then(({data:e})=>e),"v-65091354":()=>d(()=>import("./YukiHookFactory.html.bfbfbca6.js"),[]).then(({data:e})=>e),"v-71147891":()=>d(()=>import("./YukiMemberHookCreator.html.7e0c1b2e.js"),[]).then(({data:e})=>e),"v-5ed1ceee":()=>d(()=>import("./YukiResourcesHookCreator.html.2fa2ff0f.js"),[]).then(({data:e})=>e),"v-60cbe1b4":()=>d(()=>import("./HookParam.html.ae01e1f2.js"),[]).then(({data:e})=>e),"v-b381a126":()=>d(()=>import("./PackageParam.html.ffad7496.js"),[]).then(({data:e})=>e),"v-30f3ba1e":()=>d(()=>import("./InjectYukiHookWithXposed.html.cf9b500d.js"),[]).then(({data:e})=>e),"v-6e47300f":()=>d(()=>import("./CurrentClass.html.641fcd58.js"),[]).then(({data:e})=>e),"v-69c1c226":()=>d(()=>import("./GenericClass.html.5d4a2ffe.js"),[]).then(({data:e})=>e),"v-735374af":()=>d(()=>import("./HookClass.html.486aa6ea.js"),[]).then(({data:e})=>e),"v-1c516d22":()=>d(()=>import("./HookResources.html.4f07fd98.js"),[]).then(({data:e})=>e),"v-66735bfe":()=>d(()=>import("./VariousClass.html.a490557a.js"),[]).then(({data:e})=>e),"v-36aec5ad":()=>d(()=>import("./LoggerFactory.html.52af0d44.js"),[]).then(({data:e})=>e),"v-3ac40680":()=>d(()=>import("./YukiMemberHookCreator.html.e217488d.js"),[]).then(({data:e})=>e),"v-5e81af42":()=>d(()=>import("./YukiResourcesHookCreator.html.1f540f56.js"),[]).then(({data:e})=>e),"v-516df326":()=>d(()=>import("./YukiBaseHooker.html.b68236f9.js"),[]).then(({data:e})=>e),"v-213d88b3":()=>d(()=>import("./ReflectionFactory.html.d78fe330.js"),[]).then(({data:e})=>e),"v-448e9585":()=>d(()=>import("./YukiHookFactory.html.09287903.js"),[]).then(({data:e})=>e),"v-004a009e":()=>d(()=>import("./LoggerFactory.html.ae54c997.js"),[]).then(({data:e})=>e),"v-75a9b636":()=>d(()=>import("./HookParam.html.b6aa94a9.js"),[]).then(({data:e})=>e),"v-100b529c":()=>d(()=>import("./PackageParam.html.8ce464d4.js"),[]).then(({data:e})=>e),"v-8293d958":()=>d(()=>import("./ComponentTypeFactory.html.98825c67.js"),[]).then(({data:e})=>e),"v-7b0abf86":()=>d(()=>import("./GraphicsTypeFactory.html.cb6ff63d.js"),[]).then(({data:e})=>e),"v-5309e4a0":()=>d(()=>import("./ViewTypeFactory.html.87f19810.js"),[]).then(({data:e})=>e),"v-a2615d0c":()=>d(()=>import("./DefinedTypeFactory.html.8137c32c.js"),[]).then(({data:e})=>e),"v-ba01a600":()=>d(()=>import("./VariableTypeFactory.html.07a0f5f6.js"),[]).then(({data:e})=>e),"v-7fec5836":()=>d(()=>import("./ModuleApplication.html.57573770.js"),[]).then(({data:e})=>e),"v-7414265a":()=>d(()=>import("./YukiHookDataChannel.html.02a8ef0d.js"),[]).then(({data:e})=>e),"v-003862c2":()=>d(()=>import("./YukiHookModulePrefs.html.198e73d3.js"),[]).then(({data:e})=>e),"v-1d680acc":()=>d(()=>import("./IYukiHookXposedInit.html.b37a852b.js"),[]).then(({data:e})=>e),"v-5e874c45":()=>d(()=>import("./ComponentTypeFactory.html.57f1d79e.js"),[]).then(({data:e})=>e),"v-4ea62475":()=>d(()=>import("./GraphicsTypeFactory.html.bd3fae8e.js"),[]).then(({data:e})=>e),"v-ef79cde2":()=>d(()=>import("./ViewTypeFactory.html.a2b13a44.js"),[]).then(({data:e})=>e),"v-5acc12ab":()=>d(()=>import("./DefinedTypeFactory.html.ba3bdd0b.js"),[]).then(({data:e})=>e),"v-14ec8671":()=>d(()=>import("./VariableTypeFactory.html.5c25c0fb.js"),[]).then(({data:e})=>e),"v-4709ad58":()=>d(()=>import("./ModuleApplication.html.a386b8db.js"),[]).then(({data:e})=>e),"v-632be8ee":()=>d(()=>import("./YukiHookDataChannel.html.b4bffecd.js"),[]).then(({data:e})=>e),"v-5858709e":()=>d(()=>import("./YukiHookModulePrefs.html.6bedc781.js"),[]).then(({data:e})=>e),"v-763140ee":()=>d(()=>import("./IYukiHookXposedInit.html.78a55860.js"),[]).then(({data:e})=>e),"v-4fca92c0":()=>d(()=>import("./BaseFinder.html.a5dbb7a7.js"),[]).then(({data:e})=>e),"v-2a898c66":()=>d(()=>import("./DexClassFinder.html.5d8e12f0.js"),[]).then(({data:e})=>e),"v-a71937aa":()=>d(()=>import("./ConstructorFinder.html.7b697bd3.js"),[]).then(({data:e})=>e),"v-42e0f0ab":()=>d(()=>import("./FieldFinder.html.c036e61d.js"),[]).then(({data:e})=>e),"v-a4aa4d00":()=>d(()=>import("./MethodFinder.html.f1f39c84.js"),[]).then(({data:e})=>e),"v-19e7277e":()=>d(()=>import("./YukiXposedEvent.html.560fa41c.js"),[]).then(({data:e})=>e),"v-8455e04e":()=>d(()=>import("./YukiModuleResources.html.90f23dcd.js"),[]).then(({data:e})=>e),"v-7b087cce":()=>d(()=>import("./YukiResForwarder.html.65998e9e.js"),[]).then(({data:e})=>e),"v-a00b4de6":()=>d(()=>import("./YukiResources.html.cc9ce9fb.js"),[]).then(({data:e})=>e),"v-2f64a2d4":()=>d(()=>import("./ChannelData.html.1981f416.js"),[]).then(({data:e})=>e),"v-87027140":()=>d(()=>import("./ChannelPriority.html.7d2ec81d.js"),[]).then(({data:e})=>e),"v-2d4e0da6":()=>d(()=>import("./ModuleClassLoader.html.2ddf88b6.js"),[]).then(({data:e})=>e),"v-58ed8298":()=>d(()=>import("./PrefsData.html.3061ee5b.js"),[]).then(({data:e})=>e),"v-23e1a817":()=>d(()=>import("./ModulePreferenceFragment.html.764fecc3.js"),[]).then(({data:e})=>e),"v-0f719471":()=>d(()=>import("./BaseFinder.html.8f275c85.js"),[]).then(({data:e})=>e),"v-45111efc":()=>d(()=>import("./DexClassFinder.html.78c5f805.js"),[]).then(({data:e})=>e),"v-1e2cbc9c":()=>d(()=>import("./ConstructorFinder.html.0ce7ed02.js"),[]).then(({data:e})=>e),"v-22449c48":()=>d(()=>import("./FieldFinder.html.6095903f.js"),[]).then(({data:e})=>e),"v-fd738322":()=>d(()=>import("./MethodFinder.html.57ad9ffd.js"),[]).then(({data:e})=>e),"v-0a4de82f":()=>d(()=>import("./YukiXposedEvent.html.a93ee4ef.js"),[]).then(({data:e})=>e),"v-8266e0ec":()=>d(()=>import("./YukiModuleResources.html.46222277.js"),[]).then(({data:e})=>e),"v-aa38fa86":()=>d(()=>import("./YukiResForwarder.html.70fb824b.js"),[]).then(({data:e})=>e),"v-21b3b17e":()=>d(()=>import("./YukiResources.html.8714bbf2.js"),[]).then(({data:e})=>e),"v-493d37f6":()=>d(()=>import("./ChannelData.html.5ca343ea.js"),[]).then(({data:e})=>e),"v-b57870de":()=>d(()=>import("./ChannelPriority.html.b460c4bc.js"),[]).then(({data:e})=>e),"v-4b468415":()=>d(()=>import("./ModuleClassLoader.html.0388bffd.js"),[]).then(({data:e})=>e),"v-d99f7f36":()=>d(()=>import("./PrefsData.html.40b2fabe.js"),[]).then(({data:e})=>e),"v-53bcae06":()=>d(()=>import("./ModulePreferenceFragment.html.0c7dadc7.js"),[]).then(({data:e})=>e),"v-52995ef7":()=>d(()=>import("./CountRules.html.2d5ab94d.js"),[]).then(({data:e})=>e),"v-8d5ce71a":()=>d(()=>import("./ModifierRules.html.c36dff17.js"),[]).then(({data:e})=>e),"v-f5b1ffb2":()=>d(()=>import("./NameRules.html.00ac96fb.js"),[]).then(({data:e})=>e),"v-652b815b":()=>d(()=>import("./ObjectRules.html.70d91cad.js"),[]).then(({data:e})=>e),"v-08b70f7f":()=>d(()=>import("./ConstructorRules.html.c7161b83.js"),[]).then(({data:e})=>e),"v-21f64ebf":()=>d(()=>import("./FieldRules.html.c8edc48c.js"),[]).then(({data:e})=>e),"v-77f11cf9":()=>d(()=>import("./MemberRules.html.a071b3c6.js"),[]).then(({data:e})=>e),"v-64827680":()=>d(()=>import("./MethodRules.html.6c9a8df6.js"),[]).then(({data:e})=>e),"v-2d5d16db":()=>d(()=>import("./ModuleAppActivity.html.90d3c4e6.js"),[]).then(({data:e})=>e),"v-cadbe48e":()=>d(()=>import("./ModuleAppCompatActivity.html.a20d9206.js"),[]).then(({data:e})=>e),"v-78731c50":()=>d(()=>import("./ModuleContextThemeWrapper.html.0879426b.js"),[]).then(({data:e})=>e),"v-1b2ad030":()=>d(()=>import("./CountRules.html.2639d392.js"),[]).then(({data:e})=>e),"v-547a3c3c":()=>d(()=>import("./ModifierRules.html.f7582dc2.js"),[]).then(({data:e})=>e),"v-58c26516":()=>d(()=>import("./NameRules.html.47e512e4.js"),[]).then(({data:e})=>e),"v-80fd32ec":()=>d(()=>import("./ObjectRules.html.4b682129.js"),[]).then(({data:e})=>e),"v-a42f54a4":()=>d(()=>import("./ConstructorRules.html.f8ba43ee.js"),[]).then(({data:e})=>e),"v-3e67a42e":()=>d(()=>import("./FieldRules.html.a499e892.js"),[]).then(({data:e})=>e),"v-2cab152c":()=>d(()=>import("./MemberRules.html.b3e5d297.js"),[]).then(({data:e})=>e),"v-5388621e":()=>d(()=>import("./MethodRules.html.afeaf85e.js"),[]).then(({data:e})=>e),"v-1446bdca":()=>d(()=>import("./ModuleAppActivity.html.09451ff7.js"),[]).then(({data:e})=>e),"v-c7cef530":()=>d(()=>import("./ModuleAppCompatActivity.html.dd9e40e9.js"),[]).then(({data:e})=>e),"v-44efb702":()=>d(()=>import("./ModuleContextThemeWrapper.html.229a46ac.js"),[]).then(({data:e})=>e),"v-5e375d98":()=>d(()=>import("./MemberRulesResult.html.e79843c3.js"),[]).then(({data:e})=>e),"v-b8000f3a":()=>d(()=>import("./MemberRulesResult.html.58e81c94.js"),[]).then(({data:e})=>e),"v-3706649a":()=>d(()=>import("./404.html.c038a05a.js"),[]).then(({data:e})=>e)};function mo(e,t){const l=Object.create(null),i=e.split(",");for(let o=0;o!!l[o.toLowerCase()]:o=>!!l[o]}const ts="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ls=mo(ts);function ha(e){return!!e||e===""}function Sl(e){if(te(e)){const t={};for(let l=0;l{if(l){const i=l.split(os);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function Ke(e){let t="";if(be(e))t=e;else if(te(e))for(let l=0;lbe(e)?e:e==null?"":te(e)||Oe(e)&&(e.toString===ma||!ae(e.toString))?JSON.stringify(e,da,2):String(e),da=(e,t)=>t&&t.__v_isRef?da(e,t.value):rl(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((l,[i,o])=>(l[`${i} =>`]=o,l),{})}:ua(t)?{[`Set(${t.size})`]:[...t.values()]}:Oe(t)&&!te(t)&&!fa(t)?String(t):t,Ce={},al=[],rt=()=>{},as=()=>!1,rs=/^on[^a-z]/,Vl=e=>rs.test(e),fo=e=>e.startsWith("onUpdate:"),Se=Object.assign,go=(e,t)=>{const l=e.indexOf(t);l>-1&&e.splice(l,1)},ss=Object.prototype.hasOwnProperty,de=(e,t)=>ss.call(e,t),te=Array.isArray,rl=e=>bi(e)==="[object Map]",ua=e=>bi(e)==="[object Set]",ae=e=>typeof e=="function",be=e=>typeof e=="string",ko=e=>typeof e=="symbol",Oe=e=>e!==null&&typeof e=="object",pa=e=>Oe(e)&&ae(e.then)&&ae(e.catch),ma=Object.prototype.toString,bi=e=>ma.call(e),cs=e=>bi(e).slice(8,-1),fa=e=>bi(e)==="[object Object]",vo=e=>be(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Cl=mo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),_i=e=>{const t=Object.create(null);return l=>t[l]||(t[l]=e(l))},hs=/-(\w)/g,ut=_i(e=>e.replace(hs,(t,l)=>l?l.toUpperCase():"")),ds=/\B([A-Z])/g,Jt=_i(e=>e.replace(ds,"-$1").toLowerCase()),yi=_i(e=>e.charAt(0).toUpperCase()+e.slice(1)),Oi=_i(e=>e?`on${yi(e)}`:""),wl=(e,t)=>!Object.is(e,t),Fi=(e,t)=>{for(let l=0;l{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:l})},ga=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let qo;const us=()=>qo||(qo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let Xe;class ps{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Xe&&(this.parent=Xe,this.index=(Xe.scopes||(Xe.scopes=[])).push(this)-1)}run(t){if(this.active){const l=Xe;try{return Xe=this,t()}finally{Xe=l}}}on(){Xe=this}off(){Xe=this.parent}stop(t){if(this.active){let l,i;for(l=0,i=this.effects.length;l{const t=new Set(e);return t.w=0,t.n=0,t},ka=e=>(e.w&Ft)>0,va=e=>(e.n&Ft)>0,ks=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let l=0;for(let i=0;i{(c==="length"||c>=i)&&r.push(s)});else switch(l!==void 0&&r.push(a.get(l)),t){case"add":te(e)?vo(l)&&r.push(a.get("length")):(r.push(a.get(Kt)),rl(e)&&r.push(a.get(qi)));break;case"delete":te(e)||(r.push(a.get(Kt)),rl(e)&&r.push(a.get(qi)));break;case"set":rl(e)&&r.push(a.get(Kt));break}if(r.length===1)r[0]&&Ki(r[0]);else{const s=[];for(const c of r)c&&s.push(...c);Ki(bo(s))}}function Ki(e,t){const l=te(e)?e:[...e];for(const i of l)i.computed&&Go(i);for(const i of l)i.computed||Go(i)}function Go(e,t){(e!==nt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const bs=mo("__proto__,__v_isRef,__isVue"),ya=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ko)),_s=yo(),ys=yo(!1,!0),xs=yo(!0),Qo=Es();function Es(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...l){const i=ke(this);for(let n=0,a=this.length;n{e[t]=function(...l){ml();const i=ke(this)[t].apply(this,l);return fl(),i}}),e}function yo(e=!1,t=!1){return function(i,o,n){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&n===(e?t?Vs:Pa:t?Ra:Ca).get(i))return i;const a=te(i);if(!e&&a&&de(Qo,o))return Reflect.get(Qo,o,n);const r=Reflect.get(i,o,n);return(ko(o)?ya.has(o):bs(o))||(e||Qe(i,"get",o),t)?r:De(r)?a&&vo(o)?r:r.value:Oe(r)?e?Co(r):gl(r):r}}const Cs=xa(),Rs=xa(!0);function xa(e=!1){return function(l,i,o,n){let a=l[i];if(Ol(a)&&De(a)&&!De(o))return!1;if(!e&&!Ol(o)&&(Gi(o)||(o=ke(o),a=ke(a)),!te(l)&&De(a)&&!De(o)))return a.value=o,!0;const r=te(l)&&vo(i)?Number(i)e,xi=e=>Reflect.getPrototypeOf(e);function Xl(e,t,l=!1,i=!1){e=e.__v_raw;const o=ke(e),n=ke(t);l||(t!==n&&Qe(o,"get",t),Qe(o,"get",n));const{has:a}=xi(o),r=i?xo:l?Po:Fl;if(a.call(o,t))return r(e.get(t));if(a.call(o,n))return r(e.get(n));e!==o&&e.get(t)}function ql(e,t=!1){const l=this.__v_raw,i=ke(l),o=ke(e);return t||(e!==o&&Qe(i,"has",e),Qe(i,"has",o)),e===o?l.has(e):l.has(e)||l.has(o)}function Kl(e,t=!1){return e=e.__v_raw,!t&&Qe(ke(e),"iterate",Kt),Reflect.get(e,"size",e)}function Jo(e){e=ke(e);const t=ke(this);return xi(t).has.call(t,e)||(t.add(e),bt(t,"add",e,e)),this}function Zo(e,t){t=ke(t);const l=ke(this),{has:i,get:o}=xi(l);let n=i.call(l,e);n||(e=ke(e),n=i.call(l,e));const a=o.call(l,e);return l.set(e,t),n?wl(t,a)&&bt(l,"set",e,t):bt(l,"add",e,t),this}function en(e){const t=ke(this),{has:l,get:i}=xi(t);let o=l.call(t,e);o||(e=ke(e),o=l.call(t,e)),i&&i.call(t,e);const n=t.delete(e);return o&&bt(t,"delete",e,void 0),n}function tn(){const e=ke(this),t=e.size!==0,l=e.clear();return t&&bt(e,"clear",void 0,void 0),l}function Gl(e,t){return function(i,o){const n=this,a=n.__v_raw,r=ke(a),s=t?xo:e?Po:Fl;return!e&&Qe(r,"iterate",Kt),a.forEach((c,h)=>i.call(o,s(c),s(h),n))}}function Ql(e,t,l){return function(...i){const o=this.__v_raw,n=ke(o),a=rl(n),r=e==="entries"||e===Symbol.iterator&&a,s=e==="keys"&&a,c=o[e](...i),h=l?xo:t?Po:Fl;return!t&&Qe(n,"iterate",s?qi:Kt),{next(){const{value:p,done:m}=c.next();return m?{value:p,done:m}:{value:r?[h(p[0]),h(p[1])]:h(p),done:m}},[Symbol.iterator](){return this}}}}function xt(e){return function(...t){return e==="delete"?!1:this}}function ws(){const e={get(n){return Xl(this,n)},get size(){return Kl(this)},has:ql,add:Jo,set:Zo,delete:en,clear:tn,forEach:Gl(!1,!1)},t={get(n){return Xl(this,n,!1,!0)},get size(){return Kl(this)},has:ql,add:Jo,set:Zo,delete:en,clear:tn,forEach:Gl(!1,!0)},l={get(n){return Xl(this,n,!0)},get size(){return Kl(this,!0)},has(n){return ql.call(this,n,!0)},add:xt("add"),set:xt("set"),delete:xt("delete"),clear:xt("clear"),forEach:Gl(!0,!1)},i={get(n){return Xl(this,n,!0,!0)},get size(){return Kl(this,!0)},has(n){return ql.call(this,n,!0)},add:xt("add"),set:xt("set"),delete:xt("delete"),clear:xt("clear"),forEach:Gl(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Ql(n,!1,!1),l[n]=Ql(n,!0,!1),t[n]=Ql(n,!1,!0),i[n]=Ql(n,!0,!0)}),[e,l,t,i]}const[Os,Fs,zs,Ds]=ws();function Eo(e,t){const l=t?e?Ds:zs:e?Fs:Os;return(i,o,n)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?i:Reflect.get(de(l,o)&&o in i?l:i,o,n)}const Ms={get:Eo(!1,!1)},Hs={get:Eo(!1,!0)},Ss={get:Eo(!0,!1)},Ca=new WeakMap,Ra=new WeakMap,Pa=new WeakMap,Vs=new WeakMap;function Ns(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function js(e){return e.__v_skip||!Object.isExtensible(e)?0:Ns(cs(e))}function gl(e){return Ol(e)?e:Ro(e,!1,Ea,Ms,Ca)}function $s(e){return Ro(e,!1,Is,Hs,Ra)}function Co(e){return Ro(e,!0,As,Ss,Pa)}function Ro(e,t,l,i,o){if(!Oe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=o.get(e);if(n)return n;const a=js(e);if(a===0)return e;const r=new Proxy(e,a===2?i:l);return o.set(e,r),r}function sl(e){return Ol(e)?sl(e.__v_raw):!!(e&&e.__v_isReactive)}function Ol(e){return!!(e&&e.__v_isReadonly)}function Gi(e){return!!(e&&e.__v_isShallow)}function La(e){return sl(e)||Ol(e)}function ke(e){const t=e&&e.__v_raw;return t?ke(t):e}function Ta(e){return ni(e,"__v_skip",!0),e}const Fl=e=>Oe(e)?gl(e):e,Po=e=>Oe(e)?Co(e):e;function Aa(e){It&&nt&&(e=ke(e),_a(e.dep||(e.dep=bo())))}function Ia(e,t){e=ke(e),e.dep&&Ki(e.dep)}function De(e){return!!(e&&e.__v_isRef===!0)}function ye(e){return Oa(e,!1)}function wa(e){return Oa(e,!0)}function Oa(e,t){return De(e)?e:new Ys(e,t)}class Ys{constructor(t,l){this.__v_isShallow=l,this.dep=void 0,this.__v_isRef=!0,this._rawValue=l?t:ke(t),this._value=l?t:Fl(t)}get value(){return Aa(this),this._value}set value(t){t=this.__v_isShallow?t:ke(t),wl(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Fl(t),Ia(this))}}function O(e){return De(e)?e.value:e}const Bs={get:(e,t,l)=>O(Reflect.get(e,t,l)),set:(e,t,l,i)=>{const o=e[t];return De(o)&&!De(l)?(o.value=l,!0):Reflect.set(e,t,l,i)}};function Fa(e){return sl(e)?e:new Proxy(e,Bs)}function Ei(e){const t=te(e)?new Array(e.length):{};for(const l in e)t[l]=Ws(e,l);return t}class Us{constructor(t,l,i){this._object=t,this._key=l,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function Ws(e,t,l){const i=e[t];return De(i)?i:new Us(e,t,l)}class Xs{constructor(t,l,i,o){this._setter=l,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new _o(t,()=>{this._dirty||(this._dirty=!0,Ia(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=i}get value(){const t=ke(this);return Aa(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function qs(e,t,l=!1){let i,o;const n=ae(e);return n?(i=e,o=rt):(i=e.get,o=e.set),new Xs(i,o,n||!o,l)}function wt(e,t,l,i){let o;try{o=i?e(...i):e()}catch(n){Nl(n,t,l)}return o}function lt(e,t,l,i){if(ae(e)){const n=wt(e,t,l,i);return n&&pa(n)&&n.catch(a=>{Nl(a,t,l)}),n}const o=[];for(let n=0;n>>1;zl(qe[i])ft&&qe.splice(t,1)}function Ma(e,t,l,i){te(e)?l.push(...e):(!t||!t.includes(e,e.allowRecurse?i+1:i))&&l.push(e),Da()}function Js(e){Ma(e,El,Rl,il)}function Zs(e){Ma(e,Pt,Pl,ol)}function Ci(e,t=null){if(Rl.length){for(Ji=t,El=[...new Set(Rl)],Rl.length=0,il=0;ilzl(l)-zl(i)),ol=0;ole.id==null?1/0:e.id;function Ha(e){Qi=!1,ai=!0,Ci(e),qe.sort((l,i)=>zl(l)-zl(i));const t=rt;try{for(ft=0;ftg.trim())),p&&(o=l.map(ga))}let r,s=i[r=Oi(t)]||i[r=Oi(ut(t))];!s&&n&&(s=i[r=Oi(Jt(t))]),s&<(s,e,6,o);const c=i[r+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,lt(c,e,6,o)}}function Sa(e,t,l=!1){const i=t.emitsCache,o=i.get(e);if(o!==void 0)return o;const n=e.emits;let a={},r=!1;if(!ae(e)){const s=c=>{const h=Sa(c,t,!0);h&&(r=!0,Se(a,h))};!l&&t.mixins.length&&t.mixins.forEach(s),e.extends&&s(e.extends),e.mixins&&e.mixins.forEach(s)}return!n&&!r?(i.set(e,null),null):(te(n)?n.forEach(s=>a[s]=null):Se(a,n),i.set(e,a),a)}function Ri(e,t){return!e||!Vl(t)?!1:(t=t.slice(2).replace(/Once$/,""),de(e,t[0].toLowerCase()+t.slice(1))||de(e,Jt(t))||de(e,t))}let Ve=null,Va=null;function si(e){const t=Ve;return Ve=e,Va=e&&e.type.__scopeId||null,t}function He(e,t=Ve,l){if(!t||e._n)return e;const i=(...o)=>{i._d&&pn(-1);const n=si(t),a=e(...o);return si(n),i._d&&pn(1),a};return i._n=!0,i._c=!0,i._d=!0,i}function zi(e){const{type:t,vnode:l,proxy:i,withProxy:o,props:n,propsOptions:[a],slots:r,attrs:s,emit:c,render:h,renderCache:p,data:m,setupState:g,ctx:x,inheritAttrs:P}=e;let E,k;const _=si(e);try{if(l.shapeFlag&4){const H=o||i;E=ot(h.call(H,H,p,n,g,m,x)),k=s}else{const H=t;E=ot(H.length>1?H(n,{attrs:s,slots:r,emit:c}):H(n,null)),k=t.props?s:tc(s)}}catch(H){Tl.length=0,Nl(H,e,1),E=oe(Ge)}let L=E;if(k&&P!==!1){const H=Object.keys(k),{shapeFlag:U}=L;H.length&&U&7&&(a&&H.some(fo)&&(k=lc(k,a)),L=Dt(L,k))}return l.dirs&&(L=Dt(L),L.dirs=L.dirs?L.dirs.concat(l.dirs):l.dirs),l.transition&&(L.transition=l.transition),E=L,si(_),E}const tc=e=>{let t;for(const l in e)(l==="class"||l==="style"||Vl(l))&&((t||(t={}))[l]=e[l]);return t},lc=(e,t)=>{const l={};for(const i in e)(!fo(i)||!(i.slice(9)in t))&&(l[i]=e[i]);return l};function ic(e,t,l){const{props:i,children:o,component:n}=e,{props:a,children:r,patchFlag:s}=t,c=n.emitsOptions;if(t.dirs||t.transition)return!0;if(l&&s>=0){if(s&1024)return!0;if(s&16)return i?ln(i,a,c):!!a;if(s&8){const h=t.dynamicProps;for(let p=0;pe.__isSuspense;function Na(e,t){t&&t.pendingBranch?te(e)?t.effects.push(...e):t.effects.push(e):Zs(e)}function Gt(e,t){if(Fe){let l=Fe.provides;const i=Fe.parent&&Fe.parent.provides;i===l&&(l=Fe.provides=Object.create(i)),l[e]=t}}function Me(e,t,l=!1){const i=Fe||Ve;if(i){const o=i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return l&&ae(t)?t.call(i.proxy):t}}const on={};function dt(e,t,l){return ja(e,t,l)}function ja(e,t,{immediate:l,deep:i,flush:o,onTrack:n,onTrigger:a}=Ce){const r=Fe;let s,c=!1,h=!1;if(De(e)?(s=()=>e.value,c=Gi(e)):sl(e)?(s=()=>e,i=!0):te(e)?(h=!0,c=e.some(k=>sl(k)||Gi(k)),s=()=>e.map(k=>{if(De(k))return k.value;if(sl(k))return qt(k);if(ae(k))return wt(k,r,2)})):ae(e)?t?s=()=>wt(e,r,2):s=()=>{if(!(r&&r.isUnmounted))return p&&p(),lt(e,r,3,[m])}:s=rt,t&&i){const k=s;s=()=>qt(k())}let p,m=k=>{p=E.onStop=()=>{wt(k,r,4)}};if(dl)return m=rt,t?l&<(t,r,3,[s(),h?[]:void 0,m]):s(),rt;let g=h?[]:on;const x=()=>{if(!!E.active)if(t){const k=E.run();(i||c||(h?k.some((_,L)=>wl(_,g[L])):wl(k,g)))&&(p&&p(),lt(t,r,3,[k,g===on?void 0:g,m]),g=k)}else E.run()};x.allowRecurse=!!t;let P;o==="sync"?P=x:o==="post"?P=()=>Be(x,r&&r.suspense):P=()=>Js(x);const E=new _o(s,P);return t?l?x():g=E.run():o==="post"?Be(E.run.bind(E),r&&r.suspense):E.run(),()=>{E.stop(),r&&r.scope&&go(r.scope.effects,E)}}function ac(e,t,l){const i=this.proxy,o=be(e)?e.includes(".")?$a(i,e):()=>i[e]:e.bind(i,i);let n;ae(t)?n=t:(n=t.handler,l=t);const a=Fe;hl(this);const r=ja(o,n.bind(i),l);return a?hl(a):Qt(),r}function $a(e,t){const l=t.split(".");return()=>{let i=e;for(let o=0;o{qt(l,t)});else if(fa(e))for(const l in e)qt(e[l],t);return e}function rc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Je(()=>{e.isMounted=!0}),Yl(()=>{e.isUnmounting=!0}),e}const et=[Function,Array],sc={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:et,onEnter:et,onAfterEnter:et,onEnterCancelled:et,onBeforeLeave:et,onLeave:et,onAfterLeave:et,onLeaveCancelled:et,onBeforeAppear:et,onAppear:et,onAfterAppear:et,onAppearCancelled:et},setup(e,{slots:t}){const l=wo(),i=rc();let o;return()=>{const n=t.default&&Ua(t.default(),!0);if(!n||!n.length)return;let a=n[0];if(n.length>1){for(const P of n)if(P.type!==Ge){a=P;break}}const r=ke(e),{mode:s}=r;if(i.isLeaving)return Di(a);const c=nn(a);if(!c)return Di(a);const h=Zi(c,r,i,l);eo(c,h);const p=l.subTree,m=p&&nn(p);let g=!1;const{getTransitionKey:x}=c.type;if(x){const P=x();o===void 0?o=P:P!==o&&(o=P,g=!0)}if(m&&m.type!==Ge&&(!Wt(c,m)||g)){const P=Zi(m,r,i,l);if(eo(m,P),s==="out-in")return i.isLeaving=!0,P.afterLeave=()=>{i.isLeaving=!1,l.update()},Di(a);s==="in-out"&&c.type!==Ge&&(P.delayLeave=(E,k,_)=>{const L=Ba(i,m);L[String(m.key)]=m,E._leaveCb=()=>{k(),E._leaveCb=void 0,delete h.delayedLeave},h.delayedLeave=_})}return a}}},Ya=sc;function Ba(e,t){const{leavingVNodes:l}=e;let i=l.get(t.type);return i||(i=Object.create(null),l.set(t.type,i)),i}function Zi(e,t,l,i){const{appear:o,mode:n,persisted:a=!1,onBeforeEnter:r,onEnter:s,onAfterEnter:c,onEnterCancelled:h,onBeforeLeave:p,onLeave:m,onAfterLeave:g,onLeaveCancelled:x,onBeforeAppear:P,onAppear:E,onAfterAppear:k,onAppearCancelled:_}=t,L=String(e.key),H=Ba(l,e),U=(v,q)=>{v&<(v,i,9,q)},ee=(v,q)=>{const B=q[1];U(v,q),te(v)?v.every(G=>G.length<=1)&&B():v.length<=1&&B()},w={mode:n,persisted:a,beforeEnter(v){let q=r;if(!l.isMounted)if(o)q=P||r;else return;v._leaveCb&&v._leaveCb(!0);const B=H[L];B&&Wt(e,B)&&B.el._leaveCb&&B.el._leaveCb(),U(q,[v])},enter(v){let q=s,B=c,G=h;if(!l.isMounted)if(o)q=E||s,B=k||c,G=_||h;else return;let C=!1;const S=v._enterCb=F=>{C||(C=!0,F?U(G,[v]):U(B,[v]),w.delayedLeave&&w.delayedLeave(),v._enterCb=void 0)};q?ee(q,[v,S]):S()},leave(v,q){const B=String(e.key);if(v._enterCb&&v._enterCb(!0),l.isUnmounting)return q();U(p,[v]);let G=!1;const C=v._leaveCb=S=>{G||(G=!0,q(),S?U(x,[v]):U(g,[v]),v._leaveCb=void 0,H[B]===e&&delete H[B])};H[B]=e,m?ee(m,[v,C]):C()},clone(v){return Zi(v,t,l,i)}};return w}function Di(e){if($l(e))return e=Dt(e),e.children=null,e}function nn(e){return $l(e)?e.children?e.children[0]:void 0:e}function eo(e,t){e.shapeFlag&6&&e.component?eo(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ua(e,t=!1,l){let i=[],o=0;for(let n=0;n1)for(let n=0;n!!e.type.__asyncLoader;function b(e){ae(e)&&(e={loader:e});const{loader:t,loadingComponent:l,errorComponent:i,delay:o=200,timeout:n,suspensible:a=!0,onError:r}=e;let s=null,c,h=0;const p=()=>(h++,s=null,m()),m=()=>{let g;return s||(g=s=t().catch(x=>{if(x=x instanceof Error?x:new Error(String(x)),r)return new Promise((P,E)=>{r(x,()=>P(p()),()=>E(x),h+1)});throw x}).then(x=>g!==s&&s?s:(x&&(x.__esModule||x[Symbol.toStringTag]==="Module")&&(x=x.default),c=x,x)))};return ue({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return c},setup(){const g=Fe;if(c)return()=>Mi(c,g);const x=_=>{s=null,Nl(_,g,13,!i)};if(a&&g.suspense||dl)return m().then(_=>()=>Mi(_,g)).catch(_=>(x(_),()=>i?oe(i,{error:_}):null));const P=ye(!1),E=ye(),k=ye(!!o);return o&&setTimeout(()=>{k.value=!1},o),n!=null&&setTimeout(()=>{if(!P.value&&!E.value){const _=new Error(`Async component timed out after ${n}ms.`);x(_),E.value=_}},n),m().then(()=>{P.value=!0,g.parent&&$l(g.parent.vnode)&&To(g.parent.update)}).catch(_=>{x(_),E.value=_}),()=>{if(P.value&&c)return Mi(c,g);if(E.value&&i)return oe(i,{error:E.value});if(l&&!k.value)return oe(l)}}})}function Mi(e,{vnode:{ref:t,props:l,children:i,shapeFlag:o},parent:n}){const a=oe(e,l,i);return a.ref=t,a}const $l=e=>e.type.__isKeepAlive;function cc(e,t){Wa(e,"a",t)}function hc(e,t){Wa(e,"da",t)}function Wa(e,t,l=Fe){const i=e.__wdc||(e.__wdc=()=>{let o=l;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Pi(t,i,l),l){let o=l.parent;for(;o&&o.parent;)$l(o.parent.vnode)&&dc(i,t,l,o),o=o.parent}}function dc(e,t,l,i){const o=Pi(t,e,i,!0);Li(()=>{go(i[t],o)},l)}function Pi(e,t,l=Fe,i=!1){if(l){const o=l[e]||(l[e]=[]),n=t.__weh||(t.__weh=(...a)=>{if(l.isUnmounted)return;ml(),hl(l);const r=lt(t,l,e,a);return Qt(),fl(),r});return i?o.unshift(n):o.push(n),n}}const yt=e=>(t,l=Fe)=>(!dl||e==="sp")&&Pi(e,t,l),Xa=yt("bm"),Je=yt("m"),uc=yt("bu"),pc=yt("u"),Yl=yt("bum"),Li=yt("um"),mc=yt("sp"),fc=yt("rtg"),gc=yt("rtc");function kc(e,t=Fe){Pi("ec",e,t)}function ci(e,t){const l=Ve;if(l===null)return e;const i=Ai(l)||l.proxy,o=e.dirs||(e.dirs=[]);for(let n=0;nt(a,r,void 0,n&&n[r]));else{const a=Object.keys(e);o=new Array(a.length);for(let r=0,s=a.length;rpi(t)?!(t.type===Ge||t.type===Pe&&!Ka(t.children)):!0)?e:null}const to=e=>e?rr(e)?Ai(e)||e.proxy:to(e.parent):null,hi=Se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>to(e.parent),$root:e=>to(e.root),$emit:e=>e.emit,$options:e=>Qa(e),$forceUpdate:e=>e.f||(e.f=()=>To(e.update)),$nextTick:e=>e.n||(e.n=jl.bind(e.proxy)),$watch:e=>ac.bind(e)}),_c={get({_:e},t){const{ctx:l,setupState:i,data:o,props:n,accessCache:a,type:r,appContext:s}=e;let c;if(t[0]!=="$"){const g=a[t];if(g!==void 0)switch(g){case 1:return i[t];case 2:return o[t];case 4:return l[t];case 3:return n[t]}else{if(i!==Ce&&de(i,t))return a[t]=1,i[t];if(o!==Ce&&de(o,t))return a[t]=2,o[t];if((c=e.propsOptions[0])&&de(c,t))return a[t]=3,n[t];if(l!==Ce&&de(l,t))return a[t]=4,l[t];lo&&(a[t]=0)}}const h=hi[t];let p,m;if(h)return t==="$attrs"&&Qe(e,"get",t),h(e);if((p=r.__cssModules)&&(p=p[t]))return p;if(l!==Ce&&de(l,t))return a[t]=4,l[t];if(m=s.config.globalProperties,de(m,t))return m[t]},set({_:e},t,l){const{data:i,setupState:o,ctx:n}=e;return o!==Ce&&de(o,t)?(o[t]=l,!0):i!==Ce&&de(i,t)?(i[t]=l,!0):de(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(n[t]=l,!0)},has({_:{data:e,setupState:t,accessCache:l,ctx:i,appContext:o,propsOptions:n}},a){let r;return!!l[a]||e!==Ce&&de(e,a)||t!==Ce&&de(t,a)||(r=n[0])&&de(r,a)||de(i,a)||de(hi,a)||de(o.config.globalProperties,a)},defineProperty(e,t,l){return l.get!=null?e._.accessCache[t]=0:de(l,"value")&&this.set(e,t,l.value,null),Reflect.defineProperty(e,t,l)}};let lo=!0;function yc(e){const t=Qa(e),l=e.proxy,i=e.ctx;lo=!1,t.beforeCreate&&rn(t.beforeCreate,e,"bc");const{data:o,computed:n,methods:a,watch:r,provide:s,inject:c,created:h,beforeMount:p,mounted:m,beforeUpdate:g,updated:x,activated:P,deactivated:E,beforeDestroy:k,beforeUnmount:_,destroyed:L,unmounted:H,render:U,renderTracked:ee,renderTriggered:w,errorCaptured:v,serverPrefetch:q,expose:B,inheritAttrs:G,components:C,directives:S,filters:F}=t;if(c&&xc(c,i,null,e.appContext.config.unwrapInjectedRef),a)for(const le in a){const se=a[le];ae(se)&&(i[le]=se.bind(l))}if(o){const le=o.call(l,l);Oe(le)&&(e.data=gl(le))}if(lo=!0,n)for(const le in n){const se=n[le],Ie=ae(se)?se.bind(l,l):ae(se.get)?se.get.bind(l,l):rt,Ne=!ae(se)&&ae(se.set)?se.set.bind(l):rt,Ue=Y({get:Ie,set:Ne});Object.defineProperty(i,le,{enumerable:!0,configurable:!0,get:()=>Ue.value,set:Ze=>Ue.value=Ze})}if(r)for(const le in r)Ga(r[le],i,l,le);if(s){const le=ae(s)?s.call(l):s;Reflect.ownKeys(le).forEach(se=>{Gt(se,le[se])})}h&&rn(h,e,"c");function j(le,se){te(se)?se.forEach(Ie=>le(Ie.bind(l))):se&&le(se.bind(l))}if(j(Xa,p),j(Je,m),j(uc,g),j(pc,x),j(cc,P),j(hc,E),j(kc,v),j(gc,ee),j(fc,w),j(Yl,_),j(Li,H),j(mc,q),te(B))if(B.length){const le=e.exposed||(e.exposed={});B.forEach(se=>{Object.defineProperty(le,se,{get:()=>l[se],set:Ie=>l[se]=Ie})})}else e.exposed||(e.exposed={});U&&e.render===rt&&(e.render=U),G!=null&&(e.inheritAttrs=G),C&&(e.components=C),S&&(e.directives=S)}function xc(e,t,l=rt,i=!1){te(e)&&(e=io(e));for(const o in e){const n=e[o];let a;Oe(n)?"default"in n?a=Me(n.from||o,n.default,!0):a=Me(n.from||o):a=Me(n),De(a)&&i?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>a.value,set:r=>a.value=r}):t[o]=a}}function rn(e,t,l){lt(te(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,l)}function Ga(e,t,l,i){const o=i.includes(".")?$a(l,i):()=>l[i];if(be(e)){const n=t[e];ae(n)&&dt(o,n)}else if(ae(e))dt(o,e.bind(l));else if(Oe(e))if(te(e))e.forEach(n=>Ga(n,t,l,i));else{const n=ae(e.handler)?e.handler.bind(l):t[e.handler];ae(n)&&dt(o,n,e)}}function Qa(e){const t=e.type,{mixins:l,extends:i}=t,{mixins:o,optionsCache:n,config:{optionMergeStrategies:a}}=e.appContext,r=n.get(t);let s;return r?s=r:!o.length&&!l&&!i?s=t:(s={},o.length&&o.forEach(c=>di(s,c,a,!0)),di(s,t,a)),n.set(t,s),s}function di(e,t,l,i=!1){const{mixins:o,extends:n}=t;n&&di(e,n,l,!0),o&&o.forEach(a=>di(e,a,l,!0));for(const a in t)if(!(i&&a==="expose")){const r=Ec[a]||l&&l[a];e[a]=r?r(e[a],t[a]):t[a]}return e}const Ec={data:sn,props:Yt,emits:Yt,methods:Yt,computed:Yt,beforeCreate:je,created:je,beforeMount:je,mounted:je,beforeUpdate:je,updated:je,beforeDestroy:je,beforeUnmount:je,destroyed:je,unmounted:je,activated:je,deactivated:je,errorCaptured:je,serverPrefetch:je,components:Yt,directives:Yt,watch:Rc,provide:sn,inject:Cc};function sn(e,t){return t?e?function(){return Se(ae(e)?e.call(this,this):e,ae(t)?t.call(this,this):t)}:t:e}function Cc(e,t){return Yt(io(e),io(t))}function io(e){if(te(e)){const t={};for(let l=0;l0)&&!(a&16)){if(a&8){const h=e.vnode.dynamicProps;for(let p=0;p{s=!0;const[m,g]=Za(p,t,!0);Se(a,m),g&&r.push(...g)};!l&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!n&&!s)return i.set(e,al),al;if(te(n))for(let h=0;h-1,g[1]=P<0||x-1||de(g,"default"))&&r.push(p)}}}const c=[a,r];return i.set(e,c),c}function cn(e){return e[0]!=="$"}function hn(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function dn(e,t){return hn(e)===hn(t)}function un(e,t){return te(t)?t.findIndex(l=>dn(l,e)):ae(t)&&dn(t,e)?0:-1}const er=e=>e[0]==="_"||e==="$stable",Ao=e=>te(e)?e.map(ot):[ot(e)],Tc=(e,t,l)=>{if(t._n)return t;const i=He((...o)=>Ao(t(...o)),l);return i._c=!1,i},tr=(e,t,l)=>{const i=e._ctx;for(const o in e){if(er(o))continue;const n=e[o];if(ae(n))t[o]=Tc(o,n,i);else if(n!=null){const a=Ao(n);t[o]=()=>a}}},lr=(e,t)=>{const l=Ao(t);e.slots.default=()=>l},Ac=(e,t)=>{if(e.vnode.shapeFlag&32){const l=t._;l?(e.slots=ke(t),ni(t,"_",l)):tr(t,e.slots={})}else e.slots={},t&&lr(e,t);ni(e.slots,Ti,1)},Ic=(e,t,l)=>{const{vnode:i,slots:o}=e;let n=!0,a=Ce;if(i.shapeFlag&32){const r=t._;r?l&&r===1?n=!1:(Se(o,t),!l&&r===1&&delete o._):(n=!t.$stable,tr(t,o)),a=t}else t&&(lr(e,t),a={default:1});if(n)for(const r in o)!er(r)&&!(r in a)&&delete o[r]};function ir(){return{app:null,config:{isNativeTag:as,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let wc=0;function Oc(e,t){return function(i,o=null){ae(i)||(i=Object.assign({},i)),o!=null&&!Oe(o)&&(o=null);const n=ir(),a=new Set;let r=!1;const s=n.app={_uid:wc++,_component:i,_props:o,_container:null,_context:n,_instance:null,version:Qc,get config(){return n.config},set config(c){},use(c,...h){return a.has(c)||(c&&ae(c.install)?(a.add(c),c.install(s,...h)):ae(c)&&(a.add(c),c(s,...h))),s},mixin(c){return n.mixins.includes(c)||n.mixins.push(c),s},component(c,h){return h?(n.components[c]=h,s):n.components[c]},directive(c,h){return h?(n.directives[c]=h,s):n.directives[c]},mount(c,h,p){if(!r){const m=oe(i,o);return m.appContext=n,h&&t?t(m,c):e(m,c,p),r=!0,s._container=c,c.__vue_app__=s,Ai(m.component)||m.component.proxy}},unmount(){r&&(e(null,s._container),delete s._container.__vue_app__)},provide(c,h){return n.provides[c]=h,s}};return s}}function ui(e,t,l,i,o=!1){if(te(e)){e.forEach((m,g)=>ui(m,t&&(te(t)?t[g]:t),l,i,o));return}if(cl(i)&&!o)return;const n=i.shapeFlag&4?Ai(i.component)||i.component.proxy:i.el,a=o?null:n,{i:r,r:s}=e,c=t&&t.r,h=r.refs===Ce?r.refs={}:r.refs,p=r.setupState;if(c!=null&&c!==s&&(be(c)?(h[c]=null,de(p,c)&&(p[c]=null)):De(c)&&(c.value=null)),ae(s))wt(s,r,12,[a,h]);else{const m=be(s),g=De(s);if(m||g){const x=()=>{if(e.f){const P=m?h[s]:s.value;o?te(P)&&go(P,n):te(P)?P.includes(n)||P.push(n):m?(h[s]=[n],de(p,s)&&(p[s]=h[s])):(s.value=[n],e.k&&(h[e.k]=s.value))}else m?(h[s]=a,de(p,s)&&(p[s]=a)):g&&(s.value=a,e.k&&(h[e.k]=a))};a?(x.id=-1,Be(x,l)):x()}}}let Et=!1;const Jl=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Zl=e=>e.nodeType===8;function Fc(e){const{mt:t,p:l,o:{patchProp:i,createText:o,nextSibling:n,parentNode:a,remove:r,insert:s,createComment:c}}=e,h=(k,_)=>{if(!_.hasChildNodes()){l(null,k,_),ri(),_._vnode=k;return}Et=!1,p(_.firstChild,k,null,null,null),ri(),_._vnode=k,Et&&console.error("Hydration completed but contains mismatches.")},p=(k,_,L,H,U,ee=!1)=>{const w=Zl(k)&&k.data==="[",v=()=>P(k,_,L,H,U,w),{type:q,ref:B,shapeFlag:G,patchFlag:C}=_,S=k.nodeType;_.el=k,C===-2&&(ee=!1,_.dynamicChildren=null);let F=null;switch(q){case Dl:S!==3?_.children===""?(s(_.el=o(""),a(k),k),F=k):F=v():(k.data!==_.children&&(Et=!0,k.data=_.children),F=n(k));break;case Ge:S!==8||w?F=v():F=n(k);break;case Ll:if(S!==1&&S!==3)F=v();else{F=k;const re=!_.children.length;for(let j=0;j<_.staticCount;j++)re&&(_.children+=F.nodeType===1?F.outerHTML:F.data),j===_.staticCount-1&&(_.anchor=F),F=n(F);return F}break;case Pe:w?F=x(k,_,L,H,U,ee):F=v();break;default:if(G&1)S!==1||_.type.toLowerCase()!==k.tagName.toLowerCase()?F=v():F=m(k,_,L,H,U,ee);else if(G&6){_.slotScopeIds=U;const re=a(k);if(t(_,re,null,L,H,Jl(re),ee),F=w?E(k):n(k),F&&Zl(F)&&F.data==="teleport end"&&(F=n(F)),cl(_)){let j;w?(j=oe(Pe),j.anchor=F?F.previousSibling:re.lastChild):j=k.nodeType===3?Mt(""):oe("div"),j.el=k,_.component.subTree=j}}else G&64?S!==8?F=v():F=_.type.hydrate(k,_,L,H,U,ee,e,g):G&128&&(F=_.type.hydrate(k,_,L,H,Jl(a(k)),U,ee,e,p))}return B!=null&&ui(B,null,H,_),F},m=(k,_,L,H,U,ee)=>{ee=ee||!!_.dynamicChildren;const{type:w,props:v,patchFlag:q,shapeFlag:B,dirs:G}=_,C=w==="input"&&G||w==="option";if(C||q!==-1){if(G&&ht(_,null,L,"created"),v)if(C||!ee||q&48)for(const F in v)(C&&F.endsWith("value")||Vl(F)&&!Cl(F))&&i(k,F,null,v[F],!1,void 0,L);else v.onClick&&i(k,"onClick",null,v.onClick,!1,void 0,L);let S;if((S=v&&v.onVnodeBeforeMount)&&tt(S,L,_),G&&ht(_,null,L,"beforeMount"),((S=v&&v.onVnodeMounted)||G)&&Na(()=>{S&&tt(S,L,_),G&&ht(_,null,L,"mounted")},H),B&16&&!(v&&(v.innerHTML||v.textContent))){let F=g(k.firstChild,_,k,L,H,U,ee);for(;F;){Et=!0;const re=F;F=F.nextSibling,r(re)}}else B&8&&k.textContent!==_.children&&(Et=!0,k.textContent=_.children)}return k.nextSibling},g=(k,_,L,H,U,ee,w)=>{w=w||!!_.dynamicChildren;const v=_.children,q=v.length;for(let B=0;B{const{slotScopeIds:w}=_;w&&(U=U?U.concat(w):w);const v=a(k),q=g(n(k),_,v,L,H,U,ee);return q&&Zl(q)&&q.data==="]"?n(_.anchor=q):(Et=!0,s(_.anchor=c("]"),v,q),q)},P=(k,_,L,H,U,ee)=>{if(Et=!0,_.el=null,ee){const q=E(k);for(;;){const B=n(k);if(B&&B!==q)r(B);else break}}const w=n(k),v=a(k);return r(k),l(null,_,v,w,L,H,Jl(v),U),w},E=k=>{let _=0;for(;k;)if(k=n(k),k&&Zl(k)&&(k.data==="["&&_++,k.data==="]")){if(_===0)return n(k);_--}return k};return[h,p]}const Be=Na;function zc(e){return Dc(e,Fc)}function Dc(e,t){const l=us();l.__VUE__=!0;const{insert:i,remove:o,patchProp:n,createElement:a,createText:r,createComment:s,setText:c,setElementText:h,parentNode:p,nextSibling:m,setScopeId:g=rt,cloneNode:x,insertStaticContent:P}=e,E=(u,f,y,A=null,T=null,z=null,$=!1,D=null,V=!!f.dynamicChildren)=>{if(u===f)return;u&&!Wt(u,f)&&(A=X(u),Ye(u,T,z,!0),u=null),f.patchFlag===-2&&(V=!1,f.dynamicChildren=null);const{type:I,ref:Q,shapeFlag:K}=f;switch(I){case Dl:k(u,f,y,A);break;case Ge:_(u,f,y,A);break;case Ll:u==null&&L(f,y,A,$);break;case Pe:S(u,f,y,A,T,z,$,D,V);break;default:K&1?ee(u,f,y,A,T,z,$,D,V):K&6?F(u,f,y,A,T,z,$,D,V):(K&64||K&128)&&I.process(u,f,y,A,T,z,$,D,V,_e)}Q!=null&&T&&ui(Q,u&&u.ref,z,f||u,!f)},k=(u,f,y,A)=>{if(u==null)i(f.el=r(f.children),y,A);else{const T=f.el=u.el;f.children!==u.children&&c(T,f.children)}},_=(u,f,y,A)=>{u==null?i(f.el=s(f.children||""),y,A):f.el=u.el},L=(u,f,y,A)=>{[u.el,u.anchor]=P(u.children,f,y,A,u.el,u.anchor)},H=({el:u,anchor:f},y,A)=>{let T;for(;u&&u!==f;)T=m(u),i(u,y,A),u=T;i(f,y,A)},U=({el:u,anchor:f})=>{let y;for(;u&&u!==f;)y=m(u),o(u),u=y;o(f)},ee=(u,f,y,A,T,z,$,D,V)=>{$=$||f.type==="svg",u==null?w(f,y,A,T,z,$,D,V):B(u,f,T,z,$,D,V)},w=(u,f,y,A,T,z,$,D)=>{let V,I;const{type:Q,props:K,shapeFlag:J,transition:ne,patchFlag:pe,dirs:xe}=u;if(u.el&&x!==void 0&&pe===-1)V=u.el=x(u.el);else{if(V=u.el=a(u.type,z,K&&K.is,K),J&8?h(V,u.children):J&16&&q(u.children,V,null,A,T,z&&Q!=="foreignObject",$,D),xe&&ht(u,null,A,"created"),K){for(const Le in K)Le!=="value"&&!Cl(Le)&&n(V,Le,null,K[Le],z,u.children,A,T,M);"value"in K&&n(V,"value",null,K.value),(I=K.onVnodeBeforeMount)&&tt(I,A,u)}v(V,u,u.scopeId,$,A)}xe&&ht(u,null,A,"beforeMount");const Ee=(!T||T&&!T.pendingBranch)&&ne&&!ne.persisted;Ee&&ne.beforeEnter(V),i(V,f,y),((I=K&&K.onVnodeMounted)||Ee||xe)&&Be(()=>{I&&tt(I,A,u),Ee&&ne.enter(V),xe&&ht(u,null,A,"mounted")},T)},v=(u,f,y,A,T)=>{if(y&&g(u,y),A)for(let z=0;z{for(let I=V;I{const D=f.el=u.el;let{patchFlag:V,dynamicChildren:I,dirs:Q}=f;V|=u.patchFlag&16;const K=u.props||Ce,J=f.props||Ce;let ne;y&&Nt(y,!1),(ne=J.onVnodeBeforeUpdate)&&tt(ne,y,f,u),Q&&ht(f,u,y,"beforeUpdate"),y&&Nt(y,!0);const pe=T&&f.type!=="foreignObject";if(I?G(u.dynamicChildren,I,D,y,A,pe,z):$||Ie(u,f,D,null,y,A,pe,z,!1),V>0){if(V&16)C(D,f,K,J,y,A,T);else if(V&2&&K.class!==J.class&&n(D,"class",null,J.class,T),V&4&&n(D,"style",K.style,J.style,T),V&8){const xe=f.dynamicProps;for(let Ee=0;Ee{ne&&tt(ne,y,f,u),Q&&ht(f,u,y,"updated")},A)},G=(u,f,y,A,T,z,$)=>{for(let D=0;D{if(y!==A){for(const D in A){if(Cl(D))continue;const V=A[D],I=y[D];V!==I&&D!=="value"&&n(u,D,I,V,$,f.children,T,z,M)}if(y!==Ce)for(const D in y)!Cl(D)&&!(D in A)&&n(u,D,y[D],null,$,f.children,T,z,M);"value"in A&&n(u,"value",y.value,A.value)}},S=(u,f,y,A,T,z,$,D,V)=>{const I=f.el=u?u.el:r(""),Q=f.anchor=u?u.anchor:r("");let{patchFlag:K,dynamicChildren:J,slotScopeIds:ne}=f;ne&&(D=D?D.concat(ne):ne),u==null?(i(I,y,A),i(Q,y,A),q(f.children,y,Q,T,z,$,D,V)):K>0&&K&64&&J&&u.dynamicChildren?(G(u.dynamicChildren,J,y,T,z,$,D),(f.key!=null||T&&f===T.subTree)&&or(u,f,!0)):Ie(u,f,y,Q,T,z,$,D,V)},F=(u,f,y,A,T,z,$,D,V)=>{f.slotScopeIds=D,u==null?f.shapeFlag&512?T.ctx.activate(f,y,A,$,V):re(f,y,A,T,z,$,V):j(u,f,V)},re=(u,f,y,A,T,z,$)=>{const D=u.component=Bc(u,A,T);if($l(u)&&(D.ctx.renderer=_e),Uc(D),D.asyncDep){if(T&&T.registerDep(D,le),!u.el){const V=D.subTree=oe(Ge);_(null,V,f,y)}return}le(D,u,f,y,T,z,$)},j=(u,f,y)=>{const A=f.component=u.component;if(ic(u,f,y))if(A.asyncDep&&!A.asyncResolved){se(A,f,y);return}else A.next=f,Qs(A.update),A.update();else f.el=u.el,A.vnode=f},le=(u,f,y,A,T,z,$)=>{const D=()=>{if(u.isMounted){let{next:Q,bu:K,u:J,parent:ne,vnode:pe}=u,xe=Q,Ee;Nt(u,!1),Q?(Q.el=pe.el,se(u,Q,$)):Q=pe,K&&Fi(K),(Ee=Q.props&&Q.props.onVnodeBeforeUpdate)&&tt(Ee,ne,Q,pe),Nt(u,!0);const Le=zi(u),it=u.subTree;u.subTree=Le,E(it,Le,p(it.el),X(it),u,T,z),Q.el=Le.el,xe===null&&oc(u,Le.el),J&&Be(J,T),(Ee=Q.props&&Q.props.onVnodeUpdated)&&Be(()=>tt(Ee,ne,Q,pe),T)}else{let Q;const{el:K,props:J}=f,{bm:ne,m:pe,parent:xe}=u,Ee=cl(f);if(Nt(u,!1),ne&&Fi(ne),!Ee&&(Q=J&&J.onVnodeBeforeMount)&&tt(Q,xe,f),Nt(u,!0),K&&ie){const Le=()=>{u.subTree=zi(u),ie(K,u.subTree,u,T,null)};Ee?f.type.__asyncLoader().then(()=>!u.isUnmounted&&Le()):Le()}else{const Le=u.subTree=zi(u);E(null,Le,y,A,u,T,z),f.el=Le.el}if(pe&&Be(pe,T),!Ee&&(Q=J&&J.onVnodeMounted)){const Le=f;Be(()=>tt(Q,xe,Le),T)}(f.shapeFlag&256||xe&&cl(xe.vnode)&&xe.vnode.shapeFlag&256)&&u.a&&Be(u.a,T),u.isMounted=!0,f=y=A=null}},V=u.effect=new _o(D,()=>To(I),u.scope),I=u.update=()=>V.run();I.id=u.uid,Nt(u,!0),I()},se=(u,f,y)=>{f.component=u;const A=u.vnode.props;u.vnode=f,u.next=null,Lc(u,f.props,A,y),Ic(u,f.children,y),ml(),Ci(void 0,u.update),fl()},Ie=(u,f,y,A,T,z,$,D,V=!1)=>{const I=u&&u.children,Q=u?u.shapeFlag:0,K=f.children,{patchFlag:J,shapeFlag:ne}=f;if(J>0){if(J&128){Ue(I,K,y,A,T,z,$,D,V);return}else if(J&256){Ne(I,K,y,A,T,z,$,D,V);return}}ne&8?(Q&16&&M(I,T,z),K!==I&&h(y,K)):Q&16?ne&16?Ue(I,K,y,A,T,z,$,D,V):M(I,T,z,!0):(Q&8&&h(y,""),ne&16&&q(K,y,A,T,z,$,D,V))},Ne=(u,f,y,A,T,z,$,D,V)=>{u=u||al,f=f||al;const I=u.length,Q=f.length,K=Math.min(I,Q);let J;for(J=0;JQ?M(u,T,z,!0,!1,K):q(f,y,A,T,z,$,D,V,K)},Ue=(u,f,y,A,T,z,$,D,V)=>{let I=0;const Q=f.length;let K=u.length-1,J=Q-1;for(;I<=K&&I<=J;){const ne=u[I],pe=f[I]=V?Lt(f[I]):ot(f[I]);if(Wt(ne,pe))E(ne,pe,y,null,T,z,$,D,V);else break;I++}for(;I<=K&&I<=J;){const ne=u[K],pe=f[J]=V?Lt(f[J]):ot(f[J]);if(Wt(ne,pe))E(ne,pe,y,null,T,z,$,D,V);else break;K--,J--}if(I>K){if(I<=J){const ne=J+1,pe=neJ)for(;I<=K;)Ye(u[I],T,z,!0),I++;else{const ne=I,pe=I,xe=new Map;for(I=pe;I<=J;I++){const We=f[I]=V?Lt(f[I]):ot(f[I]);We.key!=null&&xe.set(We.key,I)}let Ee,Le=0;const it=J-pe+1;let el=!1,Bo=0;const kl=new Array(it);for(I=0;I=it){Ye(We,T,z,!0);continue}let ct;if(We.key!=null)ct=xe.get(We.key);else for(Ee=pe;Ee<=J;Ee++)if(kl[Ee-pe]===0&&Wt(We,f[Ee])){ct=Ee;break}ct===void 0?Ye(We,T,z,!0):(kl[ct-pe]=I+1,ct>=Bo?Bo=ct:el=!0,E(We,f[ct],y,null,T,z,$,D,V),Le++)}const Uo=el?Mc(kl):al;for(Ee=Uo.length-1,I=it-1;I>=0;I--){const We=pe+I,ct=f[We],Wo=We+1{const{el:z,type:$,transition:D,children:V,shapeFlag:I}=u;if(I&6){Ze(u.component.subTree,f,y,A);return}if(I&128){u.suspense.move(f,y,A);return}if(I&64){$.move(u,f,y,_e);return}if($===Pe){i(z,f,y);for(let K=0;KD.enter(z),T);else{const{leave:K,delayLeave:J,afterLeave:ne}=D,pe=()=>i(z,f,y),xe=()=>{K(z,()=>{pe(),ne&&ne()})};J?J(z,pe,xe):xe()}else i(z,f,y)},Ye=(u,f,y,A=!1,T=!1)=>{const{type:z,props:$,ref:D,children:V,dynamicChildren:I,shapeFlag:Q,patchFlag:K,dirs:J}=u;if(D!=null&&ui(D,null,y,u,!0),Q&256){f.ctx.deactivate(u);return}const ne=Q&1&&J,pe=!cl(u);let xe;if(pe&&(xe=$&&$.onVnodeBeforeUnmount)&&tt(xe,f,u),Q&6)W(u.component,y,A);else{if(Q&128){u.suspense.unmount(y,A);return}ne&&ht(u,null,f,"beforeUnmount"),Q&64?u.type.remove(u,f,y,T,_e,A):I&&(z!==Pe||K>0&&K&64)?M(I,f,y,!1,!0):(z===Pe&&K&384||!T&&Q&16)&&M(V,f,y),A&&Vt(u)}(pe&&(xe=$&&$.onVnodeUnmounted)||ne)&&Be(()=>{xe&&tt(xe,f,u),ne&&ht(u,null,f,"unmounted")},y)},Vt=u=>{const{type:f,el:y,anchor:A,transition:T}=u;if(f===Pe){R(y,A);return}if(f===Ll){U(u);return}const z=()=>{o(y),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(u.shapeFlag&1&&T&&!T.persisted){const{leave:$,delayLeave:D}=T,V=()=>$(y,z);D?D(u.el,z,V):V()}else z()},R=(u,f)=>{let y;for(;u!==f;)y=m(u),o(u),u=y;o(f)},W=(u,f,y)=>{const{bum:A,scope:T,update:z,subTree:$,um:D}=u;A&&Fi(A),T.stop(),z&&(z.active=!1,Ye($,u,f,y)),D&&Be(D,f),Be(()=>{u.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},M=(u,f,y,A=!1,T=!1,z=0)=>{for(let $=z;$u.shapeFlag&6?X(u.component.subTree):u.shapeFlag&128?u.suspense.next():m(u.anchor||u.el),ge=(u,f,y)=>{u==null?f._vnode&&Ye(f._vnode,null,null,!0):E(f._vnode||null,u,f,null,null,null,y),ri(),f._vnode=u},_e={p:E,um:Ye,m:Ze,r:Vt,mt:re,mc:q,pc:Ie,pbc:G,n:X,o:e};let ce,ie;return t&&([ce,ie]=t(_e)),{render:ge,hydrate:ce,createApp:Oc(ge,ce)}}function Nt({effect:e,update:t},l){e.allowRecurse=t.allowRecurse=l}function or(e,t,l=!1){const i=e.children,o=t.children;if(te(i)&&te(o))for(let n=0;n>1,e[l[r]]0&&(t[i]=l[n-1]),l[n]=i)}}for(n=l.length,a=l[n-1];n-- >0;)l[n]=a,a=t[a];return l}const Hc=e=>e.__isTeleport,Pe=Symbol(void 0),Dl=Symbol(void 0),Ge=Symbol(void 0),Ll=Symbol(void 0),Tl=[];let at=null;function N(e=!1){Tl.push(at=e?null:[])}function Sc(){Tl.pop(),at=Tl[Tl.length-1]||null}let Ml=1;function pn(e){Ml+=e}function nr(e){return e.dynamicChildren=Ml>0?at||al:null,Sc(),Ml>0&&at&&at.push(e),e}function Z(e,t,l,i,o,n){return nr(fe(e,t,l,i,o,n,!0))}function we(e,t,l,i,o){return nr(oe(e,t,l,i,o,!0))}function pi(e){return e?e.__v_isVNode===!0:!1}function Wt(e,t){return e.type===t.type&&e.key===t.key}const Ti="__vInternal",ar=({key:e})=>e!=null?e:null,li=({ref:e,ref_key:t,ref_for:l})=>e!=null?be(e)||De(e)||ae(e)?{i:Ve,r:e,k:t,f:!!l}:e:null;function fe(e,t=null,l=null,i=0,o=null,n=e===Pe?0:1,a=!1,r=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ar(t),ref:t&&li(t),scopeId:Va,slotScopeIds:null,children:l,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:n,patchFlag:i,dynamicProps:o,dynamicChildren:null,appContext:null};return r?(Io(s,l),n&128&&e.normalize(s)):l&&(s.shapeFlag|=be(l)?8:16),Ml>0&&!a&&at&&(s.patchFlag>0||n&6)&&s.patchFlag!==32&&at.push(s),s}const oe=Vc;function Vc(e,t=null,l=null,i=0,o=null,n=!1){if((!e||e===vc)&&(e=Ge),pi(e)){const r=Dt(e,t,!0);return l&&Io(r,l),Ml>0&&!n&&at&&(r.shapeFlag&6?at[at.indexOf(e)]=r:at.push(r)),r.patchFlag|=-2,r}if(Gc(e)&&(e=e.__vccOpts),t){t=Nc(t);let{class:r,style:s}=t;r&&!be(r)&&(t.class=Ke(r)),Oe(s)&&(La(s)&&!te(s)&&(s=Se({},s)),t.style=Sl(s))}const a=be(e)?1:nc(e)?128:Hc(e)?64:Oe(e)?4:ae(e)?2:0;return fe(e,t,l,i,o,a,n,!0)}function Nc(e){return e?La(e)||Ti in e?Se({},e):e:null}function Dt(e,t,l=!1){const{props:i,ref:o,patchFlag:n,children:a}=e,r=t?no(i||{},t):i;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:r,key:r&&ar(r),ref:t&&t.ref?l&&o?te(o)?o.concat(li(t)):[o,li(t)]:li(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Pe?n===-1?16:n|16:n,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Dt(e.ssContent),ssFallback:e.ssFallback&&Dt(e.ssFallback),el:e.el,anchor:e.anchor}}function Mt(e=" ",t=0){return oe(Dl,null,e,t)}function jc(e,t){const l=oe(Ll,null,e);return l.staticCount=t,l}function Ae(e="",t=!1){return t?(N(),we(Ge,null,e)):oe(Ge,null,e)}function ot(e){return e==null||typeof e=="boolean"?oe(Ge):te(e)?oe(Pe,null,e.slice()):typeof e=="object"?Lt(e):oe(Dl,null,String(e))}function Lt(e){return e.el===null||e.memo?e:Dt(e)}function Io(e,t){let l=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(te(t))l=16;else if(typeof t=="object")if(i&65){const o=t.default;o&&(o._c&&(o._d=!1),Io(e,o()),o._c&&(o._d=!0));return}else{l=32;const o=t._;!o&&!(Ti in t)?t._ctx=Ve:o===3&&Ve&&(Ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:Ve},l=32):(t=String(t),i&64?(l=16,t=[Mt(t)]):l=8);e.children=t,e.shapeFlag|=l}function no(...e){const t={};for(let l=0;lFe||Ve,hl=e=>{Fe=e,e.scope.on()},Qt=()=>{Fe&&Fe.scope.off(),Fe=null};function rr(e){return e.vnode.shapeFlag&4}let dl=!1;function Uc(e,t=!1){dl=t;const{props:l,children:i}=e.vnode,o=rr(e);Pc(e,l,o,t),Ac(e,i);const n=o?Wc(e,t):void 0;return dl=!1,n}function Wc(e,t){const l=e.type;e.accessCache=Object.create(null),e.proxy=Ta(new Proxy(e.ctx,_c));const{setup:i}=l;if(i){const o=e.setupContext=i.length>1?qc(e):null;hl(e),ml();const n=wt(i,e,0,[e.props,o]);if(fl(),Qt(),pa(n)){if(n.then(Qt,Qt),t)return n.then(a=>{mn(e,a,t)}).catch(a=>{Nl(a,e,0)});e.asyncDep=n}else mn(e,n,t)}else sr(e,t)}function mn(e,t,l){ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Oe(t)&&(e.setupState=Fa(t)),sr(e,l)}let fn;function sr(e,t,l){const i=e.type;if(!e.render){if(!t&&fn&&!i.render){const o=i.template;if(o){const{isCustomElement:n,compilerOptions:a}=e.appContext.config,{delimiters:r,compilerOptions:s}=i,c=Se(Se({isCustomElement:n,delimiters:r},a),s);i.render=fn(o,c)}}e.render=i.render||rt}hl(e),ml(),yc(e),fl(),Qt()}function Xc(e){return new Proxy(e.attrs,{get(t,l){return Qe(e,"get","$attrs"),t[l]}})}function qc(e){const t=i=>{e.exposed=i||{}};let l;return{get attrs(){return l||(l=Xc(e))},slots:e.slots,emit:e.emit,expose:t}}function Ai(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Fa(Ta(e.exposed)),{get(t,l){if(l in t)return t[l];if(l in hi)return hi[l](e)}}))}function Kc(e,t=!0){return ae(e)?e.displayName||e.name:e.name||t&&e.__name}function Gc(e){return ae(e)&&"__vccOpts"in e}const Y=(e,t)=>qs(e,t,dl);function he(e,t,l){const i=arguments.length;return i===2?Oe(t)&&!te(t)?pi(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(i>3?l=Array.prototype.slice.call(arguments,2):i===3&&pi(l)&&(l=[l]),oe(e,t,l))}const Qc="3.2.37",Jc="http://www.w3.org/2000/svg",Xt=typeof document<"u"?document:null,gn=Xt&&Xt.createElement("template"),Zc={insert:(e,t,l)=>{t.insertBefore(e,l||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,l,i)=>{const o=t?Xt.createElementNS(Jc,e):Xt.createElement(e,l?{is:l}:void 0);return e==="select"&&i&&i.multiple!=null&&o.setAttribute("multiple",i.multiple),o},createText:e=>Xt.createTextNode(e),createComment:e=>Xt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,l,i,o,n){const a=l?l.previousSibling:t.lastChild;if(o&&(o===n||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),l),!(o===n||!(o=o.nextSibling)););else{gn.innerHTML=i?`${e}`:e;const r=gn.content;if(i){const s=r.firstChild;for(;s.firstChild;)r.appendChild(s.firstChild);r.removeChild(s)}t.insertBefore(r,l)}return[a?a.nextSibling:t.firstChild,l?l.previousSibling:t.lastChild]}};function eh(e,t,l){const i=e._vtc;i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):l?e.setAttribute("class",t):e.className=t}function th(e,t,l){const i=e.style,o=be(l);if(l&&!o){for(const n in l)ao(i,n,l[n]);if(t&&!be(t))for(const n in t)l[n]==null&&ao(i,n,"")}else{const n=i.display;o?t!==l&&(i.cssText=l):t&&e.removeAttribute("style"),"_vod"in e&&(i.display=n)}}const kn=/\s*!important$/;function ao(e,t,l){if(te(l))l.forEach(i=>ao(e,t,i));else if(l==null&&(l=""),t.startsWith("--"))e.setProperty(t,l);else{const i=lh(e,t);kn.test(l)?e.setProperty(Jt(i),l.replace(kn,""),"important"):e[i]=l}}const vn=["Webkit","Moz","ms"],Hi={};function lh(e,t){const l=Hi[t];if(l)return l;let i=ut(t);if(i!=="filter"&&i in e)return Hi[t]=i;i=yi(i);for(let o=0;o{let e=Date.now,t=!1;if(typeof window<"u"){Date.now()>document.createEvent("Event").timeStamp&&(e=performance.now.bind(performance));const l=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(l&&Number(l[1])<=53)}return[e,t]})();let ro=0;const ah=Promise.resolve(),rh=()=>{ro=0},sh=()=>ro||(ah.then(rh),ro=cr());function ch(e,t,l,i){e.addEventListener(t,l,i)}function hh(e,t,l,i){e.removeEventListener(t,l,i)}function dh(e,t,l,i,o=null){const n=e._vei||(e._vei={}),a=n[t];if(i&&a)a.value=i;else{const[r,s]=uh(t);if(i){const c=n[t]=ph(i,o);ch(e,r,c,s)}else a&&(hh(e,r,a,s),n[t]=void 0)}}const _n=/(?:Once|Passive|Capture)$/;function uh(e){let t;if(_n.test(e)){t={};let l;for(;l=e.match(_n);)e=e.slice(0,e.length-l[0].length),t[l[0].toLowerCase()]=!0}return[Jt(e.slice(2)),t]}function ph(e,t){const l=i=>{const o=i.timeStamp||cr();(nh||o>=l.attached-1)&<(mh(i,l.value),t,5,[i])};return l.value=e,l.attached=sh(),l}function mh(e,t){if(te(t)){const l=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{l.call(e),e._stopped=!0},t.map(i=>o=>!o._stopped&&i&&i(o))}else return t}const yn=/^on[a-z]/,fh=(e,t,l,i,o=!1,n,a,r,s)=>{t==="class"?eh(e,i,o):t==="style"?th(e,l,i):Vl(t)?fo(t)||dh(e,t,l,i,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):gh(e,t,i,o))?oh(e,t,i,n,a,r,s):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),ih(e,t,i,o))};function gh(e,t,l,i){return i?!!(t==="innerHTML"||t==="textContent"||t in e&&yn.test(t)&&ae(l)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||yn.test(t)&&be(l)?!1:t in e}const Ct="transition",vl="animation",Bl=(e,{slots:t})=>he(Ya,kh(e),t);Bl.displayName="Transition";const hr={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Bl.props=Se({},Ya.props,hr);const jt=(e,t=[])=>{te(e)?e.forEach(l=>l(...t)):e&&e(...t)},xn=e=>e?te(e)?e.some(t=>t.length>1):e.length>1:!1;function kh(e){const t={};for(const C in e)C in hr||(t[C]=e[C]);if(e.css===!1)return t;const{name:l="v",type:i,duration:o,enterFromClass:n=`${l}-enter-from`,enterActiveClass:a=`${l}-enter-active`,enterToClass:r=`${l}-enter-to`,appearFromClass:s=n,appearActiveClass:c=a,appearToClass:h=r,leaveFromClass:p=`${l}-leave-from`,leaveActiveClass:m=`${l}-leave-active`,leaveToClass:g=`${l}-leave-to`}=e,x=vh(o),P=x&&x[0],E=x&&x[1],{onBeforeEnter:k,onEnter:_,onEnterCancelled:L,onLeave:H,onLeaveCancelled:U,onBeforeAppear:ee=k,onAppear:w=_,onAppearCancelled:v=L}=t,q=(C,S,F)=>{$t(C,S?h:r),$t(C,S?c:a),F&&F()},B=(C,S)=>{C._isLeaving=!1,$t(C,p),$t(C,g),$t(C,m),S&&S()},G=C=>(S,F)=>{const re=C?w:_,j=()=>q(S,C,F);jt(re,[S,j]),En(()=>{$t(S,C?s:n),Rt(S,C?h:r),xn(re)||Cn(S,i,P,j)})};return Se(t,{onBeforeEnter(C){jt(k,[C]),Rt(C,n),Rt(C,a)},onBeforeAppear(C){jt(ee,[C]),Rt(C,s),Rt(C,c)},onEnter:G(!1),onAppear:G(!0),onLeave(C,S){C._isLeaving=!0;const F=()=>B(C,S);Rt(C,p),yh(),Rt(C,m),En(()=>{!C._isLeaving||($t(C,p),Rt(C,g),xn(H)||Cn(C,i,E,F))}),jt(H,[C,F])},onEnterCancelled(C){q(C,!1),jt(L,[C])},onAppearCancelled(C){q(C,!0),jt(v,[C])},onLeaveCancelled(C){B(C),jt(U,[C])}})}function vh(e){if(e==null)return null;if(Oe(e))return[Si(e.enter),Si(e.leave)];{const t=Si(e);return[t,t]}}function Si(e){return ga(e)}function Rt(e,t){t.split(/\s+/).forEach(l=>l&&e.classList.add(l)),(e._vtc||(e._vtc=new Set)).add(t)}function $t(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const{_vtc:l}=e;l&&(l.delete(t),l.size||(e._vtc=void 0))}function En(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let bh=0;function Cn(e,t,l,i){const o=e._endId=++bh,n=()=>{o===e._endId&&i()};if(l)return setTimeout(n,l);const{type:a,timeout:r,propCount:s}=_h(e,t);if(!a)return i();const c=a+"end";let h=0;const p=()=>{e.removeEventListener(c,m),n()},m=g=>{g.target===e&&++h>=s&&p()};setTimeout(()=>{h(l[x]||"").split(", "),o=i(Ct+"Delay"),n=i(Ct+"Duration"),a=Rn(o,n),r=i(vl+"Delay"),s=i(vl+"Duration"),c=Rn(r,s);let h=null,p=0,m=0;t===Ct?a>0&&(h=Ct,p=a,m=n.length):t===vl?c>0&&(h=vl,p=c,m=s.length):(p=Math.max(a,c),h=p>0?a>c?Ct:vl:null,m=h?h===Ct?n.length:s.length:0);const g=h===Ct&&/\b(transform|all)(,|$)/.test(l[Ct+"Property"]);return{type:h,timeout:p,propCount:m,hasTransform:g}}function Rn(e,t){for(;e.lengthPn(l)+Pn(e[i])))}function Pn(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function yh(){return document.body.offsetHeight}const xh={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Eh=(e,t)=>l=>{if(!("key"in l))return;const i=Jt(l.key);if(t.some(o=>o===i||xh[o]===i))return e(l)},mi={beforeMount(e,{value:t},{transition:l}){e._vod=e.style.display==="none"?"":e.style.display,l&&t?l.beforeEnter(e):bl(e,t)},mounted(e,{value:t},{transition:l}){l&&t&&l.enter(e)},updated(e,{value:t,oldValue:l},{transition:i}){!t!=!l&&(i?t?(i.beforeEnter(e),bl(e,!0),i.enter(e)):i.leave(e,()=>{bl(e,!1)}):bl(e,t))},beforeUnmount(e,{value:t}){bl(e,t)}};function bl(e,t){e.style.display=t?e._vod:"none"}const Ch=Se({patchProp:fh},Zc);let Vi,Ln=!1;function Rh(){return Vi=Ln?Vi:zc(Ch),Ln=!0,Vi}const Ph=(...e)=>{const t=Rh().createApp(...e),{mount:l}=t;return t.mount=i=>{const o=Lh(i);if(o)return l(o,!0,o instanceof SVGElement)},t};function Lh(e){return be(e)?document.querySelector(e):e}const Th=JSON.parse('{"base":"/YukiHookAPI/","lang":"en-US","title":"Yuki Hook API","description":"An efficient Hook API and Xposed Module solution built in Kotlin","head":[["link",{"rel":"icon","href":"/YukiHookAPI/images/logo.png"}]],"locales":{"/en/":{"lang":"en-US","description":"An efficient Hook API and Xposed Module solution built in Kotlin"},"/zh-cn/":{"lang":"zh-CN","description":"\u4E00\u4E2A\u4F7F\u7528 Kotlin \u6784\u5EFA\u7684\u9AD8\u6548 Hook API \u4E0E Xposed \u6A21\u5757\u89E3\u51B3\u65B9\u6848"}}}');var Ah=([e,t,l])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,l]),Ih=e=>{const t=new Set,l=[];return e.forEach(i=>{const o=Ah(i);t.has(o)||(t.add(o),l.push(i))}),l},Ul=e=>/^(https?:)?\/\//.test(e),wh=e=>/^mailto:/.test(e),Oh=e=>/^tel:/.test(e),Oo=e=>Object.prototype.toString.call(e)==="[object Object]",dr=e=>e.replace(/\/$/,""),ur=e=>e.replace(/^\//,""),pr=(e,t)=>{const l=Object.keys(e).sort((i,o)=>{const n=o.split("/").length-i.split("/").length;return n!==0?n:o.length-i.length});for(const i of l)if(t.startsWith(i))return i;return"/"};const mr={"v-8daa1a0e":b(()=>d(()=>import("./index.html.b28f768e.js"),[])),"v-2d0a870d":b(()=>d(()=>import("./index.html.876b855e.js"),[])),"v-c0c85b84":b(()=>d(()=>import("./index.html.98418e92.js"),[])),"v-7a15fe3b":b(()=>d(()=>import("./about.html.db1283b4.js"),[])),"v-3f851d14":b(()=>d(()=>import("./changelog.html.65b4c0c8.js"),[])),"v-193cf592":b(()=>d(()=>import("./contacts.html.ef4a8f43.js"),[])),"v-ae7b83f2":b(()=>d(()=>import("./future.html.1f877ef8.js"),[])),"v-64fc7bb8":b(()=>d(()=>import("./home.html.93980587.js"),[])),"v-9cfea7fc":b(()=>d(()=>import("./api-example.html.f4618d70.js"),[])),"v-72c12b7d":b(()=>d(()=>import("./api-exception.html.726f5490.js"),[])),"v-793879e8":b(()=>d(()=>import("./api-using.html.1ee91ca3.js"),[])),"v-29d6c1ba":b(()=>d(()=>import("./r8-proguard.html.3571ac4f.js"),[])),"v-24e71de7":b(()=>d(()=>import("./xposed-using.html.870b08d5.js"),[])),"v-7b22efaf":b(()=>d(()=>import("./example.html.dd79c152.js"),[])),"v-efb45d4c":b(()=>d(()=>import("./home.html.e3bb4f6f.js"),[])),"v-277b35ca":b(()=>d(()=>import("./knowledge.html.78cc3cfd.js"),[])),"v-77d752a2":b(()=>d(()=>import("./move-to-new-api.html.1cc5d984.js"),[])),"v-72889797":b(()=>d(()=>import("./quick-start.html.ad87d8a5.js"),[])),"v-55c11626":b(()=>d(()=>import("./yukihookapi-projectbuilder.html.5e108278.js"),[])),"v-41967128":b(()=>d(()=>import("./about.html.e1477976.js"),[])),"v-0e6c3476":b(()=>d(()=>import("./changelog.html.f11f8f7b.js"),[])),"v-6cf86266":b(()=>d(()=>import("./contacts.html.c224665e.js"),[])),"v-3106ca14":b(()=>d(()=>import("./future.html.a7a84403.js"),[])),"v-c8deafb2":b(()=>d(()=>import("./home.html.e7e8e599.js"),[])),"v-c6114c9e":b(()=>d(()=>import("./api-example.html.84adfbe7.js"),[])),"v-5b43296c":b(()=>d(()=>import("./api-exception.html.1610230f.js"),[])),"v-2ee67152":b(()=>d(()=>import("./api-using.html.6f155b53.js"),[])),"v-154d6f69":b(()=>d(()=>import("./r8-proguard.html.95f35867.js"),[])),"v-af73b3d0":b(()=>d(()=>import("./xposed-using.html.033542e7.js"),[])),"v-13b430a0":b(()=>d(()=>import("./example.html.2694e111.js"),[])),"v-6a609e09":b(()=>d(()=>import("./home.html.39aa07e1.js"),[])),"v-b4f1a468":b(()=>d(()=>import("./knowledge.html.cdb6866f.js"),[])),"v-c0d5dada":b(()=>d(()=>import("./move-to-new-api.html.bf8feb91.js"),[])),"v-24840ff0":b(()=>d(()=>import("./quick-start.html.8cff3523.js"),[])),"v-a2fab4d6":b(()=>d(()=>import("./yukihookapi-projectbuilder.html.acc4ed20.js"),[])),"v-12042f1f":b(()=>d(()=>import("./host-inject.html.8e10055d.js"),[])),"v-deaff1d0":b(()=>d(()=>import("./host-lifecycle.html.a332af0c.js"),[])),"v-33c1dc26":b(()=>d(()=>import("./logger.html.4bf11e16.js"),[])),"v-581ddb9c":b(()=>d(()=>import("./reflection.html.dbf7b8bc.js"),[])),"v-2e6ad66c":b(()=>d(()=>import("./xposed-channel.html.35b256cc.js"),[])),"v-68bebbf4":b(()=>d(()=>import("./xposed-storage.html.afb25ac0.js"),[])),"v-6ac5be8e":b(()=>d(()=>import("./host-inject.html.8563253f.js"),[])),"v-357a8d49":b(()=>d(()=>import("./host-lifecycle.html.d2ba9262.js"),[])),"v-1f0f591e":b(()=>d(()=>import("./logger.html.19aa1841.js"),[])),"v-001858e3":b(()=>d(()=>import("./reflection.html.46f93c64.js"),[])),"v-598546c6":b(()=>d(()=>import("./xposed-channel.html.75bce788.js"),[])),"v-0d914225":b(()=>d(()=>import("./xposed-storage.html.8fd40506.js"),[])),"v-053599a5":b(()=>d(()=>import("./YukiHookAPI.html.17a7f725.js"),[])),"v-6931cb54":b(()=>d(()=>import("./YukiHookAPI.html.813302be.js"),[])),"v-818b3ca6":b(()=>d(()=>import("./InjectYukiHookWithXposed.html.d0a3ec72.js"),[])),"v-b6a815c4":b(()=>d(()=>import("./CurrentClass.html.afb1278c.js"),[])),"v-0183e3fc":b(()=>d(()=>import("./GenericClass.html.ffea293b.js"),[])),"v-57506200":b(()=>d(()=>import("./HookClass.html.3c57c428.js"),[])),"v-9af56c1a":b(()=>d(()=>import("./HookResources.html.a6c7f5fa.js"),[])),"v-032b1710":b(()=>d(()=>import("./VariousClass.html.bddd5327.js"),[])),"v-e288ce96":b(()=>d(()=>import("./YukiBaseHooker.html.553e75bb.js"),[])),"v-0d0fcec2":b(()=>d(()=>import("./ReflectionFactory.html.e30e708f.js"),[])),"v-65091354":b(()=>d(()=>import("./YukiHookFactory.html.c64fe89e.js"),[])),"v-71147891":b(()=>d(()=>import("./YukiMemberHookCreator.html.014c9526.js"),[])),"v-5ed1ceee":b(()=>d(()=>import("./YukiResourcesHookCreator.html.cd0732b7.js"),[])),"v-60cbe1b4":b(()=>d(()=>import("./HookParam.html.348e4551.js"),[])),"v-b381a126":b(()=>d(()=>import("./PackageParam.html.740f0247.js"),[])),"v-30f3ba1e":b(()=>d(()=>import("./InjectYukiHookWithXposed.html.719f3908.js"),[])),"v-6e47300f":b(()=>d(()=>import("./CurrentClass.html.d9a7c134.js"),[])),"v-69c1c226":b(()=>d(()=>import("./GenericClass.html.a98bd49c.js"),[])),"v-735374af":b(()=>d(()=>import("./HookClass.html.f84ce52c.js"),[])),"v-1c516d22":b(()=>d(()=>import("./HookResources.html.7f8f3edf.js"),[])),"v-66735bfe":b(()=>d(()=>import("./VariousClass.html.3928e7dd.js"),[])),"v-36aec5ad":b(()=>d(()=>import("./LoggerFactory.html.79463cd1.js"),[])),"v-3ac40680":b(()=>d(()=>import("./YukiMemberHookCreator.html.daa5257b.js"),[])),"v-5e81af42":b(()=>d(()=>import("./YukiResourcesHookCreator.html.a197e8f3.js"),[])),"v-516df326":b(()=>d(()=>import("./YukiBaseHooker.html.ba836f6d.js"),[])),"v-213d88b3":b(()=>d(()=>import("./ReflectionFactory.html.d25e33be.js"),[])),"v-448e9585":b(()=>d(()=>import("./YukiHookFactory.html.95b9873f.js"),[])),"v-004a009e":b(()=>d(()=>import("./LoggerFactory.html.b79c9fde.js"),[])),"v-75a9b636":b(()=>d(()=>import("./HookParam.html.1dc8c1c3.js"),[])),"v-100b529c":b(()=>d(()=>import("./PackageParam.html.68d751b6.js"),[])),"v-8293d958":b(()=>d(()=>import("./ComponentTypeFactory.html.c763fcd5.js"),[])),"v-7b0abf86":b(()=>d(()=>import("./GraphicsTypeFactory.html.e2899df0.js"),[])),"v-5309e4a0":b(()=>d(()=>import("./ViewTypeFactory.html.ffa51b1f.js"),[])),"v-a2615d0c":b(()=>d(()=>import("./DefinedTypeFactory.html.dd9e60d2.js"),[])),"v-ba01a600":b(()=>d(()=>import("./VariableTypeFactory.html.027efeb7.js"),[])),"v-7fec5836":b(()=>d(()=>import("./ModuleApplication.html.e1314ce4.js"),[])),"v-7414265a":b(()=>d(()=>import("./YukiHookDataChannel.html.86ac4080.js"),[])),"v-003862c2":b(()=>d(()=>import("./YukiHookModulePrefs.html.e6d40b5e.js"),[])),"v-1d680acc":b(()=>d(()=>import("./IYukiHookXposedInit.html.85343862.js"),[])),"v-5e874c45":b(()=>d(()=>import("./ComponentTypeFactory.html.ce8d84e9.js"),[])),"v-4ea62475":b(()=>d(()=>import("./GraphicsTypeFactory.html.521d2c84.js"),[])),"v-ef79cde2":b(()=>d(()=>import("./ViewTypeFactory.html.bc0d8a90.js"),[])),"v-5acc12ab":b(()=>d(()=>import("./DefinedTypeFactory.html.a54b20e5.js"),[])),"v-14ec8671":b(()=>d(()=>import("./VariableTypeFactory.html.0ea08bcb.js"),[])),"v-4709ad58":b(()=>d(()=>import("./ModuleApplication.html.2208a499.js"),[])),"v-632be8ee":b(()=>d(()=>import("./YukiHookDataChannel.html.ccd797df.js"),[])),"v-5858709e":b(()=>d(()=>import("./YukiHookModulePrefs.html.b6083fa5.js"),[])),"v-763140ee":b(()=>d(()=>import("./IYukiHookXposedInit.html.409cc7f4.js"),[])),"v-4fca92c0":b(()=>d(()=>import("./BaseFinder.html.7ef93005.js"),[])),"v-2a898c66":b(()=>d(()=>import("./DexClassFinder.html.389730c5.js"),[])),"v-a71937aa":b(()=>d(()=>import("./ConstructorFinder.html.4d826255.js"),[])),"v-42e0f0ab":b(()=>d(()=>import("./FieldFinder.html.320f7c00.js"),[])),"v-a4aa4d00":b(()=>d(()=>import("./MethodFinder.html.e6937ebf.js"),[])),"v-19e7277e":b(()=>d(()=>import("./YukiXposedEvent.html.6b53cb6e.js"),[])),"v-8455e04e":b(()=>d(()=>import("./YukiModuleResources.html.69e31838.js"),[])),"v-7b087cce":b(()=>d(()=>import("./YukiResForwarder.html.13a15436.js"),[])),"v-a00b4de6":b(()=>d(()=>import("./YukiResources.html.2125e8f3.js"),[])),"v-2f64a2d4":b(()=>d(()=>import("./ChannelData.html.9058d1b5.js"),[])),"v-87027140":b(()=>d(()=>import("./ChannelPriority.html.67227f77.js"),[])),"v-2d4e0da6":b(()=>d(()=>import("./ModuleClassLoader.html.516e1b4c.js"),[])),"v-58ed8298":b(()=>d(()=>import("./PrefsData.html.a2967765.js"),[])),"v-23e1a817":b(()=>d(()=>import("./ModulePreferenceFragment.html.acaa7c53.js"),[])),"v-0f719471":b(()=>d(()=>import("./BaseFinder.html.20817d84.js"),[])),"v-45111efc":b(()=>d(()=>import("./DexClassFinder.html.a77da4d5.js"),[])),"v-1e2cbc9c":b(()=>d(()=>import("./ConstructorFinder.html.4cb6fe26.js"),[])),"v-22449c48":b(()=>d(()=>import("./FieldFinder.html.6061f475.js"),[])),"v-fd738322":b(()=>d(()=>import("./MethodFinder.html.d48580de.js"),[])),"v-0a4de82f":b(()=>d(()=>import("./YukiXposedEvent.html.514c0aad.js"),[])),"v-8266e0ec":b(()=>d(()=>import("./YukiModuleResources.html.d0909f20.js"),[])),"v-aa38fa86":b(()=>d(()=>import("./YukiResForwarder.html.edcd2526.js"),[])),"v-21b3b17e":b(()=>d(()=>import("./YukiResources.html.fb77a30f.js"),[])),"v-493d37f6":b(()=>d(()=>import("./ChannelData.html.95b7e8c9.js"),[])),"v-b57870de":b(()=>d(()=>import("./ChannelPriority.html.d26c0620.js"),[])),"v-4b468415":b(()=>d(()=>import("./ModuleClassLoader.html.518c9958.js"),[])),"v-d99f7f36":b(()=>d(()=>import("./PrefsData.html.28f7cfe7.js"),[])),"v-53bcae06":b(()=>d(()=>import("./ModulePreferenceFragment.html.3af35864.js"),[])),"v-52995ef7":b(()=>d(()=>import("./CountRules.html.36628291.js"),[])),"v-8d5ce71a":b(()=>d(()=>import("./ModifierRules.html.39c7153d.js"),[])),"v-f5b1ffb2":b(()=>d(()=>import("./NameRules.html.f3318415.js"),[])),"v-652b815b":b(()=>d(()=>import("./ObjectRules.html.2f863b01.js"),[])),"v-08b70f7f":b(()=>d(()=>import("./ConstructorRules.html.30bc7679.js"),[])),"v-21f64ebf":b(()=>d(()=>import("./FieldRules.html.3bfc5e31.js"),[])),"v-77f11cf9":b(()=>d(()=>import("./MemberRules.html.560af7d0.js"),[])),"v-64827680":b(()=>d(()=>import("./MethodRules.html.0717f3bd.js"),[])),"v-2d5d16db":b(()=>d(()=>import("./ModuleAppActivity.html.80481dc2.js"),[])),"v-cadbe48e":b(()=>d(()=>import("./ModuleAppCompatActivity.html.0e562315.js"),[])),"v-78731c50":b(()=>d(()=>import("./ModuleContextThemeWrapper.html.9051f98a.js"),[])),"v-1b2ad030":b(()=>d(()=>import("./CountRules.html.a241a5ac.js"),[])),"v-547a3c3c":b(()=>d(()=>import("./ModifierRules.html.02d159c3.js"),[])),"v-58c26516":b(()=>d(()=>import("./NameRules.html.8e351662.js"),[])),"v-80fd32ec":b(()=>d(()=>import("./ObjectRules.html.761f5873.js"),[])),"v-a42f54a4":b(()=>d(()=>import("./ConstructorRules.html.d7bdd50e.js"),[])),"v-3e67a42e":b(()=>d(()=>import("./FieldRules.html.ba1ffc3f.js"),[])),"v-2cab152c":b(()=>d(()=>import("./MemberRules.html.6452439d.js"),[])),"v-5388621e":b(()=>d(()=>import("./MethodRules.html.6a1bc04d.js"),[])),"v-1446bdca":b(()=>d(()=>import("./ModuleAppActivity.html.bbe7c316.js"),[])),"v-c7cef530":b(()=>d(()=>import("./ModuleAppCompatActivity.html.9fd94c1a.js"),[])),"v-44efb702":b(()=>d(()=>import("./ModuleContextThemeWrapper.html.bc74e24e.js"),[])),"v-5e375d98":b(()=>d(()=>import("./MemberRulesResult.html.8ad8be97.js"),[])),"v-b8000f3a":b(()=>d(()=>import("./MemberRulesResult.html.037f8719.js"),[])),"v-3706649a":b(()=>d(()=>import("./404.html.55c9a3c0.js"),[]))};var Ht=(e={})=>e;function fr(e,t,l){var i,o,n;t===void 0&&(t=50),l===void 0&&(l={});var a=(i=l.isImmediate)!=null&&i,r=(o=l.callback)!=null&&o,s=l.maxWait,c=Date.now(),h=[];function p(){if(s!==void 0){var g=Date.now()-c;if(g+t>=s)return s-g}return t}var m=function(){var g=[].slice.call(arguments),x=this;return new Promise(function(P,E){var k=a&&n===void 0;if(n!==void 0&&clearTimeout(n),n=setTimeout(function(){if(n=void 0,c=Date.now(),!a){var L=e.apply(x,g);r&&r(L),h.forEach(function(H){return(0,H.resolve)(L)}),h=[]}},p()),k){var _=e.apply(x,g);return r&&r(_),P(_)}h.push({resolve:P,reject:E})})};return m.cancel=function(g){n!==void 0&&clearTimeout(n),h.forEach(function(x){return(0,x.reject)(g)}),h=[]},m}/*!
    +const Jr="modulepreload",Zr=function(e){return"/YukiHookAPI/"+e},Xo={},d=function(t,l,i){return!l||l.length===0?t():Promise.all(l.map(o=>{if(o=Zr(o),o in Xo)return;Xo[o]=!0;const n=o.endsWith(".css"),a=n?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${a}`))return;const r=document.createElement("link");if(r.rel=n?"stylesheet":Jr,n||(r.as="script",r.crossOrigin=""),r.href=o,document.head.appendChild(r),n)return new Promise((s,c)=>{r.addEventListener("load",s),r.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())},es={"v-8daa1a0e":()=>d(()=>import("./index.html.1ad46905.js"),[]).then(({data:e})=>e),"v-2d0a870d":()=>d(()=>import("./index.html.58270dd2.js"),[]).then(({data:e})=>e),"v-c0c85b84":()=>d(()=>import("./index.html.962e6741.js"),[]).then(({data:e})=>e),"v-7a15fe3b":()=>d(()=>import("./about.html.bac55135.js"),[]).then(({data:e})=>e),"v-3f851d14":()=>d(()=>import("./changelog.html.b4f9ea78.js"),[]).then(({data:e})=>e),"v-193cf592":()=>d(()=>import("./contacts.html.5dc8225c.js"),[]).then(({data:e})=>e),"v-ae7b83f2":()=>d(()=>import("./future.html.57365bd2.js"),[]).then(({data:e})=>e),"v-64fc7bb8":()=>d(()=>import("./home.html.f6b9c2a4.js"),[]).then(({data:e})=>e),"v-9cfea7fc":()=>d(()=>import("./api-example.html.c60371a6.js"),[]).then(({data:e})=>e),"v-72c12b7d":()=>d(()=>import("./api-exception.html.114387df.js"),[]).then(({data:e})=>e),"v-793879e8":()=>d(()=>import("./api-using.html.c794f69e.js"),[]).then(({data:e})=>e),"v-29d6c1ba":()=>d(()=>import("./r8-proguard.html.15e04e11.js"),[]).then(({data:e})=>e),"v-24e71de7":()=>d(()=>import("./xposed-using.html.09de8b71.js"),[]).then(({data:e})=>e),"v-7b22efaf":()=>d(()=>import("./example.html.3cb1bbf7.js"),[]).then(({data:e})=>e),"v-efb45d4c":()=>d(()=>import("./home.html.ca5e9385.js"),[]).then(({data:e})=>e),"v-277b35ca":()=>d(()=>import("./knowledge.html.13983a8b.js"),[]).then(({data:e})=>e),"v-77d752a2":()=>d(()=>import("./move-to-new-api.html.f91df01f.js"),[]).then(({data:e})=>e),"v-72889797":()=>d(()=>import("./quick-start.html.2c93f8c3.js"),[]).then(({data:e})=>e),"v-55c11626":()=>d(()=>import("./yukihookapi-projectbuilder.html.ed4fa356.js"),[]).then(({data:e})=>e),"v-41967128":()=>d(()=>import("./about.html.4de66a22.js"),[]).then(({data:e})=>e),"v-0e6c3476":()=>d(()=>import("./changelog.html.843158d7.js"),[]).then(({data:e})=>e),"v-6cf86266":()=>d(()=>import("./contacts.html.3df7cacf.js"),[]).then(({data:e})=>e),"v-3106ca14":()=>d(()=>import("./future.html.58e3db7e.js"),[]).then(({data:e})=>e),"v-c8deafb2":()=>d(()=>import("./home.html.cad3998c.js"),[]).then(({data:e})=>e),"v-c6114c9e":()=>d(()=>import("./api-example.html.29a2e3ae.js"),[]).then(({data:e})=>e),"v-5b43296c":()=>d(()=>import("./api-exception.html.b8a60393.js"),[]).then(({data:e})=>e),"v-2ee67152":()=>d(()=>import("./api-using.html.0a59e2e0.js"),[]).then(({data:e})=>e),"v-154d6f69":()=>d(()=>import("./r8-proguard.html.683a5429.js"),[]).then(({data:e})=>e),"v-af73b3d0":()=>d(()=>import("./xposed-using.html.73248b21.js"),[]).then(({data:e})=>e),"v-13b430a0":()=>d(()=>import("./example.html.c868eee2.js"),[]).then(({data:e})=>e),"v-6a609e09":()=>d(()=>import("./home.html.ced3162e.js"),[]).then(({data:e})=>e),"v-b4f1a468":()=>d(()=>import("./knowledge.html.830e8c66.js"),[]).then(({data:e})=>e),"v-c0d5dada":()=>d(()=>import("./move-to-new-api.html.4bf89a9b.js"),[]).then(({data:e})=>e),"v-24840ff0":()=>d(()=>import("./quick-start.html.8abc4bb2.js"),[]).then(({data:e})=>e),"v-a2fab4d6":()=>d(()=>import("./yukihookapi-projectbuilder.html.d499d226.js"),[]).then(({data:e})=>e),"v-12042f1f":()=>d(()=>import("./host-inject.html.8e7a6aa7.js"),[]).then(({data:e})=>e),"v-deaff1d0":()=>d(()=>import("./host-lifecycle.html.7e81cf29.js"),[]).then(({data:e})=>e),"v-33c1dc26":()=>d(()=>import("./logger.html.a59ab5f0.js"),[]).then(({data:e})=>e),"v-581ddb9c":()=>d(()=>import("./reflection.html.850b6810.js"),[]).then(({data:e})=>e),"v-2e6ad66c":()=>d(()=>import("./xposed-channel.html.5975332b.js"),[]).then(({data:e})=>e),"v-68bebbf4":()=>d(()=>import("./xposed-storage.html.c35a7041.js"),[]).then(({data:e})=>e),"v-6ac5be8e":()=>d(()=>import("./host-inject.html.77802245.js"),[]).then(({data:e})=>e),"v-357a8d49":()=>d(()=>import("./host-lifecycle.html.136055f0.js"),[]).then(({data:e})=>e),"v-1f0f591e":()=>d(()=>import("./logger.html.ed51ab5d.js"),[]).then(({data:e})=>e),"v-001858e3":()=>d(()=>import("./reflection.html.eb335976.js"),[]).then(({data:e})=>e),"v-598546c6":()=>d(()=>import("./xposed-channel.html.325b6181.js"),[]).then(({data:e})=>e),"v-0d914225":()=>d(()=>import("./xposed-storage.html.5fd9a913.js"),[]).then(({data:e})=>e),"v-053599a5":()=>d(()=>import("./YukiHookAPI.html.624839d6.js"),[]).then(({data:e})=>e),"v-6931cb54":()=>d(()=>import("./YukiHookAPI.html.cf8ad756.js"),[]).then(({data:e})=>e),"v-818b3ca6":()=>d(()=>import("./InjectYukiHookWithXposed.html.56391530.js"),[]).then(({data:e})=>e),"v-b6a815c4":()=>d(()=>import("./CurrentClass.html.16c29272.js"),[]).then(({data:e})=>e),"v-0183e3fc":()=>d(()=>import("./GenericClass.html.f94281cf.js"),[]).then(({data:e})=>e),"v-57506200":()=>d(()=>import("./HookClass.html.52e59cf0.js"),[]).then(({data:e})=>e),"v-9af56c1a":()=>d(()=>import("./HookResources.html.2486cf29.js"),[]).then(({data:e})=>e),"v-032b1710":()=>d(()=>import("./VariousClass.html.153f4c39.js"),[]).then(({data:e})=>e),"v-e288ce96":()=>d(()=>import("./YukiBaseHooker.html.99eec744.js"),[]).then(({data:e})=>e),"v-71147891":()=>d(()=>import("./YukiMemberHookCreator.html.7e0c1b2e.js"),[]).then(({data:e})=>e),"v-5ed1ceee":()=>d(()=>import("./YukiResourcesHookCreator.html.2fa2ff0f.js"),[]).then(({data:e})=>e),"v-0d0fcec2":()=>d(()=>import("./ReflectionFactory.html.d2d3ba9a.js"),[]).then(({data:e})=>e),"v-65091354":()=>d(()=>import("./YukiHookFactory.html.bfbfbca6.js"),[]).then(({data:e})=>e),"v-60cbe1b4":()=>d(()=>import("./HookParam.html.61e05f29.js"),[]).then(({data:e})=>e),"v-b381a126":()=>d(()=>import("./PackageParam.html.2233e4f2.js"),[]).then(({data:e})=>e),"v-30f3ba1e":()=>d(()=>import("./InjectYukiHookWithXposed.html.cf9b500d.js"),[]).then(({data:e})=>e),"v-6e47300f":()=>d(()=>import("./CurrentClass.html.641fcd58.js"),[]).then(({data:e})=>e),"v-69c1c226":()=>d(()=>import("./GenericClass.html.5d4a2ffe.js"),[]).then(({data:e})=>e),"v-735374af":()=>d(()=>import("./HookClass.html.486aa6ea.js"),[]).then(({data:e})=>e),"v-1c516d22":()=>d(()=>import("./HookResources.html.4f07fd98.js"),[]).then(({data:e})=>e),"v-66735bfe":()=>d(()=>import("./VariousClass.html.a490557a.js"),[]).then(({data:e})=>e),"v-36aec5ad":()=>d(()=>import("./LoggerFactory.html.52af0d44.js"),[]).then(({data:e})=>e),"v-3ac40680":()=>d(()=>import("./YukiMemberHookCreator.html.e217488d.js"),[]).then(({data:e})=>e),"v-5e81af42":()=>d(()=>import("./YukiResourcesHookCreator.html.1f540f56.js"),[]).then(({data:e})=>e),"v-516df326":()=>d(()=>import("./YukiBaseHooker.html.b68236f9.js"),[]).then(({data:e})=>e),"v-213d88b3":()=>d(()=>import("./ReflectionFactory.html.d78fe330.js"),[]).then(({data:e})=>e),"v-448e9585":()=>d(()=>import("./YukiHookFactory.html.09287903.js"),[]).then(({data:e})=>e),"v-004a009e":()=>d(()=>import("./LoggerFactory.html.ae54c997.js"),[]).then(({data:e})=>e),"v-75a9b636":()=>d(()=>import("./HookParam.html.9db30e67.js"),[]).then(({data:e})=>e),"v-100b529c":()=>d(()=>import("./PackageParam.html.268f9198.js"),[]).then(({data:e})=>e),"v-8293d958":()=>d(()=>import("./ComponentTypeFactory.html.98825c67.js"),[]).then(({data:e})=>e),"v-7b0abf86":()=>d(()=>import("./GraphicsTypeFactory.html.cb6ff63d.js"),[]).then(({data:e})=>e),"v-5309e4a0":()=>d(()=>import("./ViewTypeFactory.html.87f19810.js"),[]).then(({data:e})=>e),"v-a2615d0c":()=>d(()=>import("./DefinedTypeFactory.html.8137c32c.js"),[]).then(({data:e})=>e),"v-ba01a600":()=>d(()=>import("./VariableTypeFactory.html.07a0f5f6.js"),[]).then(({data:e})=>e),"v-7fec5836":()=>d(()=>import("./ModuleApplication.html.57573770.js"),[]).then(({data:e})=>e),"v-7414265a":()=>d(()=>import("./YukiHookDataChannel.html.02a8ef0d.js"),[]).then(({data:e})=>e),"v-003862c2":()=>d(()=>import("./YukiHookModulePrefs.html.198e73d3.js"),[]).then(({data:e})=>e),"v-1d680acc":()=>d(()=>import("./IYukiHookXposedInit.html.b37a852b.js"),[]).then(({data:e})=>e),"v-5e874c45":()=>d(()=>import("./ComponentTypeFactory.html.57f1d79e.js"),[]).then(({data:e})=>e),"v-4ea62475":()=>d(()=>import("./GraphicsTypeFactory.html.bd3fae8e.js"),[]).then(({data:e})=>e),"v-ef79cde2":()=>d(()=>import("./ViewTypeFactory.html.a2b13a44.js"),[]).then(({data:e})=>e),"v-5acc12ab":()=>d(()=>import("./DefinedTypeFactory.html.ba3bdd0b.js"),[]).then(({data:e})=>e),"v-14ec8671":()=>d(()=>import("./VariableTypeFactory.html.5c25c0fb.js"),[]).then(({data:e})=>e),"v-4709ad58":()=>d(()=>import("./ModuleApplication.html.a386b8db.js"),[]).then(({data:e})=>e),"v-632be8ee":()=>d(()=>import("./YukiHookDataChannel.html.b4bffecd.js"),[]).then(({data:e})=>e),"v-5858709e":()=>d(()=>import("./YukiHookModulePrefs.html.6bedc781.js"),[]).then(({data:e})=>e),"v-763140ee":()=>d(()=>import("./IYukiHookXposedInit.html.78a55860.js"),[]).then(({data:e})=>e),"v-4fca92c0":()=>d(()=>import("./BaseFinder.html.a5dbb7a7.js"),[]).then(({data:e})=>e),"v-2a898c66":()=>d(()=>import("./DexClassFinder.html.5d8e12f0.js"),[]).then(({data:e})=>e),"v-a71937aa":()=>d(()=>import("./ConstructorFinder.html.282236a6.js"),[]).then(({data:e})=>e),"v-42e0f0ab":()=>d(()=>import("./FieldFinder.html.ce7337a4.js"),[]).then(({data:e})=>e),"v-a4aa4d00":()=>d(()=>import("./MethodFinder.html.9a97f14f.js"),[]).then(({data:e})=>e),"v-19e7277e":()=>d(()=>import("./YukiXposedEvent.html.560fa41c.js"),[]).then(({data:e})=>e),"v-8455e04e":()=>d(()=>import("./YukiModuleResources.html.90f23dcd.js"),[]).then(({data:e})=>e),"v-7b087cce":()=>d(()=>import("./YukiResForwarder.html.65998e9e.js"),[]).then(({data:e})=>e),"v-a00b4de6":()=>d(()=>import("./YukiResources.html.cc9ce9fb.js"),[]).then(({data:e})=>e),"v-2f64a2d4":()=>d(()=>import("./ChannelData.html.1981f416.js"),[]).then(({data:e})=>e),"v-87027140":()=>d(()=>import("./ChannelPriority.html.7d2ec81d.js"),[]).then(({data:e})=>e),"v-2d4e0da6":()=>d(()=>import("./ModuleClassLoader.html.2ddf88b6.js"),[]).then(({data:e})=>e),"v-58ed8298":()=>d(()=>import("./PrefsData.html.3061ee5b.js"),[]).then(({data:e})=>e),"v-23e1a817":()=>d(()=>import("./ModulePreferenceFragment.html.764fecc3.js"),[]).then(({data:e})=>e),"v-0f719471":()=>d(()=>import("./BaseFinder.html.8f275c85.js"),[]).then(({data:e})=>e),"v-45111efc":()=>d(()=>import("./DexClassFinder.html.78c5f805.js"),[]).then(({data:e})=>e),"v-1e2cbc9c":()=>d(()=>import("./ConstructorFinder.html.8e38ad6f.js"),[]).then(({data:e})=>e),"v-22449c48":()=>d(()=>import("./FieldFinder.html.30e6d2df.js"),[]).then(({data:e})=>e),"v-fd738322":()=>d(()=>import("./MethodFinder.html.9be50874.js"),[]).then(({data:e})=>e),"v-0a4de82f":()=>d(()=>import("./YukiXposedEvent.html.a93ee4ef.js"),[]).then(({data:e})=>e),"v-8266e0ec":()=>d(()=>import("./YukiModuleResources.html.46222277.js"),[]).then(({data:e})=>e),"v-aa38fa86":()=>d(()=>import("./YukiResForwarder.html.70fb824b.js"),[]).then(({data:e})=>e),"v-21b3b17e":()=>d(()=>import("./YukiResources.html.8714bbf2.js"),[]).then(({data:e})=>e),"v-493d37f6":()=>d(()=>import("./ChannelData.html.5ca343ea.js"),[]).then(({data:e})=>e),"v-b57870de":()=>d(()=>import("./ChannelPriority.html.b460c4bc.js"),[]).then(({data:e})=>e),"v-4b468415":()=>d(()=>import("./ModuleClassLoader.html.0388bffd.js"),[]).then(({data:e})=>e),"v-d99f7f36":()=>d(()=>import("./PrefsData.html.40b2fabe.js"),[]).then(({data:e})=>e),"v-53bcae06":()=>d(()=>import("./ModulePreferenceFragment.html.0c7dadc7.js"),[]).then(({data:e})=>e),"v-52995ef7":()=>d(()=>import("./CountRules.html.2d5ab94d.js"),[]).then(({data:e})=>e),"v-8d5ce71a":()=>d(()=>import("./ModifierRules.html.c36dff17.js"),[]).then(({data:e})=>e),"v-f5b1ffb2":()=>d(()=>import("./NameRules.html.00ac96fb.js"),[]).then(({data:e})=>e),"v-652b815b":()=>d(()=>import("./ObjectRules.html.70d91cad.js"),[]).then(({data:e})=>e),"v-08b70f7f":()=>d(()=>import("./ConstructorRules.html.c7161b83.js"),[]).then(({data:e})=>e),"v-21f64ebf":()=>d(()=>import("./FieldRules.html.c8edc48c.js"),[]).then(({data:e})=>e),"v-77f11cf9":()=>d(()=>import("./MemberRules.html.a071b3c6.js"),[]).then(({data:e})=>e),"v-64827680":()=>d(()=>import("./MethodRules.html.6c9a8df6.js"),[]).then(({data:e})=>e),"v-2d5d16db":()=>d(()=>import("./ModuleAppActivity.html.90d3c4e6.js"),[]).then(({data:e})=>e),"v-cadbe48e":()=>d(()=>import("./ModuleAppCompatActivity.html.a20d9206.js"),[]).then(({data:e})=>e),"v-78731c50":()=>d(()=>import("./ModuleContextThemeWrapper.html.0879426b.js"),[]).then(({data:e})=>e),"v-1b2ad030":()=>d(()=>import("./CountRules.html.2639d392.js"),[]).then(({data:e})=>e),"v-547a3c3c":()=>d(()=>import("./ModifierRules.html.f7582dc2.js"),[]).then(({data:e})=>e),"v-58c26516":()=>d(()=>import("./NameRules.html.47e512e4.js"),[]).then(({data:e})=>e),"v-80fd32ec":()=>d(()=>import("./ObjectRules.html.4b682129.js"),[]).then(({data:e})=>e),"v-a42f54a4":()=>d(()=>import("./ConstructorRules.html.f8ba43ee.js"),[]).then(({data:e})=>e),"v-3e67a42e":()=>d(()=>import("./FieldRules.html.a499e892.js"),[]).then(({data:e})=>e),"v-2cab152c":()=>d(()=>import("./MemberRules.html.b3e5d297.js"),[]).then(({data:e})=>e),"v-5388621e":()=>d(()=>import("./MethodRules.html.afeaf85e.js"),[]).then(({data:e})=>e),"v-1446bdca":()=>d(()=>import("./ModuleAppActivity.html.09451ff7.js"),[]).then(({data:e})=>e),"v-c7cef530":()=>d(()=>import("./ModuleAppCompatActivity.html.dd9e40e9.js"),[]).then(({data:e})=>e),"v-44efb702":()=>d(()=>import("./ModuleContextThemeWrapper.html.229a46ac.js"),[]).then(({data:e})=>e),"v-5e375d98":()=>d(()=>import("./MemberRulesResult.html.e79843c3.js"),[]).then(({data:e})=>e),"v-b8000f3a":()=>d(()=>import("./MemberRulesResult.html.58e81c94.js"),[]).then(({data:e})=>e),"v-3706649a":()=>d(()=>import("./404.html.c038a05a.js"),[]).then(({data:e})=>e)};function mo(e,t){const l=Object.create(null),i=e.split(",");for(let o=0;o!!l[o.toLowerCase()]:o=>!!l[o]}const ts="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ls=mo(ts);function ha(e){return!!e||e===""}function Sl(e){if(te(e)){const t={};for(let l=0;l{if(l){const i=l.split(os);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function Ke(e){let t="";if(be(e))t=e;else if(te(e))for(let l=0;lbe(e)?e:e==null?"":te(e)||Oe(e)&&(e.toString===ma||!ae(e.toString))?JSON.stringify(e,da,2):String(e),da=(e,t)=>t&&t.__v_isRef?da(e,t.value):rl(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((l,[i,o])=>(l[`${i} =>`]=o,l),{})}:ua(t)?{[`Set(${t.size})`]:[...t.values()]}:Oe(t)&&!te(t)&&!fa(t)?String(t):t,Ce={},al=[],rt=()=>{},as=()=>!1,rs=/^on[^a-z]/,Vl=e=>rs.test(e),fo=e=>e.startsWith("onUpdate:"),Se=Object.assign,go=(e,t)=>{const l=e.indexOf(t);l>-1&&e.splice(l,1)},ss=Object.prototype.hasOwnProperty,de=(e,t)=>ss.call(e,t),te=Array.isArray,rl=e=>bi(e)==="[object Map]",ua=e=>bi(e)==="[object Set]",ae=e=>typeof e=="function",be=e=>typeof e=="string",ko=e=>typeof e=="symbol",Oe=e=>e!==null&&typeof e=="object",pa=e=>Oe(e)&&ae(e.then)&&ae(e.catch),ma=Object.prototype.toString,bi=e=>ma.call(e),cs=e=>bi(e).slice(8,-1),fa=e=>bi(e)==="[object Object]",vo=e=>be(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Cl=mo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),_i=e=>{const t=Object.create(null);return l=>t[l]||(t[l]=e(l))},hs=/-(\w)/g,ut=_i(e=>e.replace(hs,(t,l)=>l?l.toUpperCase():"")),ds=/\B([A-Z])/g,Jt=_i(e=>e.replace(ds,"-$1").toLowerCase()),yi=_i(e=>e.charAt(0).toUpperCase()+e.slice(1)),Oi=_i(e=>e?`on${yi(e)}`:""),wl=(e,t)=>!Object.is(e,t),Fi=(e,t)=>{for(let l=0;l{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:l})},ga=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let qo;const us=()=>qo||(qo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let Xe;class ps{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Xe&&(this.parent=Xe,this.index=(Xe.scopes||(Xe.scopes=[])).push(this)-1)}run(t){if(this.active){const l=Xe;try{return Xe=this,t()}finally{Xe=l}}}on(){Xe=this}off(){Xe=this.parent}stop(t){if(this.active){let l,i;for(l=0,i=this.effects.length;l{const t=new Set(e);return t.w=0,t.n=0,t},ka=e=>(e.w&Ft)>0,va=e=>(e.n&Ft)>0,ks=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let l=0;for(let i=0;i{(c==="length"||c>=i)&&r.push(s)});else switch(l!==void 0&&r.push(a.get(l)),t){case"add":te(e)?vo(l)&&r.push(a.get("length")):(r.push(a.get(Kt)),rl(e)&&r.push(a.get(qi)));break;case"delete":te(e)||(r.push(a.get(Kt)),rl(e)&&r.push(a.get(qi)));break;case"set":rl(e)&&r.push(a.get(Kt));break}if(r.length===1)r[0]&&Ki(r[0]);else{const s=[];for(const c of r)c&&s.push(...c);Ki(bo(s))}}function Ki(e,t){const l=te(e)?e:[...e];for(const i of l)i.computed&&Go(i);for(const i of l)i.computed||Go(i)}function Go(e,t){(e!==nt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const bs=mo("__proto__,__v_isRef,__isVue"),ya=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ko)),_s=yo(),ys=yo(!1,!0),xs=yo(!0),Qo=Es();function Es(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...l){const i=ke(this);for(let n=0,a=this.length;n{e[t]=function(...l){ml();const i=ke(this)[t].apply(this,l);return fl(),i}}),e}function yo(e=!1,t=!1){return function(i,o,n){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&n===(e?t?Vs:Pa:t?Ra:Ca).get(i))return i;const a=te(i);if(!e&&a&&de(Qo,o))return Reflect.get(Qo,o,n);const r=Reflect.get(i,o,n);return(ko(o)?ya.has(o):bs(o))||(e||Qe(i,"get",o),t)?r:De(r)?a&&vo(o)?r:r.value:Oe(r)?e?Co(r):gl(r):r}}const Cs=xa(),Rs=xa(!0);function xa(e=!1){return function(l,i,o,n){let a=l[i];if(Ol(a)&&De(a)&&!De(o))return!1;if(!e&&!Ol(o)&&(Gi(o)||(o=ke(o),a=ke(a)),!te(l)&&De(a)&&!De(o)))return a.value=o,!0;const r=te(l)&&vo(i)?Number(i)e,xi=e=>Reflect.getPrototypeOf(e);function Xl(e,t,l=!1,i=!1){e=e.__v_raw;const o=ke(e),n=ke(t);l||(t!==n&&Qe(o,"get",t),Qe(o,"get",n));const{has:a}=xi(o),r=i?xo:l?Po:Fl;if(a.call(o,t))return r(e.get(t));if(a.call(o,n))return r(e.get(n));e!==o&&e.get(t)}function ql(e,t=!1){const l=this.__v_raw,i=ke(l),o=ke(e);return t||(e!==o&&Qe(i,"has",e),Qe(i,"has",o)),e===o?l.has(e):l.has(e)||l.has(o)}function Kl(e,t=!1){return e=e.__v_raw,!t&&Qe(ke(e),"iterate",Kt),Reflect.get(e,"size",e)}function Jo(e){e=ke(e);const t=ke(this);return xi(t).has.call(t,e)||(t.add(e),bt(t,"add",e,e)),this}function Zo(e,t){t=ke(t);const l=ke(this),{has:i,get:o}=xi(l);let n=i.call(l,e);n||(e=ke(e),n=i.call(l,e));const a=o.call(l,e);return l.set(e,t),n?wl(t,a)&&bt(l,"set",e,t):bt(l,"add",e,t),this}function en(e){const t=ke(this),{has:l,get:i}=xi(t);let o=l.call(t,e);o||(e=ke(e),o=l.call(t,e)),i&&i.call(t,e);const n=t.delete(e);return o&&bt(t,"delete",e,void 0),n}function tn(){const e=ke(this),t=e.size!==0,l=e.clear();return t&&bt(e,"clear",void 0,void 0),l}function Gl(e,t){return function(i,o){const n=this,a=n.__v_raw,r=ke(a),s=t?xo:e?Po:Fl;return!e&&Qe(r,"iterate",Kt),a.forEach((c,h)=>i.call(o,s(c),s(h),n))}}function Ql(e,t,l){return function(...i){const o=this.__v_raw,n=ke(o),a=rl(n),r=e==="entries"||e===Symbol.iterator&&a,s=e==="keys"&&a,c=o[e](...i),h=l?xo:t?Po:Fl;return!t&&Qe(n,"iterate",s?qi:Kt),{next(){const{value:p,done:m}=c.next();return m?{value:p,done:m}:{value:r?[h(p[0]),h(p[1])]:h(p),done:m}},[Symbol.iterator](){return this}}}}function xt(e){return function(...t){return e==="delete"?!1:this}}function ws(){const e={get(n){return Xl(this,n)},get size(){return Kl(this)},has:ql,add:Jo,set:Zo,delete:en,clear:tn,forEach:Gl(!1,!1)},t={get(n){return Xl(this,n,!1,!0)},get size(){return Kl(this)},has:ql,add:Jo,set:Zo,delete:en,clear:tn,forEach:Gl(!1,!0)},l={get(n){return Xl(this,n,!0)},get size(){return Kl(this,!0)},has(n){return ql.call(this,n,!0)},add:xt("add"),set:xt("set"),delete:xt("delete"),clear:xt("clear"),forEach:Gl(!0,!1)},i={get(n){return Xl(this,n,!0,!0)},get size(){return Kl(this,!0)},has(n){return ql.call(this,n,!0)},add:xt("add"),set:xt("set"),delete:xt("delete"),clear:xt("clear"),forEach:Gl(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(n=>{e[n]=Ql(n,!1,!1),l[n]=Ql(n,!0,!1),t[n]=Ql(n,!1,!0),i[n]=Ql(n,!0,!0)}),[e,l,t,i]}const[Os,Fs,zs,Ds]=ws();function Eo(e,t){const l=t?e?Ds:zs:e?Fs:Os;return(i,o,n)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?i:Reflect.get(de(l,o)&&o in i?l:i,o,n)}const Ms={get:Eo(!1,!1)},Hs={get:Eo(!1,!0)},Ss={get:Eo(!0,!1)},Ca=new WeakMap,Ra=new WeakMap,Pa=new WeakMap,Vs=new WeakMap;function Ns(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function js(e){return e.__v_skip||!Object.isExtensible(e)?0:Ns(cs(e))}function gl(e){return Ol(e)?e:Ro(e,!1,Ea,Ms,Ca)}function $s(e){return Ro(e,!1,Is,Hs,Ra)}function Co(e){return Ro(e,!0,As,Ss,Pa)}function Ro(e,t,l,i,o){if(!Oe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=o.get(e);if(n)return n;const a=js(e);if(a===0)return e;const r=new Proxy(e,a===2?i:l);return o.set(e,r),r}function sl(e){return Ol(e)?sl(e.__v_raw):!!(e&&e.__v_isReactive)}function Ol(e){return!!(e&&e.__v_isReadonly)}function Gi(e){return!!(e&&e.__v_isShallow)}function La(e){return sl(e)||Ol(e)}function ke(e){const t=e&&e.__v_raw;return t?ke(t):e}function Ta(e){return ni(e,"__v_skip",!0),e}const Fl=e=>Oe(e)?gl(e):e,Po=e=>Oe(e)?Co(e):e;function Aa(e){It&&nt&&(e=ke(e),_a(e.dep||(e.dep=bo())))}function Ia(e,t){e=ke(e),e.dep&&Ki(e.dep)}function De(e){return!!(e&&e.__v_isRef===!0)}function ye(e){return Oa(e,!1)}function wa(e){return Oa(e,!0)}function Oa(e,t){return De(e)?e:new Ys(e,t)}class Ys{constructor(t,l){this.__v_isShallow=l,this.dep=void 0,this.__v_isRef=!0,this._rawValue=l?t:ke(t),this._value=l?t:Fl(t)}get value(){return Aa(this),this._value}set value(t){t=this.__v_isShallow?t:ke(t),wl(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Fl(t),Ia(this))}}function O(e){return De(e)?e.value:e}const Bs={get:(e,t,l)=>O(Reflect.get(e,t,l)),set:(e,t,l,i)=>{const o=e[t];return De(o)&&!De(l)?(o.value=l,!0):Reflect.set(e,t,l,i)}};function Fa(e){return sl(e)?e:new Proxy(e,Bs)}function Ei(e){const t=te(e)?new Array(e.length):{};for(const l in e)t[l]=Ws(e,l);return t}class Us{constructor(t,l,i){this._object=t,this._key=l,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function Ws(e,t,l){const i=e[t];return De(i)?i:new Us(e,t,l)}class Xs{constructor(t,l,i,o){this._setter=l,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new _o(t,()=>{this._dirty||(this._dirty=!0,Ia(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=i}get value(){const t=ke(this);return Aa(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function qs(e,t,l=!1){let i,o;const n=ae(e);return n?(i=e,o=rt):(i=e.get,o=e.set),new Xs(i,o,n||!o,l)}function wt(e,t,l,i){let o;try{o=i?e(...i):e()}catch(n){Nl(n,t,l)}return o}function lt(e,t,l,i){if(ae(e)){const n=wt(e,t,l,i);return n&&pa(n)&&n.catch(a=>{Nl(a,t,l)}),n}const o=[];for(let n=0;n>>1;zl(qe[i])ft&&qe.splice(t,1)}function Ma(e,t,l,i){te(e)?l.push(...e):(!t||!t.includes(e,e.allowRecurse?i+1:i))&&l.push(e),Da()}function Js(e){Ma(e,El,Rl,il)}function Zs(e){Ma(e,Pt,Pl,ol)}function Ci(e,t=null){if(Rl.length){for(Ji=t,El=[...new Set(Rl)],Rl.length=0,il=0;ilzl(l)-zl(i)),ol=0;ole.id==null?1/0:e.id;function Ha(e){Qi=!1,ai=!0,Ci(e),qe.sort((l,i)=>zl(l)-zl(i));const t=rt;try{for(ft=0;ftg.trim())),p&&(o=l.map(ga))}let r,s=i[r=Oi(t)]||i[r=Oi(ut(t))];!s&&n&&(s=i[r=Oi(Jt(t))]),s&<(s,e,6,o);const c=i[r+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,lt(c,e,6,o)}}function Sa(e,t,l=!1){const i=t.emitsCache,o=i.get(e);if(o!==void 0)return o;const n=e.emits;let a={},r=!1;if(!ae(e)){const s=c=>{const h=Sa(c,t,!0);h&&(r=!0,Se(a,h))};!l&&t.mixins.length&&t.mixins.forEach(s),e.extends&&s(e.extends),e.mixins&&e.mixins.forEach(s)}return!n&&!r?(i.set(e,null),null):(te(n)?n.forEach(s=>a[s]=null):Se(a,n),i.set(e,a),a)}function Ri(e,t){return!e||!Vl(t)?!1:(t=t.slice(2).replace(/Once$/,""),de(e,t[0].toLowerCase()+t.slice(1))||de(e,Jt(t))||de(e,t))}let Ve=null,Va=null;function si(e){const t=Ve;return Ve=e,Va=e&&e.type.__scopeId||null,t}function He(e,t=Ve,l){if(!t||e._n)return e;const i=(...o)=>{i._d&&pn(-1);const n=si(t),a=e(...o);return si(n),i._d&&pn(1),a};return i._n=!0,i._c=!0,i._d=!0,i}function zi(e){const{type:t,vnode:l,proxy:i,withProxy:o,props:n,propsOptions:[a],slots:r,attrs:s,emit:c,render:h,renderCache:p,data:m,setupState:g,ctx:x,inheritAttrs:P}=e;let E,k;const _=si(e);try{if(l.shapeFlag&4){const H=o||i;E=ot(h.call(H,H,p,n,g,m,x)),k=s}else{const H=t;E=ot(H.length>1?H(n,{attrs:s,slots:r,emit:c}):H(n,null)),k=t.props?s:tc(s)}}catch(H){Tl.length=0,Nl(H,e,1),E=oe(Ge)}let L=E;if(k&&P!==!1){const H=Object.keys(k),{shapeFlag:U}=L;H.length&&U&7&&(a&&H.some(fo)&&(k=lc(k,a)),L=Dt(L,k))}return l.dirs&&(L=Dt(L),L.dirs=L.dirs?L.dirs.concat(l.dirs):l.dirs),l.transition&&(L.transition=l.transition),E=L,si(_),E}const tc=e=>{let t;for(const l in e)(l==="class"||l==="style"||Vl(l))&&((t||(t={}))[l]=e[l]);return t},lc=(e,t)=>{const l={};for(const i in e)(!fo(i)||!(i.slice(9)in t))&&(l[i]=e[i]);return l};function ic(e,t,l){const{props:i,children:o,component:n}=e,{props:a,children:r,patchFlag:s}=t,c=n.emitsOptions;if(t.dirs||t.transition)return!0;if(l&&s>=0){if(s&1024)return!0;if(s&16)return i?ln(i,a,c):!!a;if(s&8){const h=t.dynamicProps;for(let p=0;pe.__isSuspense;function Na(e,t){t&&t.pendingBranch?te(e)?t.effects.push(...e):t.effects.push(e):Zs(e)}function Gt(e,t){if(Fe){let l=Fe.provides;const i=Fe.parent&&Fe.parent.provides;i===l&&(l=Fe.provides=Object.create(i)),l[e]=t}}function Me(e,t,l=!1){const i=Fe||Ve;if(i){const o=i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return l&&ae(t)?t.call(i.proxy):t}}const on={};function dt(e,t,l){return ja(e,t,l)}function ja(e,t,{immediate:l,deep:i,flush:o,onTrack:n,onTrigger:a}=Ce){const r=Fe;let s,c=!1,h=!1;if(De(e)?(s=()=>e.value,c=Gi(e)):sl(e)?(s=()=>e,i=!0):te(e)?(h=!0,c=e.some(k=>sl(k)||Gi(k)),s=()=>e.map(k=>{if(De(k))return k.value;if(sl(k))return qt(k);if(ae(k))return wt(k,r,2)})):ae(e)?t?s=()=>wt(e,r,2):s=()=>{if(!(r&&r.isUnmounted))return p&&p(),lt(e,r,3,[m])}:s=rt,t&&i){const k=s;s=()=>qt(k())}let p,m=k=>{p=E.onStop=()=>{wt(k,r,4)}};if(dl)return m=rt,t?l&<(t,r,3,[s(),h?[]:void 0,m]):s(),rt;let g=h?[]:on;const x=()=>{if(!!E.active)if(t){const k=E.run();(i||c||(h?k.some((_,L)=>wl(_,g[L])):wl(k,g)))&&(p&&p(),lt(t,r,3,[k,g===on?void 0:g,m]),g=k)}else E.run()};x.allowRecurse=!!t;let P;o==="sync"?P=x:o==="post"?P=()=>Be(x,r&&r.suspense):P=()=>Js(x);const E=new _o(s,P);return t?l?x():g=E.run():o==="post"?Be(E.run.bind(E),r&&r.suspense):E.run(),()=>{E.stop(),r&&r.scope&&go(r.scope.effects,E)}}function ac(e,t,l){const i=this.proxy,o=be(e)?e.includes(".")?$a(i,e):()=>i[e]:e.bind(i,i);let n;ae(t)?n=t:(n=t.handler,l=t);const a=Fe;hl(this);const r=ja(o,n.bind(i),l);return a?hl(a):Qt(),r}function $a(e,t){const l=t.split(".");return()=>{let i=e;for(let o=0;o{qt(l,t)});else if(fa(e))for(const l in e)qt(e[l],t);return e}function rc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Je(()=>{e.isMounted=!0}),Yl(()=>{e.isUnmounting=!0}),e}const et=[Function,Array],sc={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:et,onEnter:et,onAfterEnter:et,onEnterCancelled:et,onBeforeLeave:et,onLeave:et,onAfterLeave:et,onLeaveCancelled:et,onBeforeAppear:et,onAppear:et,onAfterAppear:et,onAppearCancelled:et},setup(e,{slots:t}){const l=wo(),i=rc();let o;return()=>{const n=t.default&&Ua(t.default(),!0);if(!n||!n.length)return;let a=n[0];if(n.length>1){for(const P of n)if(P.type!==Ge){a=P;break}}const r=ke(e),{mode:s}=r;if(i.isLeaving)return Di(a);const c=nn(a);if(!c)return Di(a);const h=Zi(c,r,i,l);eo(c,h);const p=l.subTree,m=p&&nn(p);let g=!1;const{getTransitionKey:x}=c.type;if(x){const P=x();o===void 0?o=P:P!==o&&(o=P,g=!0)}if(m&&m.type!==Ge&&(!Wt(c,m)||g)){const P=Zi(m,r,i,l);if(eo(m,P),s==="out-in")return i.isLeaving=!0,P.afterLeave=()=>{i.isLeaving=!1,l.update()},Di(a);s==="in-out"&&c.type!==Ge&&(P.delayLeave=(E,k,_)=>{const L=Ba(i,m);L[String(m.key)]=m,E._leaveCb=()=>{k(),E._leaveCb=void 0,delete h.delayedLeave},h.delayedLeave=_})}return a}}},Ya=sc;function Ba(e,t){const{leavingVNodes:l}=e;let i=l.get(t.type);return i||(i=Object.create(null),l.set(t.type,i)),i}function Zi(e,t,l,i){const{appear:o,mode:n,persisted:a=!1,onBeforeEnter:r,onEnter:s,onAfterEnter:c,onEnterCancelled:h,onBeforeLeave:p,onLeave:m,onAfterLeave:g,onLeaveCancelled:x,onBeforeAppear:P,onAppear:E,onAfterAppear:k,onAppearCancelled:_}=t,L=String(e.key),H=Ba(l,e),U=(v,q)=>{v&<(v,i,9,q)},ee=(v,q)=>{const B=q[1];U(v,q),te(v)?v.every(G=>G.length<=1)&&B():v.length<=1&&B()},w={mode:n,persisted:a,beforeEnter(v){let q=r;if(!l.isMounted)if(o)q=P||r;else return;v._leaveCb&&v._leaveCb(!0);const B=H[L];B&&Wt(e,B)&&B.el._leaveCb&&B.el._leaveCb(),U(q,[v])},enter(v){let q=s,B=c,G=h;if(!l.isMounted)if(o)q=E||s,B=k||c,G=_||h;else return;let C=!1;const S=v._enterCb=F=>{C||(C=!0,F?U(G,[v]):U(B,[v]),w.delayedLeave&&w.delayedLeave(),v._enterCb=void 0)};q?ee(q,[v,S]):S()},leave(v,q){const B=String(e.key);if(v._enterCb&&v._enterCb(!0),l.isUnmounting)return q();U(p,[v]);let G=!1;const C=v._leaveCb=S=>{G||(G=!0,q(),S?U(x,[v]):U(g,[v]),v._leaveCb=void 0,H[B]===e&&delete H[B])};H[B]=e,m?ee(m,[v,C]):C()},clone(v){return Zi(v,t,l,i)}};return w}function Di(e){if($l(e))return e=Dt(e),e.children=null,e}function nn(e){return $l(e)?e.children?e.children[0]:void 0:e}function eo(e,t){e.shapeFlag&6&&e.component?eo(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ua(e,t=!1,l){let i=[],o=0;for(let n=0;n1)for(let n=0;n!!e.type.__asyncLoader;function b(e){ae(e)&&(e={loader:e});const{loader:t,loadingComponent:l,errorComponent:i,delay:o=200,timeout:n,suspensible:a=!0,onError:r}=e;let s=null,c,h=0;const p=()=>(h++,s=null,m()),m=()=>{let g;return s||(g=s=t().catch(x=>{if(x=x instanceof Error?x:new Error(String(x)),r)return new Promise((P,E)=>{r(x,()=>P(p()),()=>E(x),h+1)});throw x}).then(x=>g!==s&&s?s:(x&&(x.__esModule||x[Symbol.toStringTag]==="Module")&&(x=x.default),c=x,x)))};return ue({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return c},setup(){const g=Fe;if(c)return()=>Mi(c,g);const x=_=>{s=null,Nl(_,g,13,!i)};if(a&&g.suspense||dl)return m().then(_=>()=>Mi(_,g)).catch(_=>(x(_),()=>i?oe(i,{error:_}):null));const P=ye(!1),E=ye(),k=ye(!!o);return o&&setTimeout(()=>{k.value=!1},o),n!=null&&setTimeout(()=>{if(!P.value&&!E.value){const _=new Error(`Async component timed out after ${n}ms.`);x(_),E.value=_}},n),m().then(()=>{P.value=!0,g.parent&&$l(g.parent.vnode)&&To(g.parent.update)}).catch(_=>{x(_),E.value=_}),()=>{if(P.value&&c)return Mi(c,g);if(E.value&&i)return oe(i,{error:E.value});if(l&&!k.value)return oe(l)}}})}function Mi(e,{vnode:{ref:t,props:l,children:i,shapeFlag:o},parent:n}){const a=oe(e,l,i);return a.ref=t,a}const $l=e=>e.type.__isKeepAlive;function cc(e,t){Wa(e,"a",t)}function hc(e,t){Wa(e,"da",t)}function Wa(e,t,l=Fe){const i=e.__wdc||(e.__wdc=()=>{let o=l;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Pi(t,i,l),l){let o=l.parent;for(;o&&o.parent;)$l(o.parent.vnode)&&dc(i,t,l,o),o=o.parent}}function dc(e,t,l,i){const o=Pi(t,e,i,!0);Li(()=>{go(i[t],o)},l)}function Pi(e,t,l=Fe,i=!1){if(l){const o=l[e]||(l[e]=[]),n=t.__weh||(t.__weh=(...a)=>{if(l.isUnmounted)return;ml(),hl(l);const r=lt(t,l,e,a);return Qt(),fl(),r});return i?o.unshift(n):o.push(n),n}}const yt=e=>(t,l=Fe)=>(!dl||e==="sp")&&Pi(e,t,l),Xa=yt("bm"),Je=yt("m"),uc=yt("bu"),pc=yt("u"),Yl=yt("bum"),Li=yt("um"),mc=yt("sp"),fc=yt("rtg"),gc=yt("rtc");function kc(e,t=Fe){Pi("ec",e,t)}function ci(e,t){const l=Ve;if(l===null)return e;const i=Ai(l)||l.proxy,o=e.dirs||(e.dirs=[]);for(let n=0;nt(a,r,void 0,n&&n[r]));else{const a=Object.keys(e);o=new Array(a.length);for(let r=0,s=a.length;rpi(t)?!(t.type===Ge||t.type===Pe&&!Ka(t.children)):!0)?e:null}const to=e=>e?rr(e)?Ai(e)||e.proxy:to(e.parent):null,hi=Se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>to(e.parent),$root:e=>to(e.root),$emit:e=>e.emit,$options:e=>Qa(e),$forceUpdate:e=>e.f||(e.f=()=>To(e.update)),$nextTick:e=>e.n||(e.n=jl.bind(e.proxy)),$watch:e=>ac.bind(e)}),_c={get({_:e},t){const{ctx:l,setupState:i,data:o,props:n,accessCache:a,type:r,appContext:s}=e;let c;if(t[0]!=="$"){const g=a[t];if(g!==void 0)switch(g){case 1:return i[t];case 2:return o[t];case 4:return l[t];case 3:return n[t]}else{if(i!==Ce&&de(i,t))return a[t]=1,i[t];if(o!==Ce&&de(o,t))return a[t]=2,o[t];if((c=e.propsOptions[0])&&de(c,t))return a[t]=3,n[t];if(l!==Ce&&de(l,t))return a[t]=4,l[t];lo&&(a[t]=0)}}const h=hi[t];let p,m;if(h)return t==="$attrs"&&Qe(e,"get",t),h(e);if((p=r.__cssModules)&&(p=p[t]))return p;if(l!==Ce&&de(l,t))return a[t]=4,l[t];if(m=s.config.globalProperties,de(m,t))return m[t]},set({_:e},t,l){const{data:i,setupState:o,ctx:n}=e;return o!==Ce&&de(o,t)?(o[t]=l,!0):i!==Ce&&de(i,t)?(i[t]=l,!0):de(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(n[t]=l,!0)},has({_:{data:e,setupState:t,accessCache:l,ctx:i,appContext:o,propsOptions:n}},a){let r;return!!l[a]||e!==Ce&&de(e,a)||t!==Ce&&de(t,a)||(r=n[0])&&de(r,a)||de(i,a)||de(hi,a)||de(o.config.globalProperties,a)},defineProperty(e,t,l){return l.get!=null?e._.accessCache[t]=0:de(l,"value")&&this.set(e,t,l.value,null),Reflect.defineProperty(e,t,l)}};let lo=!0;function yc(e){const t=Qa(e),l=e.proxy,i=e.ctx;lo=!1,t.beforeCreate&&rn(t.beforeCreate,e,"bc");const{data:o,computed:n,methods:a,watch:r,provide:s,inject:c,created:h,beforeMount:p,mounted:m,beforeUpdate:g,updated:x,activated:P,deactivated:E,beforeDestroy:k,beforeUnmount:_,destroyed:L,unmounted:H,render:U,renderTracked:ee,renderTriggered:w,errorCaptured:v,serverPrefetch:q,expose:B,inheritAttrs:G,components:C,directives:S,filters:F}=t;if(c&&xc(c,i,null,e.appContext.config.unwrapInjectedRef),a)for(const le in a){const se=a[le];ae(se)&&(i[le]=se.bind(l))}if(o){const le=o.call(l,l);Oe(le)&&(e.data=gl(le))}if(lo=!0,n)for(const le in n){const se=n[le],Ie=ae(se)?se.bind(l,l):ae(se.get)?se.get.bind(l,l):rt,Ne=!ae(se)&&ae(se.set)?se.set.bind(l):rt,Ue=Y({get:Ie,set:Ne});Object.defineProperty(i,le,{enumerable:!0,configurable:!0,get:()=>Ue.value,set:Ze=>Ue.value=Ze})}if(r)for(const le in r)Ga(r[le],i,l,le);if(s){const le=ae(s)?s.call(l):s;Reflect.ownKeys(le).forEach(se=>{Gt(se,le[se])})}h&&rn(h,e,"c");function j(le,se){te(se)?se.forEach(Ie=>le(Ie.bind(l))):se&&le(se.bind(l))}if(j(Xa,p),j(Je,m),j(uc,g),j(pc,x),j(cc,P),j(hc,E),j(kc,v),j(gc,ee),j(fc,w),j(Yl,_),j(Li,H),j(mc,q),te(B))if(B.length){const le=e.exposed||(e.exposed={});B.forEach(se=>{Object.defineProperty(le,se,{get:()=>l[se],set:Ie=>l[se]=Ie})})}else e.exposed||(e.exposed={});U&&e.render===rt&&(e.render=U),G!=null&&(e.inheritAttrs=G),C&&(e.components=C),S&&(e.directives=S)}function xc(e,t,l=rt,i=!1){te(e)&&(e=io(e));for(const o in e){const n=e[o];let a;Oe(n)?"default"in n?a=Me(n.from||o,n.default,!0):a=Me(n.from||o):a=Me(n),De(a)&&i?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>a.value,set:r=>a.value=r}):t[o]=a}}function rn(e,t,l){lt(te(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,l)}function Ga(e,t,l,i){const o=i.includes(".")?$a(l,i):()=>l[i];if(be(e)){const n=t[e];ae(n)&&dt(o,n)}else if(ae(e))dt(o,e.bind(l));else if(Oe(e))if(te(e))e.forEach(n=>Ga(n,t,l,i));else{const n=ae(e.handler)?e.handler.bind(l):t[e.handler];ae(n)&&dt(o,n,e)}}function Qa(e){const t=e.type,{mixins:l,extends:i}=t,{mixins:o,optionsCache:n,config:{optionMergeStrategies:a}}=e.appContext,r=n.get(t);let s;return r?s=r:!o.length&&!l&&!i?s=t:(s={},o.length&&o.forEach(c=>di(s,c,a,!0)),di(s,t,a)),n.set(t,s),s}function di(e,t,l,i=!1){const{mixins:o,extends:n}=t;n&&di(e,n,l,!0),o&&o.forEach(a=>di(e,a,l,!0));for(const a in t)if(!(i&&a==="expose")){const r=Ec[a]||l&&l[a];e[a]=r?r(e[a],t[a]):t[a]}return e}const Ec={data:sn,props:Yt,emits:Yt,methods:Yt,computed:Yt,beforeCreate:je,created:je,beforeMount:je,mounted:je,beforeUpdate:je,updated:je,beforeDestroy:je,beforeUnmount:je,destroyed:je,unmounted:je,activated:je,deactivated:je,errorCaptured:je,serverPrefetch:je,components:Yt,directives:Yt,watch:Rc,provide:sn,inject:Cc};function sn(e,t){return t?e?function(){return Se(ae(e)?e.call(this,this):e,ae(t)?t.call(this,this):t)}:t:e}function Cc(e,t){return Yt(io(e),io(t))}function io(e){if(te(e)){const t={};for(let l=0;l0)&&!(a&16)){if(a&8){const h=e.vnode.dynamicProps;for(let p=0;p{s=!0;const[m,g]=Za(p,t,!0);Se(a,m),g&&r.push(...g)};!l&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!n&&!s)return i.set(e,al),al;if(te(n))for(let h=0;h-1,g[1]=P<0||x-1||de(g,"default"))&&r.push(p)}}}const c=[a,r];return i.set(e,c),c}function cn(e){return e[0]!=="$"}function hn(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function dn(e,t){return hn(e)===hn(t)}function un(e,t){return te(t)?t.findIndex(l=>dn(l,e)):ae(t)&&dn(t,e)?0:-1}const er=e=>e[0]==="_"||e==="$stable",Ao=e=>te(e)?e.map(ot):[ot(e)],Tc=(e,t,l)=>{if(t._n)return t;const i=He((...o)=>Ao(t(...o)),l);return i._c=!1,i},tr=(e,t,l)=>{const i=e._ctx;for(const o in e){if(er(o))continue;const n=e[o];if(ae(n))t[o]=Tc(o,n,i);else if(n!=null){const a=Ao(n);t[o]=()=>a}}},lr=(e,t)=>{const l=Ao(t);e.slots.default=()=>l},Ac=(e,t)=>{if(e.vnode.shapeFlag&32){const l=t._;l?(e.slots=ke(t),ni(t,"_",l)):tr(t,e.slots={})}else e.slots={},t&&lr(e,t);ni(e.slots,Ti,1)},Ic=(e,t,l)=>{const{vnode:i,slots:o}=e;let n=!0,a=Ce;if(i.shapeFlag&32){const r=t._;r?l&&r===1?n=!1:(Se(o,t),!l&&r===1&&delete o._):(n=!t.$stable,tr(t,o)),a=t}else t&&(lr(e,t),a={default:1});if(n)for(const r in o)!er(r)&&!(r in a)&&delete o[r]};function ir(){return{app:null,config:{isNativeTag:as,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let wc=0;function Oc(e,t){return function(i,o=null){ae(i)||(i=Object.assign({},i)),o!=null&&!Oe(o)&&(o=null);const n=ir(),a=new Set;let r=!1;const s=n.app={_uid:wc++,_component:i,_props:o,_container:null,_context:n,_instance:null,version:Qc,get config(){return n.config},set config(c){},use(c,...h){return a.has(c)||(c&&ae(c.install)?(a.add(c),c.install(s,...h)):ae(c)&&(a.add(c),c(s,...h))),s},mixin(c){return n.mixins.includes(c)||n.mixins.push(c),s},component(c,h){return h?(n.components[c]=h,s):n.components[c]},directive(c,h){return h?(n.directives[c]=h,s):n.directives[c]},mount(c,h,p){if(!r){const m=oe(i,o);return m.appContext=n,h&&t?t(m,c):e(m,c,p),r=!0,s._container=c,c.__vue_app__=s,Ai(m.component)||m.component.proxy}},unmount(){r&&(e(null,s._container),delete s._container.__vue_app__)},provide(c,h){return n.provides[c]=h,s}};return s}}function ui(e,t,l,i,o=!1){if(te(e)){e.forEach((m,g)=>ui(m,t&&(te(t)?t[g]:t),l,i,o));return}if(cl(i)&&!o)return;const n=i.shapeFlag&4?Ai(i.component)||i.component.proxy:i.el,a=o?null:n,{i:r,r:s}=e,c=t&&t.r,h=r.refs===Ce?r.refs={}:r.refs,p=r.setupState;if(c!=null&&c!==s&&(be(c)?(h[c]=null,de(p,c)&&(p[c]=null)):De(c)&&(c.value=null)),ae(s))wt(s,r,12,[a,h]);else{const m=be(s),g=De(s);if(m||g){const x=()=>{if(e.f){const P=m?h[s]:s.value;o?te(P)&&go(P,n):te(P)?P.includes(n)||P.push(n):m?(h[s]=[n],de(p,s)&&(p[s]=h[s])):(s.value=[n],e.k&&(h[e.k]=s.value))}else m?(h[s]=a,de(p,s)&&(p[s]=a)):g&&(s.value=a,e.k&&(h[e.k]=a))};a?(x.id=-1,Be(x,l)):x()}}}let Et=!1;const Jl=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Zl=e=>e.nodeType===8;function Fc(e){const{mt:t,p:l,o:{patchProp:i,createText:o,nextSibling:n,parentNode:a,remove:r,insert:s,createComment:c}}=e,h=(k,_)=>{if(!_.hasChildNodes()){l(null,k,_),ri(),_._vnode=k;return}Et=!1,p(_.firstChild,k,null,null,null),ri(),_._vnode=k,Et&&console.error("Hydration completed but contains mismatches.")},p=(k,_,L,H,U,ee=!1)=>{const w=Zl(k)&&k.data==="[",v=()=>P(k,_,L,H,U,w),{type:q,ref:B,shapeFlag:G,patchFlag:C}=_,S=k.nodeType;_.el=k,C===-2&&(ee=!1,_.dynamicChildren=null);let F=null;switch(q){case Dl:S!==3?_.children===""?(s(_.el=o(""),a(k),k),F=k):F=v():(k.data!==_.children&&(Et=!0,k.data=_.children),F=n(k));break;case Ge:S!==8||w?F=v():F=n(k);break;case Ll:if(S!==1&&S!==3)F=v();else{F=k;const re=!_.children.length;for(let j=0;j<_.staticCount;j++)re&&(_.children+=F.nodeType===1?F.outerHTML:F.data),j===_.staticCount-1&&(_.anchor=F),F=n(F);return F}break;case Pe:w?F=x(k,_,L,H,U,ee):F=v();break;default:if(G&1)S!==1||_.type.toLowerCase()!==k.tagName.toLowerCase()?F=v():F=m(k,_,L,H,U,ee);else if(G&6){_.slotScopeIds=U;const re=a(k);if(t(_,re,null,L,H,Jl(re),ee),F=w?E(k):n(k),F&&Zl(F)&&F.data==="teleport end"&&(F=n(F)),cl(_)){let j;w?(j=oe(Pe),j.anchor=F?F.previousSibling:re.lastChild):j=k.nodeType===3?Mt(""):oe("div"),j.el=k,_.component.subTree=j}}else G&64?S!==8?F=v():F=_.type.hydrate(k,_,L,H,U,ee,e,g):G&128&&(F=_.type.hydrate(k,_,L,H,Jl(a(k)),U,ee,e,p))}return B!=null&&ui(B,null,H,_),F},m=(k,_,L,H,U,ee)=>{ee=ee||!!_.dynamicChildren;const{type:w,props:v,patchFlag:q,shapeFlag:B,dirs:G}=_,C=w==="input"&&G||w==="option";if(C||q!==-1){if(G&&ht(_,null,L,"created"),v)if(C||!ee||q&48)for(const F in v)(C&&F.endsWith("value")||Vl(F)&&!Cl(F))&&i(k,F,null,v[F],!1,void 0,L);else v.onClick&&i(k,"onClick",null,v.onClick,!1,void 0,L);let S;if((S=v&&v.onVnodeBeforeMount)&&tt(S,L,_),G&&ht(_,null,L,"beforeMount"),((S=v&&v.onVnodeMounted)||G)&&Na(()=>{S&&tt(S,L,_),G&&ht(_,null,L,"mounted")},H),B&16&&!(v&&(v.innerHTML||v.textContent))){let F=g(k.firstChild,_,k,L,H,U,ee);for(;F;){Et=!0;const re=F;F=F.nextSibling,r(re)}}else B&8&&k.textContent!==_.children&&(Et=!0,k.textContent=_.children)}return k.nextSibling},g=(k,_,L,H,U,ee,w)=>{w=w||!!_.dynamicChildren;const v=_.children,q=v.length;for(let B=0;B{const{slotScopeIds:w}=_;w&&(U=U?U.concat(w):w);const v=a(k),q=g(n(k),_,v,L,H,U,ee);return q&&Zl(q)&&q.data==="]"?n(_.anchor=q):(Et=!0,s(_.anchor=c("]"),v,q),q)},P=(k,_,L,H,U,ee)=>{if(Et=!0,_.el=null,ee){const q=E(k);for(;;){const B=n(k);if(B&&B!==q)r(B);else break}}const w=n(k),v=a(k);return r(k),l(null,_,v,w,L,H,Jl(v),U),w},E=k=>{let _=0;for(;k;)if(k=n(k),k&&Zl(k)&&(k.data==="["&&_++,k.data==="]")){if(_===0)return n(k);_--}return k};return[h,p]}const Be=Na;function zc(e){return Dc(e,Fc)}function Dc(e,t){const l=us();l.__VUE__=!0;const{insert:i,remove:o,patchProp:n,createElement:a,createText:r,createComment:s,setText:c,setElementText:h,parentNode:p,nextSibling:m,setScopeId:g=rt,cloneNode:x,insertStaticContent:P}=e,E=(u,f,y,A=null,T=null,z=null,$=!1,D=null,V=!!f.dynamicChildren)=>{if(u===f)return;u&&!Wt(u,f)&&(A=X(u),Ye(u,T,z,!0),u=null),f.patchFlag===-2&&(V=!1,f.dynamicChildren=null);const{type:I,ref:Q,shapeFlag:K}=f;switch(I){case Dl:k(u,f,y,A);break;case Ge:_(u,f,y,A);break;case Ll:u==null&&L(f,y,A,$);break;case Pe:S(u,f,y,A,T,z,$,D,V);break;default:K&1?ee(u,f,y,A,T,z,$,D,V):K&6?F(u,f,y,A,T,z,$,D,V):(K&64||K&128)&&I.process(u,f,y,A,T,z,$,D,V,_e)}Q!=null&&T&&ui(Q,u&&u.ref,z,f||u,!f)},k=(u,f,y,A)=>{if(u==null)i(f.el=r(f.children),y,A);else{const T=f.el=u.el;f.children!==u.children&&c(T,f.children)}},_=(u,f,y,A)=>{u==null?i(f.el=s(f.children||""),y,A):f.el=u.el},L=(u,f,y,A)=>{[u.el,u.anchor]=P(u.children,f,y,A,u.el,u.anchor)},H=({el:u,anchor:f},y,A)=>{let T;for(;u&&u!==f;)T=m(u),i(u,y,A),u=T;i(f,y,A)},U=({el:u,anchor:f})=>{let y;for(;u&&u!==f;)y=m(u),o(u),u=y;o(f)},ee=(u,f,y,A,T,z,$,D,V)=>{$=$||f.type==="svg",u==null?w(f,y,A,T,z,$,D,V):B(u,f,T,z,$,D,V)},w=(u,f,y,A,T,z,$,D)=>{let V,I;const{type:Q,props:K,shapeFlag:J,transition:ne,patchFlag:pe,dirs:xe}=u;if(u.el&&x!==void 0&&pe===-1)V=u.el=x(u.el);else{if(V=u.el=a(u.type,z,K&&K.is,K),J&8?h(V,u.children):J&16&&q(u.children,V,null,A,T,z&&Q!=="foreignObject",$,D),xe&&ht(u,null,A,"created"),K){for(const Le in K)Le!=="value"&&!Cl(Le)&&n(V,Le,null,K[Le],z,u.children,A,T,M);"value"in K&&n(V,"value",null,K.value),(I=K.onVnodeBeforeMount)&&tt(I,A,u)}v(V,u,u.scopeId,$,A)}xe&&ht(u,null,A,"beforeMount");const Ee=(!T||T&&!T.pendingBranch)&&ne&&!ne.persisted;Ee&&ne.beforeEnter(V),i(V,f,y),((I=K&&K.onVnodeMounted)||Ee||xe)&&Be(()=>{I&&tt(I,A,u),Ee&&ne.enter(V),xe&&ht(u,null,A,"mounted")},T)},v=(u,f,y,A,T)=>{if(y&&g(u,y),A)for(let z=0;z{for(let I=V;I{const D=f.el=u.el;let{patchFlag:V,dynamicChildren:I,dirs:Q}=f;V|=u.patchFlag&16;const K=u.props||Ce,J=f.props||Ce;let ne;y&&Nt(y,!1),(ne=J.onVnodeBeforeUpdate)&&tt(ne,y,f,u),Q&&ht(f,u,y,"beforeUpdate"),y&&Nt(y,!0);const pe=T&&f.type!=="foreignObject";if(I?G(u.dynamicChildren,I,D,y,A,pe,z):$||Ie(u,f,D,null,y,A,pe,z,!1),V>0){if(V&16)C(D,f,K,J,y,A,T);else if(V&2&&K.class!==J.class&&n(D,"class",null,J.class,T),V&4&&n(D,"style",K.style,J.style,T),V&8){const xe=f.dynamicProps;for(let Ee=0;Ee{ne&&tt(ne,y,f,u),Q&&ht(f,u,y,"updated")},A)},G=(u,f,y,A,T,z,$)=>{for(let D=0;D{if(y!==A){for(const D in A){if(Cl(D))continue;const V=A[D],I=y[D];V!==I&&D!=="value"&&n(u,D,I,V,$,f.children,T,z,M)}if(y!==Ce)for(const D in y)!Cl(D)&&!(D in A)&&n(u,D,y[D],null,$,f.children,T,z,M);"value"in A&&n(u,"value",y.value,A.value)}},S=(u,f,y,A,T,z,$,D,V)=>{const I=f.el=u?u.el:r(""),Q=f.anchor=u?u.anchor:r("");let{patchFlag:K,dynamicChildren:J,slotScopeIds:ne}=f;ne&&(D=D?D.concat(ne):ne),u==null?(i(I,y,A),i(Q,y,A),q(f.children,y,Q,T,z,$,D,V)):K>0&&K&64&&J&&u.dynamicChildren?(G(u.dynamicChildren,J,y,T,z,$,D),(f.key!=null||T&&f===T.subTree)&&or(u,f,!0)):Ie(u,f,y,Q,T,z,$,D,V)},F=(u,f,y,A,T,z,$,D,V)=>{f.slotScopeIds=D,u==null?f.shapeFlag&512?T.ctx.activate(f,y,A,$,V):re(f,y,A,T,z,$,V):j(u,f,V)},re=(u,f,y,A,T,z,$)=>{const D=u.component=Bc(u,A,T);if($l(u)&&(D.ctx.renderer=_e),Uc(D),D.asyncDep){if(T&&T.registerDep(D,le),!u.el){const V=D.subTree=oe(Ge);_(null,V,f,y)}return}le(D,u,f,y,T,z,$)},j=(u,f,y)=>{const A=f.component=u.component;if(ic(u,f,y))if(A.asyncDep&&!A.asyncResolved){se(A,f,y);return}else A.next=f,Qs(A.update),A.update();else f.el=u.el,A.vnode=f},le=(u,f,y,A,T,z,$)=>{const D=()=>{if(u.isMounted){let{next:Q,bu:K,u:J,parent:ne,vnode:pe}=u,xe=Q,Ee;Nt(u,!1),Q?(Q.el=pe.el,se(u,Q,$)):Q=pe,K&&Fi(K),(Ee=Q.props&&Q.props.onVnodeBeforeUpdate)&&tt(Ee,ne,Q,pe),Nt(u,!0);const Le=zi(u),it=u.subTree;u.subTree=Le,E(it,Le,p(it.el),X(it),u,T,z),Q.el=Le.el,xe===null&&oc(u,Le.el),J&&Be(J,T),(Ee=Q.props&&Q.props.onVnodeUpdated)&&Be(()=>tt(Ee,ne,Q,pe),T)}else{let Q;const{el:K,props:J}=f,{bm:ne,m:pe,parent:xe}=u,Ee=cl(f);if(Nt(u,!1),ne&&Fi(ne),!Ee&&(Q=J&&J.onVnodeBeforeMount)&&tt(Q,xe,f),Nt(u,!0),K&&ie){const Le=()=>{u.subTree=zi(u),ie(K,u.subTree,u,T,null)};Ee?f.type.__asyncLoader().then(()=>!u.isUnmounted&&Le()):Le()}else{const Le=u.subTree=zi(u);E(null,Le,y,A,u,T,z),f.el=Le.el}if(pe&&Be(pe,T),!Ee&&(Q=J&&J.onVnodeMounted)){const Le=f;Be(()=>tt(Q,xe,Le),T)}(f.shapeFlag&256||xe&&cl(xe.vnode)&&xe.vnode.shapeFlag&256)&&u.a&&Be(u.a,T),u.isMounted=!0,f=y=A=null}},V=u.effect=new _o(D,()=>To(I),u.scope),I=u.update=()=>V.run();I.id=u.uid,Nt(u,!0),I()},se=(u,f,y)=>{f.component=u;const A=u.vnode.props;u.vnode=f,u.next=null,Lc(u,f.props,A,y),Ic(u,f.children,y),ml(),Ci(void 0,u.update),fl()},Ie=(u,f,y,A,T,z,$,D,V=!1)=>{const I=u&&u.children,Q=u?u.shapeFlag:0,K=f.children,{patchFlag:J,shapeFlag:ne}=f;if(J>0){if(J&128){Ue(I,K,y,A,T,z,$,D,V);return}else if(J&256){Ne(I,K,y,A,T,z,$,D,V);return}}ne&8?(Q&16&&M(I,T,z),K!==I&&h(y,K)):Q&16?ne&16?Ue(I,K,y,A,T,z,$,D,V):M(I,T,z,!0):(Q&8&&h(y,""),ne&16&&q(K,y,A,T,z,$,D,V))},Ne=(u,f,y,A,T,z,$,D,V)=>{u=u||al,f=f||al;const I=u.length,Q=f.length,K=Math.min(I,Q);let J;for(J=0;JQ?M(u,T,z,!0,!1,K):q(f,y,A,T,z,$,D,V,K)},Ue=(u,f,y,A,T,z,$,D,V)=>{let I=0;const Q=f.length;let K=u.length-1,J=Q-1;for(;I<=K&&I<=J;){const ne=u[I],pe=f[I]=V?Lt(f[I]):ot(f[I]);if(Wt(ne,pe))E(ne,pe,y,null,T,z,$,D,V);else break;I++}for(;I<=K&&I<=J;){const ne=u[K],pe=f[J]=V?Lt(f[J]):ot(f[J]);if(Wt(ne,pe))E(ne,pe,y,null,T,z,$,D,V);else break;K--,J--}if(I>K){if(I<=J){const ne=J+1,pe=neJ)for(;I<=K;)Ye(u[I],T,z,!0),I++;else{const ne=I,pe=I,xe=new Map;for(I=pe;I<=J;I++){const We=f[I]=V?Lt(f[I]):ot(f[I]);We.key!=null&&xe.set(We.key,I)}let Ee,Le=0;const it=J-pe+1;let el=!1,Bo=0;const kl=new Array(it);for(I=0;I=it){Ye(We,T,z,!0);continue}let ct;if(We.key!=null)ct=xe.get(We.key);else for(Ee=pe;Ee<=J;Ee++)if(kl[Ee-pe]===0&&Wt(We,f[Ee])){ct=Ee;break}ct===void 0?Ye(We,T,z,!0):(kl[ct-pe]=I+1,ct>=Bo?Bo=ct:el=!0,E(We,f[ct],y,null,T,z,$,D,V),Le++)}const Uo=el?Mc(kl):al;for(Ee=Uo.length-1,I=it-1;I>=0;I--){const We=pe+I,ct=f[We],Wo=We+1{const{el:z,type:$,transition:D,children:V,shapeFlag:I}=u;if(I&6){Ze(u.component.subTree,f,y,A);return}if(I&128){u.suspense.move(f,y,A);return}if(I&64){$.move(u,f,y,_e);return}if($===Pe){i(z,f,y);for(let K=0;KD.enter(z),T);else{const{leave:K,delayLeave:J,afterLeave:ne}=D,pe=()=>i(z,f,y),xe=()=>{K(z,()=>{pe(),ne&&ne()})};J?J(z,pe,xe):xe()}else i(z,f,y)},Ye=(u,f,y,A=!1,T=!1)=>{const{type:z,props:$,ref:D,children:V,dynamicChildren:I,shapeFlag:Q,patchFlag:K,dirs:J}=u;if(D!=null&&ui(D,null,y,u,!0),Q&256){f.ctx.deactivate(u);return}const ne=Q&1&&J,pe=!cl(u);let xe;if(pe&&(xe=$&&$.onVnodeBeforeUnmount)&&tt(xe,f,u),Q&6)W(u.component,y,A);else{if(Q&128){u.suspense.unmount(y,A);return}ne&&ht(u,null,f,"beforeUnmount"),Q&64?u.type.remove(u,f,y,T,_e,A):I&&(z!==Pe||K>0&&K&64)?M(I,f,y,!1,!0):(z===Pe&&K&384||!T&&Q&16)&&M(V,f,y),A&&Vt(u)}(pe&&(xe=$&&$.onVnodeUnmounted)||ne)&&Be(()=>{xe&&tt(xe,f,u),ne&&ht(u,null,f,"unmounted")},y)},Vt=u=>{const{type:f,el:y,anchor:A,transition:T}=u;if(f===Pe){R(y,A);return}if(f===Ll){U(u);return}const z=()=>{o(y),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(u.shapeFlag&1&&T&&!T.persisted){const{leave:$,delayLeave:D}=T,V=()=>$(y,z);D?D(u.el,z,V):V()}else z()},R=(u,f)=>{let y;for(;u!==f;)y=m(u),o(u),u=y;o(f)},W=(u,f,y)=>{const{bum:A,scope:T,update:z,subTree:$,um:D}=u;A&&Fi(A),T.stop(),z&&(z.active=!1,Ye($,u,f,y)),D&&Be(D,f),Be(()=>{u.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},M=(u,f,y,A=!1,T=!1,z=0)=>{for(let $=z;$u.shapeFlag&6?X(u.component.subTree):u.shapeFlag&128?u.suspense.next():m(u.anchor||u.el),ge=(u,f,y)=>{u==null?f._vnode&&Ye(f._vnode,null,null,!0):E(f._vnode||null,u,f,null,null,null,y),ri(),f._vnode=u},_e={p:E,um:Ye,m:Ze,r:Vt,mt:re,mc:q,pc:Ie,pbc:G,n:X,o:e};let ce,ie;return t&&([ce,ie]=t(_e)),{render:ge,hydrate:ce,createApp:Oc(ge,ce)}}function Nt({effect:e,update:t},l){e.allowRecurse=t.allowRecurse=l}function or(e,t,l=!1){const i=e.children,o=t.children;if(te(i)&&te(o))for(let n=0;n>1,e[l[r]]0&&(t[i]=l[n-1]),l[n]=i)}}for(n=l.length,a=l[n-1];n-- >0;)l[n]=a,a=t[a];return l}const Hc=e=>e.__isTeleport,Pe=Symbol(void 0),Dl=Symbol(void 0),Ge=Symbol(void 0),Ll=Symbol(void 0),Tl=[];let at=null;function N(e=!1){Tl.push(at=e?null:[])}function Sc(){Tl.pop(),at=Tl[Tl.length-1]||null}let Ml=1;function pn(e){Ml+=e}function nr(e){return e.dynamicChildren=Ml>0?at||al:null,Sc(),Ml>0&&at&&at.push(e),e}function Z(e,t,l,i,o,n){return nr(fe(e,t,l,i,o,n,!0))}function we(e,t,l,i,o){return nr(oe(e,t,l,i,o,!0))}function pi(e){return e?e.__v_isVNode===!0:!1}function Wt(e,t){return e.type===t.type&&e.key===t.key}const Ti="__vInternal",ar=({key:e})=>e!=null?e:null,li=({ref:e,ref_key:t,ref_for:l})=>e!=null?be(e)||De(e)||ae(e)?{i:Ve,r:e,k:t,f:!!l}:e:null;function fe(e,t=null,l=null,i=0,o=null,n=e===Pe?0:1,a=!1,r=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ar(t),ref:t&&li(t),scopeId:Va,slotScopeIds:null,children:l,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:n,patchFlag:i,dynamicProps:o,dynamicChildren:null,appContext:null};return r?(Io(s,l),n&128&&e.normalize(s)):l&&(s.shapeFlag|=be(l)?8:16),Ml>0&&!a&&at&&(s.patchFlag>0||n&6)&&s.patchFlag!==32&&at.push(s),s}const oe=Vc;function Vc(e,t=null,l=null,i=0,o=null,n=!1){if((!e||e===vc)&&(e=Ge),pi(e)){const r=Dt(e,t,!0);return l&&Io(r,l),Ml>0&&!n&&at&&(r.shapeFlag&6?at[at.indexOf(e)]=r:at.push(r)),r.patchFlag|=-2,r}if(Gc(e)&&(e=e.__vccOpts),t){t=Nc(t);let{class:r,style:s}=t;r&&!be(r)&&(t.class=Ke(r)),Oe(s)&&(La(s)&&!te(s)&&(s=Se({},s)),t.style=Sl(s))}const a=be(e)?1:nc(e)?128:Hc(e)?64:Oe(e)?4:ae(e)?2:0;return fe(e,t,l,i,o,a,n,!0)}function Nc(e){return e?La(e)||Ti in e?Se({},e):e:null}function Dt(e,t,l=!1){const{props:i,ref:o,patchFlag:n,children:a}=e,r=t?no(i||{},t):i;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:r,key:r&&ar(r),ref:t&&t.ref?l&&o?te(o)?o.concat(li(t)):[o,li(t)]:li(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Pe?n===-1?16:n|16:n,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Dt(e.ssContent),ssFallback:e.ssFallback&&Dt(e.ssFallback),el:e.el,anchor:e.anchor}}function Mt(e=" ",t=0){return oe(Dl,null,e,t)}function jc(e,t){const l=oe(Ll,null,e);return l.staticCount=t,l}function Ae(e="",t=!1){return t?(N(),we(Ge,null,e)):oe(Ge,null,e)}function ot(e){return e==null||typeof e=="boolean"?oe(Ge):te(e)?oe(Pe,null,e.slice()):typeof e=="object"?Lt(e):oe(Dl,null,String(e))}function Lt(e){return e.el===null||e.memo?e:Dt(e)}function Io(e,t){let l=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(te(t))l=16;else if(typeof t=="object")if(i&65){const o=t.default;o&&(o._c&&(o._d=!1),Io(e,o()),o._c&&(o._d=!0));return}else{l=32;const o=t._;!o&&!(Ti in t)?t._ctx=Ve:o===3&&Ve&&(Ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:Ve},l=32):(t=String(t),i&64?(l=16,t=[Mt(t)]):l=8);e.children=t,e.shapeFlag|=l}function no(...e){const t={};for(let l=0;lFe||Ve,hl=e=>{Fe=e,e.scope.on()},Qt=()=>{Fe&&Fe.scope.off(),Fe=null};function rr(e){return e.vnode.shapeFlag&4}let dl=!1;function Uc(e,t=!1){dl=t;const{props:l,children:i}=e.vnode,o=rr(e);Pc(e,l,o,t),Ac(e,i);const n=o?Wc(e,t):void 0;return dl=!1,n}function Wc(e,t){const l=e.type;e.accessCache=Object.create(null),e.proxy=Ta(new Proxy(e.ctx,_c));const{setup:i}=l;if(i){const o=e.setupContext=i.length>1?qc(e):null;hl(e),ml();const n=wt(i,e,0,[e.props,o]);if(fl(),Qt(),pa(n)){if(n.then(Qt,Qt),t)return n.then(a=>{mn(e,a,t)}).catch(a=>{Nl(a,e,0)});e.asyncDep=n}else mn(e,n,t)}else sr(e,t)}function mn(e,t,l){ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Oe(t)&&(e.setupState=Fa(t)),sr(e,l)}let fn;function sr(e,t,l){const i=e.type;if(!e.render){if(!t&&fn&&!i.render){const o=i.template;if(o){const{isCustomElement:n,compilerOptions:a}=e.appContext.config,{delimiters:r,compilerOptions:s}=i,c=Se(Se({isCustomElement:n,delimiters:r},a),s);i.render=fn(o,c)}}e.render=i.render||rt}hl(e),ml(),yc(e),fl(),Qt()}function Xc(e){return new Proxy(e.attrs,{get(t,l){return Qe(e,"get","$attrs"),t[l]}})}function qc(e){const t=i=>{e.exposed=i||{}};let l;return{get attrs(){return l||(l=Xc(e))},slots:e.slots,emit:e.emit,expose:t}}function Ai(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Fa(Ta(e.exposed)),{get(t,l){if(l in t)return t[l];if(l in hi)return hi[l](e)}}))}function Kc(e,t=!0){return ae(e)?e.displayName||e.name:e.name||t&&e.__name}function Gc(e){return ae(e)&&"__vccOpts"in e}const Y=(e,t)=>qs(e,t,dl);function he(e,t,l){const i=arguments.length;return i===2?Oe(t)&&!te(t)?pi(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(i>3?l=Array.prototype.slice.call(arguments,2):i===3&&pi(l)&&(l=[l]),oe(e,t,l))}const Qc="3.2.37",Jc="http://www.w3.org/2000/svg",Xt=typeof document<"u"?document:null,gn=Xt&&Xt.createElement("template"),Zc={insert:(e,t,l)=>{t.insertBefore(e,l||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,l,i)=>{const o=t?Xt.createElementNS(Jc,e):Xt.createElement(e,l?{is:l}:void 0);return e==="select"&&i&&i.multiple!=null&&o.setAttribute("multiple",i.multiple),o},createText:e=>Xt.createTextNode(e),createComment:e=>Xt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,l,i,o,n){const a=l?l.previousSibling:t.lastChild;if(o&&(o===n||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),l),!(o===n||!(o=o.nextSibling)););else{gn.innerHTML=i?`${e}`:e;const r=gn.content;if(i){const s=r.firstChild;for(;s.firstChild;)r.appendChild(s.firstChild);r.removeChild(s)}t.insertBefore(r,l)}return[a?a.nextSibling:t.firstChild,l?l.previousSibling:t.lastChild]}};function eh(e,t,l){const i=e._vtc;i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):l?e.setAttribute("class",t):e.className=t}function th(e,t,l){const i=e.style,o=be(l);if(l&&!o){for(const n in l)ao(i,n,l[n]);if(t&&!be(t))for(const n in t)l[n]==null&&ao(i,n,"")}else{const n=i.display;o?t!==l&&(i.cssText=l):t&&e.removeAttribute("style"),"_vod"in e&&(i.display=n)}}const kn=/\s*!important$/;function ao(e,t,l){if(te(l))l.forEach(i=>ao(e,t,i));else if(l==null&&(l=""),t.startsWith("--"))e.setProperty(t,l);else{const i=lh(e,t);kn.test(l)?e.setProperty(Jt(i),l.replace(kn,""),"important"):e[i]=l}}const vn=["Webkit","Moz","ms"],Hi={};function lh(e,t){const l=Hi[t];if(l)return l;let i=ut(t);if(i!=="filter"&&i in e)return Hi[t]=i;i=yi(i);for(let o=0;o{let e=Date.now,t=!1;if(typeof window<"u"){Date.now()>document.createEvent("Event").timeStamp&&(e=performance.now.bind(performance));const l=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(l&&Number(l[1])<=53)}return[e,t]})();let ro=0;const ah=Promise.resolve(),rh=()=>{ro=0},sh=()=>ro||(ah.then(rh),ro=cr());function ch(e,t,l,i){e.addEventListener(t,l,i)}function hh(e,t,l,i){e.removeEventListener(t,l,i)}function dh(e,t,l,i,o=null){const n=e._vei||(e._vei={}),a=n[t];if(i&&a)a.value=i;else{const[r,s]=uh(t);if(i){const c=n[t]=ph(i,o);ch(e,r,c,s)}else a&&(hh(e,r,a,s),n[t]=void 0)}}const _n=/(?:Once|Passive|Capture)$/;function uh(e){let t;if(_n.test(e)){t={};let l;for(;l=e.match(_n);)e=e.slice(0,e.length-l[0].length),t[l[0].toLowerCase()]=!0}return[Jt(e.slice(2)),t]}function ph(e,t){const l=i=>{const o=i.timeStamp||cr();(nh||o>=l.attached-1)&<(mh(i,l.value),t,5,[i])};return l.value=e,l.attached=sh(),l}function mh(e,t){if(te(t)){const l=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{l.call(e),e._stopped=!0},t.map(i=>o=>!o._stopped&&i&&i(o))}else return t}const yn=/^on[a-z]/,fh=(e,t,l,i,o=!1,n,a,r,s)=>{t==="class"?eh(e,i,o):t==="style"?th(e,l,i):Vl(t)?fo(t)||dh(e,t,l,i,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):gh(e,t,i,o))?oh(e,t,i,n,a,r,s):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),ih(e,t,i,o))};function gh(e,t,l,i){return i?!!(t==="innerHTML"||t==="textContent"||t in e&&yn.test(t)&&ae(l)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||yn.test(t)&&be(l)?!1:t in e}const Ct="transition",vl="animation",Bl=(e,{slots:t})=>he(Ya,kh(e),t);Bl.displayName="Transition";const hr={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Bl.props=Se({},Ya.props,hr);const jt=(e,t=[])=>{te(e)?e.forEach(l=>l(...t)):e&&e(...t)},xn=e=>e?te(e)?e.some(t=>t.length>1):e.length>1:!1;function kh(e){const t={};for(const C in e)C in hr||(t[C]=e[C]);if(e.css===!1)return t;const{name:l="v",type:i,duration:o,enterFromClass:n=`${l}-enter-from`,enterActiveClass:a=`${l}-enter-active`,enterToClass:r=`${l}-enter-to`,appearFromClass:s=n,appearActiveClass:c=a,appearToClass:h=r,leaveFromClass:p=`${l}-leave-from`,leaveActiveClass:m=`${l}-leave-active`,leaveToClass:g=`${l}-leave-to`}=e,x=vh(o),P=x&&x[0],E=x&&x[1],{onBeforeEnter:k,onEnter:_,onEnterCancelled:L,onLeave:H,onLeaveCancelled:U,onBeforeAppear:ee=k,onAppear:w=_,onAppearCancelled:v=L}=t,q=(C,S,F)=>{$t(C,S?h:r),$t(C,S?c:a),F&&F()},B=(C,S)=>{C._isLeaving=!1,$t(C,p),$t(C,g),$t(C,m),S&&S()},G=C=>(S,F)=>{const re=C?w:_,j=()=>q(S,C,F);jt(re,[S,j]),En(()=>{$t(S,C?s:n),Rt(S,C?h:r),xn(re)||Cn(S,i,P,j)})};return Se(t,{onBeforeEnter(C){jt(k,[C]),Rt(C,n),Rt(C,a)},onBeforeAppear(C){jt(ee,[C]),Rt(C,s),Rt(C,c)},onEnter:G(!1),onAppear:G(!0),onLeave(C,S){C._isLeaving=!0;const F=()=>B(C,S);Rt(C,p),yh(),Rt(C,m),En(()=>{!C._isLeaving||($t(C,p),Rt(C,g),xn(H)||Cn(C,i,E,F))}),jt(H,[C,F])},onEnterCancelled(C){q(C,!1),jt(L,[C])},onAppearCancelled(C){q(C,!0),jt(v,[C])},onLeaveCancelled(C){B(C),jt(U,[C])}})}function vh(e){if(e==null)return null;if(Oe(e))return[Si(e.enter),Si(e.leave)];{const t=Si(e);return[t,t]}}function Si(e){return ga(e)}function Rt(e,t){t.split(/\s+/).forEach(l=>l&&e.classList.add(l)),(e._vtc||(e._vtc=new Set)).add(t)}function $t(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const{_vtc:l}=e;l&&(l.delete(t),l.size||(e._vtc=void 0))}function En(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let bh=0;function Cn(e,t,l,i){const o=e._endId=++bh,n=()=>{o===e._endId&&i()};if(l)return setTimeout(n,l);const{type:a,timeout:r,propCount:s}=_h(e,t);if(!a)return i();const c=a+"end";let h=0;const p=()=>{e.removeEventListener(c,m),n()},m=g=>{g.target===e&&++h>=s&&p()};setTimeout(()=>{h(l[x]||"").split(", "),o=i(Ct+"Delay"),n=i(Ct+"Duration"),a=Rn(o,n),r=i(vl+"Delay"),s=i(vl+"Duration"),c=Rn(r,s);let h=null,p=0,m=0;t===Ct?a>0&&(h=Ct,p=a,m=n.length):t===vl?c>0&&(h=vl,p=c,m=s.length):(p=Math.max(a,c),h=p>0?a>c?Ct:vl:null,m=h?h===Ct?n.length:s.length:0);const g=h===Ct&&/\b(transform|all)(,|$)/.test(l[Ct+"Property"]);return{type:h,timeout:p,propCount:m,hasTransform:g}}function Rn(e,t){for(;e.lengthPn(l)+Pn(e[i])))}function Pn(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function yh(){return document.body.offsetHeight}const xh={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Eh=(e,t)=>l=>{if(!("key"in l))return;const i=Jt(l.key);if(t.some(o=>o===i||xh[o]===i))return e(l)},mi={beforeMount(e,{value:t},{transition:l}){e._vod=e.style.display==="none"?"":e.style.display,l&&t?l.beforeEnter(e):bl(e,t)},mounted(e,{value:t},{transition:l}){l&&t&&l.enter(e)},updated(e,{value:t,oldValue:l},{transition:i}){!t!=!l&&(i?t?(i.beforeEnter(e),bl(e,!0),i.enter(e)):i.leave(e,()=>{bl(e,!1)}):bl(e,t))},beforeUnmount(e,{value:t}){bl(e,t)}};function bl(e,t){e.style.display=t?e._vod:"none"}const Ch=Se({patchProp:fh},Zc);let Vi,Ln=!1;function Rh(){return Vi=Ln?Vi:zc(Ch),Ln=!0,Vi}const Ph=(...e)=>{const t=Rh().createApp(...e),{mount:l}=t;return t.mount=i=>{const o=Lh(i);if(o)return l(o,!0,o instanceof SVGElement)},t};function Lh(e){return be(e)?document.querySelector(e):e}const Th=JSON.parse('{"base":"/YukiHookAPI/","lang":"en-US","title":"Yuki Hook API","description":"An efficient Hook API and Xposed Module solution built in Kotlin","head":[["link",{"rel":"icon","href":"/YukiHookAPI/images/logo.png"}]],"locales":{"/en/":{"lang":"en-US","description":"An efficient Hook API and Xposed Module solution built in Kotlin"},"/zh-cn/":{"lang":"zh-CN","description":"\u4E00\u4E2A\u4F7F\u7528 Kotlin \u6784\u5EFA\u7684\u9AD8\u6548 Hook API \u4E0E Xposed \u6A21\u5757\u89E3\u51B3\u65B9\u6848"}}}');var Ah=([e,t,l])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,l]),Ih=e=>{const t=new Set,l=[];return e.forEach(i=>{const o=Ah(i);t.has(o)||(t.add(o),l.push(i))}),l},Ul=e=>/^(https?:)?\/\//.test(e),wh=e=>/^mailto:/.test(e),Oh=e=>/^tel:/.test(e),Oo=e=>Object.prototype.toString.call(e)==="[object Object]",dr=e=>e.replace(/\/$/,""),ur=e=>e.replace(/^\//,""),pr=(e,t)=>{const l=Object.keys(e).sort((i,o)=>{const n=o.split("/").length-i.split("/").length;return n!==0?n:o.length-i.length});for(const i of l)if(t.startsWith(i))return i;return"/"};const mr={"v-8daa1a0e":b(()=>d(()=>import("./index.html.31e07320.js"),[])),"v-2d0a870d":b(()=>d(()=>import("./index.html.f0f27bc4.js"),[])),"v-c0c85b84":b(()=>d(()=>import("./index.html.41946e9a.js"),[])),"v-7a15fe3b":b(()=>d(()=>import("./about.html.034f0858.js"),[])),"v-3f851d14":b(()=>d(()=>import("./changelog.html.7afbf574.js"),[])),"v-193cf592":b(()=>d(()=>import("./contacts.html.899aae08.js"),[])),"v-ae7b83f2":b(()=>d(()=>import("./future.html.251947eb.js"),[])),"v-64fc7bb8":b(()=>d(()=>import("./home.html.7d61ac66.js"),[])),"v-9cfea7fc":b(()=>d(()=>import("./api-example.html.5d378137.js"),[])),"v-72c12b7d":b(()=>d(()=>import("./api-exception.html.b4555902.js"),[])),"v-793879e8":b(()=>d(()=>import("./api-using.html.d310aade.js"),[])),"v-29d6c1ba":b(()=>d(()=>import("./r8-proguard.html.5131f80f.js"),[])),"v-24e71de7":b(()=>d(()=>import("./xposed-using.html.a598f81c.js"),[])),"v-7b22efaf":b(()=>d(()=>import("./example.html.91ea9bcb.js"),[])),"v-efb45d4c":b(()=>d(()=>import("./home.html.ac409ba5.js"),[])),"v-277b35ca":b(()=>d(()=>import("./knowledge.html.7ecd85e3.js"),[])),"v-77d752a2":b(()=>d(()=>import("./move-to-new-api.html.5f979342.js"),[])),"v-72889797":b(()=>d(()=>import("./quick-start.html.76b24cc8.js"),[])),"v-55c11626":b(()=>d(()=>import("./yukihookapi-projectbuilder.html.456eae84.js"),[])),"v-41967128":b(()=>d(()=>import("./about.html.5d46b39b.js"),[])),"v-0e6c3476":b(()=>d(()=>import("./changelog.html.77be4f03.js"),[])),"v-6cf86266":b(()=>d(()=>import("./contacts.html.40847d5f.js"),[])),"v-3106ca14":b(()=>d(()=>import("./future.html.908e3916.js"),[])),"v-c8deafb2":b(()=>d(()=>import("./home.html.25bf27a6.js"),[])),"v-c6114c9e":b(()=>d(()=>import("./api-example.html.aaa425ed.js"),[])),"v-5b43296c":b(()=>d(()=>import("./api-exception.html.351ae9a9.js"),[])),"v-2ee67152":b(()=>d(()=>import("./api-using.html.c5d3a9df.js"),[])),"v-154d6f69":b(()=>d(()=>import("./r8-proguard.html.3439f0c8.js"),[])),"v-af73b3d0":b(()=>d(()=>import("./xposed-using.html.fc0bf539.js"),[])),"v-13b430a0":b(()=>d(()=>import("./example.html.924a858d.js"),[])),"v-6a609e09":b(()=>d(()=>import("./home.html.1a804f17.js"),[])),"v-b4f1a468":b(()=>d(()=>import("./knowledge.html.f3904542.js"),[])),"v-c0d5dada":b(()=>d(()=>import("./move-to-new-api.html.e590bd72.js"),[])),"v-24840ff0":b(()=>d(()=>import("./quick-start.html.eef1c464.js"),[])),"v-a2fab4d6":b(()=>d(()=>import("./yukihookapi-projectbuilder.html.e6c2ebba.js"),[])),"v-12042f1f":b(()=>d(()=>import("./host-inject.html.5909c2c8.js"),[])),"v-deaff1d0":b(()=>d(()=>import("./host-lifecycle.html.1731207d.js"),[])),"v-33c1dc26":b(()=>d(()=>import("./logger.html.cf3e4152.js"),[])),"v-581ddb9c":b(()=>d(()=>import("./reflection.html.6a421aa7.js"),[])),"v-2e6ad66c":b(()=>d(()=>import("./xposed-channel.html.b5cbb026.js"),[])),"v-68bebbf4":b(()=>d(()=>import("./xposed-storage.html.b1d42889.js"),[])),"v-6ac5be8e":b(()=>d(()=>import("./host-inject.html.78a8fae4.js"),[])),"v-357a8d49":b(()=>d(()=>import("./host-lifecycle.html.fd350138.js"),[])),"v-1f0f591e":b(()=>d(()=>import("./logger.html.e27e78a6.js"),[])),"v-001858e3":b(()=>d(()=>import("./reflection.html.2d61f274.js"),[])),"v-598546c6":b(()=>d(()=>import("./xposed-channel.html.66f480aa.js"),[])),"v-0d914225":b(()=>d(()=>import("./xposed-storage.html.db4237d4.js"),[])),"v-053599a5":b(()=>d(()=>import("./YukiHookAPI.html.f3b7f36f.js"),[])),"v-6931cb54":b(()=>d(()=>import("./YukiHookAPI.html.02608ebb.js"),[])),"v-818b3ca6":b(()=>d(()=>import("./InjectYukiHookWithXposed.html.fea16d37.js"),[])),"v-b6a815c4":b(()=>d(()=>import("./CurrentClass.html.5dcf9530.js"),[])),"v-0183e3fc":b(()=>d(()=>import("./GenericClass.html.f616491b.js"),[])),"v-57506200":b(()=>d(()=>import("./HookClass.html.eb6b15cd.js"),[])),"v-9af56c1a":b(()=>d(()=>import("./HookResources.html.ac6970af.js"),[])),"v-032b1710":b(()=>d(()=>import("./VariousClass.html.4f7e7b0e.js"),[])),"v-e288ce96":b(()=>d(()=>import("./YukiBaseHooker.html.1845cb7d.js"),[])),"v-71147891":b(()=>d(()=>import("./YukiMemberHookCreator.html.fd2e4afd.js"),[])),"v-5ed1ceee":b(()=>d(()=>import("./YukiResourcesHookCreator.html.6e9e4e4c.js"),[])),"v-0d0fcec2":b(()=>d(()=>import("./ReflectionFactory.html.7187b378.js"),[])),"v-65091354":b(()=>d(()=>import("./YukiHookFactory.html.e28a3356.js"),[])),"v-60cbe1b4":b(()=>d(()=>import("./HookParam.html.90ff717c.js"),[])),"v-b381a126":b(()=>d(()=>import("./PackageParam.html.b6f8e276.js"),[])),"v-30f3ba1e":b(()=>d(()=>import("./InjectYukiHookWithXposed.html.e7b82c22.js"),[])),"v-6e47300f":b(()=>d(()=>import("./CurrentClass.html.acca6892.js"),[])),"v-69c1c226":b(()=>d(()=>import("./GenericClass.html.88e7eecb.js"),[])),"v-735374af":b(()=>d(()=>import("./HookClass.html.9b59b543.js"),[])),"v-1c516d22":b(()=>d(()=>import("./HookResources.html.e3b4f06e.js"),[])),"v-66735bfe":b(()=>d(()=>import("./VariousClass.html.2a34064e.js"),[])),"v-36aec5ad":b(()=>d(()=>import("./LoggerFactory.html.f83822e7.js"),[])),"v-3ac40680":b(()=>d(()=>import("./YukiMemberHookCreator.html.bd4ce523.js"),[])),"v-5e81af42":b(()=>d(()=>import("./YukiResourcesHookCreator.html.e1a4f5ae.js"),[])),"v-516df326":b(()=>d(()=>import("./YukiBaseHooker.html.1fb6f12f.js"),[])),"v-213d88b3":b(()=>d(()=>import("./ReflectionFactory.html.04358924.js"),[])),"v-448e9585":b(()=>d(()=>import("./YukiHookFactory.html.37ac12f2.js"),[])),"v-004a009e":b(()=>d(()=>import("./LoggerFactory.html.25110f87.js"),[])),"v-75a9b636":b(()=>d(()=>import("./HookParam.html.7f4b3657.js"),[])),"v-100b529c":b(()=>d(()=>import("./PackageParam.html.0e757b95.js"),[])),"v-8293d958":b(()=>d(()=>import("./ComponentTypeFactory.html.b986f35a.js"),[])),"v-7b0abf86":b(()=>d(()=>import("./GraphicsTypeFactory.html.20526874.js"),[])),"v-5309e4a0":b(()=>d(()=>import("./ViewTypeFactory.html.2725bf5e.js"),[])),"v-a2615d0c":b(()=>d(()=>import("./DefinedTypeFactory.html.0b9fa893.js"),[])),"v-ba01a600":b(()=>d(()=>import("./VariableTypeFactory.html.2ddb5a02.js"),[])),"v-7fec5836":b(()=>d(()=>import("./ModuleApplication.html.29bf2738.js"),[])),"v-7414265a":b(()=>d(()=>import("./YukiHookDataChannel.html.1cc5ed97.js"),[])),"v-003862c2":b(()=>d(()=>import("./YukiHookModulePrefs.html.43739ce9.js"),[])),"v-1d680acc":b(()=>d(()=>import("./IYukiHookXposedInit.html.a1792104.js"),[])),"v-5e874c45":b(()=>d(()=>import("./ComponentTypeFactory.html.11aade0e.js"),[])),"v-4ea62475":b(()=>d(()=>import("./GraphicsTypeFactory.html.ecb0bd8d.js"),[])),"v-ef79cde2":b(()=>d(()=>import("./ViewTypeFactory.html.21b1295e.js"),[])),"v-5acc12ab":b(()=>d(()=>import("./DefinedTypeFactory.html.be1de716.js"),[])),"v-14ec8671":b(()=>d(()=>import("./VariableTypeFactory.html.4579f14b.js"),[])),"v-4709ad58":b(()=>d(()=>import("./ModuleApplication.html.a1f5afe7.js"),[])),"v-632be8ee":b(()=>d(()=>import("./YukiHookDataChannel.html.6c73dd59.js"),[])),"v-5858709e":b(()=>d(()=>import("./YukiHookModulePrefs.html.6829c06c.js"),[])),"v-763140ee":b(()=>d(()=>import("./IYukiHookXposedInit.html.215a36b4.js"),[])),"v-4fca92c0":b(()=>d(()=>import("./BaseFinder.html.8c619ce9.js"),[])),"v-2a898c66":b(()=>d(()=>import("./DexClassFinder.html.5f82f3de.js"),[])),"v-a71937aa":b(()=>d(()=>import("./ConstructorFinder.html.3569a905.js"),[])),"v-42e0f0ab":b(()=>d(()=>import("./FieldFinder.html.2eae76af.js"),[])),"v-a4aa4d00":b(()=>d(()=>import("./MethodFinder.html.4d9623fd.js"),[])),"v-19e7277e":b(()=>d(()=>import("./YukiXposedEvent.html.03a4729f.js"),[])),"v-8455e04e":b(()=>d(()=>import("./YukiModuleResources.html.0633c37d.js"),[])),"v-7b087cce":b(()=>d(()=>import("./YukiResForwarder.html.a2ed9341.js"),[])),"v-a00b4de6":b(()=>d(()=>import("./YukiResources.html.0da34e99.js"),[])),"v-2f64a2d4":b(()=>d(()=>import("./ChannelData.html.c27a7621.js"),[])),"v-87027140":b(()=>d(()=>import("./ChannelPriority.html.813db29c.js"),[])),"v-2d4e0da6":b(()=>d(()=>import("./ModuleClassLoader.html.1d43a5d2.js"),[])),"v-58ed8298":b(()=>d(()=>import("./PrefsData.html.dd2f7075.js"),[])),"v-23e1a817":b(()=>d(()=>import("./ModulePreferenceFragment.html.0446868f.js"),[])),"v-0f719471":b(()=>d(()=>import("./BaseFinder.html.fe72b61b.js"),[])),"v-45111efc":b(()=>d(()=>import("./DexClassFinder.html.1b24aa40.js"),[])),"v-1e2cbc9c":b(()=>d(()=>import("./ConstructorFinder.html.e96cece3.js"),[])),"v-22449c48":b(()=>d(()=>import("./FieldFinder.html.681fea0b.js"),[])),"v-fd738322":b(()=>d(()=>import("./MethodFinder.html.8836e5f6.js"),[])),"v-0a4de82f":b(()=>d(()=>import("./YukiXposedEvent.html.d826b927.js"),[])),"v-8266e0ec":b(()=>d(()=>import("./YukiModuleResources.html.18734c9b.js"),[])),"v-aa38fa86":b(()=>d(()=>import("./YukiResForwarder.html.0d8d1b84.js"),[])),"v-21b3b17e":b(()=>d(()=>import("./YukiResources.html.a3fd00f4.js"),[])),"v-493d37f6":b(()=>d(()=>import("./ChannelData.html.794ea796.js"),[])),"v-b57870de":b(()=>d(()=>import("./ChannelPriority.html.58169034.js"),[])),"v-4b468415":b(()=>d(()=>import("./ModuleClassLoader.html.e3fa4086.js"),[])),"v-d99f7f36":b(()=>d(()=>import("./PrefsData.html.003efeae.js"),[])),"v-53bcae06":b(()=>d(()=>import("./ModulePreferenceFragment.html.7cd637b0.js"),[])),"v-52995ef7":b(()=>d(()=>import("./CountRules.html.dc0369ea.js"),[])),"v-8d5ce71a":b(()=>d(()=>import("./ModifierRules.html.aaeaa7c2.js"),[])),"v-f5b1ffb2":b(()=>d(()=>import("./NameRules.html.17e009b7.js"),[])),"v-652b815b":b(()=>d(()=>import("./ObjectRules.html.94573ea1.js"),[])),"v-08b70f7f":b(()=>d(()=>import("./ConstructorRules.html.99f29679.js"),[])),"v-21f64ebf":b(()=>d(()=>import("./FieldRules.html.97be01a9.js"),[])),"v-77f11cf9":b(()=>d(()=>import("./MemberRules.html.c1fd5756.js"),[])),"v-64827680":b(()=>d(()=>import("./MethodRules.html.0d471f1d.js"),[])),"v-2d5d16db":b(()=>d(()=>import("./ModuleAppActivity.html.f3eec9eb.js"),[])),"v-cadbe48e":b(()=>d(()=>import("./ModuleAppCompatActivity.html.f41ef35e.js"),[])),"v-78731c50":b(()=>d(()=>import("./ModuleContextThemeWrapper.html.25f70921.js"),[])),"v-1b2ad030":b(()=>d(()=>import("./CountRules.html.d35cf62b.js"),[])),"v-547a3c3c":b(()=>d(()=>import("./ModifierRules.html.343e738e.js"),[])),"v-58c26516":b(()=>d(()=>import("./NameRules.html.a6cf68ea.js"),[])),"v-80fd32ec":b(()=>d(()=>import("./ObjectRules.html.77ec5864.js"),[])),"v-a42f54a4":b(()=>d(()=>import("./ConstructorRules.html.d4fa8cb3.js"),[])),"v-3e67a42e":b(()=>d(()=>import("./FieldRules.html.625313e0.js"),[])),"v-2cab152c":b(()=>d(()=>import("./MemberRules.html.7794296d.js"),[])),"v-5388621e":b(()=>d(()=>import("./MethodRules.html.5c90a284.js"),[])),"v-1446bdca":b(()=>d(()=>import("./ModuleAppActivity.html.94e8e6d9.js"),[])),"v-c7cef530":b(()=>d(()=>import("./ModuleAppCompatActivity.html.ba9dbba7.js"),[])),"v-44efb702":b(()=>d(()=>import("./ModuleContextThemeWrapper.html.1be57ca3.js"),[])),"v-5e375d98":b(()=>d(()=>import("./MemberRulesResult.html.31eda204.js"),[])),"v-b8000f3a":b(()=>d(()=>import("./MemberRulesResult.html.71b4402a.js"),[])),"v-3706649a":b(()=>d(()=>import("./404.html.13217b1e.js"),[]))};var Ht=(e={})=>e;function fr(e,t,l){var i,o,n;t===void 0&&(t=50),l===void 0&&(l={});var a=(i=l.isImmediate)!=null&&i,r=(o=l.callback)!=null&&o,s=l.maxWait,c=Date.now(),h=[];function p(){if(s!==void 0){var g=Date.now()-c;if(g+t>=s)return s-g}return t}var m=function(){var g=[].slice.call(arguments),x=this;return new Promise(function(P,E){var k=a&&n===void 0;if(n!==void 0&&clearTimeout(n),n=setTimeout(function(){if(n=void 0,c=Date.now(),!a){var L=e.apply(x,g);r&&r(L),h.forEach(function(H){return(0,H.resolve)(L)}),h=[]}},p()),k){var _=e.apply(x,g);return r&&r(_),P(_)}h.push({resolve:P,reject:E})})};return m.cancel=function(g){n!==void 0&&clearTimeout(n),h.forEach(function(x){return(0,x.reject)(g)}),h=[]},m}/*!
       * vue-router v4.1.5
       * (c) 2022 Eduardo San Martin Morote
       * @license MIT
    @@ -7,4 +7,4 @@ Expects a CSS selector, a Node element, a NodeList or an array.
     See: https://github.com/francoischalifour/medium-zoom`)}},Kd=function(t){var l=document.createElement("div");return l.classList.add("medium-zoom-overlay"),l.style.background=t,l},Gd=function(t){var l=t.getBoundingClientRect(),i=l.top,o=l.left,n=l.width,a=l.height,r=t.cloneNode(),s=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,c=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return r.removeAttribute("id"),r.style.position="absolute",r.style.top=i+s+"px",r.style.left=o+c+"px",r.style.width=n+"px",r.style.height=a+"px",r.style.transform="",r},ll=function(t,l){var i=Bt({bubbles:!1,cancelable:!1,detail:void 0},l);if(typeof window.CustomEvent=="function")return new CustomEvent(t,i);var o=document.createEvent("CustomEvent");return o.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),o},Qd=function e(t){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=window.Promise||function(C){function S(){}C(S,S)},o=function(C){var S=C.target;if(S===q){x();return}L.indexOf(S)!==-1&&P({target:S})},n=function(){if(!(U||!v.original)){var C=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(ee-C)>w.scrollOffset&&setTimeout(x,150)}},a=function(C){var S=C.key||C.keyCode;(S==="Escape"||S==="Esc"||S===27)&&x()},r=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},S=C;if(C.background&&(q.style.background=C.background),C.container&&C.container instanceof Object&&(S.container=Bt({},w.container,C.container)),C.template){var F=ii(C.template)?C.template:document.querySelector(C.template);S.template=F}return w=Bt({},w,S),L.forEach(function(re){re.dispatchEvent(ll("medium-zoom:update",{detail:{zoom:B}}))}),B},s=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e(Bt({},w,C))},c=function(){for(var C=arguments.length,S=Array(C),F=0;F0?S.reduce(function(j,le){return[].concat(j,Xn(le))},[]):L;return re.forEach(function(j){j.classList.remove("medium-zoom-image"),j.dispatchEvent(ll("medium-zoom:detach",{detail:{zoom:B}}))}),L=L.filter(function(j){return re.indexOf(j)===-1}),B},p=function(C,S){var F=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return L.forEach(function(re){re.addEventListener("medium-zoom:"+C,S,F)}),H.push({type:"medium-zoom:"+C,listener:S,options:F}),B},m=function(C,S){var F=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return L.forEach(function(re){re.removeEventListener("medium-zoom:"+C,S,F)}),H=H.filter(function(re){return!(re.type==="medium-zoom:"+C&&re.listener.toString()===S.toString())}),B},g=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},S=C.target,F=function(){var j={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},le=void 0,se=void 0;if(w.container)if(w.container instanceof Object)j=Bt({},j,w.container),le=j.width-j.left-j.right-w.margin*2,se=j.height-j.top-j.bottom-w.margin*2;else{var Ie=ii(w.container)?w.container:document.querySelector(w.container),Ne=Ie.getBoundingClientRect(),Ue=Ne.width,Ze=Ne.height,Ye=Ne.left,Vt=Ne.top;j=Bt({},j,{width:Ue,height:Ze,left:Ye,top:Vt})}le=le||j.width-w.margin*2,se=se||j.height-w.margin*2;var R=v.zoomedHd||v.original,W=Wn(R)?le:R.naturalWidth||le,M=Wn(R)?se:R.naturalHeight||se,X=R.getBoundingClientRect(),ge=X.top,_e=X.left,ce=X.width,ie=X.height,u=Math.min(W,le)/ce,f=Math.min(M,se)/ie,y=Math.min(u,f),A=(-_e+(le-ce)/2+w.margin+j.left)/y,T=(-ge+(se-ie)/2+w.margin+j.top)/y,z="scale("+y+") translate3d("+A+"px, "+T+"px, 0)";v.zoomed.style.transform=z,v.zoomedHd&&(v.zoomedHd.style.transform=z)};return new i(function(re){if(S&&L.indexOf(S)===-1){re(B);return}var j=function Ue(){U=!1,v.zoomed.removeEventListener("transitionend",Ue),v.original.dispatchEvent(ll("medium-zoom:opened",{detail:{zoom:B}})),re(B)};if(v.zoomed){re(B);return}if(S)v.original=S;else if(L.length>0){var le=L;v.original=le[0]}else{re(B);return}if(v.original.dispatchEvent(ll("medium-zoom:open",{detail:{zoom:B}})),ee=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,U=!0,v.zoomed=Gd(v.original),document.body.appendChild(q),w.template){var se=ii(w.template)?w.template:document.querySelector(w.template);v.template=document.createElement("div"),v.template.appendChild(se.content.cloneNode(!0)),document.body.appendChild(v.template)}if(document.body.appendChild(v.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),v.original.classList.add("medium-zoom-image--hidden"),v.zoomed.classList.add("medium-zoom-image--opened"),v.zoomed.addEventListener("click",x),v.zoomed.addEventListener("transitionend",j),v.original.getAttribute("data-zoom-src")){v.zoomedHd=v.zoomed.cloneNode(),v.zoomedHd.removeAttribute("srcset"),v.zoomedHd.removeAttribute("sizes"),v.zoomedHd.src=v.zoomed.getAttribute("data-zoom-src"),v.zoomedHd.onerror=function(){clearInterval(Ie),console.warn("Unable to reach the zoom image target "+v.zoomedHd.src),v.zoomedHd=null,F()};var Ie=setInterval(function(){v.zoomedHd.complete&&(clearInterval(Ie),v.zoomedHd.classList.add("medium-zoom-image--opened"),v.zoomedHd.addEventListener("click",x),document.body.appendChild(v.zoomedHd),F())},10)}else if(v.original.hasAttribute("srcset")){v.zoomedHd=v.zoomed.cloneNode(),v.zoomedHd.removeAttribute("sizes"),v.zoomedHd.removeAttribute("loading");var Ne=v.zoomedHd.addEventListener("load",function(){v.zoomedHd.removeEventListener("load",Ne),v.zoomedHd.classList.add("medium-zoom-image--opened"),v.zoomedHd.addEventListener("click",x),document.body.appendChild(v.zoomedHd),F()})}else F()})},x=function(){return new i(function(C){if(U||!v.original){C(B);return}var S=function F(){v.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(v.zoomed),v.zoomedHd&&document.body.removeChild(v.zoomedHd),document.body.removeChild(q),v.zoomed.classList.remove("medium-zoom-image--opened"),v.template&&document.body.removeChild(v.template),U=!1,v.zoomed.removeEventListener("transitionend",F),v.original.dispatchEvent(ll("medium-zoom:closed",{detail:{zoom:B}})),v.original=null,v.zoomed=null,v.zoomedHd=null,v.template=null,C(B)};U=!0,document.body.classList.remove("medium-zoom--opened"),v.zoomed.style.transform="",v.zoomedHd&&(v.zoomedHd.style.transform=""),v.template&&(v.template.style.transition="opacity 150ms",v.template.style.opacity=0),v.original.dispatchEvent(ll("medium-zoom:close",{detail:{zoom:B}})),v.zoomed.addEventListener("transitionend",S)})},P=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},S=C.target;return v.original?x():g({target:S})},E=function(){return w},k=function(){return L},_=function(){return v.original},L=[],H=[],U=!1,ee=0,w=l,v={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(t)==="[object Object]"?w=t:(t||typeof t=="string")&&c(t),w=Bt({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},w);var q=Kd(w.background);document.addEventListener("click",o),document.addEventListener("keyup",a),document.addEventListener("scroll",n),window.addEventListener("resize",x);var B={open:g,close:x,toggle:P,update:r,clone:s,attach:c,detach:h,on:p,off:m,getOptions:E,getImages:k,getZoomedImage:_};return B};function Jd(e,t){t===void 0&&(t={});var l=t.insertAt;if(!(!e||typeof document>"u")){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",l==="top"&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var Zd=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";Jd(Zd);const eu=Qd,tu=Symbol("mediumZoom");const lu=".theme-default-content > img, .theme-default-content :not(a) > img",iu={},ou=300,nu=Ht({enhance({app:e,router:t}){const l=eu(iu);l.refresh=(i=lu)=>{l.detach(),l.attach(i)},e.provide(tu,l),t.afterEach(()=>{setTimeout(()=>l.refresh(),ou)})}});/**
      * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
      * @license MIT
    - */const me={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
    '},status:null,set:e=>{const t=me.isStarted();e=Yi(e,me.settings.minimum,1),me.status=e===1?null:e;const l=me.render(!t),i=l.querySelector(me.settings.barSelector),o=me.settings.speed,n=me.settings.easing;return l.offsetWidth,au(a=>{ti(i,{transform:"translate3d("+qn(e)+"%,0,0)",transition:"all "+o+"ms "+n}),e===1?(ti(l,{transition:"none",opacity:"1"}),l.offsetWidth,setTimeout(function(){ti(l,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){me.remove(),a()},o)},o)):setTimeout(()=>a(),o)}),me},isStarted:()=>typeof me.status=="number",start:()=>{me.status||me.set(0);const e=()=>{setTimeout(()=>{!me.status||(me.trickle(),e())},me.settings.trickleSpeed)};return me.settings.trickle&&e(),me},done:e=>!e&&!me.status?me:me.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=me.status;return t?(typeof e!="number"&&(e=(1-t)*Yi(Math.random()*t,.1,.95)),t=Yi(t+e,0,.994),me.set(t)):me.start()},trickle:()=>me.inc(Math.random()*me.settings.trickleRate),render:e=>{if(me.isRendered())return document.getElementById("nprogress");Kn(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=me.settings.template;const l=t.querySelector(me.settings.barSelector),i=e?"-100":qn(me.status||0),o=document.querySelector(me.settings.parent);return ti(l,{transition:"all 0 linear",transform:"translate3d("+i+"%,0,0)"}),o!==document.body&&Kn(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{Gn(document.documentElement,"nprogress-busy"),Gn(document.querySelector(me.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&ru(e)},isRendered:()=>!!document.getElementById("nprogress")},Yi=(e,t,l)=>el?l:e,qn=e=>(-1+e)*100,au=function(){const e=[];function t(){const l=e.shift();l&&l(t)}return function(l){e.push(l),e.length===1&&t()}}(),ti=function(){const e=["Webkit","O","Moz","ms"],t={};function l(a){return a.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(r,s){return s.toUpperCase()})}function i(a){const r=document.body.style;if(a in r)return a;let s=e.length;const c=a.charAt(0).toUpperCase()+a.slice(1);let h;for(;s--;)if(h=e[s]+c,h in r)return h;return a}function o(a){return a=l(a),t[a]||(t[a]=i(a))}function n(a,r,s){r=o(r),a.style[r]=s}return function(a,r){for(const s in r){const c=r[s];c!==void 0&&Object.prototype.hasOwnProperty.call(r,s)&&n(a,s,c)}}}(),Lr=(e,t)=>(typeof e=="string"?e:Do(e)).indexOf(" "+t+" ")>=0,Kn=(e,t)=>{const l=Do(e),i=l+t;Lr(l,t)||(e.className=i.substring(1))},Gn=(e,t)=>{const l=Do(e);if(!Lr(e,t))return;const i=l.replace(" "+t+" "," ");e.className=i.substring(1,i.length-1)},Do=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),ru=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const su=()=>{Je(()=>{const e=Zt(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(l=>{t.has(l.path)||me.start()}),e.afterEach(l=>{t.add(l.path),me.done()})})},cu=Ht({setup(){su()}}),hu=JSON.parse(`{"logo":"/images/logo.png","repo":"https://github.com/fankes/YukiHookAPI","docsRepo":"https://github.com/fankes/YukiHookAPI","docsBranch":"master","docsDir":"docs-source/src","editLinkPattern":":repo/edit/:branch/:path","sidebar":{"/en/":[{"text":"Get Started","collapsible":true,"children":["/en/guide/home","/en/guide/knowledge","/en/guide/quick-start","/en/guide/example","/en/guide/move-to-new-api"]},{"text":"Configs","collapsible":true,"children":["/en/config/api-example","/en/config/api-exception","/en/config/xposed-using","/en/config/api-using","/en/config/r8-proguard"]},{"text":"Tools","collapsible":true,"children":["/en/tools/yukihookapi-projectbuilder"]},{"text":"API Document","collapsible":true,"children":["/en/api/home",{"text":"Public API\xA0","collapsible":true,"children":["/en/api/public/com/highcapable/yukihookapi/YukiHookAPI","/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam","/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam","/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed","/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority","/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory","/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory","/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory","/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources"]},{"text":"Special Features\xA0","collapsible":true,"children":["/en/api/special-features/reflection","/en/api/special-features/logger","/en/api/special-features/xposed-storage","/en/api/special-features/xposed-channel","/en/api/special-features/host-lifecycle","/en/api/special-features/host-inject"]}]},{"text":"About","collapsible":true,"children":["/en/about/changelog","/en/about/future","/en/about/contacts","/en/about/about"]}],"/zh-cn/":[{"text":"\u5165\u95E8","collapsible":true,"children":["/zh-cn/guide/home","/zh-cn/guide/knowledge","/zh-cn/guide/quick-start","/zh-cn/guide/example","/zh-cn/guide/move-to-new-api"]},{"text":"\u914D\u7F6E","collapsible":true,"children":["/zh-cn/config/api-example","/zh-cn/config/api-exception","/zh-cn/config/xposed-using","/zh-cn/config/api-using","/zh-cn/config/r8-proguard"]},{"text":"\u5DE5\u5177","collapsible":true,"children":["/zh-cn/tools/yukihookapi-projectbuilder"]},{"text":"API \u6587\u6863","collapsible":true,"children":["/zh-cn/api/home",{"text":"Public API\xA0","collapsible":true,"children":["/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam","/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources"]},{"text":"\u7279\u8272\u529F\u80FD\xA0","collapsible":true,"children":["/zh-cn/api/special-features/reflection","/zh-cn/api/special-features/logger","/zh-cn/api/special-features/xposed-storage","/zh-cn/api/special-features/xposed-channel","/zh-cn/api/special-features/host-lifecycle","/zh-cn/api/special-features/host-inject"]}]},{"text":"\u5173\u4E8E","collapsible":true,"children":["/zh-cn/about/changelog","/zh-cn/about/future","/zh-cn/about/contacts","/zh-cn/about/about"]}]},"sidebarDepth":2,"locales":{"/en/":{"navbar":[{"text":"Navigation","children":[{"text":"Get Started","children":[{"text":"Introduce","link":"/en/guide/home"},{"text":"Basic Knowledge","link":"/en/guide/knowledge"},{"text":"Quick Start","link":"/en/guide/quick-start"},{"text":"Usage Example","link":"/en/guide/example"},{"text":"Migrate from Xposed API","link":"/en/guide/move-to-new-api"}]},{"text":"Configs","children":[{"text":"API Basic Configs","link":"/en/config/api-example"},{"text":"API Exception Handling","link":"/en/config/api-exception"},{"text":"Use as Xposed Module Configs","link":"/en/config/xposed-using"},{"text":"Use as Hook API Configs","link":"/en/config/api-using"},{"text":"R8 & Proguard Obfuscate","link":"/en/config/r8-proguard"}]},{"text":"Tools","children":[{"text":"YukiHookAPI Project Builder","link":"/en/tools/yukihookapi-projectbuilder"}]},{"text":"API Document","children":[{"text":"Document Introduction","link":"/en/api/home"},{"text":"Public API","link":"/en/api/public/com/highcapable/yukihookapi/YukiHookAPI","activeMatch":"/en/api/public/"},{"text":"Special Features","link":"/en/api/special-features/reflection","activeMatch":"/en/api/special-features/"}]},{"text":"About","children":[{"text":"Changelog","link":"/en/about/changelog"},{"text":"Looking for Future","link":"/en/about/future"},{"text":"Contact Us","link":"/en/about/contacts"},{"text":"About this Document","link":"/en/about/about"}]}]},{"text":"Contact Us","link":"/en/about/contacts"}],"selectLanguageText":"English (US)","selectLanguageName":"English","editLinkText":"Edit this page on Github","tip":"Tips","warning":"Notice","danger":"Pay Attention"},"/zh-cn/":{"navbar":[{"text":"\u5BFC\u822A","children":[{"text":"\u5165\u95E8","children":[{"text":"\u4ECB\u7ECD","link":"/zh-cn/guide/home"},{"text":"\u57FA\u7840\u77E5\u8BC6","link":"/zh-cn/guide/knowledge"},{"text":"\u5FEB\u901F\u5F00\u59CB","link":"/zh-cn/guide/quick-start"},{"text":"\u7528\u6CD5\u793A\u4F8B","link":"/zh-cn/guide/example"},{"text":"\u4ECE Xposed API \u8FC1\u79FB","link":"/zh-cn/guide/move-to-new-api"}]},{"text":"\u914D\u7F6E","children":[{"text":"API \u57FA\u672C\u914D\u7F6E","link":"/zh-cn/config/api-example"},{"text":"API \u5F02\u5E38\u5904\u7406","link":"/zh-cn/config/api-exception"},{"text":"\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E","link":"/zh-cn/config/xposed-using"},{"text":"\u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E","link":"/zh-cn/config/api-using"},{"text":"R8 \u4E0E Proguard \u6DF7\u6DC6","link":"/zh-cn/config/r8-proguard"}]},{"text":"\u5DE5\u5177","children":[{"text":"YukiHookAPI \u6784\u5EFA\u5DE5\u5177","link":"/zh-cn/tools/yukihookapi-projectbuilder"}]},{"text":"API \u6587\u6863","children":[{"text":"\u6587\u6863\u4ECB\u7ECD","link":"/zh-cn/api/home"},{"text":"Public API","link":"/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI","activeMatch":"/zh-cn/api/public/"},{"text":"\u7279\u8272\u529F\u80FD","link":"/zh-cn/api/special-features/reflection","activeMatch":"/zh-cn/api/special-features/"}]},{"text":"\u5173\u4E8E","children":[{"text":"\u66F4\u65B0\u65E5\u5FD7","link":"/zh-cn/about/changelog"},{"text":"\u5C55\u671B\u672A\u6765","link":"/zh-cn/about/future"},{"text":"\u8054\u7CFB\u6211\u4EEC","link":"/zh-cn/about/contacts"},{"text":"\u5173\u4E8E\u6B64\u6587\u6863","link":"/zh-cn/about/about"}]}]},{"text":"\u8054\u7CFB\u6211\u4EEC","link":"/zh-cn/about/contacts"}],"selectLanguageText":"\u7B80\u4F53\u4E2D\u6587 (CN)","selectLanguageName":"\u7B80\u4F53\u4E2D\u6587","editLinkText":"\u5728 Github \u4E0A\u7F16\u8F91\u6B64\u9875","notFound":["\u8FD9\u91CC\u4EC0\u4E48\u90FD\u6CA1\u6709","\u6211\u4EEC\u600E\u4E48\u5230\u8FD9\u6765\u4E86\uFF1F","\u8FD9\u662F\u4E00\u4E2A 404 \u9875\u9762","\u770B\u8D77\u6765\u6211\u4EEC\u8FDB\u5165\u4E86\u9519\u8BEF\u7684\u94FE\u63A5"],"backToHome":"\u56DE\u5230\u9996\u9875","contributorsText":"\u8D21\u732E\u8005","lastUpdatedText":"\u4E0A\u6B21\u66F4\u65B0","tip":"\u5C0F\u63D0\u793A","warning":"\u6CE8\u610F","danger":"\u7279\u522B\u6CE8\u610F","openInNewWindow":"\u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00","toggleColorMode":"\u5207\u6362\u989C\u8272\u6A21\u5F0F"},"/":{"selectLanguageName":"English"}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),Tr=ye(hu),du=()=>Tr;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updateThemeData=e=>{Tr.value=e});const Ar=Symbol(""),uu=()=>{const e=Me(Ar);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},pu=(e,t)=>{var l;return{...e,...(l=e.locales)==null?void 0:l[t]}},mu=Ht({enhance({app:e}){const t=du(),l=e._context.provides[No],i=Y(()=>pu(t.value,l.value));e.provide(Ar,i),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return i.value}}})}}),fu=ue({__name:"Badge",props:{type:{type:String,required:!1,default:"tip"},text:{type:String,required:!1,default:""},vertical:{type:String,required:!1,default:void 0}},setup(e){return(t,l)=>(N(),Z("span",{class:Ke(["badge",e.type]),style:Sl({verticalAlign:e.vertical})},[Re(t.$slots,"default",{},()=>[Mt(ze(e.text),1)])],6))}}),Te=(e,t)=>{const l=e.__vccOpts||e;for(const[i,o]of t)l[i]=o;return l},gu=Te(fu,[["__file","Badge.vue"]]),ku=ue({name:"CodeGroup",setup(e,{slots:t}){const l=ye(-1),i=ye([]),o=(r=l.value)=>{r{r>0?l.value=r-1:l.value=i.value.length-1,i.value[l.value].focus()},a=(r,s)=>{r.key===" "||r.key==="Enter"?(r.preventDefault(),l.value=s):r.key==="ArrowRight"?(r.preventDefault(),o(s)):r.key==="ArrowLeft"&&(r.preventDefault(),n(s))};return()=>{var s;const r=(((s=t.default)==null?void 0:s.call(t))||[]).filter(c=>c.type.name==="CodeGroupItem").map(c=>(c.props===null&&(c.props={}),c));return r.length===0?null:(l.value<0||l.value>r.length-1?(l.value=r.findIndex(c=>c.props.active===""||c.props.active===!0),l.value===-1&&(l.value=0)):r.forEach((c,h)=>{c.props.active=h===l.value}),he("div",{class:"code-group"},[he("div",{class:"code-group__nav"},he("ul",{class:"code-group__ul"},r.map((c,h)=>{const p=h===l.value;return he("li",{class:"code-group__li"},he("button",{ref:m=>{m&&(i.value[h]=m)},class:{"code-group__nav-tab":!0,"code-group__nav-tab-active":p},ariaPressed:p,ariaExpanded:p,onClick:()=>l.value=h,onKeydown:m=>a(m,h)},c.props.title))}))),r]))}}}),vu=["aria-selected"],bu=ue({name:"CodeGroupItem"}),_u=ue({...bu,props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},setup(e){return(t,l)=>(N(),Z("div",{class:Ke(["code-group-item",{"code-group-item__active":e.active}]),"aria-selected":e.active},[Re(t.$slots,"default")],10,vu))}}),yu=Te(_u,[["__file","CodeGroupItem.vue"]]);var Qn;const Ir=typeof window<"u",xu=e=>typeof e=="function",Eu=e=>typeof e=="string",Bi=()=>{};Ir&&((Qn=window==null?void 0:window.navigator)==null?void 0:Qn.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function gi(e){return typeof e=="function"?e():O(e)}function Cu(e,t){function l(...i){e(()=>t.apply(this,i),{fn:t,thisArg:this,args:i})}return l}const wr=e=>e();function Ru(e=wr){const t=ye(!0);function l(){t.value=!1}function i(){t.value=!0}return{isActive:t,pause:l,resume:i,eventFilter:(...n)=>{t.value&&e(...n)}}}function Pu(e){return e}function Or(e){return fs()?(gs(e),!0):!1}function Lu(e,t=!0){wo()?Xa(e):t?e():jl(e)}function Tu(e,t=!0){wo()?Je(e):t?e():jl(e)}function Au(e=!1,t={}){const{truthyValue:l=!0,falsyValue:i=!1}=t,o=De(e),n=ye(e);function a(r){if(arguments.length)return n.value=r,n.value;{const s=gi(l);return n.value=n.value===s?gi(i):s,n.value}}return o?a:[n,a]}var Jn=Object.getOwnPropertySymbols,Iu=Object.prototype.hasOwnProperty,wu=Object.prototype.propertyIsEnumerable,Ou=(e,t)=>{var l={};for(var i in e)Iu.call(e,i)&&t.indexOf(i)<0&&(l[i]=e[i]);if(e!=null&&Jn)for(var i of Jn(e))t.indexOf(i)<0&&wu.call(e,i)&&(l[i]=e[i]);return l};function Fu(e,t,l={}){const i=l,{eventFilter:o=wr}=i,n=Ou(i,["eventFilter"]);return dt(e,Cu(o,t),n)}var zu=Object.defineProperty,Du=Object.defineProperties,Mu=Object.getOwnPropertyDescriptors,ki=Object.getOwnPropertySymbols,Fr=Object.prototype.hasOwnProperty,zr=Object.prototype.propertyIsEnumerable,Zn=(e,t,l)=>t in e?zu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,Hu=(e,t)=>{for(var l in t||(t={}))Fr.call(t,l)&&Zn(e,l,t[l]);if(ki)for(var l of ki(t))zr.call(t,l)&&Zn(e,l,t[l]);return e},Su=(e,t)=>Du(e,Mu(t)),Vu=(e,t)=>{var l={};for(var i in e)Fr.call(e,i)&&t.indexOf(i)<0&&(l[i]=e[i]);if(e!=null&&ki)for(var i of ki(e))t.indexOf(i)<0&&zr.call(e,i)&&(l[i]=e[i]);return l};function Nu(e,t,l={}){const i=l,{eventFilter:o}=i,n=Vu(i,["eventFilter"]),{eventFilter:a,pause:r,resume:s,isActive:c}=Ru(o);return{stop:Fu(e,t,Su(Hu({},n),{eventFilter:a})),pause:r,resume:s,isActive:c}}function ju(e){var t;const l=gi(e);return(t=l==null?void 0:l.$el)!=null?t:l}const vi=Ir?window:void 0;function $u(...e){let t,l,i,o;if(Eu(e[0])?([l,i,o]=e,t=vi):[t,l,i,o]=e,!t)return Bi;let n=Bi;const a=dt(()=>ju(t),s=>{n(),s&&(s.addEventListener(l,i,o),n=()=>{s.removeEventListener(l,i,o),n=Bi})},{immediate:!0,flush:"post"}),r=()=>{a(),n()};return Or(r),r}function Yu(e,t=!1){const l=ye(),i=()=>l.value=Boolean(e());return i(),Tu(i,t),l}function Bu(e,t={}){const{window:l=vi}=t,i=Yu(()=>l&&"matchMedia"in l&&typeof l.matchMedia=="function");let o;const n=ye(!1),a=()=>{!i.value||(o||(o=l.matchMedia(e)),n.value=o.matches)};return Lu(()=>{a(),o&&("addEventListener"in o?o.addEventListener("change",a):o.addListener(a),Or(()=>{"removeEventListener"in o?o.removeEventListener("change",a):o.removeListener(a)}))}),n}const uo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},po="__vueuse_ssr_handlers__";uo[po]=uo[po]||{};const Uu=uo[po];function Wu(e,t){return Uu[e]||t}function Xu(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"||Array.isArray(e)?"object":Number.isNaN(e)?"any":"number"}var qu=Object.defineProperty,ea=Object.getOwnPropertySymbols,Ku=Object.prototype.hasOwnProperty,Gu=Object.prototype.propertyIsEnumerable,ta=(e,t,l)=>t in e?qu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,la=(e,t)=>{for(var l in t||(t={}))Ku.call(t,l)&&ta(e,l,t[l]);if(ea)for(var l of ea(t))Gu.call(t,l)&&ta(e,l,t[l]);return e};const Qu={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}};function Ju(e,t,l,i={}){var o;const{flush:n="pre",deep:a=!0,listenToStorageChanges:r=!0,writeDefaults:s=!0,mergeDefaults:c=!1,shallow:h,window:p=vi,eventFilter:m,onError:g=w=>{console.error(w)}}=i,x=(h?wa:ye)(t);if(!l)try{l=Wu("getDefaultStorage",()=>{var w;return(w=vi)==null?void 0:w.localStorage})()}catch(w){g(w)}if(!l)return x;const P=gi(t),E=Xu(P),k=(o=i.serializer)!=null?o:Qu[E],{pause:_,resume:L}=Nu(x,()=>H(x.value),{flush:n,deep:a,eventFilter:m});return p&&r&&$u(p,"storage",ee),ee(),x;function H(w){try{w==null?l.removeItem(e):l.setItem(e,k.write(w))}catch(v){g(v)}}function U(w){if(!(w&&w.key!==e)){_();try{const v=w?w.newValue:l.getItem(e);if(v==null)return s&&P!==null&&l.setItem(e,k.write(P)),P;if(!w&&c){const q=k.read(v);return xu(c)?c(q,P):E==="object"&&!Array.isArray(q)?la(la({},P),q):q}else return typeof v!="string"?v:k.read(v)}catch(v){g(v)}finally{L()}}}function ee(w){w&&w.key!==e||(x.value=U(w))}}function Zu(e){return Bu("(prefers-color-scheme: dark)",e)}var ia;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(ia||(ia={}));var ep=Object.defineProperty,oa=Object.getOwnPropertySymbols,tp=Object.prototype.hasOwnProperty,lp=Object.prototype.propertyIsEnumerable,na=(e,t,l)=>t in e?ep(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,ip=(e,t)=>{for(var l in t||(t={}))tp.call(t,l)&&na(e,l,t[l]);if(oa)for(var l of oa(t))lp.call(t,l)&&na(e,l,t[l]);return e};const op={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};ip({linear:Pu},op);const $e=()=>uu(),Dr=Symbol(""),Mo=()=>{const e=Me(Dr);if(!e)throw new Error("useDarkMode() is called without provider.");return e},np=()=>{const e=$e(),t=Zu(),l=Ju("vuepress-color-scheme",e.value.colorMode),i=Y({get(){return e.value.colorModeSwitch?l.value==="auto"?t.value:l.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?l.value="auto":l.value=o?"dark":"light"}});Gt(Dr,i),ap(i)},ap=e=>{const t=(l=e.value)=>{const i=window==null?void 0:window.document.querySelector("html");i==null||i.classList.toggle("dark",l)};Je(()=>{dt(e,t,{immediate:!0})}),Li(()=>t())},Mr=(...e)=>{const l=Zt().resolve(...e),i=l.matched[l.matched.length-1];if(!(i!=null&&i.redirect))return l;const{redirect:o}=i,n=ae(o)?o(l):o,a=be(n)?{path:n}:n;return Mr({hash:l.hash,query:l.query,params:l.params,...a})},Ho=e=>{const t=Mr(encodeURI(e));return{text:t.meta.title||e,link:t.name==="404"?e:t.fullPath}};let Ui=null,yl=null;const rp={wait:()=>Ui,pending:()=>{Ui=new Promise(e=>yl=e)},resolve:()=>{yl==null||yl(),Ui=null,yl=null}},Hr=()=>rp,Sr=Symbol("sidebarItems"),So=()=>{const e=Me(Sr);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},sp=()=>{const e=$e(),t=vt(),l=Y(()=>cp(t.value,e.value));Gt(Sr,l)},cp=(e,t)=>{var o,n,a,r;const l=(n=(o=e.sidebar)!=null?o:t.sidebar)!=null?n:"auto",i=(r=(a=e.sidebarDepth)!=null?a:t.sidebarDepth)!=null?r:2;return e.home||l===!1?[]:l==="auto"?dp(i):te(l)?Vr(l,i):Oo(l)?up(l,i):[]},hp=(e,t)=>({text:e.title,link:e.link,children:Vo(e.children,t)}),Vo=(e,t)=>t>0?e.map(l=>hp(l,t-1)):[],dp=e=>{const t=Ot();return[{text:t.value.title,children:Vo(t.value.headers,e)}]},Vr=(e,t)=>{const l=St(),i=Ot(),o=n=>{var r;let a;if(be(n)?a=Ho(n):a=n,a.children)return{...a,children:a.children.map(s=>o(s))};if(a.link===l.path){const s=((r=i.value.headers[0])==null?void 0:r.level)===1?i.value.headers[0].children:i.value.headers;return{...a,children:Vo(s,t)}}return a};return e.map(n=>o(n))},up=(e,t)=>{var n;const l=St(),i=pr(e,l.path),o=(n=e[i])!=null?n:[];return Vr(o,t)},pp={},mp={class:"theme-default-content"};function fp(e,t){const l=_t("Content");return N(),Z("div",mp,[oe(l)])}const gp=Te(pp,[["render",fp],["__file","HomeContent.vue"]]),kp={key:0,class:"features"},vp=ue({__name:"HomeFeatures",setup(e){const t=vt(),l=Y(()=>te(t.value.features)?t.value.features:[]);return(i,o)=>O(l).length?(N(),Z("div",kp,[(N(!0),Z(Pe,null,zt(O(l),n=>(N(),Z("div",{key:n.title,class:"feature"},[fe("h2",null,ze(n.title),1),fe("p",null,ze(n.details),1)]))),128))])):Ae("v-if",!0)}}),bp=Te(vp,[["__file","HomeFeatures.vue"]]),_p=["innerHTML"],yp=["textContent"],xp=ue({__name:"HomeFooter",setup(e){const t=vt(),l=Y(()=>t.value.footer),i=Y(()=>t.value.footerHtml);return(o,n)=>O(l)?(N(),Z(Pe,{key:0},[Ae(" eslint-disable-next-line vue/no-v-html "),O(i)?(N(),Z("div",{key:0,class:"footer",innerHTML:O(l)},null,8,_p)):(N(),Z("div",{key:1,class:"footer",textContent:ze(O(l))},null,8,yp))],64)):Ae("v-if",!0)}}),Ep=Te(xp,[["__file","HomeFooter.vue"]]),Cp=["href","rel","target","aria-label"],Rp=ue({inheritAttrs:!1}),Pp=ue({...Rp,__name:"AutoLink",props:{item:{type:Object,required:!0}},setup(e){const t=e,l=St(),i=Gr(),{item:o}=Ei(t),n=Y(()=>Ul(o.value.link)),a=Y(()=>wh(o.value.link)||Oh(o.value.link)),r=Y(()=>{if(!a.value){if(o.value.target)return o.value.target;if(n.value)return"_blank"}}),s=Y(()=>r.value==="_blank"),c=Y(()=>!n.value&&!a.value&&!s.value),h=Y(()=>{if(!a.value){if(o.value.rel)return o.value.rel;if(s.value)return"noopener noreferrer"}}),p=Y(()=>o.value.ariaLabel||o.value.text),m=Y(()=>{const P=Object.keys(i.value.locales);return P.length?!P.some(E=>E===o.value.link):o.value.link!=="/"}),g=Y(()=>m.value?l.path.startsWith(o.value.link):!1),x=Y(()=>c.value?o.value.activeMatch?new RegExp(o.value.activeMatch).test(l.path):g.value:!1);return(P,E)=>{const k=_t("RouterLink"),_=_t("AutoLinkExternalIcon");return O(c)?(N(),we(k,no({key:0,class:{"router-link-active":O(x)},to:O(o).link,"aria-label":O(p)},P.$attrs),{default:He(()=>[Re(P.$slots,"before"),Mt(" "+ze(O(o).text)+" ",1),Re(P.$slots,"after")]),_:3},16,["class","to","aria-label"])):(N(),Z("a",no({key:1,class:"external-link",href:O(o).link,rel:O(h),target:O(r),"aria-label":O(p)},P.$attrs),[Re(P.$slots,"before"),Mt(" "+ze(O(o).text)+" ",1),O(s)?(N(),we(_,{key:0})):Ae("v-if",!0),Re(P.$slots,"after")],16,Cp))}}}),kt=Te(Pp,[["__file","AutoLink.vue"]]),Lp={class:"hero"},Tp={key:0,id:"main-title"},Ap={key:1,class:"description"},Ip={key:2,class:"actions"},wp=ue({__name:"HomeHero",setup(e){const t=vt(),l=jo(),i=Mo(),o=Y(()=>i.value&&t.value.heroImageDark!==void 0?t.value.heroImageDark:t.value.heroImage),n=Y(()=>t.value.heroText===null?null:t.value.heroText||l.value.title||"Hello"),a=Y(()=>t.value.heroAlt||n.value||"hero"),r=Y(()=>t.value.tagline===null?null:t.value.tagline||l.value.description||"Welcome to your VuePress site"),s=Y(()=>te(t.value.actions)?t.value.actions.map(({text:h,link:p,type:m="primary"})=>({text:h,link:p,type:m})):[]),c=()=>{if(!o.value)return null;const h=he("img",{src:Yo(o.value),alt:a.value});return t.value.heroImageDark===void 0?h:he($o,()=>h)};return(h,p)=>(N(),Z("header",Lp,[oe(c),O(n)?(N(),Z("h1",Tp,ze(O(n)),1)):Ae("v-if",!0),O(r)?(N(),Z("p",Ap,ze(O(r)),1)):Ae("v-if",!0),O(s).length?(N(),Z("p",Ip,[(N(!0),Z(Pe,null,zt(O(s),m=>(N(),we(kt,{key:m.text,class:Ke(["action-button",[m.type]]),item:m},null,8,["class","item"]))),128))])):Ae("v-if",!0)]))}}),Op=Te(wp,[["__file","HomeHero.vue"]]),Fp={class:"home"},zp=ue({__name:"Home",setup(e){return(t,l)=>(N(),Z("main",Fp,[oe(Op),oe(bp),oe(gp),oe(Ep)]))}}),Dp=Te(zp,[["__file","Home.vue"]]),Mp=ue({__name:"NavbarBrand",setup(e){const t=Wl(),l=jo(),i=$e(),o=Mo(),n=Y(()=>i.value.home||t.value),a=Y(()=>l.value.title),r=Y(()=>o.value&&i.value.logoDark!==void 0?i.value.logoDark:i.value.logo),s=()=>{if(!r.value)return null;const c=he("img",{class:"logo",src:Yo(r.value),alt:a.value});return i.value.logoDark===void 0?c:he($o,()=>c)};return(c,h)=>{const p=_t("RouterLink");return N(),we(p,{to:O(n)},{default:He(()=>[oe(s),O(a)?(N(),Z("span",{key:0,class:Ke(["site-name",{"can-hide":O(r)}])},ze(O(a)),3)):Ae("v-if",!0)]),_:1},8,["to"])}}}),Hp=Te(Mp,[["__file","NavbarBrand.vue"]]),Sp=ue({__name:"DropdownTransition",setup(e){const t=i=>{i.style.height=i.scrollHeight+"px"},l=i=>{i.style.height=""};return(i,o)=>(N(),we(Bl,{name:"dropdown",onEnter:t,onAfterEnter:l,onBeforeLeave:t},{default:He(()=>[Re(i.$slots,"default")]),_:3}))}}),Nr=Te(Sp,[["__file","DropdownTransition.vue"]]),Vp=["aria-label"],Np={class:"title"},jp=fe("span",{class:"arrow down"},null,-1),$p=["aria-label"],Yp={class:"title"},Bp={class:"navbar-dropdown"},Up={class:"navbar-dropdown-subtitle"},Wp={key:1},Xp={class:"navbar-dropdown-subitem-wrapper"},qp=ue({__name:"NavbarDropdown",props:{item:{type:Object,required:!0}},setup(e){const t=e,{item:l}=Ei(t),i=Y(()=>l.value.ariaLabel||l.value.text),o=ye(!1),n=St();dt(()=>n.path,()=>{o.value=!1});const a=s=>{s.detail===0?o.value=!o.value:o.value=!1},r=(s,c)=>c[c.length-1]===s;return(s,c)=>(N(),Z("div",{class:Ke(["navbar-dropdown-wrapper",{open:o.value}])},[fe("button",{class:"navbar-dropdown-title",type:"button","aria-label":O(i),onClick:a},[fe("span",Np,ze(O(l).text),1),jp],8,Vp),fe("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":O(i),onClick:c[0]||(c[0]=h=>o.value=!o.value)},[fe("span",Yp,ze(O(l).text),1),fe("span",{class:Ke(["arrow",o.value?"down":"right"])},null,2)],8,$p),oe(Nr,null,{default:He(()=>[ci(fe("ul",Bp,[(N(!0),Z(Pe,null,zt(O(l).children,h=>(N(),Z("li",{key:h.text,class:"navbar-dropdown-item"},[h.children?(N(),Z(Pe,{key:0},[fe("h4",Up,[h.link?(N(),we(kt,{key:0,item:h,onFocusout:p=>r(h,O(l).children)&&h.children.length===0&&(o.value=!1)},null,8,["item","onFocusout"])):(N(),Z("span",Wp,ze(h.text),1))]),fe("ul",Xp,[(N(!0),Z(Pe,null,zt(h.children,p=>(N(),Z("li",{key:p.link,class:"navbar-dropdown-subitem"},[oe(kt,{item:p,onFocusout:m=>r(p,h.children)&&r(h,O(l).children)&&(o.value=!1)},null,8,["item","onFocusout"])]))),128))])],64)):(N(),we(kt,{key:1,item:h,onFocusout:p=>r(h,O(l).children)&&(o.value=!1)},null,8,["item","onFocusout"]))]))),128))],512),[[mi,o.value]])]),_:1})],2))}}),Kp=Te(qp,[["__file","NavbarDropdown.vue"]]),aa=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),Gp=(e,t)=>{if(t.hash===e)return!0;const l=aa(t.path),i=aa(e);return l===i},jr=(e,t)=>e.link&&Gp(e.link,t)?!0:e.children?e.children.some(l=>jr(l,t)):!1,$r=e=>!Ul(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Qp={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},Jp=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const l=$r(e);return l!==null?Qp[l]:null},Zp=({docsRepo:e,docsBranch:t,docsDir:l,filePathRelative:i,editLinkPattern:o})=>{if(!i)return null;const n=Jp({docsRepo:e,editLinkPattern:o});return n?n.replace(/:repo/,Ul(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,ur(`${dr(l)}/${i}`)):null},em={key:0,class:"navbar-items"},tm=ue({__name:"NavbarItems",setup(e){const t=()=>{const c=Zt(),h=Wl(),p=jo(),m=$e();return Y(()=>{var _,L,H;const g=Object.keys(p.value.locales);if(g.length<2)return[];const x=c.currentRoute.value.path,P=c.currentRoute.value.fullPath,E=c.currentRoute.value.hash;return[{text:(_=m.value.selectLanguageText)!=null?_:"unknown language",ariaLabel:(H=(L=m.value.selectLanguageAriaLabel)!=null?L:m.value.selectLanguageText)!=null?H:"unknown language",children:g.map(U=>{var G,C,S,F,re,j;const ee=(C=(G=p.value.locales)==null?void 0:G[U])!=null?C:{},w=(F=(S=m.value.locales)==null?void 0:S[U])!=null?F:{},v=`${ee.lang}`,q=(re=w.selectLanguageName)!=null?re:v;let B;if(v===p.value.lang)B=P;else{const le=x.replace(h.value,U);c.getRoutes().some(se=>se.path===le)?B=`${le}${E}`:B=(j=w.home)!=null?j:U}return{text:q,link:B}})}]})},l=()=>{const c=$e(),h=Y(()=>c.value.repo),p=Y(()=>h.value?$r(h.value):null),m=Y(()=>h.value&&!Ul(h.value)?`https://github.com/${h.value}`:h.value),g=Y(()=>m.value?c.value.repoLabel?c.value.repoLabel:p.value===null?"Source":p.value:null);return Y(()=>!m.value||!g.value?[]:[{text:g.value,link:m.value}])},i=c=>be(c)?Ho(c):c.children?{...c,children:c.children.map(i)}:c,n=(()=>{const c=$e();return Y(()=>(c.value.navbar||[]).map(i))})(),a=t(),r=l(),s=Y(()=>[...n.value,...a.value,...r.value]);return(c,h)=>O(s).length?(N(),Z("nav",em,[(N(!0),Z(Pe,null,zt(O(s),p=>(N(),Z("div",{key:p.text,class:"navbar-item"},[p.children?(N(),we(Kp,{key:0,item:p},null,8,["item"])):(N(),we(kt,{key:1,item:p},null,8,["item"]))]))),128))])):Ae("v-if",!0)}}),Yr=Te(tm,[["__file","NavbarItems.vue"]]),lm=["title"],im={class:"icon",focusable:"false",viewBox:"0 0 32 32"},om=jc('',9),nm=[om],am={class:"icon",focusable:"false",viewBox:"0 0 32 32"},rm=fe("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1),sm=[rm],cm=ue({__name:"ToggleColorModeButton",setup(e){const t=$e(),l=Mo(),i=()=>{l.value=!l.value};return(o,n)=>(N(),Z("button",{class:"toggle-color-mode-button",title:O(t).toggleColorMode,onClick:i},[ci((N(),Z("svg",im,nm,512)),[[mi,!O(l)]]),ci((N(),Z("svg",am,sm,512)),[[mi,O(l)]])],8,lm))}}),hm=Te(cm,[["__file","ToggleColorModeButton.vue"]]),dm=["title"],um=fe("div",{class:"icon","aria-hidden":"true"},[fe("span"),fe("span"),fe("span")],-1),pm=[um],mm=ue({__name:"ToggleSidebarButton",emits:["toggle"],setup(e){const t=$e();return(l,i)=>(N(),Z("div",{class:"toggle-sidebar-button",title:O(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:i[0]||(i[0]=o=>l.$emit("toggle"))},pm,8,dm))}}),fm=Te(mm,[["__file","ToggleSidebarButton.vue"]]),gm=ue({__name:"Navbar",emits:["toggle-sidebar"],setup(e){const t=$e(),l=ye(null),i=ye(null),o=ye(0),n=Y(()=>o.value?{maxWidth:o.value+"px"}:{});Je(()=>{const s=a(l.value,"paddingLeft")+a(l.value,"paddingRight"),c=()=>{var h;window.innerWidth<=719?o.value=0:o.value=l.value.offsetWidth-s-(((h=i.value)==null?void 0:h.offsetWidth)||0)};c(),window.addEventListener("resize",c,!1),window.addEventListener("orientationchange",c,!1)});function a(r,s){var p,m,g;const c=(g=(m=(p=r==null?void 0:r.ownerDocument)==null?void 0:p.defaultView)==null?void 0:m.getComputedStyle(r,null))==null?void 0:g[s],h=Number.parseInt(c,10);return Number.isNaN(h)?0:h}return(r,s)=>{const c=_t("NavbarSearch");return N(),Z("header",{ref_key:"navbar",ref:l,class:"navbar"},[oe(fm,{onToggle:s[0]||(s[0]=h=>r.$emit("toggle-sidebar"))}),fe("span",{ref_key:"navbarBrand",ref:i},[oe(Hp)],512),fe("div",{class:"navbar-items-wrapper",style:Sl(O(n))},[Re(r.$slots,"before"),oe(Yr,{class:"can-hide"}),Re(r.$slots,"after"),O(t).colorModeSwitch?(N(),we(hm,{key:0})):Ae("v-if",!0),oe(c)],4)],512)}}}),km=Te(gm,[["__file","Navbar.vue"]]),vm={class:"page-meta"},bm={key:0,class:"meta-item edit-link"},_m={key:1,class:"meta-item last-updated"},ym={class:"meta-item-label"},xm={class:"meta-item-info"},Em={key:2,class:"meta-item contributors"},Cm={class:"meta-item-label"},Rm={class:"meta-item-info"},Pm=["title"],Lm=Mt(", "),Tm=ue({__name:"PageMeta",setup(e){const t=()=>{const s=$e(),c=Ot(),h=vt();return Y(()=>{var _,L,H;if(!((L=(_=h.value.editLink)!=null?_:s.value.editLink)!=null?L:!0))return null;const{repo:m,docsRepo:g=m,docsBranch:x="main",docsDir:P="",editLinkText:E}=s.value;if(!g)return null;const k=Zp({docsRepo:g,docsBranch:x,docsDir:P,filePathRelative:c.value.filePathRelative,editLinkPattern:(H=h.value.editLinkPattern)!=null?H:s.value.editLinkPattern});return k?{text:E!=null?E:"Edit this page",link:k}:null})},l=()=>{const s=$e(),c=Ot(),h=vt();return Y(()=>{var g,x,P,E;return!((x=(g=h.value.lastUpdated)!=null?g:s.value.lastUpdated)!=null?x:!0)||!((P=c.value.git)!=null&&P.updatedTime)?null:new Date((E=c.value.git)==null?void 0:E.updatedTime).toLocaleString()})},i=()=>{const s=$e(),c=Ot(),h=vt();return Y(()=>{var m,g,x,P;return((g=(m=h.value.contributors)!=null?m:s.value.contributors)!=null?g:!0)&&(P=(x=c.value.git)==null?void 0:x.contributors)!=null?P:null})},o=$e(),n=t(),a=l(),r=i();return(s,c)=>{const h=_t("ClientOnly");return N(),Z("footer",vm,[O(n)?(N(),Z("div",bm,[oe(kt,{class:"meta-item-label",item:O(n)},null,8,["item"])])):Ae("v-if",!0),O(a)?(N(),Z("div",_m,[fe("span",ym,ze(O(o).lastUpdatedText)+": ",1),oe(h,null,{default:He(()=>[fe("span",xm,ze(O(a)),1)]),_:1})])):Ae("v-if",!0),O(r)&&O(r).length?(N(),Z("div",Em,[fe("span",Cm,ze(O(o).contributorsText)+": ",1),fe("span",Rm,[(N(!0),Z(Pe,null,zt(O(r),(p,m)=>(N(),Z(Pe,{key:m},[fe("span",{class:"contributor",title:`email: ${p.email}`},ze(p.name),9,Pm),m!==O(r).length-1?(N(),Z(Pe,{key:0},[Lm],64)):Ae("v-if",!0)],64))),128))])])):Ae("v-if",!0)])}}}),Am=Te(Tm,[["__file","PageMeta.vue"]]),Im={key:0,class:"page-nav"},wm={class:"inner"},Om={key:0,class:"prev"},Fm={key:1,class:"next"},zm=ue({__name:"PageNav",setup(e){const t=s=>s===!1?null:be(s)?Ho(s):Oo(s)?s:!1,l=(s,c,h)=>{const p=s.findIndex(m=>m.link===c);if(p!==-1){const m=s[p+h];return m!=null&&m.link?m:null}for(const m of s)if(m.children){const g=l(m.children,c,h);if(g)return g}return null},i=vt(),o=So(),n=St(),a=Y(()=>{const s=t(i.value.prev);return s!==!1?s:l(o.value,n.path,-1)}),r=Y(()=>{const s=t(i.value.next);return s!==!1?s:l(o.value,n.path,1)});return(s,c)=>O(a)||O(r)?(N(),Z("nav",Im,[fe("p",wm,[O(a)?(N(),Z("span",Om,[oe(kt,{item:O(a)},null,8,["item"])])):Ae("v-if",!0),O(r)?(N(),Z("span",Fm,[oe(kt,{item:O(r)},null,8,["item"])])):Ae("v-if",!0)])])):Ae("v-if",!0)}}),Dm=Te(zm,[["__file","PageNav.vue"]]),Mm={class:"page"},Hm={class:"theme-default-content"},Sm=ue({__name:"Page",setup(e){return(t,l)=>{const i=_t("Content");return N(),Z("main",Mm,[Re(t.$slots,"top"),fe("div",Hm,[Re(t.$slots,"content-top"),oe(i),Re(t.$slots,"content-bottom")]),oe(Am),oe(Dm),Re(t.$slots,"bottom")])}}}),Vm=Te(Sm,[["__file","Page.vue"]]),Nm=["onKeydown"],jm={class:"sidebar-item-children"},$m=ue({__name:"SidebarItem",props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(e){const t=e,{item:l,depth:i}=Ei(t),o=St(),n=Zt(),a=Y(()=>jr(l.value,o)),r=Y(()=>({"sidebar-item":!0,"sidebar-heading":i.value===0,active:a.value,collapsible:l.value.collapsible})),s=Y(()=>l.value.collapsible?a.value:!0),[c,h]=Au(s.value),p=g=>{l.value.collapsible&&(g.preventDefault(),h())},m=n.afterEach(g=>{jl(()=>{c.value=s.value})});return Yl(()=>{m()}),(g,x)=>{var E;const P=_t("SidebarItem",!0);return N(),Z("li",null,[O(l).link?(N(),we(kt,{key:0,class:Ke(O(r)),item:O(l)},null,8,["class","item"])):(N(),Z("p",{key:1,tabindex:"0",class:Ke(O(r)),onClick:p,onKeydown:Eh(p,["enter"])},[Mt(ze(O(l).text)+" ",1),O(l).collapsible?(N(),Z("span",{key:0,class:Ke(["arrow",O(c)?"down":"right"])},null,2)):Ae("v-if",!0)],42,Nm)),(E=O(l).children)!=null&&E.length?(N(),we(Nr,{key:2},{default:He(()=>[ci(fe("ul",jm,[(N(!0),Z(Pe,null,zt(O(l).children,k=>(N(),we(P,{key:`${O(i)}${k.text}${k.link}`,item:k,depth:O(i)+1},null,8,["item","depth"]))),128))],512),[[mi,O(c)]])]),_:1})):Ae("v-if",!0)])}}}),Ym=Te($m,[["__file","SidebarItem.vue"]]),Bm={key:0,class:"sidebar-items"},Um=ue({__name:"SidebarItems",setup(e){const t=St(),l=So();return Je(()=>{dt(()=>t.hash,i=>{const o=document.querySelector(".sidebar");if(!o)return;const n=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${i}"]`);if(!n)return;const{top:a,height:r}=o.getBoundingClientRect(),{top:s,height:c}=n.getBoundingClientRect();sa+r&&n.scrollIntoView(!1)})}),(i,o)=>O(l).length?(N(),Z("ul",Bm,[(N(!0),Z(Pe,null,zt(O(l),n=>(N(),we(Ym,{key:`${n.text}${n.link}`,item:n},null,8,["item"]))),128))])):Ae("v-if",!0)}}),Wm=Te(Um,[["__file","SidebarItems.vue"]]),Xm={class:"sidebar"},qm=ue({__name:"Sidebar",setup(e){return(t,l)=>(N(),Z("aside",Xm,[oe(Yr),Re(t.$slots,"top"),oe(Wm),Re(t.$slots,"bottom")]))}}),Km=Te(qm,[["__file","Sidebar.vue"]]),Gm=ue({__name:"Layout",setup(e){const t=Ot(),l=vt(),i=$e(),o=Y(()=>l.value.navbar!==!1&&i.value.navbar!==!1),n=So(),a=ye(!1),r=E=>{a.value=typeof E=="boolean"?E:!a.value},s={x:0,y:0},c=E=>{s.x=E.changedTouches[0].clientX,s.y=E.changedTouches[0].clientY},h=E=>{const k=E.changedTouches[0].clientX-s.x,_=E.changedTouches[0].clientY-s.y;Math.abs(k)>Math.abs(_)&&Math.abs(k)>40&&(k>0&&s.x<=80?r(!0):r(!1))},p=Y(()=>[{"no-navbar":!o.value,"no-sidebar":!n.value.length,"sidebar-open":a.value},l.value.pageClass]);let m;Je(()=>{m=Zt().afterEach(()=>{r(!1)})}),Li(()=>{m()});const g=Hr(),x=g.resolve,P=g.pending;return(E,k)=>(N(),Z("div",{class:Ke(["theme-container",O(p)]),onTouchstart:c,onTouchend:h},[Re(E.$slots,"navbar",{},()=>[O(o)?(N(),we(km,{key:0,onToggleSidebar:r},{before:He(()=>[Re(E.$slots,"navbar-before")]),after:He(()=>[Re(E.$slots,"navbar-after")]),_:3})):Ae("v-if",!0)]),fe("div",{class:"sidebar-mask",onClick:k[0]||(k[0]=_=>r(!1))}),Re(E.$slots,"sidebar",{},()=>[oe(Km,null,{top:He(()=>[Re(E.$slots,"sidebar-top")]),bottom:He(()=>[Re(E.$slots,"sidebar-bottom")]),_:3})]),Re(E.$slots,"page",{},()=>[O(l).home?(N(),we(Dp,{key:0})):(N(),we(Bl,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:O(x),onBeforeLeave:O(P)},{default:He(()=>[(N(),we(Vm,{key:O(t).path},{top:He(()=>[Re(E.$slots,"page-top")]),"content-top":He(()=>[Re(E.$slots,"page-content-top")]),"content-bottom":He(()=>[Re(E.$slots,"page-content-bottom")]),bottom:He(()=>[Re(E.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34))}}),Qm=Te(Gm,[["__file","Layout.vue"]]),Jm={class:"theme-container"},Zm={class:"page"},ef={class:"theme-default-content"},tf=fe("h1",null,"404",-1),lf=ue({__name:"NotFound",setup(e){var r,s,c;const t=Wl(),l=$e(),i=(r=l.value.notFound)!=null?r:["Not Found"],o=()=>i[Math.floor(Math.random()*i.length)],n=(s=l.value.home)!=null?s:t.value,a=(c=l.value.backToHome)!=null?c:"Back to home";return(h,p)=>{const m=_t("RouterLink");return N(),Z("div",Jm,[fe("main",Zm,[fe("div",ef,[tf,fe("blockquote",null,ze(o()),1),oe(m,{to:O(n)},{default:He(()=>[Mt(ze(O(a)),1)]),_:1},8,["to"])])])])}}}),of=Te(lf,[["__file","NotFound.vue"]]);const nf=Ht({enhance({app:e,router:t}){e.component("Badge",gu),e.component("CodeGroup",ku),e.component("CodeGroupItem",yu),e.component("AutoLinkExternalIcon",()=>{const i=e.component("ExternalLinkIcon");return i?he(i):null}),e.component("NavbarSearch",()=>{const i=e.component("Docsearch")||e.component("SearchBox");return i?he(i):null});const l=t.options.scrollBehavior;t.options.scrollBehavior=async(...i)=>(await Hr().wait(),l(...i))},setup(){np(),sp()},layouts:{Layout:Qm,NotFound:of}}),af=(e,t)=>t.some(l=>{if(be(l))return l===e.key;const{key:i,ctrl:o=!1,shift:n=!1,alt:a=!1}=l;return i===e.key&&o===e.ctrlKey&&n===e.shiftKey&&a===e.altKey}),rf=/[^\x00-\x7F]/,sf=e=>e.split(/\s+/g).map(t=>t.trim()).filter(t=>!!t),ra=e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),sa=(e,t)=>{const l=t.join(" "),i=sf(e);if(rf.test(e))return i.some(a=>l.toLowerCase().indexOf(a)>-1);const o=e.endsWith(" ");return new RegExp(i.map((a,r)=>i.length===r+1&&!o?`(?=.*\\b${ra(a)})`:`(?=.*\\b${ra(a)}\\b)`).join("")+".+","gi").test(l)},cf=({input:e,hotKeys:t})=>{if(t.value.length===0)return;const l=i=>{!e.value||af(i,t.value)&&!e.value.contains(i.target)&&(i.preventDefault(),e.value.focus())};Je(()=>{document.addEventListener("keydown",l)}),Yl(()=>{document.removeEventListener("keydown",l)})},hf=[{title:"Home",headers:[{level:3,title:"All Hook process in one step, everything is simplified",slug:"all-hook-process-in-one-step-everything-is-simplified",link:"#all-hook-process-in-one-step-everything-is-simplified",children:[]}],path:"/en/",pathLocale:"/en/",extraFields:[]},{title:"\u9996\u9875",headers:[{level:3,title:"\u6240\u6709 Hook \u6D41\u7A0B\u4E00\u6B65\u5230\u4F4D\uFF0C\u62D2\u7EDD\u7E41\u7410",slug:"\u6240\u6709-hook-\u6D41\u7A0B\u4E00\u6B65\u5230\u4F4D-\u62D2\u7EDD\u7E41\u7410",link:"#\u6240\u6709-hook-\u6D41\u7A0B\u4E00\u6B65\u5230\u4F4D-\u62D2\u7EDD\u7E41\u7410",children:[]}],path:"/zh-cn/",pathLocale:"/zh-cn/",extraFields:[]},{title:"About this Document",headers:[{level:2,title:"License",slug:"license",link:"#license",children:[]}],path:"/en/about/about.html",pathLocale:"/en/",extraFields:[]},{title:"Changelog",headers:[{level:3,title:"1.1.7 | 2023.02.01",slug:"_1-1-7-2023-02-01",link:"#_1-1-7-2023-02-01",children:[]},{level:3,title:"1.1.6 | 2023.01.21",slug:"_1-1-6-2023-01-21",link:"#_1-1-6-2023-01-21",children:[]},{level:3,title:"1.1.5 | 2023.01.13",slug:"_1-1-5-2023-01-13",link:"#_1-1-5-2023-01-13",children:[]},{level:3,title:"1.1.4 | 2022.10.04",slug:"_1-1-4-2022-10-04",link:"#_1-1-4-2022-10-04",children:[]},{level:3,title:"1.1.3 | 2022.09.30",slug:"_1-1-3-2022-09-30",link:"#_1-1-3-2022-09-30",children:[]},{level:3,title:"1.1.2 | 2022.09.30",slug:"_1-1-2-2022-09-30",link:"#_1-1-2-2022-09-30",children:[]},{level:3,title:"1.1.1 | 2022.09.28",slug:"_1-1-1-2022-09-28",link:"#_1-1-1-2022-09-28",children:[]},{level:3,title:"1.1.0 | 2022.09.28",slug:"_1-1-0-2022-09-28",link:"#_1-1-0-2022-09-28",children:[]},{level:3,title:"1.0.92 | 2022.05.31",slug:"_1-0-92-2022-05-31",link:"#_1-0-92-2022-05-31",children:[]},{level:3,title:"1.0.91 | 2022.05.29",slug:"_1-0-91-2022-05-29",link:"#_1-0-91-2022-05-29",children:[]},{level:3,title:"1.0.90 | 2022.05.27",slug:"_1-0-90-2022-05-27",link:"#_1-0-90-2022-05-27",children:[]},{level:3,title:"1.0.89 | 2022.05.26",slug:"_1-0-89-2022-05-26",link:"#_1-0-89-2022-05-26",children:[]},{level:3,title:"1.0.88 | 2022.05.25",slug:"_1-0-88-2022-05-25",link:"#_1-0-88-2022-05-25",children:[]},{level:3,title:"1.0.87 | 2022.05.10",slug:"_1-0-87-2022-05-10",link:"#_1-0-87-2022-05-10",children:[]},{level:3,title:"1.0.86 | 2022.05.06",slug:"_1-0-86-2022-05-06",link:"#_1-0-86-2022-05-06",children:[]},{level:3,title:"1.0.85 | 2022.05.04",slug:"_1-0-85-2022-05-04",link:"#_1-0-85-2022-05-04",children:[]},{level:3,title:"1.0.83 | 2022.05.04",slug:"_1-0-83-2022-05-04",link:"#_1-0-83-2022-05-04",children:[]},{level:3,title:"1.0.82 | 2022.05.04",slug:"_1-0-82-2022-05-04",link:"#_1-0-82-2022-05-04",children:[]},{level:3,title:"1.0.81 | 2022.05.04",slug:"_1-0-81-2022-05-04",link:"#_1-0-81-2022-05-04",children:[]},{level:3,title:"1.0.80 | 2022.05.01",slug:"_1-0-80-2022-05-01",link:"#_1-0-80-2022-05-01",children:[]},{level:3,title:"1.0.78 | 2022.04.18",slug:"_1-0-78-2022-04-18",link:"#_1-0-78-2022-04-18",children:[]},{level:3,title:"1.0.77 | 2022.04.15",slug:"_1-0-77-2022-04-15",link:"#_1-0-77-2022-04-15",children:[]},{level:3,title:"1.0.75 | 2022.04.13",slug:"_1-0-75-2022-04-13",link:"#_1-0-75-2022-04-13",children:[]},{level:3,title:"1.0.73 | 2022.04.10",slug:"_1-0-73-2022-04-10",link:"#_1-0-73-2022-04-10",children:[]},{level:3,title:"1.0.72 | 2022.04.09",slug:"_1-0-72-2022-04-09",link:"#_1-0-72-2022-04-09",children:[]},{level:3,title:"1.0.71 | 2022.04.04",slug:"_1-0-71-2022-04-04",link:"#_1-0-71-2022-04-04",children:[]},{level:3,title:"1.0.70 | 2022.04.04",slug:"_1-0-70-2022-04-04",link:"#_1-0-70-2022-04-04",children:[]},{level:3,title:"1.0.69 | 2022.03.30",slug:"_1-0-69-2022-03-30",link:"#_1-0-69-2022-03-30",children:[]},{level:3,title:"1.0.68 | 2022.03.29",slug:"_1-0-68-2022-03-29",link:"#_1-0-68-2022-03-29",children:[]},{level:3,title:"1.0.67 | 2022.03.27",slug:"_1-0-67-2022-03-27",link:"#_1-0-67-2022-03-27",children:[]},{level:3,title:"1.0.66 | 2022.03.25",slug:"_1-0-66-2022-03-25",link:"#_1-0-66-2022-03-25",children:[]},{level:3,title:"1.0.65 | 2022.03.25",slug:"_1-0-65-2022-03-25",link:"#_1-0-65-2022-03-25",children:[]},{level:3,title:"1.0.6 | 2022.03.20",slug:"_1-0-6-2022-03-20",link:"#_1-0-6-2022-03-20",children:[]},{level:3,title:"1.0.55 | 2022.03.18",slug:"_1-0-55-2022-03-18",link:"#_1-0-55-2022-03-18",children:[]},{level:3,title:"1.0.5 | 2022.03.18",slug:"_1-0-5-2022-03-18",link:"#_1-0-5-2022-03-18",children:[]},{level:3,title:"1.0.4 | 2022.03.06",slug:"_1-0-4-2022-03-06",link:"#_1-0-4-2022-03-06",children:[]},{level:3,title:"1.0.3 | 2022.03.02",slug:"_1-0-3-2022-03-02",link:"#_1-0-3-2022-03-02",children:[]},{level:3,title:"1.0.2 | 2022.02.18",slug:"_1-0-2-2022-02-18",link:"#_1-0-2-2022-02-18",children:[]},{level:3,title:"1.0.1 | 2022.02.15",slug:"_1-0-1-2022-02-15",link:"#_1-0-1-2022-02-15",children:[]},{level:3,title:"1.0 | 2022.02.14",slug:"_1-0-2022-02-14",link:"#_1-0-2022-02-14",children:[]}],path:"/en/about/changelog.html",pathLocale:"/en/",extraFields:[]},{title:"Contact Us",headers:[{level:2,title:"Help with Maintenance",slug:"help-with-maintenance",link:"#help-with-maintenance",children:[]}],path:"/en/about/contacts.html",pathLocale:"/en/",extraFields:[]},{title:"Looking for Future",headers:[{level:2,title:"Unresolved Issues",slug:"unresolved-issues",link:"#unresolved-issues",children:[{level:3,title:"YukiHookModulePrefs",slug:"yukihookmoduleprefs",link:"#yukihookmoduleprefs",children:[]}]},{level:2,title:"Future Plans",slug:"future-plans",link:"#future-plans",children:[{level:3,title:"Lite Version Supported for Standalone Use",slug:"lite-version-supported-for-standalone-use",link:"#lite-version-supported-for-standalone-use",children:[]},{level:3,title:"Support for More Hook Framework",slug:"support-for-more-hook-framework",link:"#support-for-more-hook-framework",children:[]}]}],path:"/en/about/future.html",pathLocale:"/en/",extraFields:[]},{title:"Document Introduce",headers:[{level:2,title:"Function Description",slug:"function-description",link:"#function-description",children:[]},{level:2,title:"Function Example Description",slug:"function-example-description",link:"#function-example-description",children:[]},{level:2,title:"Change Record Description",slug:"change-record-description",link:"#change-record-description",children:[]},{level:2,title:"Related Symbols Description",slug:"related-symbols-description",link:"#related-symbols-description",children:[]}],path:"/en/api/home.html",pathLocale:"/en/",extraFields:[]},{title:"API Basic Configs",headers:[{level:2,title:"Function Configs",slug:"function-configs",link:"#function-configs",children:[{level:3,title:"configs Method",slug:"configs-method",link:"#configs-method",children:[]}]},{level:2,title:"Hooker Configs",slug:"hooker-configs",link:"#hooker-configs",children:[{level:3,title:"Created by lambda",slug:"created-by-lambda",link:"#created-by-lambda",children:[]},{level:3,title:"Created by Custom Hooker",slug:"created-by-custom-hooker",link:"#created-by-custom-hooker",children:[]},{level:3,title:"Expansion Features",slug:"expansion-features",link:"#expansion-features",children:[]},{level:3,title:"Precautions",slug:"precautions",link:"#precautions",children:[]}]},{level:2,title:"Precautions when using as Hook API",slug:"precautions-when-using-as-hook-api",link:"#precautions-when-using-as-hook-api",children:[]}],path:"/en/config/api-example.html",pathLocale:"/en/",extraFields:[]},{title:"API Exception Handling",headers:[{level:2,title:"Non-Blocking Exceptions",slug:"non-blocking-exceptions",link:"#non-blocking-exceptions",children:[]},{level:2,title:"Blocking Exceptions",slug:"blocking-exceptions",link:"#blocking-exceptions",children:[]}],path:"/en/config/api-exception.html",pathLocale:"/en/",extraFields:[]},{title:"Use as Hook API Configs",headers:[{level:2,title:"Dependency Configs",slug:"dependency-configs",link:"#dependency-configs",children:[]},{level:2,title:"Entry Configs",slug:"entry-configs",link:"#entry-configs",children:[]},{level:2,title:"Hook Framework",slug:"hook-framework",link:"#hook-framework",children:[{level:3,title:"Pine",slug:"pine",link:"#pine",children:[]},{level:3,title:"SandHook",slug:"sandhook",link:"#sandhook",children:[]},{level:3,title:"Whale",slug:"whale",link:"#whale",children:[]}]}],path:"/en/config/api-using.html",pathLocale:"/en/",extraFields:[]},{title:"R8 & Proguard Obfuscate",headers:[{level:2,title:"R8",slug:"r8",link:"#r8",children:[]},{level:2,title:"Proguard",slug:"proguard",link:"#proguard",children:[]}],path:"/en/config/r8-proguard.html",pathLocale:"/en/",extraFields:[]},{title:"Use as Xposed Module Configs",headers:[{level:2,title:"Dependency Configs",slug:"dependency-configs",link:"#dependency-configs",children:[]},{level:2,title:"Custom Automatic Builder",slug:"custom-automatic-builder",link:"#custom-automatic-builder",children:[{level:3,title:"InjectYukiHookWithXposed Annotation",slug:"injectyukihookwithxposed-annotation",link:"#injectyukihookwithxposed-annotation",children:[]},{level:3,title:"IYukiHookXposedInit Interface",slug:"iyukihookxposedinit-interface",link:"#iyukihookxposedinit-interface",children:[]}]},{level:2,title:"Native Xposed API Events",slug:"native-xposed-api-events",link:"#native-xposed-api-events",children:[]}],path:"/en/config/xposed-using.html",pathLocale:"/en/",extraFields:[]},{title:"Usage Example",headers:[{level:2,title:"Structure Diagram",slug:"structure-diagram",link:"#structure-diagram",children:[]},{level:2,title:"Demo",slug:"demo",link:"#demo",children:[]},{level:2,title:"A Simple Hook Example",slug:"a-simple-hook-example",link:"#a-simple-hook-example",children:[{level:3,title:"Hook App",slug:"hook-app",link:"#hook-app",children:[]},{level:3,title:"Hook Zygote",slug:"hook-zygote",link:"#hook-zygote",children:[]},{level:3,title:"Hook System Framework",slug:"hook-system-framework",link:"#hook-system-framework",children:[]},{level:3,title:"Hook Resources",slug:"hook-resources",link:"#hook-resources",children:[]},{level:3,title:"Remove Hook",slug:"remove-hook",link:"#remove-hook",children:[]}]},{level:2,title:"Exception Handling",slug:"exception-handling",link:"#exception-handling",children:[{level:3,title:"Listen for Exceptions",slug:"listen-for-exceptions",link:"#listen-for-exceptions",children:[]},{level:3,title:"Throw an Exception",slug:"throw-an-exception",link:"#throw-an-exception",children:[]}]},{level:2,title:"Status Monitor",slug:"status-monitor",link:"#status-monitor",children:[]},{level:2,title:"Expansion Usage",slug:"expansion-usage",link:"#expansion-usage",children:[{level:3,title:"Multiple Hosts",slug:"multiple-hosts",link:"#multiple-hosts",children:[]},{level:3,title:"Multiple Processes",slug:"multiple-processes",link:"#multiple-processes",children:[]}]},{level:2,title:"Writing Optimization",slug:"writing-optimization",link:"#writing-optimization",children:[]},{level:2,title:"Xposed Module own Active State",slug:"xposed-module-own-active-state",link:"#xposed-module-own-active-state",children:[]}],path:"/en/guide/example.html",pathLocale:"/en/",extraFields:[]},{title:"Introduce",headers:[{level:2,title:"Background",slug:"background",link:"#background",children:[]},{level:2,title:"Usage",slug:"usage",link:"#usage",children:[]},{level:2,title:"Language Requirement",slug:"language-requirement",link:"#language-requirement",children:[]},{level:2,title:"Source of Inspiration",slug:"source-of-inspiration",link:"#source-of-inspiration",children:[]},{level:2,title:"Suppored Hook Framework",slug:"suppored-hook-framework",link:"#suppored-hook-framework",children:[]}],path:"/en/guide/home.html",pathLocale:"/en/",extraFields:[]},{title:"Basic Knowledge",headers:[{level:2,title:"Related Introduction",slug:"related-introduction",link:"#related-introduction",children:[{level:3,title:"What is Xposed",slug:"what-is-xposed",link:"#what-is-xposed",children:[]},{level:3,title:"What can Xposed do",slug:"what-can-xposed-do",link:"#what-can-xposed-do",children:[]},{level:3,title:"Development Process",slug:"development-process",link:"#development-process",children:[]},{level:3,title:"Derivatives",slug:"derivatives",link:"#derivatives",children:[]},{level:3,title:"What YukiHookAPI does",slug:"what-yukihookapi-does",link:"#what-yukihookapi-does",children:[]}]},{level:2,title:"Let's Started",slug:"let-s-started",link:"#let-s-started",children:[]}],path:"/en/guide/knowledge.html",pathLocale:"/en/",extraFields:[]},{title:"Migrate from Xposed API",headers:[{level:2,title:"Migrate Hook Entry Point",slug:"migrate-hook-entry-point",link:"#migrate-hook-entry-point",children:[]},{level:2,title:"Migrate Hook Method Body",slug:"migrate-hook-method-body",link:"#migrate-hook-method-body",children:[{level:3,title:"Before/After Hook",slug:"before-after-hook",link:"#before-after-hook",children:[]},{level:3,title:"Replace Hook",slug:"replace-hook",link:"#replace-hook",children:[]}]},{level:2,title:"Migrate Other Features",slug:"migrate-other-features",link:"#migrate-other-features",children:[]}],path:"/en/guide/move-to-new-api.html",pathLocale:"/en/",extraFields:[]},{title:"Quick Start",headers:[{level:2,title:"Environment Requirements",slug:"environment-requirements",link:"#environment-requirements",children:[]},{level:2,title:"Automatically Build Project",slug:"automatically-build-project",link:"#automatically-build-project",children:[]},{level:2,title:"Manually Configure Project",slug:"manually-configure-project",link:"#manually-configure-project",children:[{level:3,title:"Create Project",slug:"create-project",link:"#create-project",children:[]},{level:3,title:"Integration Dependencies",slug:"integration-dependencies",link:"#integration-dependencies",children:[]},{level:3,title:"Use as Xposed Module",slug:"use-as-xposed-module",link:"#use-as-xposed-module",children:[]},{level:3,title:"Use as Hook API",slug:"use-as-hook-api",link:"#use-as-hook-api",children:[]}]}],path:"/en/guide/quick-start.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookAPI Project Builder",headers:[{level:2,title:"Get Project",slug:"get-project",link:"#get-project",children:[]},{level:2,title:"Usage",slug:"usage",link:"#usage",children:[{level:3,title:"Basic Usage",slug:"basic-usage",link:"#basic-usage",children:[]},{level:3,title:"Config Template",slug:"config-template",link:"#config-template",children:[]},{level:3,title:"Multilingual Support",slug:"multilingual-support",link:"#multilingual-support",children:[]}]}],path:"/en/tools/yukihookapi-projectbuilder.html",pathLocale:"/en/",extraFields:[]},{title:"\u5173\u4E8E\u6B64\u6587\u6863",headers:[{level:2,title:"License",slug:"license",link:"#license",children:[]}],path:"/zh-cn/about/about.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u66F4\u65B0\u65E5\u5FD7",headers:[{level:3,title:"1.1.7 | 2023.02.01",slug:"_1-1-7-2023-02-01",link:"#_1-1-7-2023-02-01",children:[]},{level:3,title:"1.1.6 | 2023.01.21",slug:"_1-1-6-2023-01-21",link:"#_1-1-6-2023-01-21",children:[]},{level:3,title:"1.1.5 | 2023.01.13",slug:"_1-1-5-2023-01-13",link:"#_1-1-5-2023-01-13",children:[]},{level:3,title:"1.1.4 | 2022.10.04",slug:"_1-1-4-2022-10-04",link:"#_1-1-4-2022-10-04",children:[]},{level:3,title:"1.1.3 | 2022.09.30",slug:"_1-1-3-2022-09-30",link:"#_1-1-3-2022-09-30",children:[]},{level:3,title:"1.1.2 | 2022.09.30",slug:"_1-1-2-2022-09-30",link:"#_1-1-2-2022-09-30",children:[]},{level:3,title:"1.1.1 | 2022.09.28",slug:"_1-1-1-2022-09-28",link:"#_1-1-1-2022-09-28",children:[]},{level:3,title:"1.1.0 | 2022.09.28",slug:"_1-1-0-2022-09-28",link:"#_1-1-0-2022-09-28",children:[]},{level:3,title:"1.0.92 | 2022.05.31",slug:"_1-0-92-2022-05-31",link:"#_1-0-92-2022-05-31",children:[]},{level:3,title:"1.0.91 | 2022.05.29",slug:"_1-0-91-2022-05-29",link:"#_1-0-91-2022-05-29",children:[]},{level:3,title:"1.0.90 | 2022.05.27",slug:"_1-0-90-2022-05-27",link:"#_1-0-90-2022-05-27",children:[]},{level:3,title:"1.0.89 | 2022.05.26",slug:"_1-0-89-2022-05-26",link:"#_1-0-89-2022-05-26",children:[]},{level:3,title:"1.0.88 | 2022.05.25",slug:"_1-0-88-2022-05-25",link:"#_1-0-88-2022-05-25",children:[]},{level:3,title:"1.0.87 | 2022.05.10",slug:"_1-0-87-2022-05-10",link:"#_1-0-87-2022-05-10",children:[]},{level:3,title:"1.0.86 | 2022.05.06",slug:"_1-0-86-2022-05-06",link:"#_1-0-86-2022-05-06",children:[]},{level:3,title:"1.0.85 | 2022.05.04",slug:"_1-0-85-2022-05-04",link:"#_1-0-85-2022-05-04",children:[]},{level:3,title:"1.0.83 | 2022.05.04",slug:"_1-0-83-2022-05-04",link:"#_1-0-83-2022-05-04",children:[]},{level:3,title:"1.0.82 | 2022.05.04",slug:"_1-0-82-2022-05-04",link:"#_1-0-82-2022-05-04",children:[]},{level:3,title:"1.0.81 | 2022.05.04",slug:"_1-0-81-2022-05-04",link:"#_1-0-81-2022-05-04",children:[]},{level:3,title:"1.0.80 | 2022.05.01",slug:"_1-0-80-2022-05-01",link:"#_1-0-80-2022-05-01",children:[]},{level:3,title:"1.0.78 | 2022.04.18",slug:"_1-0-78-2022-04-18",link:"#_1-0-78-2022-04-18",children:[]},{level:3,title:"1.0.77 | 2022.04.15",slug:"_1-0-77-2022-04-15",link:"#_1-0-77-2022-04-15",children:[]},{level:3,title:"1.0.75 | 2022.04.13",slug:"_1-0-75-2022-04-13",link:"#_1-0-75-2022-04-13",children:[]},{level:3,title:"1.0.73 | 2022.04.10",slug:"_1-0-73-2022-04-10",link:"#_1-0-73-2022-04-10",children:[]},{level:3,title:"1.0.72 | 2022.04.09",slug:"_1-0-72-2022-04-09",link:"#_1-0-72-2022-04-09",children:[]},{level:3,title:"1.0.71 | 2022.04.04",slug:"_1-0-71-2022-04-04",link:"#_1-0-71-2022-04-04",children:[]},{level:3,title:"1.0.70 | 2022.04.04",slug:"_1-0-70-2022-04-04",link:"#_1-0-70-2022-04-04",children:[]},{level:3,title:"1.0.69 | 2022.03.30",slug:"_1-0-69-2022-03-30",link:"#_1-0-69-2022-03-30",children:[]},{level:3,title:"1.0.68 | 2022.03.29",slug:"_1-0-68-2022-03-29",link:"#_1-0-68-2022-03-29",children:[]},{level:3,title:"1.0.67 | 2022.03.27",slug:"_1-0-67-2022-03-27",link:"#_1-0-67-2022-03-27",children:[]},{level:3,title:"1.0.66 | 2022.03.25",slug:"_1-0-66-2022-03-25",link:"#_1-0-66-2022-03-25",children:[]},{level:3,title:"1.0.65 | 2022.03.25",slug:"_1-0-65-2022-03-25",link:"#_1-0-65-2022-03-25",children:[]},{level:3,title:"1.0.6 | 2022.03.20",slug:"_1-0-6-2022-03-20",link:"#_1-0-6-2022-03-20",children:[]},{level:3,title:"1.0.55 | 2022.03.18",slug:"_1-0-55-2022-03-18",link:"#_1-0-55-2022-03-18",children:[]},{level:3,title:"1.0.5 | 2022.03.18",slug:"_1-0-5-2022-03-18",link:"#_1-0-5-2022-03-18",children:[]},{level:3,title:"1.0.4 | 2022.03.06",slug:"_1-0-4-2022-03-06",link:"#_1-0-4-2022-03-06",children:[]},{level:3,title:"1.0.3 | 2022.03.02",slug:"_1-0-3-2022-03-02",link:"#_1-0-3-2022-03-02",children:[]},{level:3,title:"1.0.2 | 2022.02.18",slug:"_1-0-2-2022-02-18",link:"#_1-0-2-2022-02-18",children:[]},{level:3,title:"1.0.1 | 2022.02.15",slug:"_1-0-1-2022-02-15",link:"#_1-0-1-2022-02-15",children:[]},{level:3,title:"1.0 | 2022.02.14",slug:"_1-0-2022-02-14",link:"#_1-0-2022-02-14",children:[]}],path:"/zh-cn/about/changelog.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u8054\u7CFB\u6211\u4EEC",headers:[{level:2,title:"\u52A9\u529B\u7EF4\u62A4",slug:"\u52A9\u529B\u7EF4\u62A4",link:"#\u52A9\u529B\u7EF4\u62A4",children:[]}],path:"/zh-cn/about/contacts.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u5C55\u671B\u672A\u6765",headers:[{level:2,title:"\u672A\u89E3\u51B3\u7684\u95EE\u9898",slug:"\u672A\u89E3\u51B3\u7684\u95EE\u9898",link:"#\u672A\u89E3\u51B3\u7684\u95EE\u9898",children:[{level:3,title:"YukiHookModulePrefs",slug:"yukihookmoduleprefs",link:"#yukihookmoduleprefs",children:[]}]},{level:2,title:"\u672A\u6765\u7684\u8BA1\u5212",slug:"\u672A\u6765\u7684\u8BA1\u5212",link:"#\u672A\u6765\u7684\u8BA1\u5212",children:[{level:3,title:"\u652F\u6301\u72EC\u7ACB\u4F7F\u7528\u7684 Lite \u7248\u672C",slug:"\u652F\u6301\u72EC\u7ACB\u4F7F\u7528\u7684-lite-\u7248\u672C",link:"#\u652F\u6301\u72EC\u7ACB\u4F7F\u7528\u7684-lite-\u7248\u672C",children:[]},{level:3,title:"\u652F\u6301\u66F4\u591A Hook Framework",slug:"\u652F\u6301\u66F4\u591A-hook-framework",link:"#\u652F\u6301\u66F4\u591A-hook-framework",children:[]}]}],path:"/zh-cn/about/future.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u6587\u6863\u4ECB\u7ECD",headers:[{level:2,title:"\u529F\u80FD\u63CF\u8FF0\u8BF4\u660E",slug:"\u529F\u80FD\u63CF\u8FF0\u8BF4\u660E",link:"#\u529F\u80FD\u63CF\u8FF0\u8BF4\u660E",children:[]},{level:2,title:"\u529F\u80FD\u793A\u4F8B\u8BF4\u660E",slug:"\u529F\u80FD\u793A\u4F8B\u8BF4\u660E",link:"#\u529F\u80FD\u793A\u4F8B\u8BF4\u660E",children:[]},{level:2,title:"\u53D8\u66F4\u8BB0\u5F55\u8BF4\u660E",slug:"\u53D8\u66F4\u8BB0\u5F55\u8BF4\u660E",link:"#\u53D8\u66F4\u8BB0\u5F55\u8BF4\u660E",children:[]},{level:2,title:"\u76F8\u5173\u7B26\u53F7\u8BF4\u660E",slug:"\u76F8\u5173\u7B26\u53F7\u8BF4\u660E",link:"#\u76F8\u5173\u7B26\u53F7\u8BF4\u660E",children:[]}],path:"/zh-cn/api/home.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"API \u57FA\u672C\u914D\u7F6E",headers:[{level:2,title:"\u529F\u80FD\u914D\u7F6E",slug:"\u529F\u80FD\u914D\u7F6E",link:"#\u529F\u80FD\u914D\u7F6E",children:[{level:3,title:"configs \u65B9\u6CD5",slug:"configs-\u65B9\u6CD5",link:"#configs-\u65B9\u6CD5",children:[]}]},{level:2,title:"Hooker \u914D\u7F6E",slug:"hooker-\u914D\u7F6E",link:"#hooker-\u914D\u7F6E",children:[{level:3,title:"\u901A\u8FC7 lambda \u521B\u5EFA",slug:"\u901A\u8FC7-lambda-\u521B\u5EFA",link:"#\u901A\u8FC7-lambda-\u521B\u5EFA",children:[]},{level:3,title:"\u901A\u8FC7\u81EA\u5B9A\u4E49 Hooker \u521B\u5EFA",slug:"\u901A\u8FC7\u81EA\u5B9A\u4E49-hooker-\u521B\u5EFA",link:"#\u901A\u8FC7\u81EA\u5B9A\u4E49-hooker-\u521B\u5EFA",children:[]},{level:3,title:"\u6269\u5C55\u7279\u6027",slug:"\u6269\u5C55\u7279\u6027",link:"#\u6269\u5C55\u7279\u6027",children:[]},{level:3,title:"\u6CE8\u610F\u4E8B\u9879",slug:"\u6CE8\u610F\u4E8B\u9879",link:"#\u6CE8\u610F\u4E8B\u9879",children:[]}]},{level:2,title:"\u4F5C\u4E3A Hook API \u4F7F\u7528\u9700\u8981\u6CE8\u610F\u7684\u5730\u65B9",slug:"\u4F5C\u4E3A-hook-api-\u4F7F\u7528\u9700\u8981\u6CE8\u610F\u7684\u5730\u65B9",link:"#\u4F5C\u4E3A-hook-api-\u4F7F\u7528\u9700\u8981\u6CE8\u610F\u7684\u5730\u65B9",children:[]}],path:"/zh-cn/config/api-example.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"API \u5F02\u5E38\u5904\u7406",headers:[{level:2,title:"\u975E\u963B\u65AD\u5F02\u5E38",slug:"\u975E\u963B\u65AD\u5F02\u5E38",link:"#\u975E\u963B\u65AD\u5F02\u5E38",children:[]},{level:2,title:"\u963B\u65AD\u5F02\u5E38",slug:"\u963B\u65AD\u5F02\u5E38",link:"#\u963B\u65AD\u5F02\u5E38",children:[]}],path:"/zh-cn/config/api-exception.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E",headers:[{level:2,title:"\u4F9D\u8D56\u914D\u7F6E",slug:"\u4F9D\u8D56\u914D\u7F6E",link:"#\u4F9D\u8D56\u914D\u7F6E",children:[]},{level:2,title:"\u5165\u53E3\u914D\u7F6E",slug:"\u5165\u53E3\u914D\u7F6E",link:"#\u5165\u53E3\u914D\u7F6E",children:[]},{level:2,title:"Hook Framework",slug:"hook-framework",link:"#hook-framework",children:[{level:3,title:"Pine",slug:"pine",link:"#pine",children:[]},{level:3,title:"SandHook",slug:"sandhook",link:"#sandhook",children:[]},{level:3,title:"Whale",slug:"whale",link:"#whale",children:[]}]}],path:"/zh-cn/config/api-using.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"R8 \u4E0E Proguard \u6DF7\u6DC6",headers:[{level:2,title:"R8",slug:"r8",link:"#r8",children:[]},{level:2,title:"Proguard",slug:"proguard",link:"#proguard",children:[]}],path:"/zh-cn/config/r8-proguard.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E",headers:[{level:2,title:"\u4F9D\u8D56\u914D\u7F6E",slug:"\u4F9D\u8D56\u914D\u7F6E",link:"#\u4F9D\u8D56\u914D\u7F6E",children:[]},{level:2,title:"\u81EA\u5B9A\u4E49\u5904\u7406\u7A0B\u5E8F",slug:"\u81EA\u5B9A\u4E49\u5904\u7406\u7A0B\u5E8F",link:"#\u81EA\u5B9A\u4E49\u5904\u7406\u7A0B\u5E8F",children:[{level:3,title:"InjectYukiHookWithXposed \u6CE8\u89E3",slug:"injectyukihookwithxposed-\u6CE8\u89E3",link:"#injectyukihookwithxposed-\u6CE8\u89E3",children:[]},{level:3,title:"IYukiHookXposedInit \u63A5\u53E3",slug:"iyukihookxposedinit-\u63A5\u53E3",link:"#iyukihookxposedinit-\u63A5\u53E3",children:[]}]},{level:2,title:"\u539F\u751F Xposed API \u4E8B\u4EF6",slug:"\u539F\u751F-xposed-api-\u4E8B\u4EF6",link:"#\u539F\u751F-xposed-api-\u4E8B\u4EF6",children:[]}],path:"/zh-cn/config/xposed-using.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u7528\u6CD5\u793A\u4F8B",headers:[{level:2,title:"\u7ED3\u6784\u56FE\u89E3",slug:"\u7ED3\u6784\u56FE\u89E3",link:"#\u7ED3\u6784\u56FE\u89E3",children:[]},{level:2,title:"Demo",slug:"demo",link:"#demo",children:[]},{level:2,title:"\u4E00\u4E2A\u7B80\u5355\u7684 Hook \u4F8B\u5B50",slug:"\u4E00\u4E2A\u7B80\u5355\u7684-hook-\u4F8B\u5B50",link:"#\u4E00\u4E2A\u7B80\u5355\u7684-hook-\u4F8B\u5B50",children:[{level:3,title:"Hook APP",slug:"hook-app",link:"#hook-app",children:[]},{level:3,title:"Hook Zygote",slug:"hook-zygote",link:"#hook-zygote",children:[]},{level:3,title:"Hook \u7CFB\u7EDF\u6846\u67B6",slug:"hook-\u7CFB\u7EDF\u6846\u67B6",link:"#hook-\u7CFB\u7EDF\u6846\u67B6",children:[]},{level:3,title:"Hook Resources",slug:"hook-resources",link:"#hook-resources",children:[]},{level:3,title:"\u89E3\u9664 Hook",slug:"\u89E3\u9664-hook",link:"#\u89E3\u9664-hook",children:[]}]},{level:2,title:"\u5F02\u5E38\u5904\u7406",slug:"\u5F02\u5E38\u5904\u7406",link:"#\u5F02\u5E38\u5904\u7406",children:[{level:3,title:"\u76D1\u542C\u5F02\u5E38",slug:"\u76D1\u542C\u5F02\u5E38",link:"#\u76D1\u542C\u5F02\u5E38",children:[]},{level:3,title:"\u629B\u51FA\u5F02\u5E38",slug:"\u629B\u51FA\u5F02\u5E38",link:"#\u629B\u51FA\u5F02\u5E38",children:[]}]},{level:2,title:"\u72B6\u6001\u76D1\u542C",slug:"\u72B6\u6001\u76D1\u542C",link:"#\u72B6\u6001\u76D1\u542C",children:[]},{level:2,title:"\u6269\u5C55\u7528\u6CD5",slug:"\u6269\u5C55\u7528\u6CD5",link:"#\u6269\u5C55\u7528\u6CD5",children:[{level:3,title:"\u591A\u4E2A\u5BBF\u4E3B",slug:"\u591A\u4E2A\u5BBF\u4E3B",link:"#\u591A\u4E2A\u5BBF\u4E3B",children:[]},{level:3,title:"\u591A\u4E2A\u8FDB\u7A0B",slug:"\u591A\u4E2A\u8FDB\u7A0B",link:"#\u591A\u4E2A\u8FDB\u7A0B",children:[]}]},{level:2,title:"\u5199\u6CD5\u4F18\u5316",slug:"\u5199\u6CD5\u4F18\u5316",link:"#\u5199\u6CD5\u4F18\u5316",children:[]},{level:2,title:"Xposed \u6A21\u5757\u5224\u65AD\u81EA\u8EAB\u6FC0\u6D3B\u72B6\u6001",slug:"xposed-\u6A21\u5757\u5224\u65AD\u81EA\u8EAB\u6FC0\u6D3B\u72B6\u6001",link:"#xposed-\u6A21\u5757\u5224\u65AD\u81EA\u8EAB\u6FC0\u6D3B\u72B6\u6001",children:[]}],path:"/zh-cn/guide/example.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u4ECB\u7ECD",headers:[{level:2,title:"\u80CC\u666F",slug:"\u80CC\u666F",link:"#\u80CC\u666F",children:[]},{level:2,title:"\u7528\u9014",slug:"\u7528\u9014",link:"#\u7528\u9014",children:[]},{level:2,title:"\u8BED\u8A00\u8981\u6C42",slug:"\u8BED\u8A00\u8981\u6C42",link:"#\u8BED\u8A00\u8981\u6C42",children:[]},{level:2,title:"\u7075\u611F\u6765\u6E90",slug:"\u7075\u611F\u6765\u6E90",link:"#\u7075\u611F\u6765\u6E90",children:[]},{level:2,title:"\u652F\u6301\u7684 Hook Framework",slug:"\u652F\u6301\u7684-hook-framework",link:"#\u652F\u6301\u7684-hook-framework",children:[]}],path:"/zh-cn/guide/home.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u57FA\u7840\u77E5\u8BC6",headers:[{level:2,title:"\u76F8\u5173\u4ECB\u7ECD",slug:"\u76F8\u5173\u4ECB\u7ECD",link:"#\u76F8\u5173\u4ECB\u7ECD",children:[{level:3,title:"Xposed \u662F\u4EC0\u4E48",slug:"xposed-\u662F\u4EC0\u4E48",link:"#xposed-\u662F\u4EC0\u4E48",children:[]},{level:3,title:"Xposed \u80FD\u505A\u4EC0\u4E48",slug:"xposed-\u80FD\u505A\u4EC0\u4E48",link:"#xposed-\u80FD\u505A\u4EC0\u4E48",children:[]},{level:3,title:"\u53D1\u5C55\u8FC7\u7A0B",slug:"\u53D1\u5C55\u8FC7\u7A0B",link:"#\u53D1\u5C55\u8FC7\u7A0B",children:[]},{level:3,title:"\u884D\u751F\u4EA7\u54C1",slug:"\u884D\u751F\u4EA7\u54C1",link:"#\u884D\u751F\u4EA7\u54C1",children:[]},{level:3,title:"YukiHookAPI \u505A\u4E86\u4EC0\u4E48",slug:"yukihookapi-\u505A\u4E86\u4EC0\u4E48",link:"#yukihookapi-\u505A\u4E86\u4EC0\u4E48",children:[]}]},{level:2,title:"\u8BA9\u6211\u4EEC\u5F00\u59CB\u5427",slug:"\u8BA9\u6211\u4EEC\u5F00\u59CB\u5427",link:"#\u8BA9\u6211\u4EEC\u5F00\u59CB\u5427",children:[]}],path:"/zh-cn/guide/knowledge.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u4ECE Xposed API \u8FC1\u79FB",headers:[{level:2,title:"\u8FC1\u79FB Hook \u5165\u53E3\u70B9",slug:"\u8FC1\u79FB-hook-\u5165\u53E3\u70B9",link:"#\u8FC1\u79FB-hook-\u5165\u53E3\u70B9",children:[]},{level:2,title:"\u8FC1\u79FB Hook \u65B9\u6CD5\u4F53",slug:"\u8FC1\u79FB-hook-\u65B9\u6CD5\u4F53",link:"#\u8FC1\u79FB-hook-\u65B9\u6CD5\u4F53",children:[{level:3,title:"Before/After Hook",slug:"before-after-hook",link:"#before-after-hook",children:[]},{level:3,title:"Replace Hook",slug:"replace-hook",link:"#replace-hook",children:[]}]},{level:2,title:"\u8FC1\u79FB\u5176\u5B83\u529F\u80FD",slug:"\u8FC1\u79FB\u5176\u5B83\u529F\u80FD",link:"#\u8FC1\u79FB\u5176\u5B83\u529F\u80FD",children:[]}],path:"/zh-cn/guide/move-to-new-api.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u5FEB\u901F\u5F00\u59CB",headers:[{level:2,title:"\u73AF\u5883\u8981\u6C42",slug:"\u73AF\u5883\u8981\u6C42",link:"#\u73AF\u5883\u8981\u6C42",children:[]},{level:2,title:"\u81EA\u52A8\u6784\u5EFA\u9879\u76EE",slug:"\u81EA\u52A8\u6784\u5EFA\u9879\u76EE",link:"#\u81EA\u52A8\u6784\u5EFA\u9879\u76EE",children:[]},{level:2,title:"\u624B\u52A8\u914D\u7F6E\u9879\u76EE",slug:"\u624B\u52A8\u914D\u7F6E\u9879\u76EE",link:"#\u624B\u52A8\u914D\u7F6E\u9879\u76EE",children:[{level:3,title:"\u521B\u5EFA\u9879\u76EE",slug:"\u521B\u5EFA\u9879\u76EE",link:"#\u521B\u5EFA\u9879\u76EE",children:[]},{level:3,title:"\u96C6\u6210\u4F9D\u8D56",slug:"\u96C6\u6210\u4F9D\u8D56",link:"#\u96C6\u6210\u4F9D\u8D56",children:[]},{level:3,title:"\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528",slug:"\u4F5C\u4E3A-xposed-\u6A21\u5757\u4F7F\u7528",link:"#\u4F5C\u4E3A-xposed-\u6A21\u5757\u4F7F\u7528",children:[]},{level:3,title:"\u4F5C\u4E3A Hook API \u4F7F\u7528",slug:"\u4F5C\u4E3A-hook-api-\u4F7F\u7528",link:"#\u4F5C\u4E3A-hook-api-\u4F7F\u7528",children:[]}]}],path:"/zh-cn/guide/quick-start.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookAPI \u6784\u5EFA\u5DE5\u5177",headers:[{level:2,title:"\u83B7\u53D6\u9879\u76EE",slug:"\u83B7\u53D6\u9879\u76EE",link:"#\u83B7\u53D6\u9879\u76EE",children:[]},{level:2,title:"\u4F7F\u7528\u65B9\u6CD5",slug:"\u4F7F\u7528\u65B9\u6CD5",link:"#\u4F7F\u7528\u65B9\u6CD5",children:[{level:3,title:"\u57FA\u672C\u7528\u6CD5",slug:"\u57FA\u672C\u7528\u6CD5",link:"#\u57FA\u672C\u7528\u6CD5",children:[]},{level:3,title:"\u914D\u7F6E\u6A21\u677F",slug:"\u914D\u7F6E\u6A21\u677F",link:"#\u914D\u7F6E\u6A21\u677F",children:[]},{level:3,title:"\u591A\u8BED\u8A00\u652F\u6301",slug:"\u591A\u8BED\u8A00\u652F\u6301",link:"#\u591A\u8BED\u8A00\u652F\u6301",children:[]}]}],path:"/zh-cn/tools/yukihookapi-projectbuilder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"Host Resource Injection Extension",headers:[{level:2,title:"Inject Module App's Resources",slug:"inject-module-app-s-resources",link:"#inject-module-app-s-resources",children:[]},{level:2,title:"Register Module App's Activity",slug:"register-module-app-s-activity",link:"#register-module-app-s-activity",children:[]},{level:2,title:"Create ContextThemeWrapper Proxy",slug:"create-contextthemewrapper-proxy",link:"#create-contextthemewrapper-proxy",children:[]},{level:2,title:"ClassLoader Conflict Problem",slug:"classloader-conflict-problem",link:"#classloader-conflict-problem",children:[]}],path:"/en/api/special-features/host-inject.html",pathLocale:"/en/",extraFields:[]},{title:"Host Lifecycle Extension",headers:[{level:2,title:"Listener Lifecycle",slug:"listener-lifecycle",link:"#listener-lifecycle",children:[]},{level:2,title:"Register System Broadcast",slug:"register-system-broadcast",link:"#register-system-broadcast",children:[]}],path:"/en/api/special-features/host-lifecycle.html",pathLocale:"/en/",extraFields:[]},{title:"Debug Logs",headers:[{level:2,title:"Normal Logs",slug:"normal-logs",link:"#normal-logs",children:[]},{level:2,title:"Error Logs",slug:"error-logs",link:"#error-logs",children:[]},{level:2,title:"Save Logs and Custom Elements",slug:"save-logs-and-custom-elements",link:"#save-logs-and-custom-elements",children:[]}],path:"/en/api/special-features/logger.html",pathLocale:"/en/",extraFields:[]},{title:"Reflection Extensions",headers:[{level:2,title:"Class Extensions",slug:"class-extensions",link:"#class-extensions",children:[{level:3,title:"Object Conversion",slug:"object-conversion",link:"#object-conversion",children:[]},{level:3,title:"Existential Judgment",slug:"existential-judgment",link:"#existential-judgment",children:[]},{level:3,title:"Vague Search",slug:"vague-search",link:"#vague-search",children:[]}]},{level:2,title:"Member Extensions",slug:"member-extensions",link:"#member-extensions",children:[{level:3,title:"Find and Reflection",slug:"find-and-reflection",link:"#find-and-reflection",children:[]},{level:3,title:"Optional Find Conditions",slug:"optional-find-conditions",link:"#optional-find-conditions",children:[]},{level:3,title:"Find in Super Class",slug:"find-in-super-class",link:"#find-in-super-class",children:[]},{level:3,title:"Vague Find",slug:"vague-find",link:"#vague-find",children:[]},{level:3,title:"Multiple Find",slug:"multiple-find",link:"#multiple-find",children:[]},{level:3,title:"Static Bytecode",slug:"static-bytecode",link:"#static-bytecode",children:[]},{level:3,title:"Obfuscated Bytecode",slug:"obfuscated-bytecode",link:"#obfuscated-bytecode",children:[]},{level:3,title:"Directly Called",slug:"directly-called",link:"#directly-called",children:[]},{level:3,title:"Original Called",slug:"original-called",link:"#original-called",children:[]},{level:3,title:"Find Again",slug:"find-again",link:"#find-again",children:[]},{level:3,title:"Relative Matching",slug:"relative-matching",link:"#relative-matching",children:[]},{level:3,title:"Calling Generics",slug:"calling-generics",link:"#calling-generics",children:[]},{level:3,title:"Pay Attention of Trap",slug:"pay-attention-of-trap",link:"#pay-attention-of-trap",children:[]}]},{level:2,title:"Common Type Extensions",slug:"common-type-extensions",link:"#common-type-extensions",children:[]}],path:"/en/api/special-features/reflection.html",pathLocale:"/en/",extraFields:[]},{title:"Xposed Module and Host Channel",headers:[{level:2,title:"Basic Usage",slug:"basic-usage",link:"#basic-usage",children:[]},{level:2,title:"Determine Module App and Host App Version Match",slug:"determine-module-app-and-host-app-version-match",link:"#determine-module-app-and-host-app-version-match",children:[]},{level:2,title:"Rules for Callback Event Response",slug:"rules-for-callback-event-response",link:"#rules-for-callback-event-response",children:[]},{level:2,title:"Security Instructions",slug:"security-instructions",link:"#security-instructions",children:[]}],path:"/en/api/special-features/xposed-channel.html",pathLocale:"/en/",extraFields:[]},{title:"Xposed Module Data Storage",headers:[{level:2,title:"Use in Activity",slug:"use-in-activity",link:"#use-in-activity",children:[]},{level:2,title:"Use in PreferenceFragment",slug:"use-in-preferencefragment",link:"#use-in-preferencefragment",children:[]}],path:"/en/api/special-features/xposed-storage.html",pathLocale:"/en/",extraFields:[]},{title:"\u5BBF\u4E3B\u8D44\u6E90\u6CE8\u5165\u6269\u5C55",headers:[{level:2,title:"\u6CE8\u5165\u6A21\u5757\u8D44\u6E90 (Resources)",slug:"\u6CE8\u5165\u6A21\u5757\u8D44\u6E90-resources",link:"#\u6CE8\u5165\u6A21\u5757\u8D44\u6E90-resources",children:[]},{level:2,title:"\u6CE8\u518C\u6A21\u5757 Activity",slug:"\u6CE8\u518C\u6A21\u5757-activity",link:"#\u6CE8\u518C\u6A21\u5757-activity",children:[]},{level:2,title:"\u521B\u5EFA ContextThemeWrapper \u4EE3\u7406",slug:"\u521B\u5EFA-contextthemewrapper-\u4EE3\u7406",link:"#\u521B\u5EFA-contextthemewrapper-\u4EE3\u7406",children:[]},{level:2,title:"ClassLoader \u51B2\u7A81\u95EE\u9898",slug:"classloader-\u51B2\u7A81\u95EE\u9898",link:"#classloader-\u51B2\u7A81\u95EE\u9898",children:[]}],path:"/zh-cn/api/special-features/host-inject.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u5BBF\u4E3B\u751F\u547D\u5468\u671F\u6269\u5C55",headers:[{level:2,title:"\u76D1\u542C\u751F\u547D\u5468\u671F",slug:"\u76D1\u542C\u751F\u547D\u5468\u671F",link:"#\u76D1\u542C\u751F\u547D\u5468\u671F",children:[]},{level:2,title:"\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD",slug:"\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD",link:"#\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD",children:[]}],path:"/zh-cn/api/special-features/host-lifecycle.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u8C03\u8BD5\u65E5\u5FD7",headers:[{level:2,title:"\u666E\u901A\u65E5\u5FD7",slug:"\u666E\u901A\u65E5\u5FD7",link:"#\u666E\u901A\u65E5\u5FD7",children:[]},{level:2,title:"\u9519\u8BEF\u65E5\u5FD7",slug:"\u9519\u8BEF\u65E5\u5FD7",link:"#\u9519\u8BEF\u65E5\u5FD7",children:[]},{level:2,title:"\u4FDD\u5B58\u65E5\u5FD7\u4E0E\u81EA\u5B9A\u4E49\u5143\u7D20",slug:"\u4FDD\u5B58\u65E5\u5FD7\u4E0E\u81EA\u5B9A\u4E49\u5143\u7D20",link:"#\u4FDD\u5B58\u65E5\u5FD7\u4E0E\u81EA\u5B9A\u4E49\u5143\u7D20",children:[]}],path:"/zh-cn/api/special-features/logger.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55",headers:[{level:2,title:"Class \u6269\u5C55",slug:"class-\u6269\u5C55",link:"#class-\u6269\u5C55",children:[{level:3,title:"\u5BF9\u8C61\u8F6C\u6362",slug:"\u5BF9\u8C61\u8F6C\u6362",link:"#\u5BF9\u8C61\u8F6C\u6362",children:[]},{level:3,title:"\u5B58\u5728\u5224\u65AD",slug:"\u5B58\u5728\u5224\u65AD",link:"#\u5B58\u5728\u5224\u65AD",children:[]},{level:3,title:"\u6A21\u7CCA\u67E5\u627E",slug:"\u6A21\u7CCA\u67E5\u627E",link:"#\u6A21\u7CCA\u67E5\u627E",children:[]}]},{level:2,title:"Member \u6269\u5C55",slug:"member-\u6269\u5C55",link:"#member-\u6269\u5C55",children:[{level:3,title:"\u67E5\u627E\u4E0E\u53CD\u5C04\u8C03\u7528",slug:"\u67E5\u627E\u4E0E\u53CD\u5C04\u8C03\u7528",link:"#\u67E5\u627E\u4E0E\u53CD\u5C04\u8C03\u7528",children:[]},{level:3,title:"\u53EF\u9009\u7684\u67E5\u627E\u6761\u4EF6",slug:"\u53EF\u9009\u7684\u67E5\u627E\u6761\u4EF6",link:"#\u53EF\u9009\u7684\u67E5\u627E\u6761\u4EF6",children:[]},{level:3,title:"\u5728\u7236\u7C7B\u67E5\u627E",slug:"\u5728\u7236\u7C7B\u67E5\u627E",link:"#\u5728\u7236\u7C7B\u67E5\u627E",children:[]},{level:3,title:"\u6A21\u7CCA\u67E5\u627E",slug:"\u6A21\u7CCA\u67E5\u627E-1",link:"#\u6A21\u7CCA\u67E5\u627E-1",children:[]},{level:3,title:"\u591A\u91CD\u67E5\u627E",slug:"\u591A\u91CD\u67E5\u627E-1",link:"#\u591A\u91CD\u67E5\u627E-1",children:[]},{level:3,title:"\u9759\u6001\u5B57\u8282\u7801",slug:"\u9759\u6001\u5B57\u8282\u7801",link:"#\u9759\u6001\u5B57\u8282\u7801",children:[]},{level:3,title:"\u6DF7\u6DC6\u7684\u5B57\u8282\u7801",slug:"\u6DF7\u6DC6\u7684\u5B57\u8282\u7801",link:"#\u6DF7\u6DC6\u7684\u5B57\u8282\u7801",children:[]},{level:3,title:"\u76F4\u63A5\u8C03\u7528",slug:"\u76F4\u63A5\u8C03\u7528",link:"#\u76F4\u63A5\u8C03\u7528",children:[]},{level:3,title:"\u539F\u59CB\u8C03\u7528",slug:"\u539F\u59CB\u8C03\u7528",link:"#\u539F\u59CB\u8C03\u7528",children:[]},{level:3,title:"\u518D\u6B21\u67E5\u627E",slug:"\u518D\u6B21\u67E5\u627E",link:"#\u518D\u6B21\u67E5\u627E",children:[]},{level:3,title:"\u76F8\u5BF9\u5339\u914D",slug:"\u76F8\u5BF9\u5339\u914D",link:"#\u76F8\u5BF9\u5339\u914D",children:[]},{level:3,title:"\u8C03\u7528\u6CDB\u578B",slug:"\u8C03\u7528\u6CDB\u578B",link:"#\u8C03\u7528\u6CDB\u578B",children:[]},{level:3,title:"\u6CE8\u610F\u8BEF\u533A",slug:"\u6CE8\u610F\u8BEF\u533A",link:"#\u6CE8\u610F\u8BEF\u533A",children:[]}]},{level:2,title:"\u5E38\u7528\u7C7B\u578B\u6269\u5C55",slug:"\u5E38\u7528\u7C7B\u578B\u6269\u5C55",link:"#\u5E38\u7528\u7C7B\u578B\u6269\u5C55",children:[]}],path:"/zh-cn/api/special-features/reflection.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"Xposed \u6A21\u5757\u4E0E\u5BBF\u4E3B\u901A\u8BAF\u6865",headers:[{level:2,title:"\u57FA\u672C\u7528\u6CD5",slug:"\u57FA\u672C\u7528\u6CD5",link:"#\u57FA\u672C\u7528\u6CD5",children:[]},{level:2,title:"\u5224\u65AD\u6A21\u5757\u4E0E\u5BBF\u4E3B\u7248\u672C\u662F\u5426\u5339\u914D",slug:"\u5224\u65AD\u6A21\u5757\u4E0E\u5BBF\u4E3B\u7248\u672C\u662F\u5426\u5339\u914D",link:"#\u5224\u65AD\u6A21\u5757\u4E0E\u5BBF\u4E3B\u7248\u672C\u662F\u5426\u5339\u914D",children:[]},{level:2,title:"\u56DE\u8C03\u4E8B\u4EF6\u54CD\u5E94\u7684\u89C4\u5219",slug:"\u56DE\u8C03\u4E8B\u4EF6\u54CD\u5E94\u7684\u89C4\u5219",link:"#\u56DE\u8C03\u4E8B\u4EF6\u54CD\u5E94\u7684\u89C4\u5219",children:[]},{level:2,title:"\u5B89\u5168\u6027\u8BF4\u660E",slug:"\u5B89\u5168\u6027\u8BF4\u660E",link:"#\u5B89\u5168\u6027\u8BF4\u660E",children:[]}],path:"/zh-cn/api/special-features/xposed-channel.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"Xposed \u6A21\u5757\u6570\u636E\u5B58\u50A8",headers:[{level:2,title:"\u5728 Activity \u4E2D\u4F7F\u7528",slug:"\u5728-activity-\u4E2D\u4F7F\u7528",link:"#\u5728-activity-\u4E2D\u4F7F\u7528",children:[]},{level:2,title:"\u5728 PreferenceFragment \u4E2D\u4F7F\u7528",slug:"\u5728-preferencefragment-\u4E2D\u4F7F\u7528",link:"#\u5728-preferencefragment-\u4E2D\u4F7F\u7528",children:[]}],path:"/zh-cn/api/special-features/xposed-storage.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookAPI - object",headers:[{level:2,title:"API_VERSION_NAME - field",slug:"api-version-name-field",link:"#api-version-name-field",children:[]},{level:2,title:"API_VERSION_CODE - field",slug:"api-version-code-field",link:"#api-version-code-field",children:[]},{level:2,title:"Status - object",slug:"status-object",link:"#status-object",children:[{level:3,title:"compiledTimestamp - field",slug:"compiledtimestamp-field",link:"#compiledtimestamp-field",children:[]},{level:3,title:"isXposedEnvironment - field",slug:"isxposedenvironment-field",link:"#isxposedenvironment-field",children:[]},{level:3,title:"isModuleActive - field",slug:"ismoduleactive-field",link:"#ismoduleactive-field",children:[]},{level:3,title:"isXposedModuleActive - field",slug:"isxposedmoduleactive-field",link:"#isxposedmoduleactive-field",children:[]},{level:3,title:"isTaiChiModuleActive - field",slug:"istaichimoduleactive-field",link:"#istaichimoduleactive-field",children:[]},{level:3,title:"isSupportResourcesHook - field",slug:"issupportresourceshook-field",link:"#issupportresourceshook-field",children:[]},{level:3,title:"Executor - object",slug:"executor-object",link:"#executor-object",children:[]}]},{level:2,title:"Configs - object",slug:"configs-object",link:"#configs-object",children:[{level:3,title:"debugLog - method",slug:"debuglog-method",link:"#debuglog-method",children:[]},{level:3,title:"isDebug - field",slug:"isdebug-field",link:"#isdebug-field",children:[]},{level:3,title:"isEnableModulePrefsCache - field",slug:"isenablemoduleprefscache-field",link:"#isenablemoduleprefscache-field",children:[]},{level:3,title:"isEnableModuleAppResourcesCache - field",slug:"isenablemoduleappresourcescache-field",link:"#isenablemoduleappresourcescache-field",children:[]},{level:3,title:"isEnableHookModuleStatus - field",slug:"isenablehookmodulestatus-field",link:"#isenablehookmodulestatus-field",children:[]},{level:3,title:"isEnableHookSharedPreferences - field",slug:"isenablehooksharedpreferences-field",link:"#isenablehooksharedpreferences-field",children:[]},{level:3,title:"isEnableDataChannel - field",slug:"isenabledatachannel-field",link:"#isenabledatachannel-field",children:[]},{level:3,title:"isEnableMemberCache - field",slug:"isenablemembercache-field",link:"#isenablemembercache-field",children:[]}]},{level:2,title:"configs - method",slug:"configs-method",link:"#configs-method",children:[]},{level:2,title:"encase - method",slug:"encase-method",link:"#encase-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookAPI - object",headers:[{level:2,title:"API_VERSION_NAME - field",slug:"api-version-name-field",link:"#api-version-name-field",children:[]},{level:2,title:"API_VERSION_CODE - field",slug:"api-version-code-field",link:"#api-version-code-field",children:[]},{level:2,title:"Status - object",slug:"status-object",link:"#status-object",children:[{level:3,title:"compiledTimestamp - field",slug:"compiledtimestamp-field",link:"#compiledtimestamp-field",children:[]},{level:3,title:"isXposedEnvironment - field",slug:"isxposedenvironment-field",link:"#isxposedenvironment-field",children:[]},{level:3,title:"isModuleActive - field",slug:"ismoduleactive-field",link:"#ismoduleactive-field",children:[]},{level:3,title:"isXposedModuleActive - field",slug:"isxposedmoduleactive-field",link:"#isxposedmoduleactive-field",children:[]},{level:3,title:"isTaiChiModuleActive - field",slug:"istaichimoduleactive-field",link:"#istaichimoduleactive-field",children:[]},{level:3,title:"isSupportResourcesHook - field",slug:"issupportresourceshook-field",link:"#issupportresourceshook-field",children:[]},{level:3,title:"Executor - object",slug:"executor-object",link:"#executor-object",children:[]}]},{level:2,title:"Configs - object",slug:"configs-object",link:"#configs-object",children:[{level:3,title:"debugLog - method",slug:"debuglog-method",link:"#debuglog-method",children:[]},{level:3,title:"isDebug - field",slug:"isdebug-field",link:"#isdebug-field",children:[]},{level:3,title:"isEnableModulePrefsCache - field",slug:"isenablemoduleprefscache-field",link:"#isenablemoduleprefscache-field",children:[]},{level:3,title:"isEnableModuleAppResourcesCache - field",slug:"isenablemoduleappresourcescache-field",link:"#isenablemoduleappresourcescache-field",children:[]},{level:3,title:"isEnableHookModuleStatus - field",slug:"isenablehookmodulestatus-field",link:"#isenablehookmodulestatus-field",children:[]},{level:3,title:"isEnableHookSharedPreferences - field",slug:"isenablehooksharedpreferences-field",link:"#isenablehooksharedpreferences-field",children:[]},{level:3,title:"isEnableDataChannel - field",slug:"isenabledatachannel-field",link:"#isenabledatachannel-field",children:[]},{level:3,title:"isEnableMemberCache - field",slug:"isenablemembercache-field",link:"#isenablemembercache-field",children:[]}]},{level:2,title:"configs - method",slug:"configs-method",link:"#configs-method",children:[]},{level:2,title:"encase - method",slug:"encase-method",link:"#encase-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"InjectYukiHookWithXposed - annotation",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html",pathLocale:"/en/",extraFields:[]},{title:"CurrentClass - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"simpleName - field",slug:"simplename-field",link:"#simplename-field",children:[]},{level:2,title:"generic - method",slug:"generic-method",link:"#generic-method",children:[]},{level:2,title:"generic - method",slug:"generic-method-1",link:"#generic-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:2,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:2,title:"SuperClass - class",slug:"superclass-class",link:"#superclass-class",children:[{level:3,title:"name - field",slug:"name-field-1",link:"#name-field-1",children:[]},{level:3,title:"simpleName - field",slug:"simplename-field-1",link:"#simplename-field-1",children:[]},{level:3,title:"generic - method",slug:"generic-method-2",link:"#generic-method-2",children:[]},{level:3,title:"generic - method",slug:"generic-method-3",link:"#generic-method-3",children:[]},{level:3,title:"field - method",slug:"field-method-1",link:"#field-method-1",children:[]},{level:3,title:"method - method",slug:"method-method-1",link:"#method-method-1",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html",pathLocale:"/en/",extraFields:[]},{title:"GenericClass - class",headers:[{level:2,title:"argument - method",slug:"argument-method",link:"#argument-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html",pathLocale:"/en/",extraFields:[]},{title:"HookClass - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html",pathLocale:"/en/",extraFields:[]},{title:"HookResources - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html",pathLocale:"/en/",extraFields:[]},{title:"VariousClass - class",headers:[{level:2,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:2,title:"getOrNull - method",slug:"getornull-method",link:"#getornull-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html",pathLocale:"/en/",extraFields:[]},{title:"YukiBaseHooker - class",headers:[{level:2,title:"onHook - method",slug:"onhook-method",link:"#onhook-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html",pathLocale:"/en/",extraFields:[]},{title:"ReflectionFactory - kt",headers:[{level:2,title:"MembersType - class",slug:"memberstype-class",link:"#memberstype-class",children:[{level:3,title:"ALL - enum",slug:"all-enum",link:"#all-enum",children:[]},{level:3,title:"METHOD - enum",slug:"method-enum",link:"#method-enum",children:[]},{level:3,title:"CONSTRUCTOR - enum",slug:"constructor-enum",link:"#constructor-enum",children:[]}]},{level:2,title:"ClassLoader.listOfClasses - ext-method",slug:"classloader-listofclasses-ext-method",link:"#classloader-listofclasses-ext-method",children:[]},{level:2,title:"ClassLoader.searchClass - ext-method",slug:"classloader-searchclass-ext-method",link:"#classloader-searchclass-ext-method",children:[]},{level:2,title:"ClassLoader.onLoadClass - ext-method",slug:"classloader-onloadclass-ext-method",link:"#classloader-onloadclass-ext-method",children:[]},{level:2,title:"Class.hasExtends - ext-field",slug:"class-hasextends-ext-field",link:"#class-hasextends-ext-field",children:[]},{level:2,title:"Class?.extends - ext-method",slug:"class-extends-ext-method",link:"#class-extends-ext-method",children:[]},{level:2,title:"Class?.notExtends - ext-method",slug:"class-notextends-ext-method",link:"#class-notextends-ext-method",children:[]},{level:2,title:"Class?.implements - ext-method",slug:"class-implements-ext-method",link:"#class-implements-ext-method",children:[]},{level:2,title:"Class?.notImplements - ext-method",slug:"class-notimplements-ext-method",link:"#class-notimplements-ext-method",children:[]},{level:2,title:"Class.toJavaPrimitiveType - ext-method",slug:"class-tojavaprimitivetype-ext-method",link:"#class-tojavaprimitivetype-ext-method",children:[]},{level:2,title:"String.toClass - ext-method",slug:"string-toclass-ext-method",link:"#string-toclass-ext-method",children:[]},{level:2,title:"String.toClassOrNull - ext-method",slug:"string-toclassornull-ext-method",link:"#string-toclassornull-ext-method",children:[]},{level:2,title:"classOf - method",slug:"classof-method",link:"#classof-method",children:[]},{level:2,title:"String.hasClass - ext-method",slug:"string-hasclass-ext-method",link:"#string-hasclass-ext-method",children:[]},{level:2,title:"Class.hasField - ext-method",slug:"class-hasfield-ext-method",link:"#class-hasfield-ext-method",children:[]},{level:2,title:"Class.hasMethod - ext-method",slug:"class-hasmethod-ext-method",link:"#class-hasmethod-ext-method",children:[]},{level:2,title:"Class.hasConstructor - ext-method",slug:"class-hasconstructor-ext-method",link:"#class-hasconstructor-ext-method",children:[]},{level:2,title:"Member.hasModifiers - ext-method",slug:"member-hasmodifiers-ext-method",link:"#member-hasmodifiers-ext-method",children:[]},{level:2,title:"Class.hasModifiers - ext-method",slug:"class-hasmodifiers-ext-method",link:"#class-hasmodifiers-ext-method",children:[]},{level:2,title:"Class.field - ext-method",slug:"class-field-ext-method",link:"#class-field-ext-method",children:[]},{level:2,title:"Class.method - ext-method",slug:"class-method-ext-method",link:"#class-method-ext-method",children:[]},{level:2,title:"Class.constructor - ext-method",slug:"class-constructor-ext-method",link:"#class-constructor-ext-method",children:[]},{level:2,title:"Class.generic - ext-method",slug:"class-generic-ext-method",link:"#class-generic-ext-method",children:[]},{level:2,title:"Class.generic - ext-method",slug:"class-generic-ext-method-1",link:"#class-generic-ext-method-1",children:[]},{level:2,title:"Any.current - ext-method",slug:"any-current-ext-method",link:"#any-current-ext-method",children:[]},{level:2,title:"Class.buildOf - ext-method",slug:"class-buildof-ext-method",link:"#class-buildof-ext-method",children:[]},{level:2,title:"Class.allMethods - ext-method",slug:"class-allmethods-ext-method",link:"#class-allmethods-ext-method",children:[]},{level:2,title:"Class.allConstructors - ext-method",slug:"class-allconstructors-ext-method",link:"#class-allconstructors-ext-method",children:[]},{level:2,title:"Class.allFields - ext-method",slug:"class-allfields-ext-method",link:"#class-allfields-ext-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookFactory - kt",headers:[{level:2,title:"IYukiHookXposedInit.configs - ext-method",slug:"iyukihookxposedinit-configs-ext-method",link:"#iyukihookxposedinit-configs-ext-method",children:[]},{level:2,title:"IYukiHookXposedInit.encase - ext-method",slug:"iyukihookxposedinit-encase-ext-method",link:"#iyukihookxposedinit-encase-ext-method",children:[]},{level:2,title:"Context.modulePrefs - ext-field",slug:"context-moduleprefs-ext-field",link:"#context-moduleprefs-ext-field",children:[]},{level:2,title:"Context.modulePrefs - ext-method",slug:"context-moduleprefs-ext-method",link:"#context-moduleprefs-ext-method",children:[]},{level:2,title:"Context.dataChannel - ext-method",slug:"context-datachannel-ext-method",link:"#context-datachannel-ext-method",children:[]},{level:2,title:"Context.processName - ext-field",slug:"context-processname-ext-field",link:"#context-processname-ext-field",children:[]},{level:2,title:"Context+Resources.injectModuleAppResources - ext-method",slug:"context-resources-injectmoduleappresources-ext-method",link:"#context-resources-injectmoduleappresources-ext-method",children:[]},{level:2,title:"Context.registerModuleAppActivities - ext-method",slug:"context-registermoduleappactivities-ext-method",link:"#context-registermoduleappactivities-ext-method",children:[]},{level:2,title:"Context.applyModuleTheme - ext-method",slug:"context-applymoduletheme-ext-method",link:"#context-applymoduletheme-ext-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html",pathLocale:"/en/",extraFields:[]},{title:"YukiMemberHookCreator - class",headers:[{level:2,title:"PRIORITY_DEFAULT - field",slug:"priority-default-field",link:"#priority-default-field",children:[]},{level:2,title:"PRIORITY_LOWEST - field",slug:"priority-lowest-field",link:"#priority-lowest-field",children:[]},{level:2,title:"PRIORITY_HIGHEST - field",slug:"priority-highest-field",link:"#priority-highest-field",children:[]},{level:2,title:"instanceClass - field",slug:"instanceclass-field",link:"#instanceclass-field",children:[]},{level:2,title:"injectMember - method",slug:"injectmember-method",link:"#injectmember-method",children:[]},{level:2,title:"useDangerousOperation - method",slug:"usedangerousoperation-method",link:"#usedangerousoperation-method",children:[]},{level:2,title:"MemberHookCreator - class",slug:"memberhookcreator-class",link:"#memberhookcreator-class",children:[{level:3,title:"members - method",slug:"members-method",link:"#members-method",children:[]},{level:3,title:"allMembers - method",slug:"allmembers-method",link:"#allmembers-method",children:[]},{level:3,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:3,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:3,title:"HookParam.field - i-ext-method",slug:"hookparam-field-i-ext-method",link:"#hookparam-field-i-ext-method",children:[]},{level:3,title:"HookParam.method - i-ext-method",slug:"hookparam-method-i-ext-method",link:"#hookparam-method-i-ext-method",children:[]},{level:3,title:"HookParam.constructor - i-ext-method",slug:"hookparam-constructor-i-ext-method",link:"#hookparam-constructor-i-ext-method",children:[]},{level:3,title:"HookParam.injectMember - i-ext-method",slug:"hookparam-injectmember-i-ext-method",link:"#hookparam-injectmember-i-ext-method",children:[]},{level:3,title:"beforeHook - method",slug:"beforehook-method",link:"#beforehook-method",children:[]},{level:3,title:"afterHook - method",slug:"afterhook-method",link:"#afterhook-method",children:[]},{level:3,title:"replaceAny - method",slug:"replaceany-method",link:"#replaceany-method",children:[]},{level:3,title:"replaceUnit - method",slug:"replaceunit-method",link:"#replaceunit-method",children:[]},{level:3,title:"replaceTo - method",slug:"replaceto-method",link:"#replaceto-method",children:[]},{level:3,title:"replaceToTrue - method",slug:"replacetotrue-method",link:"#replacetotrue-method",children:[]},{level:3,title:"replaceToFalse - method",slug:"replacetofalse-method",link:"#replacetofalse-method",children:[]},{level:3,title:"intercept - method",slug:"intercept-method",link:"#intercept-method",children:[]},{level:3,title:"removeSelf - method",slug:"removeself-method",link:"#removeself-method",children:[]},{level:3,title:"HookCallback - class",slug:"hookcallback-class",link:"#hookcallback-class",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"by - method",slug:"by-method-1",link:"#by-method-1",children:[]},{level:3,title:"onPrepareHook - method",slug:"onpreparehook-method",link:"#onpreparehook-method",children:[]},{level:3,title:"onHookClassNotFoundFailure - method",slug:"onhookclassnotfoundfailure-method",link:"#onhookclassnotfoundfailure-method",children:[]},{level:3,title:"ignoredHookClassNotFoundFailure - method",slug:"ignoredhookclassnotfoundfailure-method",link:"#ignoredhookclassnotfoundfailure-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html",pathLocale:"/en/",extraFields:[]},{title:"YukiResourcesHookCreator - class",headers:[{level:2,title:"injectResource - method",slug:"injectresource-method",link:"#injectresource-method",children:[]},{level:2,title:"ResourcesHookCreator - class",slug:"resourceshookcreator-class",link:"#resourceshookcreator-class",children:[{level:3,title:"resourceId - field",slug:"resourceid-field",link:"#resourceid-field",children:[]},{level:3,title:"conditions - method",slug:"conditions-method",link:"#conditions-method",children:[]},{level:3,title:"replaceTo - method",slug:"replaceto-method",link:"#replaceto-method",children:[]},{level:3,title:"replaceToTrue - method",slug:"replacetotrue-method",link:"#replacetotrue-method",children:[]},{level:3,title:"replaceToFalse - method",slug:"replacetofalse-method",link:"#replacetofalse-method",children:[]},{level:3,title:"replaceToModuleResource - method",slug:"replacetomoduleresource-method",link:"#replacetomoduleresource-method",children:[]},{level:3,title:"injectAsLayout - method",slug:"injectaslayout-method",link:"#injectaslayout-method",children:[]},{level:3,title:"ConditionFinder - class",slug:"conditionfinder-class",link:"#conditionfinder-class",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]},{level:3,title:"onHookingFailure - method",slug:"onhookingfailure-method",link:"#onhookingfailure-method",children:[]},{level:3,title:"ignoredHookingFailure - method",slug:"ignoredhookingfailure-method",link:"#ignoredhookingfailure-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html",pathLocale:"/en/",extraFields:[]},{title:"HookParam - class",headers:[{level:2,title:"args - field",slug:"args-field",link:"#args-field",children:[]},{level:2,title:"instance - field",slug:"instance-field",link:"#instance-field",children:[]},{level:2,title:"instanceOrNull - field",slug:"instanceornull-field",link:"#instanceornull-field",children:[]},{level:2,title:"instanceClass - field",slug:"instanceclass-field",link:"#instanceclass-field",children:[]},{level:2,title:"member - field",slug:"member-field",link:"#member-field",children:[]},{level:2,title:"method - field",slug:"method-field",link:"#method-field",children:[]},{level:2,title:"constructor - field",slug:"constructor-field",link:"#constructor-field",children:[]},{level:2,title:"result - field",slug:"result-field",link:"#result-field",children:[]},{level:2,title:"dataExtra - field",slug:"dataextra-field",link:"#dataextra-field",children:[]},{level:2,title:"hasThrowable - field",slug:"hasthrowable-field",link:"#hasthrowable-field",children:[]},{level:2,title:"throwable - field",slug:"throwable-field",link:"#throwable-field",children:[]},{level:2,title:"Throwable.throwToApp - i-ext-method",slug:"throwable-throwtoapp-i-ext-method",link:"#throwable-throwtoapp-i-ext-method",children:[]},{level:2,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:2,title:"instance - method",slug:"instance-method",link:"#instance-method",children:[]},{level:2,title:"instanceOrNull - method",slug:"instanceornull-method",link:"#instanceornull-method",children:[]},{level:2,title:"args - method",slug:"args-method",link:"#args-method",children:[]},{level:2,title:"args - method",slug:"args-method-1",link:"#args-method-1",children:[]},{level:2,title:"callOriginal - method",slug:"calloriginal-method",link:"#calloriginal-method",children:[]},{level:2,title:"invokeOriginal - method",slug:"invokeoriginal-method",link:"#invokeoriginal-method",children:[]},{level:2,title:"resultTrue - method",slug:"resulttrue-method",link:"#resulttrue-method",children:[]},{level:2,title:"resultFalse - method",slug:"resultfalse-method",link:"#resultfalse-method",children:[]},{level:2,title:"resultNull - method",slug:"resultnull-method",link:"#resultnull-method",children:[]},{level:2,title:"ArgsIndexCondition - class",slug:"argsindexcondition-class",link:"#argsindexcondition-class",children:[{level:3,title:"first - method",slug:"first-method",link:"#first-method",children:[]},{level:3,title:"last - method",slug:"last-method",link:"#last-method",children:[]}]},{level:2,title:"ArgsModifyer - class",slug:"argsmodifyer-class",link:"#argsmodifyer-class",children:[{level:3,title:"cast - method",slug:"cast-method",link:"#cast-method",children:[]},{level:3,title:"byte - method",slug:"byte-method",link:"#byte-method",children:[]},{level:3,title:"int - method",slug:"int-method",link:"#int-method",children:[]},{level:3,title:"long - method",slug:"long-method",link:"#long-method",children:[]},{level:3,title:"short - method",slug:"short-method",link:"#short-method",children:[]},{level:3,title:"double - method",slug:"double-method",link:"#double-method",children:[]},{level:3,title:"float - method",slug:"float-method",link:"#float-method",children:[]},{level:3,title:"string - method",slug:"string-method",link:"#string-method",children:[]},{level:3,title:"char - method",slug:"char-method",link:"#char-method",children:[]},{level:3,title:"boolean - method",slug:"boolean-method",link:"#boolean-method",children:[]},{level:3,title:"any - method",slug:"any-method",link:"#any-method",children:[]},{level:3,title:"array - method",slug:"array-method",link:"#array-method",children:[]},{level:3,title:"list - method",slug:"list-method",link:"#list-method",children:[]},{level:3,title:"set - method",slug:"set-method",link:"#set-method",children:[]},{level:3,title:"setNull - method",slug:"setnull-method",link:"#setnull-method",children:[]},{level:3,title:"setTrue - method",slug:"settrue-method",link:"#settrue-method",children:[]},{level:3,title:"setFalse - method",slug:"setfalse-method",link:"#setfalse-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html",pathLocale:"/en/",extraFields:[]},{title:"PackageParam - class",headers:[{level:2,title:"appClassLoader - field",slug:"appclassloader-field",link:"#appclassloader-field",children:[]},{level:2,title:"appInfo - field",slug:"appinfo-field",link:"#appinfo-field",children:[]},{level:2,title:"appUserId - field",slug:"appuserid-field",link:"#appuserid-field",children:[]},{level:2,title:"appContext - field",slug:"appcontext-field",link:"#appcontext-field",children:[]},{level:2,title:"appResources - field",slug:"appresources-field",link:"#appresources-field",children:[]},{level:2,title:"systemContext - field",slug:"systemcontext-field",link:"#systemcontext-field",children:[]},{level:2,title:"processName - field",slug:"processname-field",link:"#processname-field",children:[]},{level:2,title:"packageName - field",slug:"packagename-field",link:"#packagename-field",children:[]},{level:2,title:"isFirstApplication - field",slug:"isfirstapplication-field",link:"#isfirstapplication-field",children:[]},{level:2,title:"mainProcessName - field",slug:"mainprocessname-field",link:"#mainprocessname-field",children:[]},{level:2,title:"moduleAppFilePath - field",slug:"moduleappfilepath-field",link:"#moduleappfilepath-field",children:[]},{level:2,title:"moduleAppResources - field",slug:"moduleappresources-field",link:"#moduleappresources-field",children:[]},{level:2,title:"prefs - field",slug:"prefs-field",link:"#prefs-field",children:[]},{level:2,title:"prefs - method",slug:"prefs-method",link:"#prefs-method",children:[]},{level:2,title:"dataChannel - field",slug:"datachannel-field",link:"#datachannel-field",children:[]},{level:2,title:"resources - method",slug:"resources-method",link:"#resources-method",children:[]},{level:2,title:"refreshModuleAppResources - method",slug:"refreshmoduleappresources-method",link:"#refreshmoduleappresources-method",children:[]},{level:2,title:"onAppLifecycle - method",slug:"onapplifecycle-method",link:"#onapplifecycle-method",children:[]},{level:2,title:"loadApp - method",slug:"loadapp-method",link:"#loadapp-method",children:[]},{level:2,title:"loadZygote - method",slug:"loadzygote-method",link:"#loadzygote-method",children:[]},{level:2,title:"loadSystem - method",slug:"loadsystem-method",link:"#loadsystem-method",children:[]},{level:2,title:"withProcess - method",slug:"withprocess-method",link:"#withprocess-method",children:[]},{level:2,title:"loadHooker - method",slug:"loadhooker-method",link:"#loadhooker-method",children:[]},{level:2,title:"searchClass - method",slug:"searchclass-method",link:"#searchclass-method",children:[]},{level:2,title:"String+VariousClass.toClass - i-ext-method",slug:"string-variousclass-toclass-i-ext-method",link:"#string-variousclass-toclass-i-ext-method",children:[]},{level:2,title:"String+VariousClass.toClassOrNull - i-ext-method",slug:"string-variousclass-toclassornull-i-ext-method",link:"#string-variousclass-toclassornull-i-ext-method",children:[]},{level:2,title:"String.hasClass - i-ext-method",slug:"string-hasclass-i-ext-method",link:"#string-hasclass-i-ext-method",children:[]},{level:2,title:"findClass - method",slug:"findclass-method",link:"#findclass-method",children:[]},{level:2,title:"String+Class+VariousClass+HookClass.hook - i-ext-method",slug:"string-class-variousclass-hookclass-hook-i-ext-method",link:"#string-class-variousclass-hookclass-hook-i-ext-method",children:[]},{level:2,title:"HookResources.hook - i-ext-method",slug:"hookresources-hook-i-ext-method",link:"#hookresources-hook-i-ext-method",children:[]},{level:2,title:"AppLifecycle - class",slug:"applifecycle-class",link:"#applifecycle-class",children:[{level:3,title:"attachBaseContext - method",slug:"attachbasecontext-method",link:"#attachbasecontext-method",children:[]},{level:3,title:"onCreate - method",slug:"oncreate-method",link:"#oncreate-method",children:[]},{level:3,title:"onTerminate - method",slug:"onterminate-method",link:"#onterminate-method",children:[]},{level:3,title:"onLowMemory - method",slug:"onlowmemory-method",link:"#onlowmemory-method",children:[]},{level:3,title:"onTrimMemory - method",slug:"ontrimmemory-method",link:"#ontrimmemory-method",children:[]},{level:3,title:"onConfigurationChanged - method",slug:"onconfigurationchanged-method",link:"#onconfigurationchanged-method",children:[]},{level:3,title:"registerReceiver - method",slug:"registerreceiver-method",link:"#registerreceiver-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html",pathLocale:"/en/",extraFields:[]},{title:"InjectYukiHookWithXposed - annotation",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"CurrentClass - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"simpleName - field",slug:"simplename-field",link:"#simplename-field",children:[]},{level:2,title:"generic - method",slug:"generic-method",link:"#generic-method",children:[]},{level:2,title:"generic - method",slug:"generic-method-1",link:"#generic-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:2,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:2,title:"SuperClass - class",slug:"superclass-class",link:"#superclass-class",children:[{level:3,title:"name - field",slug:"name-field-1",link:"#name-field-1",children:[]},{level:3,title:"simpleName - field",slug:"simplename-field-1",link:"#simplename-field-1",children:[]},{level:3,title:"generic - method",slug:"generic-method-2",link:"#generic-method-2",children:[]},{level:3,title:"generic - method",slug:"generic-method-3",link:"#generic-method-3",children:[]},{level:3,title:"field - method",slug:"field-method-1",link:"#field-method-1",children:[]},{level:3,title:"method - method",slug:"method-method-1",link:"#method-method-1",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"GenericClass - class",headers:[{level:2,title:"argument - method",slug:"argument-method",link:"#argument-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"HookClass - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"HookResources - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"VariousClass - class",headers:[{level:2,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:2,title:"getOrNull - method",slug:"getornull-method",link:"#getornull-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"LoggerFactory - kt",headers:[{level:2,title:"LoggerType - class",slug:"loggertype-class",link:"#loggertype-class",children:[{level:3,title:"LOGD - enum",slug:"logd-enum",link:"#logd-enum",children:[]},{level:3,title:"XPOSED_ENVIRONMENT - enum",slug:"xposed-environment-enum",link:"#xposed-environment-enum",children:[]},{level:3,title:"SCOPE - enum",slug:"scope-enum",link:"#scope-enum",children:[]},{level:3,title:"BOTH - enum",slug:"both-enum",link:"#both-enum",children:[]}]},{level:2,title:"YukiLoggerData - class",slug:"yukiloggerdata-class",link:"#yukiloggerdata-class",children:[]},{level:2,title:"YukiHookLogger - object",slug:"yukihooklogger-object",link:"#yukihooklogger-object",children:[{level:3,title:"inMemoryData - field",slug:"inmemorydata-field",link:"#inmemorydata-field",children:[]},{level:3,title:"contents - field",slug:"contents-field",link:"#contents-field",children:[]},{level:3,title:"contents - method",slug:"contents-method",link:"#contents-method",children:[]},{level:3,title:"clear - method",slug:"clear-method",link:"#clear-method",children:[]},{level:3,title:"saveToFile - method",slug:"savetofile-method",link:"#savetofile-method",children:[]},{level:3,title:"Configs - object",slug:"configs-object",link:"#configs-object",children:[]}]},{level:2,title:"loggerD - method",slug:"loggerd-method",link:"#loggerd-method",children:[]},{level:2,title:"loggerI - method",slug:"loggeri-method",link:"#loggeri-method",children:[]},{level:2,title:"loggerW - method",slug:"loggerw-method",link:"#loggerw-method",children:[]},{level:2,title:"loggerE - method",slug:"loggere-method",link:"#loggere-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html",pathLocale:"/en/",extraFields:[]},{title:"YukiMemberHookCreator - class",headers:[{level:2,title:"PRIORITY_DEFAULT - field",slug:"priority-default-field",link:"#priority-default-field",children:[]},{level:2,title:"PRIORITY_LOWEST - field",slug:"priority-lowest-field",link:"#priority-lowest-field",children:[]},{level:2,title:"PRIORITY_HIGHEST - field",slug:"priority-highest-field",link:"#priority-highest-field",children:[]},{level:2,title:"instanceClass - field",slug:"instanceclass-field",link:"#instanceclass-field",children:[]},{level:2,title:"injectMember - method",slug:"injectmember-method",link:"#injectmember-method",children:[]},{level:2,title:"useDangerousOperation - method",slug:"usedangerousoperation-method",link:"#usedangerousoperation-method",children:[]},{level:2,title:"MemberHookCreator - class",slug:"memberhookcreator-class",link:"#memberhookcreator-class",children:[{level:3,title:"members - method",slug:"members-method",link:"#members-method",children:[]},{level:3,title:"allMembers - method",slug:"allmembers-method",link:"#allmembers-method",children:[]},{level:3,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:3,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:3,title:"HookParam.field - i-ext-method",slug:"hookparam-field-i-ext-method",link:"#hookparam-field-i-ext-method",children:[]},{level:3,title:"HookParam.method - i-ext-method",slug:"hookparam-method-i-ext-method",link:"#hookparam-method-i-ext-method",children:[]},{level:3,title:"HookParam.constructor - i-ext-method",slug:"hookparam-constructor-i-ext-method",link:"#hookparam-constructor-i-ext-method",children:[]},{level:3,title:"HookParam.injectMember - i-ext-method",slug:"hookparam-injectmember-i-ext-method",link:"#hookparam-injectmember-i-ext-method",children:[]},{level:3,title:"beforeHook - method",slug:"beforehook-method",link:"#beforehook-method",children:[]},{level:3,title:"afterHook - method",slug:"afterhook-method",link:"#afterhook-method",children:[]},{level:3,title:"replaceAny - method",slug:"replaceany-method",link:"#replaceany-method",children:[]},{level:3,title:"replaceUnit - method",slug:"replaceunit-method",link:"#replaceunit-method",children:[]},{level:3,title:"replaceTo - method",slug:"replaceto-method",link:"#replaceto-method",children:[]},{level:3,title:"replaceToTrue - method",slug:"replacetotrue-method",link:"#replacetotrue-method",children:[]},{level:3,title:"replaceToFalse - method",slug:"replacetofalse-method",link:"#replacetofalse-method",children:[]},{level:3,title:"intercept - method",slug:"intercept-method",link:"#intercept-method",children:[]},{level:3,title:"removeSelf - method",slug:"removeself-method",link:"#removeself-method",children:[]},{level:3,title:"HookCallback - class",slug:"hookcallback-class",link:"#hookcallback-class",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"by - method",slug:"by-method-1",link:"#by-method-1",children:[]},{level:3,title:"onPrepareHook - method",slug:"onpreparehook-method",link:"#onpreparehook-method",children:[]},{level:3,title:"onHookClassNotFoundFailure - method",slug:"onhookclassnotfoundfailure-method",link:"#onhookclassnotfoundfailure-method",children:[]},{level:3,title:"ignoredHookClassNotFoundFailure - method",slug:"ignoredhookclassnotfoundfailure-method",link:"#ignoredhookclassnotfoundfailure-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiResourcesHookCreator - class",headers:[{level:2,title:"injectResource - method",slug:"injectresource-method",link:"#injectresource-method",children:[]},{level:2,title:"ResourcesHookCreator - class",slug:"resourceshookcreator-class",link:"#resourceshookcreator-class",children:[{level:3,title:"resourceId - field",slug:"resourceid-field",link:"#resourceid-field",children:[]},{level:3,title:"conditions - method",slug:"conditions-method",link:"#conditions-method",children:[]},{level:3,title:"replaceTo - method",slug:"replaceto-method",link:"#replaceto-method",children:[]},{level:3,title:"replaceToTrue - method",slug:"replacetotrue-method",link:"#replacetotrue-method",children:[]},{level:3,title:"replaceToFalse - method",slug:"replacetofalse-method",link:"#replacetofalse-method",children:[]},{level:3,title:"replaceToModuleResource - method",slug:"replacetomoduleresource-method",link:"#replacetomoduleresource-method",children:[]},{level:3,title:"injectAsLayout - method",slug:"injectaslayout-method",link:"#injectaslayout-method",children:[]},{level:3,title:"ConditionFinder - class",slug:"conditionfinder-class",link:"#conditionfinder-class",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]},{level:3,title:"onHookingFailure - method",slug:"onhookingfailure-method",link:"#onhookingfailure-method",children:[]},{level:3,title:"ignoredHookingFailure - method",slug:"ignoredhookingfailure-method",link:"#ignoredhookingfailure-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiBaseHooker - class",headers:[{level:2,title:"onHook - method",slug:"onhook-method",link:"#onhook-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ReflectionFactory - kt",headers:[{level:2,title:"MembersType - class",slug:"memberstype-class",link:"#memberstype-class",children:[{level:3,title:"ALL - enum",slug:"all-enum",link:"#all-enum",children:[]},{level:3,title:"METHOD - enum",slug:"method-enum",link:"#method-enum",children:[]},{level:3,title:"CONSTRUCTOR - enum",slug:"constructor-enum",link:"#constructor-enum",children:[]}]},{level:2,title:"ClassLoader.listOfClasses - ext-method",slug:"classloader-listofclasses-ext-method",link:"#classloader-listofclasses-ext-method",children:[]},{level:2,title:"ClassLoader.searchClass - ext-method",slug:"classloader-searchclass-ext-method",link:"#classloader-searchclass-ext-method",children:[]},{level:2,title:"ClassLoader.onLoadClass - ext-method",slug:"classloader-onloadclass-ext-method",link:"#classloader-onloadclass-ext-method",children:[]},{level:2,title:"Class.hasExtends - ext-field",slug:"class-hasextends-ext-field",link:"#class-hasextends-ext-field",children:[]},{level:2,title:"Class?.extends - ext-method",slug:"class-extends-ext-method",link:"#class-extends-ext-method",children:[]},{level:2,title:"Class?.notExtends - ext-method",slug:"class-notextends-ext-method",link:"#class-notextends-ext-method",children:[]},{level:2,title:"Class?.implements - ext-method",slug:"class-implements-ext-method",link:"#class-implements-ext-method",children:[]},{level:2,title:"Class?.notImplements - ext-method",slug:"class-notimplements-ext-method",link:"#class-notimplements-ext-method",children:[]},{level:2,title:"Class.toJavaPrimitiveType - ext-method",slug:"class-tojavaprimitivetype-ext-method",link:"#class-tojavaprimitivetype-ext-method",children:[]},{level:2,title:"String.toClass - ext-method",slug:"string-toclass-ext-method",link:"#string-toclass-ext-method",children:[]},{level:2,title:"String.toClassOrNull - ext-method",slug:"string-toclassornull-ext-method",link:"#string-toclassornull-ext-method",children:[]},{level:2,title:"classOf - method",slug:"classof-method",link:"#classof-method",children:[]},{level:2,title:"String.hasClass - ext-method",slug:"string-hasclass-ext-method",link:"#string-hasclass-ext-method",children:[]},{level:2,title:"Class.hasField - ext-method",slug:"class-hasfield-ext-method",link:"#class-hasfield-ext-method",children:[]},{level:2,title:"Class.hasMethod - ext-method",slug:"class-hasmethod-ext-method",link:"#class-hasmethod-ext-method",children:[]},{level:2,title:"Class.hasConstructor - ext-method",slug:"class-hasconstructor-ext-method",link:"#class-hasconstructor-ext-method",children:[]},{level:2,title:"Member.hasModifiers - ext-method",slug:"member-hasmodifiers-ext-method",link:"#member-hasmodifiers-ext-method",children:[]},{level:2,title:"Class.hasModifiers - ext-method",slug:"class-hasmodifiers-ext-method",link:"#class-hasmodifiers-ext-method",children:[]},{level:2,title:"Class.field - ext-method",slug:"class-field-ext-method",link:"#class-field-ext-method",children:[]},{level:2,title:"Class.method - ext-method",slug:"class-method-ext-method",link:"#class-method-ext-method",children:[]},{level:2,title:"Class.constructor - ext-method",slug:"class-constructor-ext-method",link:"#class-constructor-ext-method",children:[]},{level:2,title:"Class.generic - ext-method",slug:"class-generic-ext-method",link:"#class-generic-ext-method",children:[]},{level:2,title:"Class.generic - ext-method",slug:"class-generic-ext-method-1",link:"#class-generic-ext-method-1",children:[]},{level:2,title:"Any.current - ext-method",slug:"any-current-ext-method",link:"#any-current-ext-method",children:[]},{level:2,title:"Class.buildOf - ext-method",slug:"class-buildof-ext-method",link:"#class-buildof-ext-method",children:[]},{level:2,title:"Class.allMethods - ext-method",slug:"class-allmethods-ext-method",link:"#class-allmethods-ext-method",children:[]},{level:2,title:"Class.allConstructors - ext-method",slug:"class-allconstructors-ext-method",link:"#class-allconstructors-ext-method",children:[]},{level:2,title:"Class.allFields - ext-method",slug:"class-allfields-ext-method",link:"#class-allfields-ext-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookFactory - kt",headers:[{level:2,title:"IYukiHookXposedInit.configs - ext-method",slug:"iyukihookxposedinit-configs-ext-method",link:"#iyukihookxposedinit-configs-ext-method",children:[]},{level:2,title:"IYukiHookXposedInit.encase - ext-method",slug:"iyukihookxposedinit-encase-ext-method",link:"#iyukihookxposedinit-encase-ext-method",children:[]},{level:2,title:"Context.modulePrefs - ext-field",slug:"context-moduleprefs-ext-field",link:"#context-moduleprefs-ext-field",children:[]},{level:2,title:"Context.modulePrefs - ext-method",slug:"context-moduleprefs-ext-method",link:"#context-moduleprefs-ext-method",children:[]},{level:2,title:"Context.dataChannel - ext-method",slug:"context-datachannel-ext-method",link:"#context-datachannel-ext-method",children:[]},{level:2,title:"Context.processName - ext-field",slug:"context-processname-ext-field",link:"#context-processname-ext-field",children:[]},{level:2,title:"Context+Resources.injectModuleAppResources - ext-method",slug:"context-resources-injectmoduleappresources-ext-method",link:"#context-resources-injectmoduleappresources-ext-method",children:[]},{level:2,title:"Context.registerModuleAppActivities - ext-method",slug:"context-registermoduleappactivities-ext-method",link:"#context-registermoduleappactivities-ext-method",children:[]},{level:2,title:"Context.applyModuleTheme - ext-method",slug:"context-applymoduletheme-ext-method",link:"#context-applymoduletheme-ext-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"LoggerFactory - kt",headers:[{level:2,title:"LoggerType - class",slug:"loggertype-class",link:"#loggertype-class",children:[{level:3,title:"LOGD - enum",slug:"logd-enum",link:"#logd-enum",children:[]},{level:3,title:"XPOSED_ENVIRONMENT - enum",slug:"xposed-environment-enum",link:"#xposed-environment-enum",children:[]},{level:3,title:"SCOPE - enum",slug:"scope-enum",link:"#scope-enum",children:[]},{level:3,title:"BOTH - enum",slug:"both-enum",link:"#both-enum",children:[]}]},{level:2,title:"YukiLoggerData - class",slug:"yukiloggerdata-class",link:"#yukiloggerdata-class",children:[]},{level:2,title:"YukiHookLogger - object",slug:"yukihooklogger-object",link:"#yukihooklogger-object",children:[{level:3,title:"inMemoryData - field",slug:"inmemorydata-field",link:"#inmemorydata-field",children:[]},{level:3,title:"contents - field",slug:"contents-field",link:"#contents-field",children:[]},{level:3,title:"contents - method",slug:"contents-method",link:"#contents-method",children:[]},{level:3,title:"clear - method",slug:"clear-method",link:"#clear-method",children:[]},{level:3,title:"saveToFile - method",slug:"savetofile-method",link:"#savetofile-method",children:[]},{level:3,title:"Configs - object",slug:"configs-object",link:"#configs-object",children:[]}]},{level:2,title:"loggerD - method",slug:"loggerd-method",link:"#loggerd-method",children:[]},{level:2,title:"loggerI - method",slug:"loggeri-method",link:"#loggeri-method",children:[]},{level:2,title:"loggerW - method",slug:"loggerw-method",link:"#loggerw-method",children:[]},{level:2,title:"loggerE - method",slug:"loggere-method",link:"#loggere-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"HookParam - class",headers:[{level:2,title:"args - field",slug:"args-field",link:"#args-field",children:[]},{level:2,title:"instance - field",slug:"instance-field",link:"#instance-field",children:[]},{level:2,title:"instanceOrNull - field",slug:"instanceornull-field",link:"#instanceornull-field",children:[]},{level:2,title:"instanceClass - field",slug:"instanceclass-field",link:"#instanceclass-field",children:[]},{level:2,title:"member - field",slug:"member-field",link:"#member-field",children:[]},{level:2,title:"method - field",slug:"method-field",link:"#method-field",children:[]},{level:2,title:"constructor - field",slug:"constructor-field",link:"#constructor-field",children:[]},{level:2,title:"result - field",slug:"result-field",link:"#result-field",children:[]},{level:2,title:"dataExtra - field",slug:"dataextra-field",link:"#dataextra-field",children:[]},{level:2,title:"hasThrowable - field",slug:"hasthrowable-field",link:"#hasthrowable-field",children:[]},{level:2,title:"throwable - field",slug:"throwable-field",link:"#throwable-field",children:[]},{level:2,title:"Throwable.throwToApp - i-ext-method",slug:"throwable-throwtoapp-i-ext-method",link:"#throwable-throwtoapp-i-ext-method",children:[]},{level:2,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:2,title:"instance - method",slug:"instance-method",link:"#instance-method",children:[]},{level:2,title:"instanceOrNull - method",slug:"instanceornull-method",link:"#instanceornull-method",children:[]},{level:2,title:"args - method",slug:"args-method",link:"#args-method",children:[]},{level:2,title:"args - method",slug:"args-method-1",link:"#args-method-1",children:[]},{level:2,title:"callOriginal - method",slug:"calloriginal-method",link:"#calloriginal-method",children:[]},{level:2,title:"invokeOriginal - method",slug:"invokeoriginal-method",link:"#invokeoriginal-method",children:[]},{level:2,title:"resultTrue - method",slug:"resulttrue-method",link:"#resulttrue-method",children:[]},{level:2,title:"resultFalse - method",slug:"resultfalse-method",link:"#resultfalse-method",children:[]},{level:2,title:"resultNull - method",slug:"resultnull-method",link:"#resultnull-method",children:[]},{level:2,title:"ArgsIndexCondition - class",slug:"argsindexcondition-class",link:"#argsindexcondition-class",children:[{level:3,title:"first - method",slug:"first-method",link:"#first-method",children:[]},{level:3,title:"last - method",slug:"last-method",link:"#last-method",children:[]}]},{level:2,title:"ArgsModifyer - class",slug:"argsmodifyer-class",link:"#argsmodifyer-class",children:[{level:3,title:"cast - method",slug:"cast-method",link:"#cast-method",children:[]},{level:3,title:"byte - method",slug:"byte-method",link:"#byte-method",children:[]},{level:3,title:"int - method",slug:"int-method",link:"#int-method",children:[]},{level:3,title:"long - method",slug:"long-method",link:"#long-method",children:[]},{level:3,title:"short - method",slug:"short-method",link:"#short-method",children:[]},{level:3,title:"double - method",slug:"double-method",link:"#double-method",children:[]},{level:3,title:"float - method",slug:"float-method",link:"#float-method",children:[]},{level:3,title:"string - method",slug:"string-method",link:"#string-method",children:[]},{level:3,title:"char - method",slug:"char-method",link:"#char-method",children:[]},{level:3,title:"boolean - method",slug:"boolean-method",link:"#boolean-method",children:[]},{level:3,title:"any - method",slug:"any-method",link:"#any-method",children:[]},{level:3,title:"array - method",slug:"array-method",link:"#array-method",children:[]},{level:3,title:"list - method",slug:"list-method",link:"#list-method",children:[]},{level:3,title:"set - method",slug:"set-method",link:"#set-method",children:[]},{level:3,title:"setNull - method",slug:"setnull-method",link:"#setnull-method",children:[]},{level:3,title:"setTrue - method",slug:"settrue-method",link:"#settrue-method",children:[]},{level:3,title:"setFalse - method",slug:"setfalse-method",link:"#setfalse-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"PackageParam - class",headers:[{level:2,title:"appClassLoader - field",slug:"appclassloader-field",link:"#appclassloader-field",children:[]},{level:2,title:"appInfo - field",slug:"appinfo-field",link:"#appinfo-field",children:[]},{level:2,title:"appUserId - field",slug:"appuserid-field",link:"#appuserid-field",children:[]},{level:2,title:"appContext - field",slug:"appcontext-field",link:"#appcontext-field",children:[]},{level:2,title:"appResources - field",slug:"appresources-field",link:"#appresources-field",children:[]},{level:2,title:"systemContext - field",slug:"systemcontext-field",link:"#systemcontext-field",children:[]},{level:2,title:"processName - field",slug:"processname-field",link:"#processname-field",children:[]},{level:2,title:"packageName - field",slug:"packagename-field",link:"#packagename-field",children:[]},{level:2,title:"isFirstApplication - field",slug:"isfirstapplication-field",link:"#isfirstapplication-field",children:[]},{level:2,title:"mainProcessName - field",slug:"mainprocessname-field",link:"#mainprocessname-field",children:[]},{level:2,title:"moduleAppFilePath - field",slug:"moduleappfilepath-field",link:"#moduleappfilepath-field",children:[]},{level:2,title:"moduleAppResources - field",slug:"moduleappresources-field",link:"#moduleappresources-field",children:[]},{level:2,title:"prefs - field",slug:"prefs-field",link:"#prefs-field",children:[]},{level:2,title:"prefs - method",slug:"prefs-method",link:"#prefs-method",children:[]},{level:2,title:"dataChannel - field",slug:"datachannel-field",link:"#datachannel-field",children:[]},{level:2,title:"resources - method",slug:"resources-method",link:"#resources-method",children:[]},{level:2,title:"refreshModuleAppResources - method",slug:"refreshmoduleappresources-method",link:"#refreshmoduleappresources-method",children:[]},{level:2,title:"onAppLifecycle - method",slug:"onapplifecycle-method",link:"#onapplifecycle-method",children:[]},{level:2,title:"loadApp - method",slug:"loadapp-method",link:"#loadapp-method",children:[]},{level:2,title:"loadZygote - method",slug:"loadzygote-method",link:"#loadzygote-method",children:[]},{level:2,title:"loadSystem - method",slug:"loadsystem-method",link:"#loadsystem-method",children:[]},{level:2,title:"withProcess - method",slug:"withprocess-method",link:"#withprocess-method",children:[]},{level:2,title:"loadHooker - method",slug:"loadhooker-method",link:"#loadhooker-method",children:[]},{level:2,title:"searchClass - method",slug:"searchclass-method",link:"#searchclass-method",children:[]},{level:2,title:"String+VariousClass.toClass - i-ext-method",slug:"string-variousclass-toclass-i-ext-method",link:"#string-variousclass-toclass-i-ext-method",children:[]},{level:2,title:"String+VariousClass.toClassOrNull - i-ext-method",slug:"string-variousclass-toclassornull-i-ext-method",link:"#string-variousclass-toclassornull-i-ext-method",children:[]},{level:2,title:"String.hasClass - i-ext-method",slug:"string-hasclass-i-ext-method",link:"#string-hasclass-i-ext-method",children:[]},{level:2,title:"findClass - method",slug:"findclass-method",link:"#findclass-method",children:[]},{level:2,title:"String+Class+VariousClass+HookClass.hook - i-ext-method",slug:"string-class-variousclass-hookclass-hook-i-ext-method",link:"#string-class-variousclass-hookclass-hook-i-ext-method",children:[]},{level:2,title:"HookResources.hook - i-ext-method",slug:"hookresources-hook-i-ext-method",link:"#hookresources-hook-i-ext-method",children:[]},{level:2,title:"AppLifecycle - class",slug:"applifecycle-class",link:"#applifecycle-class",children:[{level:3,title:"attachBaseContext - method",slug:"attachbasecontext-method",link:"#attachbasecontext-method",children:[]},{level:3,title:"onCreate - method",slug:"oncreate-method",link:"#oncreate-method",children:[]},{level:3,title:"onTerminate - method",slug:"onterminate-method",link:"#onterminate-method",children:[]},{level:3,title:"onLowMemory - method",slug:"onlowmemory-method",link:"#onlowmemory-method",children:[]},{level:3,title:"onTrimMemory - method",slug:"ontrimmemory-method",link:"#ontrimmemory-method",children:[]},{level:3,title:"onConfigurationChanged - method",slug:"onconfigurationchanged-method",link:"#onconfigurationchanged-method",children:[]},{level:3,title:"registerReceiver - method",slug:"registerreceiver-method",link:"#registerreceiver-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ComponentTypeFactory - kt",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"GraphicsTypeFactory - kt",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"ViewTypeFactory - kt",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"DefinedTypeFactory - kt",headers:[{level:2,title:"VagueType - field",slug:"vaguetype-field",link:"#vaguetype-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"VariableTypeFactory - kt",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleApplication - class",headers:[{level:2,title:"appContext - field",slug:"appcontext-field",link:"#appcontext-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookDataChannel - class",headers:[{level:2,title:"NameSpace - class",slug:"namespace-class",link:"#namespace-class",children:[{level:3,title:"with - method",slug:"with-method",link:"#with-method",children:[]},{level:3,title:"allowSendTooLargeData - method",slug:"allowsendtoolargedata-method",link:"#allowsendtoolargedata-method",children:[]},{level:3,title:"put - method",slug:"put-method",link:"#put-method",children:[]},{level:3,title:"put - method",slug:"put-method-1",link:"#put-method-1",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"wait - method",slug:"wait-method-1",link:"#wait-method-1",children:[]},{level:3,title:"checkingVersionEquals - method",slug:"checkingversionequals-method",link:"#checkingversionequals-method",children:[]},{level:3,title:"obtainLoggerInMemoryData - method",slug:"obtainloggerinmemorydata-method",link:"#obtainloggerinmemorydata-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookModulePrefs - class",headers:[{level:2,title:"isPreferencesAvailable - field",slug:"ispreferencesavailable-field",link:"#ispreferencesavailable-field",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"direct - method",slug:"direct-method",link:"#direct-method",children:[]},{level:2,title:"getString - method",slug:"getstring-method",link:"#getstring-method",children:[]},{level:2,title:"getStringSet - method",slug:"getstringset-method",link:"#getstringset-method",children:[]},{level:2,title:"getBoolean - method",slug:"getboolean-method",link:"#getboolean-method",children:[]},{level:2,title:"getInt - method",slug:"getint-method",link:"#getint-method",children:[]},{level:2,title:"getLong - method",slug:"getlong-method",link:"#getlong-method",children:[]},{level:2,title:"getFloat - method",slug:"getfloat-method",link:"#getfloat-method",children:[]},{level:2,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:2,title:"remove - method",slug:"remove-method",link:"#remove-method",children:[]},{level:2,title:"remove - method",slug:"remove-method-1",link:"#remove-method-1",children:[]},{level:2,title:"clear - method",slug:"clear-method",link:"#clear-method",children:[]},{level:2,title:"putString - method",slug:"putstring-method",link:"#putstring-method",children:[]},{level:2,title:"putStringSet - method",slug:"putstringset-method",link:"#putstringset-method",children:[]},{level:2,title:"putBoolean - method",slug:"putboolean-method",link:"#putboolean-method",children:[]},{level:2,title:"putInt - method",slug:"putint-method",link:"#putint-method",children:[]},{level:2,title:"putLong - method",slug:"putlong-method",link:"#putlong-method",children:[]},{level:2,title:"putFloat - method",slug:"putfloat-method",link:"#putfloat-method",children:[]},{level:2,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:2,title:"put - method",slug:"put-method",link:"#put-method",children:[]},{level:2,title:"clearCache - method",slug:"clearcache-method",link:"#clearcache-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html",pathLocale:"/en/",extraFields:[]},{title:"IYukiHookXposedInit - interface",headers:[{level:2,title:"onInit - method",slug:"oninit-method",link:"#oninit-method",children:[]},{level:2,title:"onHook - method",slug:"onhook-method",link:"#onhook-method",children:[]},{level:2,title:"onXposedEvent - method",slug:"onxposedevent-method",link:"#onxposedevent-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html",pathLocale:"/en/",extraFields:[]},{title:"ComponentTypeFactory - kt",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"GraphicsTypeFactory - kt",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ViewTypeFactory - kt",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"DefinedTypeFactory - kt",headers:[{level:2,title:"VagueType - field",slug:"vaguetype-field",link:"#vaguetype-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"VariableTypeFactory - kt",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleApplication - class",headers:[{level:2,title:"appContext - field",slug:"appcontext-field",link:"#appcontext-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookDataChannel - class",headers:[{level:2,title:"NameSpace - class",slug:"namespace-class",link:"#namespace-class",children:[{level:3,title:"with - method",slug:"with-method",link:"#with-method",children:[]},{level:3,title:"allowSendTooLargeData - method",slug:"allowsendtoolargedata-method",link:"#allowsendtoolargedata-method",children:[]},{level:3,title:"put - method",slug:"put-method",link:"#put-method",children:[]},{level:3,title:"put - method",slug:"put-method-1",link:"#put-method-1",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"wait - method",slug:"wait-method-1",link:"#wait-method-1",children:[]},{level:3,title:"checkingVersionEquals - method",slug:"checkingversionequals-method",link:"#checkingversionequals-method",children:[]},{level:3,title:"obtainLoggerInMemoryData - method",slug:"obtainloggerinmemorydata-method",link:"#obtainloggerinmemorydata-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookModulePrefs - class",headers:[{level:2,title:"isPreferencesAvailable - field",slug:"ispreferencesavailable-field",link:"#ispreferencesavailable-field",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"direct - method",slug:"direct-method",link:"#direct-method",children:[]},{level:2,title:"getString - method",slug:"getstring-method",link:"#getstring-method",children:[]},{level:2,title:"getStringSet - method",slug:"getstringset-method",link:"#getstringset-method",children:[]},{level:2,title:"getBoolean - method",slug:"getboolean-method",link:"#getboolean-method",children:[]},{level:2,title:"getInt - method",slug:"getint-method",link:"#getint-method",children:[]},{level:2,title:"getLong - method",slug:"getlong-method",link:"#getlong-method",children:[]},{level:2,title:"getFloat - method",slug:"getfloat-method",link:"#getfloat-method",children:[]},{level:2,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:2,title:"remove - method",slug:"remove-method",link:"#remove-method",children:[]},{level:2,title:"remove - method",slug:"remove-method-1",link:"#remove-method-1",children:[]},{level:2,title:"clear - method",slug:"clear-method",link:"#clear-method",children:[]},{level:2,title:"putString - method",slug:"putstring-method",link:"#putstring-method",children:[]},{level:2,title:"putStringSet - method",slug:"putstringset-method",link:"#putstringset-method",children:[]},{level:2,title:"putBoolean - method",slug:"putboolean-method",link:"#putboolean-method",children:[]},{level:2,title:"putInt - method",slug:"putint-method",link:"#putint-method",children:[]},{level:2,title:"putLong - method",slug:"putlong-method",link:"#putlong-method",children:[]},{level:2,title:"putFloat - method",slug:"putfloat-method",link:"#putfloat-method",children:[]},{level:2,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:2,title:"put - method",slug:"put-method",link:"#put-method",children:[]},{level:2,title:"clearCache - method",slug:"clearcache-method",link:"#clearcache-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"IYukiHookXposedInit - interface",headers:[{level:2,title:"onInit - method",slug:"oninit-method",link:"#oninit-method",children:[]},{level:2,title:"onHook - method",slug:"onhook-method",link:"#onhook-method",children:[]},{level:2,title:"onXposedEvent - method",slug:"onxposedevent-method",link:"#onxposedevent-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"BaseFinder - class",headers:[{level:2,title:"BaseFinder.IndexTypeCondition - class",slug:"basefinder-indextypecondition-class",link:"#basefinder-indextypecondition-class",children:[{level:3,title:"index - method",slug:"index-method",link:"#index-method",children:[]},{level:3,title:"index - method",slug:"index-method-1",link:"#index-method-1",children:[]},{level:3,title:"IndexTypeConditionSort - class",slug:"indextypeconditionsort-class",link:"#indextypeconditionsort-class",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html",pathLocale:"/en/",extraFields:[]},{title:"DexClassFinder - class",headers:[{level:2,title:"companion object - object",slug:"companion-object-object",link:"#companion-object-object",children:[{level:3,title:"clearCache - method",slug:"clearcache-method",link:"#clearcache-method",children:[]}]},{level:2,title:"fullName - field",slug:"fullname-field",link:"#fullname-field",children:[]},{level:2,title:"simpleName - field",slug:"simplename-field",link:"#simplename-field",children:[]},{level:2,title:"singleName - field",slug:"singlename-field",link:"#singlename-field",children:[]},{level:2,title:"from - method",slug:"from-method",link:"#from-method",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"fullName - method",slug:"fullname-method",link:"#fullname-method",children:[]},{level:2,title:"simpleName - method",slug:"simplename-method",link:"#simplename-method",children:[]},{level:2,title:"singleName - method",slug:"singlename-method",link:"#singlename-method",children:[]},{level:2,title:"fullName - method",slug:"fullname-method-1",link:"#fullname-method-1",children:[]},{level:2,title:"simpleName - method",slug:"simplename-method-1",link:"#simplename-method-1",children:[]},{level:2,title:"singleName - method",slug:"singlename-method-1",link:"#singlename-method-1",children:[]},{level:2,title:"extends - method",slug:"extends-method",link:"#extends-method",children:[]},{level:2,title:"extends - method",slug:"extends-method-1",link:"#extends-method-1",children:[]},{level:2,title:"implements - method",slug:"implements-method",link:"#implements-method",children:[]},{level:2,title:"implements - method",slug:"implements-method-1",link:"#implements-method-1",children:[]},{level:2,title:"anonymous - method",slug:"anonymous-method",link:"#anonymous-method",children:[]},{level:2,title:"noExtends - method",slug:"noextends-method",link:"#noextends-method",children:[]},{level:2,title:"noImplements - method",slug:"noimplements-method",link:"#noimplements-method",children:[]},{level:2,title:"noSuper - method",slug:"nosuper-method",link:"#nosuper-method",children:[]},{level:2,title:"enclosing - method",slug:"enclosing-method",link:"#enclosing-method",children:[]},{level:2,title:"enclosing - method",slug:"enclosing-method-1",link:"#enclosing-method-1",children:[]},{level:2,title:"FromPackageRules - class",slug:"frompackagerules-class",link:"#frompackagerules-class",children:[{level:3,title:"absolute - method",slug:"absolute-method",link:"#absolute-method",children:[]}]},{level:2,title:"ClassNameRules - class",slug:"classnamerules-class",link:"#classnamerules-class",children:[{level:3,title:"optional - method",slug:"optional-method",link:"#optional-method",children:[]}]},{level:2,title:"member - method",slug:"member-method",link:"#member-method",children:[]},{level:2,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:2,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:2,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:2,title:"Result - class",slug:"result-class",link:"#result-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"onNoClassDefFoundError - method",slug:"onnoclassdeffounderror-method",link:"#onnoclassdeffounderror-method",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html",pathLocale:"/en/",extraFields:[]},{title:"ConstructorFinder - class",headers:[{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-2",link:"#paramcount-method-2",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Process - class",slug:"process-class",link:"#process-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchConstructor - method",slug:"onnosuchconstructor-method",link:"#onnosuchconstructor-method",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method-1",link:"#remedys-method-1",children:[]},{level:3,title:"onNoSuchConstructor - method",slug:"onnosuchconstructor-method-1",link:"#onnosuchconstructor-method-1",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html",pathLocale:"/en/",extraFields:[]},{title:"FieldFinder - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"type - field",slug:"type-field",link:"#type-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"order - method",slug:"order-method",link:"#order-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"name - method",slug:"name-method-1",link:"#name-method-1",children:[]},{level:2,title:"type - method",slug:"type-method",link:"#type-method",children:[]},{level:2,title:"type - method",slug:"type-method-1",link:"#type-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchField - method",slug:"onnosuchfield-method",link:"#onnosuchfield-method",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html",pathLocale:"/en/",extraFields:[]},{title:"MethodFinder - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"returnType - field",slug:"returntype-field",link:"#returntype-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"order - method",slug:"order-method",link:"#order-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"name - method",slug:"name-method-1",link:"#name-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-2",link:"#paramcount-method-2",children:[]},{level:2,title:"returnType - method",slug:"returntype-method",link:"#returntype-method",children:[]},{level:2,title:"returnType - method",slug:"returntype-method-1",link:"#returntype-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Process - class",slug:"process-class",link:"#process-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchMethod - method",slug:"onnosuchmethod-method",link:"#onnosuchmethod-method",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method-1",link:"#remedys-method-1",children:[]},{level:3,title:"onNoSuchMethod - method",slug:"onnosuchmethod-method-1",link:"#onnosuchmethod-method-1",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]},{level:3,title:"array - method",slug:"array-method",link:"#array-method",children:[]},{level:3,title:"list - method",slug:"list-method",link:"#list-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html",pathLocale:"/en/",extraFields:[]},{title:"YukiXposedEvent - object",headers:[{level:2,title:"events - method",slug:"events-method",link:"#events-method",children:[]},{level:2,title:"onInitZygote - method",slug:"oninitzygote-method",link:"#oninitzygote-method",children:[]},{level:2,title:"onHandleLoadPackage - method",slug:"onhandleloadpackage-method",link:"#onhandleloadpackage-method",children:[]},{level:2,title:"onHandleInitPackageResources - method",slug:"onhandleinitpackageresources-method",link:"#onhandleinitpackageresources-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html",pathLocale:"/en/",extraFields:[]},{title:"YukiModuleResources - class",headers:[{level:2,title:"fwd - method",slug:"fwd-method",link:"#fwd-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html",pathLocale:"/en/",extraFields:[]},{title:"YukiResForwarder - class",headers:[{level:2,title:"id - field",slug:"id-field",link:"#id-field",children:[]},{level:2,title:"resources - field",slug:"resources-field",link:"#resources-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html",pathLocale:"/en/",extraFields:[]},{title:"YukiResources - class",headers:[{level:2,title:"LayoutInflatedParam - class",slug:"layoutinflatedparam-class",link:"#layoutinflatedparam-class",children:[{level:3,title:"variantName - field",slug:"variantname-field",link:"#variantname-field",children:[]},{level:3,title:"currentView - field",slug:"currentview-field",link:"#currentview-field",children:[]},{level:3,title:"findViewByIdentifier - method",slug:"findviewbyidentifier-method",link:"#findviewbyidentifier-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html",pathLocale:"/en/",extraFields:[]},{title:"ChannelData - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html",pathLocale:"/en/",extraFields:[]},{title:"ChannelPriority - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleClassLoader - class",headers:[{level:2,title:"companion object - object",slug:"companion-object-object",link:"#companion-object-object",children:[{level:3,title:"excludeHostClasses - method",slug:"excludehostclasses-method",link:"#excludehostclasses-method",children:[]},{level:3,title:"excludeModuleClasses - method",slug:"excludemoduleclasses-method",link:"#excludemoduleclasses-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html",pathLocale:"/en/",extraFields:[]},{title:"PrefsData - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html",pathLocale:"/en/",extraFields:[]},{title:"ModulePreferenceFragment - class",headers:[{level:2,title:"onCreatePreferencesInModuleApp - method",slug:"oncreatepreferencesinmoduleapp-method",link:"#oncreatepreferencesinmoduleapp-method",children:[]},{level:2,title:"onSharedPreferenceChanged - method",slug:"onsharedpreferencechanged-method",link:"#onsharedpreferencechanged-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html",pathLocale:"/en/",extraFields:[]},{title:"BaseFinder - class",headers:[{level:2,title:"BaseFinder.IndexTypeCondition - class",slug:"basefinder-indextypecondition-class",link:"#basefinder-indextypecondition-class",children:[{level:3,title:"index - method",slug:"index-method",link:"#index-method",children:[]},{level:3,title:"index - method",slug:"index-method-1",link:"#index-method-1",children:[]},{level:3,title:"IndexTypeConditionSort - class",slug:"indextypeconditionsort-class",link:"#indextypeconditionsort-class",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"DexClassFinder - class",headers:[{level:2,title:"companion object - object",slug:"companion-object-object",link:"#companion-object-object",children:[{level:3,title:"clearCache - method",slug:"clearcache-method",link:"#clearcache-method",children:[]}]},{level:2,title:"fullName - field",slug:"fullname-field",link:"#fullname-field",children:[]},{level:2,title:"simpleName - field",slug:"simplename-field",link:"#simplename-field",children:[]},{level:2,title:"singleName - field",slug:"singlename-field",link:"#singlename-field",children:[]},{level:2,title:"from - method",slug:"from-method",link:"#from-method",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"fullName - method",slug:"fullname-method",link:"#fullname-method",children:[]},{level:2,title:"simpleName - method",slug:"simplename-method",link:"#simplename-method",children:[]},{level:2,title:"singleName - method",slug:"singlename-method",link:"#singlename-method",children:[]},{level:2,title:"fullName - method",slug:"fullname-method-1",link:"#fullname-method-1",children:[]},{level:2,title:"simpleName - method",slug:"simplename-method-1",link:"#simplename-method-1",children:[]},{level:2,title:"singleName - method",slug:"singlename-method-1",link:"#singlename-method-1",children:[]},{level:2,title:"extends - method",slug:"extends-method",link:"#extends-method",children:[]},{level:2,title:"extends - method",slug:"extends-method-1",link:"#extends-method-1",children:[]},{level:2,title:"implements - method",slug:"implements-method",link:"#implements-method",children:[]},{level:2,title:"implements - method",slug:"implements-method-1",link:"#implements-method-1",children:[]},{level:2,title:"anonymous - method",slug:"anonymous-method",link:"#anonymous-method",children:[]},{level:2,title:"noExtends - method",slug:"noextends-method",link:"#noextends-method",children:[]},{level:2,title:"noImplements - method",slug:"noimplements-method",link:"#noimplements-method",children:[]},{level:2,title:"noSuper - method",slug:"nosuper-method",link:"#nosuper-method",children:[]},{level:2,title:"enclosing - method",slug:"enclosing-method",link:"#enclosing-method",children:[]},{level:2,title:"enclosing - method",slug:"enclosing-method-1",link:"#enclosing-method-1",children:[]},{level:2,title:"FromPackageRules - class",slug:"frompackagerules-class",link:"#frompackagerules-class",children:[{level:3,title:"absolute - method",slug:"absolute-method",link:"#absolute-method",children:[]}]},{level:2,title:"ClassNameRules - class",slug:"classnamerules-class",link:"#classnamerules-class",children:[{level:3,title:"optional - method",slug:"optional-method",link:"#optional-method",children:[]}]},{level:2,title:"member - method",slug:"member-method",link:"#member-method",children:[]},{level:2,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:2,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:2,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:2,title:"Result - class",slug:"result-class",link:"#result-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"onNoClassDefFoundError - method",slug:"onnoclassdeffounderror-method",link:"#onnoclassdeffounderror-method",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ConstructorFinder - class",headers:[{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-2",link:"#paramcount-method-2",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Process - class",slug:"process-class",link:"#process-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchConstructor - method",slug:"onnosuchconstructor-method",link:"#onnosuchconstructor-method",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method-1",link:"#remedys-method-1",children:[]},{level:3,title:"onNoSuchConstructor - method",slug:"onnosuchconstructor-method-1",link:"#onnosuchconstructor-method-1",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"FieldFinder - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"type - field",slug:"type-field",link:"#type-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"order - method",slug:"order-method",link:"#order-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"name - method",slug:"name-method-1",link:"#name-method-1",children:[]},{level:2,title:"type - method",slug:"type-method",link:"#type-method",children:[]},{level:2,title:"type - method",slug:"type-method-1",link:"#type-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchField - method",slug:"onnosuchfield-method",link:"#onnosuchfield-method",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"MethodFinder - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"returnType - field",slug:"returntype-field",link:"#returntype-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"order - method",slug:"order-method",link:"#order-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"name - method",slug:"name-method-1",link:"#name-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-2",link:"#paramcount-method-2",children:[]},{level:2,title:"returnType - method",slug:"returntype-method",link:"#returntype-method",children:[]},{level:2,title:"returnType - method",slug:"returntype-method-1",link:"#returntype-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Process - class",slug:"process-class",link:"#process-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchMethod - method",slug:"onnosuchmethod-method",link:"#onnosuchmethod-method",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method-1",link:"#remedys-method-1",children:[]},{level:3,title:"onNoSuchMethod - method",slug:"onnosuchmethod-method-1",link:"#onnosuchmethod-method-1",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]},{level:3,title:"array - method",slug:"array-method",link:"#array-method",children:[]},{level:3,title:"list - method",slug:"list-method",link:"#list-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiXposedEvent - object",headers:[{level:2,title:"events - method",slug:"events-method",link:"#events-method",children:[]},{level:2,title:"onInitZygote - method",slug:"oninitzygote-method",link:"#oninitzygote-method",children:[]},{level:2,title:"onHandleLoadPackage - method",slug:"onhandleloadpackage-method",link:"#onhandleloadpackage-method",children:[]},{level:2,title:"onHandleInitPackageResources - method",slug:"onhandleinitpackageresources-method",link:"#onhandleinitpackageresources-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiModuleResources - class",headers:[{level:2,title:"fwd - method",slug:"fwd-method",link:"#fwd-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiResForwarder - class",headers:[{level:2,title:"id - field",slug:"id-field",link:"#id-field",children:[]},{level:2,title:"resources - field",slug:"resources-field",link:"#resources-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiResources - class",headers:[{level:2,title:"LayoutInflatedParam - class",slug:"layoutinflatedparam-class",link:"#layoutinflatedparam-class",children:[{level:3,title:"variantName - field",slug:"variantname-field",link:"#variantname-field",children:[]},{level:3,title:"currentView - field",slug:"currentview-field",link:"#currentview-field",children:[]},{level:3,title:"findViewByIdentifier - method",slug:"findviewbyidentifier-method",link:"#findviewbyidentifier-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ChannelData - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ChannelPriority - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleClassLoader - class",headers:[{level:2,title:"companion object - object",slug:"companion-object-object",link:"#companion-object-object",children:[{level:3,title:"excludeHostClasses - method",slug:"excludehostclasses-method",link:"#excludehostclasses-method",children:[]},{level:3,title:"excludeModuleClasses - method",slug:"excludemoduleclasses-method",link:"#excludemoduleclasses-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"PrefsData - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModulePreferenceFragment - class",headers:[{level:2,title:"onCreatePreferencesInModuleApp - method",slug:"oncreatepreferencesinmoduleapp-method",link:"#oncreatepreferencesinmoduleapp-method",children:[]},{level:2,title:"onSharedPreferenceChanged - method",slug:"onsharedpreferencechanged-method",link:"#onsharedpreferencechanged-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"CountRules - class",headers:[{level:2,title:"Int.isZero - i-ext-method",slug:"int-iszero-i-ext-method",link:"#int-iszero-i-ext-method",children:[]},{level:2,title:"Int.moreThan - i-ext-method",slug:"int-morethan-i-ext-method",link:"#int-morethan-i-ext-method",children:[]},{level:2,title:"Int.lessThan - i-ext-method",slug:"int-lessthan-i-ext-method",link:"#int-lessthan-i-ext-method",children:[]},{level:2,title:"Int.inInterval - i-ext-method",slug:"int-ininterval-i-ext-method",link:"#int-ininterval-i-ext-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html",pathLocale:"/en/",extraFields:[]},{title:"ModifierRules - class",headers:[{level:2,title:"isPublic - i-ext-field",slug:"ispublic-i-ext-field",link:"#ispublic-i-ext-field",children:[]},{level:2,title:"isPrivate - i-ext-field",slug:"isprivate-i-ext-field",link:"#isprivate-i-ext-field",children:[]},{level:2,title:"isProtected - i-ext-field",slug:"isprotected-i-ext-field",link:"#isprotected-i-ext-field",children:[]},{level:2,title:"isStatic - i-ext-field",slug:"isstatic-i-ext-field",link:"#isstatic-i-ext-field",children:[]},{level:2,title:"isFinal - i-ext-field",slug:"isfinal-i-ext-field",link:"#isfinal-i-ext-field",children:[]},{level:2,title:"isSynchronized - i-ext-field",slug:"issynchronized-i-ext-field",link:"#issynchronized-i-ext-field",children:[]},{level:2,title:"isVolatile - i-ext-field",slug:"isvolatile-i-ext-field",link:"#isvolatile-i-ext-field",children:[]},{level:2,title:"isTransient - i-ext-field",slug:"istransient-i-ext-field",link:"#istransient-i-ext-field",children:[]},{level:2,title:"isNative - i-ext-field",slug:"isnative-i-ext-field",link:"#isnative-i-ext-field",children:[]},{level:2,title:"isInterface - i-ext-field",slug:"isinterface-i-ext-field",link:"#isinterface-i-ext-field",children:[]},{level:2,title:"isAbstract - i-ext-field",slug:"isabstract-i-ext-field",link:"#isabstract-i-ext-field",children:[]},{level:2,title:"isStrict - i-ext-field",slug:"isstrict-i-ext-field",link:"#isstrict-i-ext-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html",pathLocale:"/en/",extraFields:[]},{title:"NameRules - class",headers:[{level:2,title:"String.isSynthetic - i-ext-method",slug:"string-issynthetic-i-ext-method",link:"#string-issynthetic-i-ext-method",children:[]},{level:2,title:"String.isOnlySymbols - i-ext-method",slug:"string-isonlysymbols-i-ext-method",link:"#string-isonlysymbols-i-ext-method",children:[]},{level:2,title:"String.isOnlyLetters - i-ext-method",slug:"string-isonlyletters-i-ext-method",link:"#string-isonlyletters-i-ext-method",children:[]},{level:2,title:"String.isOnlyNumbers - i-ext-method",slug:"string-isonlynumbers-i-ext-method",link:"#string-isonlynumbers-i-ext-method",children:[]},{level:2,title:"String.isOnlyLettersNumbers - i-ext-method",slug:"string-isonlylettersnumbers-i-ext-method",link:"#string-isonlylettersnumbers-i-ext-method",children:[]},{level:2,title:"String.isOnlyLowercase - i-ext-method",slug:"string-isonlylowercase-i-ext-method",link:"#string-isonlylowercase-i-ext-method",children:[]},{level:2,title:"String.isOnlyUppercase - i-ext-method",slug:"string-isonlyuppercase-i-ext-method",link:"#string-isonlyuppercase-i-ext-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html",pathLocale:"/en/",extraFields:[]},{title:"ObjectRules - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html",pathLocale:"/en/",extraFields:[]},{title:"ConstructorRules - class",headers:[{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html",pathLocale:"/en/",extraFields:[]},{title:"FieldRules - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"type - field",slug:"type-field",link:"#type-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"type - method",slug:"type-method",link:"#type-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html",pathLocale:"/en/",extraFields:[]},{title:"MemberRules - class",headers:[{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html",pathLocale:"/en/",extraFields:[]},{title:"MethodRules - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"returnType - field",slug:"returntype-field",link:"#returntype-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"returnType - method",slug:"returntype-method",link:"#returntype-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleAppActivity - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleAppCompatActivity - class",headers:[{level:2,title:"moduleTheme - field",slug:"moduletheme-field",link:"#moduletheme-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleContextThemeWrapper - class",headers:[{level:2,title:"applyConfiguration - method",slug:"applyconfiguration-method",link:"#applyconfiguration-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html",pathLocale:"/en/",extraFields:[]},{title:"CountRules - class",headers:[{level:2,title:"Int.isZero - i-ext-method",slug:"int-iszero-i-ext-method",link:"#int-iszero-i-ext-method",children:[]},{level:2,title:"Int.moreThan - i-ext-method",slug:"int-morethan-i-ext-method",link:"#int-morethan-i-ext-method",children:[]},{level:2,title:"Int.lessThan - i-ext-method",slug:"int-lessthan-i-ext-method",link:"#int-lessthan-i-ext-method",children:[]},{level:2,title:"Int.inInterval - i-ext-method",slug:"int-ininterval-i-ext-method",link:"#int-ininterval-i-ext-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModifierRules - class",headers:[{level:2,title:"isPublic - i-ext-field",slug:"ispublic-i-ext-field",link:"#ispublic-i-ext-field",children:[]},{level:2,title:"isPrivate - i-ext-field",slug:"isprivate-i-ext-field",link:"#isprivate-i-ext-field",children:[]},{level:2,title:"isProtected - i-ext-field",slug:"isprotected-i-ext-field",link:"#isprotected-i-ext-field",children:[]},{level:2,title:"isStatic - i-ext-field",slug:"isstatic-i-ext-field",link:"#isstatic-i-ext-field",children:[]},{level:2,title:"isFinal - i-ext-field",slug:"isfinal-i-ext-field",link:"#isfinal-i-ext-field",children:[]},{level:2,title:"isSynchronized - i-ext-field",slug:"issynchronized-i-ext-field",link:"#issynchronized-i-ext-field",children:[]},{level:2,title:"isVolatile - i-ext-field",slug:"isvolatile-i-ext-field",link:"#isvolatile-i-ext-field",children:[]},{level:2,title:"isTransient - i-ext-field",slug:"istransient-i-ext-field",link:"#istransient-i-ext-field",children:[]},{level:2,title:"isNative - i-ext-field",slug:"isnative-i-ext-field",link:"#isnative-i-ext-field",children:[]},{level:2,title:"isInterface - i-ext-field",slug:"isinterface-i-ext-field",link:"#isinterface-i-ext-field",children:[]},{level:2,title:"isAbstract - i-ext-field",slug:"isabstract-i-ext-field",link:"#isabstract-i-ext-field",children:[]},{level:2,title:"isStrict - i-ext-field",slug:"isstrict-i-ext-field",link:"#isstrict-i-ext-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"NameRules - class",headers:[{level:2,title:"String.isSynthetic - i-ext-method",slug:"string-issynthetic-i-ext-method",link:"#string-issynthetic-i-ext-method",children:[]},{level:2,title:"String.isOnlySymbols - i-ext-method",slug:"string-isonlysymbols-i-ext-method",link:"#string-isonlysymbols-i-ext-method",children:[]},{level:2,title:"String.isOnlyLetters - i-ext-method",slug:"string-isonlyletters-i-ext-method",link:"#string-isonlyletters-i-ext-method",children:[]},{level:2,title:"String.isOnlyNumbers - i-ext-method",slug:"string-isonlynumbers-i-ext-method",link:"#string-isonlynumbers-i-ext-method",children:[]},{level:2,title:"String.isOnlyLettersNumbers - i-ext-method",slug:"string-isonlylettersnumbers-i-ext-method",link:"#string-isonlylettersnumbers-i-ext-method",children:[]},{level:2,title:"String.isOnlyLowercase - i-ext-method",slug:"string-isonlylowercase-i-ext-method",link:"#string-isonlylowercase-i-ext-method",children:[]},{level:2,title:"String.isOnlyUppercase - i-ext-method",slug:"string-isonlyuppercase-i-ext-method",link:"#string-isonlyuppercase-i-ext-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ObjectRules - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ConstructorRules - class",headers:[{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"FieldRules - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"type - field",slug:"type-field",link:"#type-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"type - method",slug:"type-method",link:"#type-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"MemberRules - class",headers:[{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"MethodRules - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"returnType - field",slug:"returntype-field",link:"#returntype-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"returnType - method",slug:"returntype-method",link:"#returntype-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleAppActivity - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleAppCompatActivity - class",headers:[{level:2,title:"moduleTheme - field",slug:"moduletheme-field",link:"#moduletheme-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleContextThemeWrapper - class",headers:[{level:2,title:"applyConfiguration - method",slug:"applyconfiguration-method",link:"#applyconfiguration-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"MemberRulesResult - class",headers:[{level:2,title:"none - method",slug:"none-method",link:"#none-method",children:[]},{level:2,title:"count - method",slug:"count-method",link:"#count-method",children:[]},{level:2,title:"count - method",slug:"count-method-1",link:"#count-method-1",children:[]},{level:2,title:"count - method",slug:"count-method-2",link:"#count-method-2",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html",pathLocale:"/en/",extraFields:[]},{title:"MemberRulesResult - class",headers:[{level:2,title:"none - method",slug:"none-method",link:"#none-method",children:[]},{level:2,title:"count - method",slug:"count-method",link:"#count-method",children:[]},{level:2,title:"count - method",slug:"count-method-1",link:"#count-method-1",children:[]},{level:2,title:"count - method",slug:"count-method-2",link:"#count-method-2",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"",headers:[],path:"/404.html",pathLocale:"/",extraFields:[]}],Br=ye(hf),df=()=>Br;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updateSearchIndex=e=>{Br.value=e});const uf=({searchIndex:e,routeLocale:t,query:l,maxSuggestions:i})=>{const o=Y(()=>e.value.filter(n=>n.pathLocale===t.value));return Y(()=>{const n=l.value.trim().toLowerCase();if(!n)return[];const a=[],r=(s,c)=>{sa(n,[c.title])&&a.push({link:`${s.path}#${c.slug}`,title:s.title,header:c.title});for(const h of c.children){if(a.length>=i.value)return;r(s,h)}};for(const s of o.value){if(a.length>=i.value)break;if(sa(n,[s.title,...s.extraFields])){a.push({link:s.path,title:s.title});continue}for(const c of s.headers){if(a.length>=i.value)break;r(s,c)}}return a})},pf=e=>{const t=ye(0);return{focusIndex:t,focusNext:()=>{t.value{t.value>0?t.value-=1:t.value=e.value.length-1}}},mf=ue({name:"SearchBox",props:{locales:{type:Object,required:!1,default:()=>({})},hotKeys:{type:Array,required:!1,default:()=>[]},maxSuggestions:{type:Number,required:!1,default:5}},setup(e){const{locales:t,hotKeys:l,maxSuggestions:i}=Ei(e),o=Zt(),n=Wl(),a=df(),r=ye(null),s=ye(!1),c=ye(""),h=Y(()=>{var L;return(L=t.value[n.value])!=null?L:{}}),p=uf({searchIndex:a,routeLocale:n,query:c,maxSuggestions:i}),{focusIndex:m,focusNext:g,focusPrev:x}=pf(p);cf({input:r,hotKeys:l});const P=Y(()=>s.value&&!!p.value.length),E=()=>{!P.value||x()},k=()=>{!P.value||g()},_=L=>{if(!P.value)return;const H=p.value[L];!H||o.push(H.link).then(()=>{c.value="",m.value=0})};return()=>he("form",{class:"search-box",role:"search"},[he("input",{ref:r,type:"search",placeholder:h.value.placeholder,autocomplete:"off",spellcheck:!1,value:c.value,onFocus:()=>s.value=!0,onBlur:()=>s.value=!1,onInput:L=>c.value=L.target.value,onKeydown:L=>{switch(L.key){case"ArrowUp":{E();break}case"ArrowDown":{k();break}case"Enter":{L.preventDefault(),_(m.value);break}}}}),P.value&&he("ul",{class:"suggestions",onMouseleave:()=>m.value=-1},p.value.map(({link:L,title:H,header:U},ee)=>he("li",{class:["suggestion",{focus:m.value===ee}],onMouseenter:()=>m.value=ee,onMousedown:()=>_(ee)},he("a",{href:L,onClick:w=>w.preventDefault()},[he("span",{class:"page-title"},H),U&&he("span",{class:"page-header"},`> ${U}`)]))))])}});const ff={"/en/":{placeholder:"Search"},"/zh-cn/":{placeholder:"\u641C\u7D22"}},gf=["s","/"],kf=5,vf=Ht({enhance({app:e}){e.component("SearchBox",t=>he(mf,{locales:ff,hotKeys:gf,maxSuggestions:kf,...t}))}}),oi=[Nd,Yd,Xd,nu,cu,mu,nf,vf];var Ur=ye(es),Wr=Co({key:"",path:"",title:"",lang:"",frontmatter:{},excerpt:"",headers:[]}),gt=ye(Wr),Ot=()=>gt;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updatePageData=e=>{Ur.value[e.key]=()=>Promise.resolve(e),e.key===gt.value.key&&(gt.value=e)});var Xr=Symbol(""),vt=()=>{const e=Me(Xr);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},qr=Symbol(""),bf=()=>{const e=Me(qr);if(!e)throw new Error("usePageHead() is called without provider.");return e},_f=Symbol(""),Kr=Symbol(""),yf=()=>{const e=Me(Kr);if(!e)throw new Error("usePageLang() is called without provider.");return e},No=Symbol(""),Wl=()=>{const e=Me(No);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},At=ye(Th),Gr=()=>At;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updateSiteData=e=>{At.value=e});var Qr=Symbol(""),jo=()=>{const e=Me(Qr);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},xf=Symbol(""),Ut=gl({resolvePageData:async e=>{const t=Ur.value[e],l=await(t==null?void 0:t());return l!=null?l:Wr},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,l)=>{const i=be(t.description)?t.description:l.description,o=[...te(t.head)?t.head:[],...l.head,["title",{},e],["meta",{name:"description",content:i}]];return Ih(o)},resolvePageHeadTitle:(e,t)=>`${e.title?`${e.title} | `:""}${t.title}`,resolvePageLang:e=>e.lang||"en",resolveRouteLocale:(e,t)=>pr(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),$o=ue({name:"ClientOnly",setup(e,t){const l=ye(!1);return Je(()=>{l.value=!0}),()=>{var i,o;return l.value?(o=(i=t.slots).default)==null?void 0:o.call(i):null}}}),Ef=ue({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=Ot(),l=Y(()=>mr[e.pageKey||t.value.key]);return()=>l.value?he(l.value):he("div","404 Not Found")}}),Cf="Layout",Rf="NotFound",Pf=oi.reduce((e,t)=>({...e,...t.layouts}),{}),ca=ue({name:"Vuepress",setup(){const e=Ot(),t=Y(()=>{let l;if(e.value.path){const i=e.value.frontmatter.layout;be(i)?l=i:l=Cf}else l=Rf;return Pf[l]});return()=>he(t.value)}}),Yo=e=>Ul(e)?e:`${Gr().value.base}${ur(e)}`;const Lf=[["v-8daa1a0e","/",{title:""},["/index.html","/index.md"]],["v-2d0a870d","/en/",{title:"Home"},["/en/index.html","/en/index.md"]],["v-c0c85b84","/zh-cn/",{title:"\u9996\u9875"},["/zh-cn/index.html","/zh-cn/index.md"]],["v-7a15fe3b","/en/about/about.html",{title:"About this Document"},["/en/about/about","/en/about/about.md"]],["v-3f851d14","/en/about/changelog.html",{title:"Changelog"},["/en/about/changelog","/en/about/changelog.md"]],["v-193cf592","/en/about/contacts.html",{title:"Contact Us"},["/en/about/contacts","/en/about/contacts.md"]],["v-ae7b83f2","/en/about/future.html",{title:"Looking for Future"},["/en/about/future","/en/about/future.md"]],["v-64fc7bb8","/en/api/home.html",{title:"Document Introduce"},["/en/api/home","/en/api/home.md"]],["v-9cfea7fc","/en/config/api-example.html",{title:"API Basic Configs"},["/en/config/api-example","/en/config/api-example.md"]],["v-72c12b7d","/en/config/api-exception.html",{title:"API Exception Handling"},["/en/config/api-exception","/en/config/api-exception.md"]],["v-793879e8","/en/config/api-using.html",{title:"Use as Hook API Configs"},["/en/config/api-using","/en/config/api-using.md"]],["v-29d6c1ba","/en/config/r8-proguard.html",{title:"R8 & Proguard Obfuscate"},["/en/config/r8-proguard","/en/config/r8-proguard.md"]],["v-24e71de7","/en/config/xposed-using.html",{title:"Use as Xposed Module Configs"},["/en/config/xposed-using","/en/config/xposed-using.md"]],["v-7b22efaf","/en/guide/example.html",{title:"Usage Example"},["/en/guide/example","/en/guide/example.md"]],["v-efb45d4c","/en/guide/home.html",{title:"Introduce"},["/en/guide/home","/en/guide/home.md"]],["v-277b35ca","/en/guide/knowledge.html",{title:"Basic Knowledge"},["/en/guide/knowledge","/en/guide/knowledge.md"]],["v-77d752a2","/en/guide/move-to-new-api.html",{title:"Migrate from Xposed API"},["/en/guide/move-to-new-api","/en/guide/move-to-new-api.md"]],["v-72889797","/en/guide/quick-start.html",{title:"Quick Start"},["/en/guide/quick-start","/en/guide/quick-start.md"]],["v-55c11626","/en/tools/yukihookapi-projectbuilder.html",{title:"YukiHookAPI Project Builder"},["/en/tools/yukihookapi-projectbuilder","/en/tools/yukihookapi-projectbuilder.md"]],["v-41967128","/zh-cn/about/about.html",{title:"\u5173\u4E8E\u6B64\u6587\u6863"},["/zh-cn/about/about","/zh-cn/about/about.md"]],["v-0e6c3476","/zh-cn/about/changelog.html",{title:"\u66F4\u65B0\u65E5\u5FD7"},["/zh-cn/about/changelog","/zh-cn/about/changelog.md"]],["v-6cf86266","/zh-cn/about/contacts.html",{title:"\u8054\u7CFB\u6211\u4EEC"},["/zh-cn/about/contacts","/zh-cn/about/contacts.md"]],["v-3106ca14","/zh-cn/about/future.html",{title:"\u5C55\u671B\u672A\u6765"},["/zh-cn/about/future","/zh-cn/about/future.md"]],["v-c8deafb2","/zh-cn/api/home.html",{title:"\u6587\u6863\u4ECB\u7ECD"},["/zh-cn/api/home","/zh-cn/api/home.md"]],["v-c6114c9e","/zh-cn/config/api-example.html",{title:"API \u57FA\u672C\u914D\u7F6E"},["/zh-cn/config/api-example","/zh-cn/config/api-example.md"]],["v-5b43296c","/zh-cn/config/api-exception.html",{title:"API \u5F02\u5E38\u5904\u7406"},["/zh-cn/config/api-exception","/zh-cn/config/api-exception.md"]],["v-2ee67152","/zh-cn/config/api-using.html",{title:"\u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E"},["/zh-cn/config/api-using","/zh-cn/config/api-using.md"]],["v-154d6f69","/zh-cn/config/r8-proguard.html",{title:"R8 \u4E0E Proguard \u6DF7\u6DC6"},["/zh-cn/config/r8-proguard","/zh-cn/config/r8-proguard.md"]],["v-af73b3d0","/zh-cn/config/xposed-using.html",{title:"\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E"},["/zh-cn/config/xposed-using","/zh-cn/config/xposed-using.md"]],["v-13b430a0","/zh-cn/guide/example.html",{title:"\u7528\u6CD5\u793A\u4F8B"},["/zh-cn/guide/example","/zh-cn/guide/example.md"]],["v-6a609e09","/zh-cn/guide/home.html",{title:"\u4ECB\u7ECD"},["/zh-cn/guide/home","/zh-cn/guide/home.md"]],["v-b4f1a468","/zh-cn/guide/knowledge.html",{title:"\u57FA\u7840\u77E5\u8BC6"},["/zh-cn/guide/knowledge","/zh-cn/guide/knowledge.md"]],["v-c0d5dada","/zh-cn/guide/move-to-new-api.html",{title:"\u4ECE Xposed API \u8FC1\u79FB"},["/zh-cn/guide/move-to-new-api","/zh-cn/guide/move-to-new-api.md"]],["v-24840ff0","/zh-cn/guide/quick-start.html",{title:"\u5FEB\u901F\u5F00\u59CB"},["/zh-cn/guide/quick-start","/zh-cn/guide/quick-start.md"]],["v-a2fab4d6","/zh-cn/tools/yukihookapi-projectbuilder.html",{title:"YukiHookAPI \u6784\u5EFA\u5DE5\u5177"},["/zh-cn/tools/yukihookapi-projectbuilder","/zh-cn/tools/yukihookapi-projectbuilder.md"]],["v-12042f1f","/en/api/special-features/host-inject.html",{title:"Host Resource Injection Extension"},["/en/api/special-features/host-inject","/en/api/special-features/host-inject.md"]],["v-deaff1d0","/en/api/special-features/host-lifecycle.html",{title:"Host Lifecycle Extension"},["/en/api/special-features/host-lifecycle","/en/api/special-features/host-lifecycle.md"]],["v-33c1dc26","/en/api/special-features/logger.html",{title:"Debug Logs"},["/en/api/special-features/logger","/en/api/special-features/logger.md"]],["v-581ddb9c","/en/api/special-features/reflection.html",{title:"Reflection Extensions"},["/en/api/special-features/reflection","/en/api/special-features/reflection.md"]],["v-2e6ad66c","/en/api/special-features/xposed-channel.html",{title:"Xposed Module and Host Channel"},["/en/api/special-features/xposed-channel","/en/api/special-features/xposed-channel.md"]],["v-68bebbf4","/en/api/special-features/xposed-storage.html",{title:"Xposed Module Data Storage"},["/en/api/special-features/xposed-storage","/en/api/special-features/xposed-storage.md"]],["v-6ac5be8e","/zh-cn/api/special-features/host-inject.html",{title:"\u5BBF\u4E3B\u8D44\u6E90\u6CE8\u5165\u6269\u5C55"},["/zh-cn/api/special-features/host-inject","/zh-cn/api/special-features/host-inject.md"]],["v-357a8d49","/zh-cn/api/special-features/host-lifecycle.html",{title:"\u5BBF\u4E3B\u751F\u547D\u5468\u671F\u6269\u5C55"},["/zh-cn/api/special-features/host-lifecycle","/zh-cn/api/special-features/host-lifecycle.md"]],["v-1f0f591e","/zh-cn/api/special-features/logger.html",{title:"\u8C03\u8BD5\u65E5\u5FD7"},["/zh-cn/api/special-features/logger","/zh-cn/api/special-features/logger.md"]],["v-001858e3","/zh-cn/api/special-features/reflection.html",{title:"\u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55"},["/zh-cn/api/special-features/reflection","/zh-cn/api/special-features/reflection.md"]],["v-598546c6","/zh-cn/api/special-features/xposed-channel.html",{title:"Xposed \u6A21\u5757\u4E0E\u5BBF\u4E3B\u901A\u8BAF\u6865"},["/zh-cn/api/special-features/xposed-channel","/zh-cn/api/special-features/xposed-channel.md"]],["v-0d914225","/zh-cn/api/special-features/xposed-storage.html",{title:"Xposed \u6A21\u5757\u6570\u636E\u5B58\u50A8"},["/zh-cn/api/special-features/xposed-storage","/zh-cn/api/special-features/xposed-storage.md"]],["v-053599a5","/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.html",{title:"YukiHookAPI - object"},["/en/api/public/com/highcapable/yukihookapi/YukiHookAPI","/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.md"]],["v-6931cb54","/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.html",{title:"YukiHookAPI - object"},["/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI","/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.md"]],["v-818b3ca6","/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html",{title:"InjectYukiHookWithXposed - annotation"},["/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed","/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.md"]],["v-b6a815c4","/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html",{title:"CurrentClass - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.md"]],["v-0183e3fc","/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html",{title:"GenericClass - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.md"]],["v-57506200","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html",{title:"HookClass - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.md"]],["v-9af56c1a","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html",{title:"HookResources - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.md"]],["v-032b1710","/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html",{title:"VariousClass - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.md"]],["v-e288ce96","/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html",{title:"YukiBaseHooker - class"},["/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker","/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.md"]],["v-0d0fcec2","/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html",{title:"ReflectionFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory","/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.md"]],["v-65091354","/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html",{title:"YukiHookFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory","/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md"]],["v-71147891","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html",{title:"YukiMemberHookCreator - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md"]],["v-5ed1ceee","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html",{title:"YukiResourcesHookCreator - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.md"]],["v-60cbe1b4","/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html",{title:"HookParam - class"},["/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam","/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md"]],["v-b381a126","/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html",{title:"PackageParam - class"},["/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam","/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md"]],["v-30f3ba1e","/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html",{title:"InjectYukiHookWithXposed - annotation"},["/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed","/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.md"]],["v-6e47300f","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html",{title:"CurrentClass - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.md"]],["v-69c1c226","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html",{title:"GenericClass - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.md"]],["v-735374af","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html",{title:"HookClass - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.md"]],["v-1c516d22","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html",{title:"HookResources - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.md"]],["v-66735bfe","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html",{title:"VariousClass - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.md"]],["v-36aec5ad","/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html",{title:"LoggerFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory","/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.md"]],["v-3ac40680","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html",{title:"YukiMemberHookCreator - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md"]],["v-5e81af42","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html",{title:"YukiResourcesHookCreator - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.md"]],["v-516df326","/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html",{title:"YukiBaseHooker - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker","/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.md"]],["v-213d88b3","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html",{title:"ReflectionFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.md"]],["v-448e9585","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html",{title:"YukiHookFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md"]],["v-004a009e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html",{title:"LoggerFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.md"]],["v-75a9b636","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html",{title:"HookParam - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md"]],["v-100b529c","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html",{title:"PackageParam - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md"]],["v-8293d958","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html",{title:"ComponentTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.md"]],["v-7b0abf86","/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html",{title:"GraphicsTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.md"]],["v-5309e4a0","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html",{title:"ViewTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.md"]],["v-a2615d0c","/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html",{title:"DefinedTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.md"]],["v-ba01a600","/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html",{title:"VariableTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.md"]],["v-7fec5836","/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html",{title:"ModuleApplication - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication","/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.md"]],["v-7414265a","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html",{title:"YukiHookDataChannel - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.md"]],["v-003862c2","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html",{title:"YukiHookModulePrefs - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.md"]],["v-1d680acc","/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html",{title:"IYukiHookXposedInit - interface"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit","/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.md"]],["v-5e874c45","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html",{title:"ComponentTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.md"]],["v-4ea62475","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html",{title:"GraphicsTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.md"]],["v-ef79cde2","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html",{title:"ViewTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.md"]],["v-5acc12ab","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html",{title:"DefinedTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.md"]],["v-14ec8671","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html",{title:"VariableTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.md"]],["v-4709ad58","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html",{title:"ModuleApplication - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.md"]],["v-632be8ee","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html",{title:"YukiHookDataChannel - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.md"]],["v-5858709e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html",{title:"YukiHookModulePrefs - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.md"]],["v-763140ee","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html",{title:"IYukiHookXposedInit - interface"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.md"]],["v-4fca92c0","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html",{title:"BaseFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.md"]],["v-2a898c66","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html",{title:"DexClassFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md"]],["v-a71937aa","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html",{title:"ConstructorFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.md"]],["v-42e0f0ab","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html",{title:"FieldFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.md"]],["v-a4aa4d00","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html",{title:"MethodFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.md"]],["v-19e7277e","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html",{title:"YukiXposedEvent - object"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.md"]],["v-8455e04e","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html",{title:"YukiModuleResources - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.md"]],["v-7b087cce","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html",{title:"YukiResForwarder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.md"]],["v-a00b4de6","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html",{title:"YukiResources - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.md"]],["v-2f64a2d4","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html",{title:"ChannelData - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.md"]],["v-87027140","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html",{title:"ChannelPriority - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.md"]],["v-2d4e0da6","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html",{title:"ModuleClassLoader - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.md"]],["v-58ed8298","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html",{title:"PrefsData - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.md"]],["v-23e1a817","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html",{title:"ModulePreferenceFragment - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.md"]],["v-0f719471","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html",{title:"BaseFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.md"]],["v-45111efc","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html",{title:"DexClassFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md"]],["v-1e2cbc9c","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html",{title:"ConstructorFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.md"]],["v-22449c48","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html",{title:"FieldFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.md"]],["v-fd738322","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html",{title:"MethodFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.md"]],["v-0a4de82f","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html",{title:"YukiXposedEvent - object"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.md"]],["v-8266e0ec","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html",{title:"YukiModuleResources - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.md"]],["v-aa38fa86","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html",{title:"YukiResForwarder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.md"]],["v-21b3b17e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html",{title:"YukiResources - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.md"]],["v-493d37f6","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html",{title:"ChannelData - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.md"]],["v-b57870de","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html",{title:"ChannelPriority - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.md"]],["v-4b468415","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html",{title:"ModuleClassLoader - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.md"]],["v-d99f7f36","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html",{title:"PrefsData - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.md"]],["v-53bcae06","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html",{title:"ModulePreferenceFragment - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.md"]],["v-52995ef7","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html",{title:"CountRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.md"]],["v-8d5ce71a","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html",{title:"ModifierRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.md"]],["v-f5b1ffb2","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html",{title:"NameRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.md"]],["v-652b815b","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html",{title:"ObjectRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.md"]],["v-08b70f7f","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html",{title:"ConstructorRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.md"]],["v-21f64ebf","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html",{title:"FieldRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.md"]],["v-77f11cf9","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html",{title:"MemberRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.md"]],["v-64827680","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html",{title:"MethodRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.md"]],["v-2d5d16db","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html",{title:"ModuleAppActivity - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.md"]],["v-cadbe48e","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html",{title:"ModuleAppCompatActivity - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.md"]],["v-78731c50","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html",{title:"ModuleContextThemeWrapper - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.md"]],["v-1b2ad030","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html",{title:"CountRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.md"]],["v-547a3c3c","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html",{title:"ModifierRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.md"]],["v-58c26516","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html",{title:"NameRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.md"]],["v-80fd32ec","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html",{title:"ObjectRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.md"]],["v-a42f54a4","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html",{title:"ConstructorRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.md"]],["v-3e67a42e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html",{title:"FieldRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.md"]],["v-2cab152c","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html",{title:"MemberRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.md"]],["v-5388621e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html",{title:"MethodRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.md"]],["v-1446bdca","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html",{title:"ModuleAppActivity - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.md"]],["v-c7cef530","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html",{title:"ModuleAppCompatActivity - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.md"]],["v-44efb702","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html",{title:"ModuleContextThemeWrapper - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.md"]],["v-5e375d98","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html",{title:"MemberRulesResult - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.md"]],["v-b8000f3a","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html",{title:"MemberRulesResult - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.md"]],["v-3706649a","/404.html",{title:""},["/404"]]];var Tf=()=>Lf.reduce((e,[t,l,i,o])=>(e.push({name:t,path:l,component:ca,meta:i},...o.map(n=>({path:n,redirect:l}))),e),[{name:"404",path:"/:catchAll(.*)",component:ca}]),Af=Gh,If=()=>{const e=Fd({history:Af(dr(At.value.base)),routes:Tf(),scrollBehavior:(t,l,i)=>i||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,l)=>{var i;(t.path!==l.path||l===mt)&&([gt.value]=await Promise.all([Ut.resolvePageData(t.name),(i=mr[t.name])==null?void 0:i.__asyncLoader()]))}),e},wf=e=>{e.component("ClientOnly",$o),e.component("Content",Ef)},Of=(e,t)=>{const l=Y(()=>Ut.resolveRouteLocale(At.value.locales,t.currentRoute.value.path)),i=Y(()=>Ut.resolveSiteLocaleData(At.value,l.value)),o=Y(()=>Ut.resolvePageFrontmatter(gt.value)),n=Y(()=>Ut.resolvePageHeadTitle(gt.value,i.value)),a=Y(()=>Ut.resolvePageHead(n.value,o.value,i.value)),r=Y(()=>Ut.resolvePageLang(gt.value));return e.provide(No,l),e.provide(Qr,i),e.provide(Xr,o),e.provide(_f,n),e.provide(qr,a),e.provide(Kr,r),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>o.value},$head:{get:()=>a.value},$headTitle:{get:()=>n.value},$lang:{get:()=>r.value},$page:{get:()=>gt.value},$routeLocale:{get:()=>l.value},$site:{get:()=>At.value},$siteLocale:{get:()=>i.value},$withBase:{get:()=>Yo}}),{pageData:gt,pageFrontmatter:o,pageHead:a,pageHeadTitle:n,pageLang:r,routeLocale:l,siteData:At,siteLocaleData:i}},Ff=()=>{const e=St(),t=bf(),l=yf(),i=ye([]),o=()=>{t.value.forEach(a=>{const r=zf(a);r&&i.value.push(r)})},n=()=>{document.documentElement.lang=l.value,i.value.forEach(a=>{a.parentNode===document.head&&document.head.removeChild(a)}),i.value.splice(0,i.value.length),t.value.forEach(a=>{const r=Df(a);r!==null&&(document.head.appendChild(r),i.value.push(r))})};Gt(xf,n),Je(()=>{o(),n(),dt(()=>e.path,()=>n())})},zf=([e,t,l=""])=>{const i=Object.entries(t).map(([r,s])=>be(s)?`[${r}="${s}"]`:s===!0?`[${r}]`:"").join(""),o=`head > ${e}${i}`;return Array.from(document.querySelectorAll(o)).find(r=>r.innerText===l)||null},Df=([e,t,l])=>{if(!be(e))return null;const i=document.createElement(e);return Oo(t)&&Object.entries(t).forEach(([o,n])=>{be(n)?i.setAttribute(o,n):n===!0&&i.setAttribute(o,"")}),be(l)&&i.appendChild(document.createTextNode(l)),i},Mf=Ph,Hf=async()=>{var l;const e=Mf({name:"VuepressApp",setup(){var i;Ff();for(const o of oi)(i=o.setup)==null||i.call(o);return()=>[he(Pr),...oi.flatMap(({rootComponents:o=[]})=>o.map(n=>he(n)))]}}),t=If();wf(e),Of(e,t);for(const i of oi)await((l=i.enhance)==null?void 0:l.call(i,{app:e,router:t,siteData:At}));return e.use(t),{app:e,router:t}};Hf().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{Te as _,jc as a,fe as b,Z as c,Hf as createVueApp,oe as d,Mt as e,N as o,_t as r,He as w}; + */const me={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
    '},status:null,set:e=>{const t=me.isStarted();e=Yi(e,me.settings.minimum,1),me.status=e===1?null:e;const l=me.render(!t),i=l.querySelector(me.settings.barSelector),o=me.settings.speed,n=me.settings.easing;return l.offsetWidth,au(a=>{ti(i,{transform:"translate3d("+qn(e)+"%,0,0)",transition:"all "+o+"ms "+n}),e===1?(ti(l,{transition:"none",opacity:"1"}),l.offsetWidth,setTimeout(function(){ti(l,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){me.remove(),a()},o)},o)):setTimeout(()=>a(),o)}),me},isStarted:()=>typeof me.status=="number",start:()=>{me.status||me.set(0);const e=()=>{setTimeout(()=>{!me.status||(me.trickle(),e())},me.settings.trickleSpeed)};return me.settings.trickle&&e(),me},done:e=>!e&&!me.status?me:me.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=me.status;return t?(typeof e!="number"&&(e=(1-t)*Yi(Math.random()*t,.1,.95)),t=Yi(t+e,0,.994),me.set(t)):me.start()},trickle:()=>me.inc(Math.random()*me.settings.trickleRate),render:e=>{if(me.isRendered())return document.getElementById("nprogress");Kn(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=me.settings.template;const l=t.querySelector(me.settings.barSelector),i=e?"-100":qn(me.status||0),o=document.querySelector(me.settings.parent);return ti(l,{transition:"all 0 linear",transform:"translate3d("+i+"%,0,0)"}),o!==document.body&&Kn(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{Gn(document.documentElement,"nprogress-busy"),Gn(document.querySelector(me.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&ru(e)},isRendered:()=>!!document.getElementById("nprogress")},Yi=(e,t,l)=>el?l:e,qn=e=>(-1+e)*100,au=function(){const e=[];function t(){const l=e.shift();l&&l(t)}return function(l){e.push(l),e.length===1&&t()}}(),ti=function(){const e=["Webkit","O","Moz","ms"],t={};function l(a){return a.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(r,s){return s.toUpperCase()})}function i(a){const r=document.body.style;if(a in r)return a;let s=e.length;const c=a.charAt(0).toUpperCase()+a.slice(1);let h;for(;s--;)if(h=e[s]+c,h in r)return h;return a}function o(a){return a=l(a),t[a]||(t[a]=i(a))}function n(a,r,s){r=o(r),a.style[r]=s}return function(a,r){for(const s in r){const c=r[s];c!==void 0&&Object.prototype.hasOwnProperty.call(r,s)&&n(a,s,c)}}}(),Lr=(e,t)=>(typeof e=="string"?e:Do(e)).indexOf(" "+t+" ")>=0,Kn=(e,t)=>{const l=Do(e),i=l+t;Lr(l,t)||(e.className=i.substring(1))},Gn=(e,t)=>{const l=Do(e);if(!Lr(e,t))return;const i=l.replace(" "+t+" "," ");e.className=i.substring(1,i.length-1)},Do=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),ru=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const su=()=>{Je(()=>{const e=Zt(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(l=>{t.has(l.path)||me.start()}),e.afterEach(l=>{t.add(l.path),me.done()})})},cu=Ht({setup(){su()}}),hu=JSON.parse(`{"logo":"/images/logo.png","repo":"https://github.com/fankes/YukiHookAPI","docsRepo":"https://github.com/fankes/YukiHookAPI","docsBranch":"master","docsDir":"docs-source/src","editLinkPattern":":repo/edit/:branch/:path","sidebar":{"/en/":[{"text":"Get Started","collapsible":true,"children":["/en/guide/home","/en/guide/knowledge","/en/guide/quick-start","/en/guide/example","/en/guide/move-to-new-api"]},{"text":"Configs","collapsible":true,"children":["/en/config/api-example","/en/config/api-exception","/en/config/xposed-using","/en/config/api-using","/en/config/r8-proguard"]},{"text":"Tools","collapsible":true,"children":["/en/tools/yukihookapi-projectbuilder"]},{"text":"API Document","collapsible":true,"children":["/en/api/home",{"text":"Public API\xA0","collapsible":true,"children":["/en/api/public/com/highcapable/yukihookapi/YukiHookAPI","/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam","/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam","/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed","/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority","/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory","/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory","/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory","/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources"]},{"text":"Special Features\xA0","collapsible":true,"children":["/en/api/special-features/reflection","/en/api/special-features/logger","/en/api/special-features/xposed-storage","/en/api/special-features/xposed-channel","/en/api/special-features/host-lifecycle","/en/api/special-features/host-inject"]}]},{"text":"About","collapsible":true,"children":["/en/about/changelog","/en/about/future","/en/about/contacts","/en/about/about"]}],"/zh-cn/":[{"text":"\u5165\u95E8","collapsible":true,"children":["/zh-cn/guide/home","/zh-cn/guide/knowledge","/zh-cn/guide/quick-start","/zh-cn/guide/example","/zh-cn/guide/move-to-new-api"]},{"text":"\u914D\u7F6E","collapsible":true,"children":["/zh-cn/config/api-example","/zh-cn/config/api-exception","/zh-cn/config/xposed-using","/zh-cn/config/api-using","/zh-cn/config/r8-proguard"]},{"text":"\u5DE5\u5177","collapsible":true,"children":["/zh-cn/tools/yukihookapi-projectbuilder"]},{"text":"API \u6587\u6863","collapsible":true,"children":["/zh-cn/api/home",{"text":"Public API\xA0","collapsible":true,"children":["/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam","/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources"]},{"text":"\u7279\u8272\u529F\u80FD\xA0","collapsible":true,"children":["/zh-cn/api/special-features/reflection","/zh-cn/api/special-features/logger","/zh-cn/api/special-features/xposed-storage","/zh-cn/api/special-features/xposed-channel","/zh-cn/api/special-features/host-lifecycle","/zh-cn/api/special-features/host-inject"]}]},{"text":"\u5173\u4E8E","collapsible":true,"children":["/zh-cn/about/changelog","/zh-cn/about/future","/zh-cn/about/contacts","/zh-cn/about/about"]}]},"sidebarDepth":2,"locales":{"/en/":{"navbar":[{"text":"Navigation","children":[{"text":"Get Started","children":[{"text":"Introduce","link":"/en/guide/home"},{"text":"Basic Knowledge","link":"/en/guide/knowledge"},{"text":"Quick Start","link":"/en/guide/quick-start"},{"text":"Usage Example","link":"/en/guide/example"},{"text":"Migrate from Xposed API","link":"/en/guide/move-to-new-api"}]},{"text":"Configs","children":[{"text":"API Basic Configs","link":"/en/config/api-example"},{"text":"API Exception Handling","link":"/en/config/api-exception"},{"text":"Use as Xposed Module Configs","link":"/en/config/xposed-using"},{"text":"Use as Hook API Configs","link":"/en/config/api-using"},{"text":"R8 & Proguard Obfuscate","link":"/en/config/r8-proguard"}]},{"text":"Tools","children":[{"text":"YukiHookAPI Project Builder","link":"/en/tools/yukihookapi-projectbuilder"}]},{"text":"API Document","children":[{"text":"Document Introduction","link":"/en/api/home"},{"text":"Public API","link":"/en/api/public/com/highcapable/yukihookapi/YukiHookAPI","activeMatch":"/en/api/public/"},{"text":"Special Features","link":"/en/api/special-features/reflection","activeMatch":"/en/api/special-features/"}]},{"text":"About","children":[{"text":"Changelog","link":"/en/about/changelog"},{"text":"Looking for Future","link":"/en/about/future"},{"text":"Contact Us","link":"/en/about/contacts"},{"text":"About this Document","link":"/en/about/about"}]}]},{"text":"Contact Us","link":"/en/about/contacts"}],"selectLanguageText":"English (US)","selectLanguageName":"English","editLinkText":"Edit this page on Github","tip":"Tips","warning":"Notice","danger":"Pay Attention"},"/zh-cn/":{"navbar":[{"text":"\u5BFC\u822A","children":[{"text":"\u5165\u95E8","children":[{"text":"\u4ECB\u7ECD","link":"/zh-cn/guide/home"},{"text":"\u57FA\u7840\u77E5\u8BC6","link":"/zh-cn/guide/knowledge"},{"text":"\u5FEB\u901F\u5F00\u59CB","link":"/zh-cn/guide/quick-start"},{"text":"\u7528\u6CD5\u793A\u4F8B","link":"/zh-cn/guide/example"},{"text":"\u4ECE Xposed API \u8FC1\u79FB","link":"/zh-cn/guide/move-to-new-api"}]},{"text":"\u914D\u7F6E","children":[{"text":"API \u57FA\u672C\u914D\u7F6E","link":"/zh-cn/config/api-example"},{"text":"API \u5F02\u5E38\u5904\u7406","link":"/zh-cn/config/api-exception"},{"text":"\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E","link":"/zh-cn/config/xposed-using"},{"text":"\u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E","link":"/zh-cn/config/api-using"},{"text":"R8 \u4E0E Proguard \u6DF7\u6DC6","link":"/zh-cn/config/r8-proguard"}]},{"text":"\u5DE5\u5177","children":[{"text":"YukiHookAPI \u6784\u5EFA\u5DE5\u5177","link":"/zh-cn/tools/yukihookapi-projectbuilder"}]},{"text":"API \u6587\u6863","children":[{"text":"\u6587\u6863\u4ECB\u7ECD","link":"/zh-cn/api/home"},{"text":"Public API","link":"/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI","activeMatch":"/zh-cn/api/public/"},{"text":"\u7279\u8272\u529F\u80FD","link":"/zh-cn/api/special-features/reflection","activeMatch":"/zh-cn/api/special-features/"}]},{"text":"\u5173\u4E8E","children":[{"text":"\u66F4\u65B0\u65E5\u5FD7","link":"/zh-cn/about/changelog"},{"text":"\u5C55\u671B\u672A\u6765","link":"/zh-cn/about/future"},{"text":"\u8054\u7CFB\u6211\u4EEC","link":"/zh-cn/about/contacts"},{"text":"\u5173\u4E8E\u6B64\u6587\u6863","link":"/zh-cn/about/about"}]}]},{"text":"\u8054\u7CFB\u6211\u4EEC","link":"/zh-cn/about/contacts"}],"selectLanguageText":"\u7B80\u4F53\u4E2D\u6587 (CN)","selectLanguageName":"\u7B80\u4F53\u4E2D\u6587","editLinkText":"\u5728 Github \u4E0A\u7F16\u8F91\u6B64\u9875","notFound":["\u8FD9\u91CC\u4EC0\u4E48\u90FD\u6CA1\u6709","\u6211\u4EEC\u600E\u4E48\u5230\u8FD9\u6765\u4E86\uFF1F","\u8FD9\u662F\u4E00\u4E2A 404 \u9875\u9762","\u770B\u8D77\u6765\u6211\u4EEC\u8FDB\u5165\u4E86\u9519\u8BEF\u7684\u94FE\u63A5"],"backToHome":"\u56DE\u5230\u9996\u9875","contributorsText":"\u8D21\u732E\u8005","lastUpdatedText":"\u4E0A\u6B21\u66F4\u65B0","tip":"\u5C0F\u63D0\u793A","warning":"\u6CE8\u610F","danger":"\u7279\u522B\u6CE8\u610F","openInNewWindow":"\u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00","toggleColorMode":"\u5207\u6362\u989C\u8272\u6A21\u5F0F"},"/":{"selectLanguageName":"English"}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),Tr=ye(hu),du=()=>Tr;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updateThemeData=e=>{Tr.value=e});const Ar=Symbol(""),uu=()=>{const e=Me(Ar);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},pu=(e,t)=>{var l;return{...e,...(l=e.locales)==null?void 0:l[t]}},mu=Ht({enhance({app:e}){const t=du(),l=e._context.provides[No],i=Y(()=>pu(t.value,l.value));e.provide(Ar,i),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return i.value}}})}}),fu=ue({__name:"Badge",props:{type:{type:String,required:!1,default:"tip"},text:{type:String,required:!1,default:""},vertical:{type:String,required:!1,default:void 0}},setup(e){return(t,l)=>(N(),Z("span",{class:Ke(["badge",e.type]),style:Sl({verticalAlign:e.vertical})},[Re(t.$slots,"default",{},()=>[Mt(ze(e.text),1)])],6))}}),Te=(e,t)=>{const l=e.__vccOpts||e;for(const[i,o]of t)l[i]=o;return l},gu=Te(fu,[["__file","Badge.vue"]]),ku=ue({name:"CodeGroup",setup(e,{slots:t}){const l=ye(-1),i=ye([]),o=(r=l.value)=>{r{r>0?l.value=r-1:l.value=i.value.length-1,i.value[l.value].focus()},a=(r,s)=>{r.key===" "||r.key==="Enter"?(r.preventDefault(),l.value=s):r.key==="ArrowRight"?(r.preventDefault(),o(s)):r.key==="ArrowLeft"&&(r.preventDefault(),n(s))};return()=>{var s;const r=(((s=t.default)==null?void 0:s.call(t))||[]).filter(c=>c.type.name==="CodeGroupItem").map(c=>(c.props===null&&(c.props={}),c));return r.length===0?null:(l.value<0||l.value>r.length-1?(l.value=r.findIndex(c=>c.props.active===""||c.props.active===!0),l.value===-1&&(l.value=0)):r.forEach((c,h)=>{c.props.active=h===l.value}),he("div",{class:"code-group"},[he("div",{class:"code-group__nav"},he("ul",{class:"code-group__ul"},r.map((c,h)=>{const p=h===l.value;return he("li",{class:"code-group__li"},he("button",{ref:m=>{m&&(i.value[h]=m)},class:{"code-group__nav-tab":!0,"code-group__nav-tab-active":p},ariaPressed:p,ariaExpanded:p,onClick:()=>l.value=h,onKeydown:m=>a(m,h)},c.props.title))}))),r]))}}}),vu=["aria-selected"],bu=ue({name:"CodeGroupItem"}),_u=ue({...bu,props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},setup(e){return(t,l)=>(N(),Z("div",{class:Ke(["code-group-item",{"code-group-item__active":e.active}]),"aria-selected":e.active},[Re(t.$slots,"default")],10,vu))}}),yu=Te(_u,[["__file","CodeGroupItem.vue"]]);var Qn;const Ir=typeof window<"u",xu=e=>typeof e=="function",Eu=e=>typeof e=="string",Bi=()=>{};Ir&&((Qn=window==null?void 0:window.navigator)==null?void 0:Qn.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function gi(e){return typeof e=="function"?e():O(e)}function Cu(e,t){function l(...i){e(()=>t.apply(this,i),{fn:t,thisArg:this,args:i})}return l}const wr=e=>e();function Ru(e=wr){const t=ye(!0);function l(){t.value=!1}function i(){t.value=!0}return{isActive:t,pause:l,resume:i,eventFilter:(...n)=>{t.value&&e(...n)}}}function Pu(e){return e}function Or(e){return fs()?(gs(e),!0):!1}function Lu(e,t=!0){wo()?Xa(e):t?e():jl(e)}function Tu(e,t=!0){wo()?Je(e):t?e():jl(e)}function Au(e=!1,t={}){const{truthyValue:l=!0,falsyValue:i=!1}=t,o=De(e),n=ye(e);function a(r){if(arguments.length)return n.value=r,n.value;{const s=gi(l);return n.value=n.value===s?gi(i):s,n.value}}return o?a:[n,a]}var Jn=Object.getOwnPropertySymbols,Iu=Object.prototype.hasOwnProperty,wu=Object.prototype.propertyIsEnumerable,Ou=(e,t)=>{var l={};for(var i in e)Iu.call(e,i)&&t.indexOf(i)<0&&(l[i]=e[i]);if(e!=null&&Jn)for(var i of Jn(e))t.indexOf(i)<0&&wu.call(e,i)&&(l[i]=e[i]);return l};function Fu(e,t,l={}){const i=l,{eventFilter:o=wr}=i,n=Ou(i,["eventFilter"]);return dt(e,Cu(o,t),n)}var zu=Object.defineProperty,Du=Object.defineProperties,Mu=Object.getOwnPropertyDescriptors,ki=Object.getOwnPropertySymbols,Fr=Object.prototype.hasOwnProperty,zr=Object.prototype.propertyIsEnumerable,Zn=(e,t,l)=>t in e?zu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,Hu=(e,t)=>{for(var l in t||(t={}))Fr.call(t,l)&&Zn(e,l,t[l]);if(ki)for(var l of ki(t))zr.call(t,l)&&Zn(e,l,t[l]);return e},Su=(e,t)=>Du(e,Mu(t)),Vu=(e,t)=>{var l={};for(var i in e)Fr.call(e,i)&&t.indexOf(i)<0&&(l[i]=e[i]);if(e!=null&&ki)for(var i of ki(e))t.indexOf(i)<0&&zr.call(e,i)&&(l[i]=e[i]);return l};function Nu(e,t,l={}){const i=l,{eventFilter:o}=i,n=Vu(i,["eventFilter"]),{eventFilter:a,pause:r,resume:s,isActive:c}=Ru(o);return{stop:Fu(e,t,Su(Hu({},n),{eventFilter:a})),pause:r,resume:s,isActive:c}}function ju(e){var t;const l=gi(e);return(t=l==null?void 0:l.$el)!=null?t:l}const vi=Ir?window:void 0;function $u(...e){let t,l,i,o;if(Eu(e[0])?([l,i,o]=e,t=vi):[t,l,i,o]=e,!t)return Bi;let n=Bi;const a=dt(()=>ju(t),s=>{n(),s&&(s.addEventListener(l,i,o),n=()=>{s.removeEventListener(l,i,o),n=Bi})},{immediate:!0,flush:"post"}),r=()=>{a(),n()};return Or(r),r}function Yu(e,t=!1){const l=ye(),i=()=>l.value=Boolean(e());return i(),Tu(i,t),l}function Bu(e,t={}){const{window:l=vi}=t,i=Yu(()=>l&&"matchMedia"in l&&typeof l.matchMedia=="function");let o;const n=ye(!1),a=()=>{!i.value||(o||(o=l.matchMedia(e)),n.value=o.matches)};return Lu(()=>{a(),o&&("addEventListener"in o?o.addEventListener("change",a):o.addListener(a),Or(()=>{"removeEventListener"in o?o.removeEventListener("change",a):o.removeListener(a)}))}),n}const uo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},po="__vueuse_ssr_handlers__";uo[po]=uo[po]||{};const Uu=uo[po];function Wu(e,t){return Uu[e]||t}function Xu(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"||Array.isArray(e)?"object":Number.isNaN(e)?"any":"number"}var qu=Object.defineProperty,ea=Object.getOwnPropertySymbols,Ku=Object.prototype.hasOwnProperty,Gu=Object.prototype.propertyIsEnumerable,ta=(e,t,l)=>t in e?qu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,la=(e,t)=>{for(var l in t||(t={}))Ku.call(t,l)&&ta(e,l,t[l]);if(ea)for(var l of ea(t))Gu.call(t,l)&&ta(e,l,t[l]);return e};const Qu={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}};function Ju(e,t,l,i={}){var o;const{flush:n="pre",deep:a=!0,listenToStorageChanges:r=!0,writeDefaults:s=!0,mergeDefaults:c=!1,shallow:h,window:p=vi,eventFilter:m,onError:g=w=>{console.error(w)}}=i,x=(h?wa:ye)(t);if(!l)try{l=Wu("getDefaultStorage",()=>{var w;return(w=vi)==null?void 0:w.localStorage})()}catch(w){g(w)}if(!l)return x;const P=gi(t),E=Xu(P),k=(o=i.serializer)!=null?o:Qu[E],{pause:_,resume:L}=Nu(x,()=>H(x.value),{flush:n,deep:a,eventFilter:m});return p&&r&&$u(p,"storage",ee),ee(),x;function H(w){try{w==null?l.removeItem(e):l.setItem(e,k.write(w))}catch(v){g(v)}}function U(w){if(!(w&&w.key!==e)){_();try{const v=w?w.newValue:l.getItem(e);if(v==null)return s&&P!==null&&l.setItem(e,k.write(P)),P;if(!w&&c){const q=k.read(v);return xu(c)?c(q,P):E==="object"&&!Array.isArray(q)?la(la({},P),q):q}else return typeof v!="string"?v:k.read(v)}catch(v){g(v)}finally{L()}}}function ee(w){w&&w.key!==e||(x.value=U(w))}}function Zu(e){return Bu("(prefers-color-scheme: dark)",e)}var ia;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(ia||(ia={}));var ep=Object.defineProperty,oa=Object.getOwnPropertySymbols,tp=Object.prototype.hasOwnProperty,lp=Object.prototype.propertyIsEnumerable,na=(e,t,l)=>t in e?ep(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,ip=(e,t)=>{for(var l in t||(t={}))tp.call(t,l)&&na(e,l,t[l]);if(oa)for(var l of oa(t))lp.call(t,l)&&na(e,l,t[l]);return e};const op={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};ip({linear:Pu},op);const $e=()=>uu(),Dr=Symbol(""),Mo=()=>{const e=Me(Dr);if(!e)throw new Error("useDarkMode() is called without provider.");return e},np=()=>{const e=$e(),t=Zu(),l=Ju("vuepress-color-scheme",e.value.colorMode),i=Y({get(){return e.value.colorModeSwitch?l.value==="auto"?t.value:l.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?l.value="auto":l.value=o?"dark":"light"}});Gt(Dr,i),ap(i)},ap=e=>{const t=(l=e.value)=>{const i=window==null?void 0:window.document.querySelector("html");i==null||i.classList.toggle("dark",l)};Je(()=>{dt(e,t,{immediate:!0})}),Li(()=>t())},Mr=(...e)=>{const l=Zt().resolve(...e),i=l.matched[l.matched.length-1];if(!(i!=null&&i.redirect))return l;const{redirect:o}=i,n=ae(o)?o(l):o,a=be(n)?{path:n}:n;return Mr({hash:l.hash,query:l.query,params:l.params,...a})},Ho=e=>{const t=Mr(encodeURI(e));return{text:t.meta.title||e,link:t.name==="404"?e:t.fullPath}};let Ui=null,yl=null;const rp={wait:()=>Ui,pending:()=>{Ui=new Promise(e=>yl=e)},resolve:()=>{yl==null||yl(),Ui=null,yl=null}},Hr=()=>rp,Sr=Symbol("sidebarItems"),So=()=>{const e=Me(Sr);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},sp=()=>{const e=$e(),t=vt(),l=Y(()=>cp(t.value,e.value));Gt(Sr,l)},cp=(e,t)=>{var o,n,a,r;const l=(n=(o=e.sidebar)!=null?o:t.sidebar)!=null?n:"auto",i=(r=(a=e.sidebarDepth)!=null?a:t.sidebarDepth)!=null?r:2;return e.home||l===!1?[]:l==="auto"?dp(i):te(l)?Vr(l,i):Oo(l)?up(l,i):[]},hp=(e,t)=>({text:e.title,link:e.link,children:Vo(e.children,t)}),Vo=(e,t)=>t>0?e.map(l=>hp(l,t-1)):[],dp=e=>{const t=Ot();return[{text:t.value.title,children:Vo(t.value.headers,e)}]},Vr=(e,t)=>{const l=St(),i=Ot(),o=n=>{var r;let a;if(be(n)?a=Ho(n):a=n,a.children)return{...a,children:a.children.map(s=>o(s))};if(a.link===l.path){const s=((r=i.value.headers[0])==null?void 0:r.level)===1?i.value.headers[0].children:i.value.headers;return{...a,children:Vo(s,t)}}return a};return e.map(n=>o(n))},up=(e,t)=>{var n;const l=St(),i=pr(e,l.path),o=(n=e[i])!=null?n:[];return Vr(o,t)},pp={},mp={class:"theme-default-content"};function fp(e,t){const l=_t("Content");return N(),Z("div",mp,[oe(l)])}const gp=Te(pp,[["render",fp],["__file","HomeContent.vue"]]),kp={key:0,class:"features"},vp=ue({__name:"HomeFeatures",setup(e){const t=vt(),l=Y(()=>te(t.value.features)?t.value.features:[]);return(i,o)=>O(l).length?(N(),Z("div",kp,[(N(!0),Z(Pe,null,zt(O(l),n=>(N(),Z("div",{key:n.title,class:"feature"},[fe("h2",null,ze(n.title),1),fe("p",null,ze(n.details),1)]))),128))])):Ae("v-if",!0)}}),bp=Te(vp,[["__file","HomeFeatures.vue"]]),_p=["innerHTML"],yp=["textContent"],xp=ue({__name:"HomeFooter",setup(e){const t=vt(),l=Y(()=>t.value.footer),i=Y(()=>t.value.footerHtml);return(o,n)=>O(l)?(N(),Z(Pe,{key:0},[Ae(" eslint-disable-next-line vue/no-v-html "),O(i)?(N(),Z("div",{key:0,class:"footer",innerHTML:O(l)},null,8,_p)):(N(),Z("div",{key:1,class:"footer",textContent:ze(O(l))},null,8,yp))],64)):Ae("v-if",!0)}}),Ep=Te(xp,[["__file","HomeFooter.vue"]]),Cp=["href","rel","target","aria-label"],Rp=ue({inheritAttrs:!1}),Pp=ue({...Rp,__name:"AutoLink",props:{item:{type:Object,required:!0}},setup(e){const t=e,l=St(),i=Gr(),{item:o}=Ei(t),n=Y(()=>Ul(o.value.link)),a=Y(()=>wh(o.value.link)||Oh(o.value.link)),r=Y(()=>{if(!a.value){if(o.value.target)return o.value.target;if(n.value)return"_blank"}}),s=Y(()=>r.value==="_blank"),c=Y(()=>!n.value&&!a.value&&!s.value),h=Y(()=>{if(!a.value){if(o.value.rel)return o.value.rel;if(s.value)return"noopener noreferrer"}}),p=Y(()=>o.value.ariaLabel||o.value.text),m=Y(()=>{const P=Object.keys(i.value.locales);return P.length?!P.some(E=>E===o.value.link):o.value.link!=="/"}),g=Y(()=>m.value?l.path.startsWith(o.value.link):!1),x=Y(()=>c.value?o.value.activeMatch?new RegExp(o.value.activeMatch).test(l.path):g.value:!1);return(P,E)=>{const k=_t("RouterLink"),_=_t("AutoLinkExternalIcon");return O(c)?(N(),we(k,no({key:0,class:{"router-link-active":O(x)},to:O(o).link,"aria-label":O(p)},P.$attrs),{default:He(()=>[Re(P.$slots,"before"),Mt(" "+ze(O(o).text)+" ",1),Re(P.$slots,"after")]),_:3},16,["class","to","aria-label"])):(N(),Z("a",no({key:1,class:"external-link",href:O(o).link,rel:O(h),target:O(r),"aria-label":O(p)},P.$attrs),[Re(P.$slots,"before"),Mt(" "+ze(O(o).text)+" ",1),O(s)?(N(),we(_,{key:0})):Ae("v-if",!0),Re(P.$slots,"after")],16,Cp))}}}),kt=Te(Pp,[["__file","AutoLink.vue"]]),Lp={class:"hero"},Tp={key:0,id:"main-title"},Ap={key:1,class:"description"},Ip={key:2,class:"actions"},wp=ue({__name:"HomeHero",setup(e){const t=vt(),l=jo(),i=Mo(),o=Y(()=>i.value&&t.value.heroImageDark!==void 0?t.value.heroImageDark:t.value.heroImage),n=Y(()=>t.value.heroText===null?null:t.value.heroText||l.value.title||"Hello"),a=Y(()=>t.value.heroAlt||n.value||"hero"),r=Y(()=>t.value.tagline===null?null:t.value.tagline||l.value.description||"Welcome to your VuePress site"),s=Y(()=>te(t.value.actions)?t.value.actions.map(({text:h,link:p,type:m="primary"})=>({text:h,link:p,type:m})):[]),c=()=>{if(!o.value)return null;const h=he("img",{src:Yo(o.value),alt:a.value});return t.value.heroImageDark===void 0?h:he($o,()=>h)};return(h,p)=>(N(),Z("header",Lp,[oe(c),O(n)?(N(),Z("h1",Tp,ze(O(n)),1)):Ae("v-if",!0),O(r)?(N(),Z("p",Ap,ze(O(r)),1)):Ae("v-if",!0),O(s).length?(N(),Z("p",Ip,[(N(!0),Z(Pe,null,zt(O(s),m=>(N(),we(kt,{key:m.text,class:Ke(["action-button",[m.type]]),item:m},null,8,["class","item"]))),128))])):Ae("v-if",!0)]))}}),Op=Te(wp,[["__file","HomeHero.vue"]]),Fp={class:"home"},zp=ue({__name:"Home",setup(e){return(t,l)=>(N(),Z("main",Fp,[oe(Op),oe(bp),oe(gp),oe(Ep)]))}}),Dp=Te(zp,[["__file","Home.vue"]]),Mp=ue({__name:"NavbarBrand",setup(e){const t=Wl(),l=jo(),i=$e(),o=Mo(),n=Y(()=>i.value.home||t.value),a=Y(()=>l.value.title),r=Y(()=>o.value&&i.value.logoDark!==void 0?i.value.logoDark:i.value.logo),s=()=>{if(!r.value)return null;const c=he("img",{class:"logo",src:Yo(r.value),alt:a.value});return i.value.logoDark===void 0?c:he($o,()=>c)};return(c,h)=>{const p=_t("RouterLink");return N(),we(p,{to:O(n)},{default:He(()=>[oe(s),O(a)?(N(),Z("span",{key:0,class:Ke(["site-name",{"can-hide":O(r)}])},ze(O(a)),3)):Ae("v-if",!0)]),_:1},8,["to"])}}}),Hp=Te(Mp,[["__file","NavbarBrand.vue"]]),Sp=ue({__name:"DropdownTransition",setup(e){const t=i=>{i.style.height=i.scrollHeight+"px"},l=i=>{i.style.height=""};return(i,o)=>(N(),we(Bl,{name:"dropdown",onEnter:t,onAfterEnter:l,onBeforeLeave:t},{default:He(()=>[Re(i.$slots,"default")]),_:3}))}}),Nr=Te(Sp,[["__file","DropdownTransition.vue"]]),Vp=["aria-label"],Np={class:"title"},jp=fe("span",{class:"arrow down"},null,-1),$p=["aria-label"],Yp={class:"title"},Bp={class:"navbar-dropdown"},Up={class:"navbar-dropdown-subtitle"},Wp={key:1},Xp={class:"navbar-dropdown-subitem-wrapper"},qp=ue({__name:"NavbarDropdown",props:{item:{type:Object,required:!0}},setup(e){const t=e,{item:l}=Ei(t),i=Y(()=>l.value.ariaLabel||l.value.text),o=ye(!1),n=St();dt(()=>n.path,()=>{o.value=!1});const a=s=>{s.detail===0?o.value=!o.value:o.value=!1},r=(s,c)=>c[c.length-1]===s;return(s,c)=>(N(),Z("div",{class:Ke(["navbar-dropdown-wrapper",{open:o.value}])},[fe("button",{class:"navbar-dropdown-title",type:"button","aria-label":O(i),onClick:a},[fe("span",Np,ze(O(l).text),1),jp],8,Vp),fe("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":O(i),onClick:c[0]||(c[0]=h=>o.value=!o.value)},[fe("span",Yp,ze(O(l).text),1),fe("span",{class:Ke(["arrow",o.value?"down":"right"])},null,2)],8,$p),oe(Nr,null,{default:He(()=>[ci(fe("ul",Bp,[(N(!0),Z(Pe,null,zt(O(l).children,h=>(N(),Z("li",{key:h.text,class:"navbar-dropdown-item"},[h.children?(N(),Z(Pe,{key:0},[fe("h4",Up,[h.link?(N(),we(kt,{key:0,item:h,onFocusout:p=>r(h,O(l).children)&&h.children.length===0&&(o.value=!1)},null,8,["item","onFocusout"])):(N(),Z("span",Wp,ze(h.text),1))]),fe("ul",Xp,[(N(!0),Z(Pe,null,zt(h.children,p=>(N(),Z("li",{key:p.link,class:"navbar-dropdown-subitem"},[oe(kt,{item:p,onFocusout:m=>r(p,h.children)&&r(h,O(l).children)&&(o.value=!1)},null,8,["item","onFocusout"])]))),128))])],64)):(N(),we(kt,{key:1,item:h,onFocusout:p=>r(h,O(l).children)&&(o.value=!1)},null,8,["item","onFocusout"]))]))),128))],512),[[mi,o.value]])]),_:1})],2))}}),Kp=Te(qp,[["__file","NavbarDropdown.vue"]]),aa=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),Gp=(e,t)=>{if(t.hash===e)return!0;const l=aa(t.path),i=aa(e);return l===i},jr=(e,t)=>e.link&&Gp(e.link,t)?!0:e.children?e.children.some(l=>jr(l,t)):!1,$r=e=>!Ul(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Qp={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},Jp=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const l=$r(e);return l!==null?Qp[l]:null},Zp=({docsRepo:e,docsBranch:t,docsDir:l,filePathRelative:i,editLinkPattern:o})=>{if(!i)return null;const n=Jp({docsRepo:e,editLinkPattern:o});return n?n.replace(/:repo/,Ul(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,ur(`${dr(l)}/${i}`)):null},em={key:0,class:"navbar-items"},tm=ue({__name:"NavbarItems",setup(e){const t=()=>{const c=Zt(),h=Wl(),p=jo(),m=$e();return Y(()=>{var _,L,H;const g=Object.keys(p.value.locales);if(g.length<2)return[];const x=c.currentRoute.value.path,P=c.currentRoute.value.fullPath,E=c.currentRoute.value.hash;return[{text:(_=m.value.selectLanguageText)!=null?_:"unknown language",ariaLabel:(H=(L=m.value.selectLanguageAriaLabel)!=null?L:m.value.selectLanguageText)!=null?H:"unknown language",children:g.map(U=>{var G,C,S,F,re,j;const ee=(C=(G=p.value.locales)==null?void 0:G[U])!=null?C:{},w=(F=(S=m.value.locales)==null?void 0:S[U])!=null?F:{},v=`${ee.lang}`,q=(re=w.selectLanguageName)!=null?re:v;let B;if(v===p.value.lang)B=P;else{const le=x.replace(h.value,U);c.getRoutes().some(se=>se.path===le)?B=`${le}${E}`:B=(j=w.home)!=null?j:U}return{text:q,link:B}})}]})},l=()=>{const c=$e(),h=Y(()=>c.value.repo),p=Y(()=>h.value?$r(h.value):null),m=Y(()=>h.value&&!Ul(h.value)?`https://github.com/${h.value}`:h.value),g=Y(()=>m.value?c.value.repoLabel?c.value.repoLabel:p.value===null?"Source":p.value:null);return Y(()=>!m.value||!g.value?[]:[{text:g.value,link:m.value}])},i=c=>be(c)?Ho(c):c.children?{...c,children:c.children.map(i)}:c,n=(()=>{const c=$e();return Y(()=>(c.value.navbar||[]).map(i))})(),a=t(),r=l(),s=Y(()=>[...n.value,...a.value,...r.value]);return(c,h)=>O(s).length?(N(),Z("nav",em,[(N(!0),Z(Pe,null,zt(O(s),p=>(N(),Z("div",{key:p.text,class:"navbar-item"},[p.children?(N(),we(Kp,{key:0,item:p},null,8,["item"])):(N(),we(kt,{key:1,item:p},null,8,["item"]))]))),128))])):Ae("v-if",!0)}}),Yr=Te(tm,[["__file","NavbarItems.vue"]]),lm=["title"],im={class:"icon",focusable:"false",viewBox:"0 0 32 32"},om=jc('',9),nm=[om],am={class:"icon",focusable:"false",viewBox:"0 0 32 32"},rm=fe("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1),sm=[rm],cm=ue({__name:"ToggleColorModeButton",setup(e){const t=$e(),l=Mo(),i=()=>{l.value=!l.value};return(o,n)=>(N(),Z("button",{class:"toggle-color-mode-button",title:O(t).toggleColorMode,onClick:i},[ci((N(),Z("svg",im,nm,512)),[[mi,!O(l)]]),ci((N(),Z("svg",am,sm,512)),[[mi,O(l)]])],8,lm))}}),hm=Te(cm,[["__file","ToggleColorModeButton.vue"]]),dm=["title"],um=fe("div",{class:"icon","aria-hidden":"true"},[fe("span"),fe("span"),fe("span")],-1),pm=[um],mm=ue({__name:"ToggleSidebarButton",emits:["toggle"],setup(e){const t=$e();return(l,i)=>(N(),Z("div",{class:"toggle-sidebar-button",title:O(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:i[0]||(i[0]=o=>l.$emit("toggle"))},pm,8,dm))}}),fm=Te(mm,[["__file","ToggleSidebarButton.vue"]]),gm=ue({__name:"Navbar",emits:["toggle-sidebar"],setup(e){const t=$e(),l=ye(null),i=ye(null),o=ye(0),n=Y(()=>o.value?{maxWidth:o.value+"px"}:{});Je(()=>{const s=a(l.value,"paddingLeft")+a(l.value,"paddingRight"),c=()=>{var h;window.innerWidth<=719?o.value=0:o.value=l.value.offsetWidth-s-(((h=i.value)==null?void 0:h.offsetWidth)||0)};c(),window.addEventListener("resize",c,!1),window.addEventListener("orientationchange",c,!1)});function a(r,s){var p,m,g;const c=(g=(m=(p=r==null?void 0:r.ownerDocument)==null?void 0:p.defaultView)==null?void 0:m.getComputedStyle(r,null))==null?void 0:g[s],h=Number.parseInt(c,10);return Number.isNaN(h)?0:h}return(r,s)=>{const c=_t("NavbarSearch");return N(),Z("header",{ref_key:"navbar",ref:l,class:"navbar"},[oe(fm,{onToggle:s[0]||(s[0]=h=>r.$emit("toggle-sidebar"))}),fe("span",{ref_key:"navbarBrand",ref:i},[oe(Hp)],512),fe("div",{class:"navbar-items-wrapper",style:Sl(O(n))},[Re(r.$slots,"before"),oe(Yr,{class:"can-hide"}),Re(r.$slots,"after"),O(t).colorModeSwitch?(N(),we(hm,{key:0})):Ae("v-if",!0),oe(c)],4)],512)}}}),km=Te(gm,[["__file","Navbar.vue"]]),vm={class:"page-meta"},bm={key:0,class:"meta-item edit-link"},_m={key:1,class:"meta-item last-updated"},ym={class:"meta-item-label"},xm={class:"meta-item-info"},Em={key:2,class:"meta-item contributors"},Cm={class:"meta-item-label"},Rm={class:"meta-item-info"},Pm=["title"],Lm=Mt(", "),Tm=ue({__name:"PageMeta",setup(e){const t=()=>{const s=$e(),c=Ot(),h=vt();return Y(()=>{var _,L,H;if(!((L=(_=h.value.editLink)!=null?_:s.value.editLink)!=null?L:!0))return null;const{repo:m,docsRepo:g=m,docsBranch:x="main",docsDir:P="",editLinkText:E}=s.value;if(!g)return null;const k=Zp({docsRepo:g,docsBranch:x,docsDir:P,filePathRelative:c.value.filePathRelative,editLinkPattern:(H=h.value.editLinkPattern)!=null?H:s.value.editLinkPattern});return k?{text:E!=null?E:"Edit this page",link:k}:null})},l=()=>{const s=$e(),c=Ot(),h=vt();return Y(()=>{var g,x,P,E;return!((x=(g=h.value.lastUpdated)!=null?g:s.value.lastUpdated)!=null?x:!0)||!((P=c.value.git)!=null&&P.updatedTime)?null:new Date((E=c.value.git)==null?void 0:E.updatedTime).toLocaleString()})},i=()=>{const s=$e(),c=Ot(),h=vt();return Y(()=>{var m,g,x,P;return((g=(m=h.value.contributors)!=null?m:s.value.contributors)!=null?g:!0)&&(P=(x=c.value.git)==null?void 0:x.contributors)!=null?P:null})},o=$e(),n=t(),a=l(),r=i();return(s,c)=>{const h=_t("ClientOnly");return N(),Z("footer",vm,[O(n)?(N(),Z("div",bm,[oe(kt,{class:"meta-item-label",item:O(n)},null,8,["item"])])):Ae("v-if",!0),O(a)?(N(),Z("div",_m,[fe("span",ym,ze(O(o).lastUpdatedText)+": ",1),oe(h,null,{default:He(()=>[fe("span",xm,ze(O(a)),1)]),_:1})])):Ae("v-if",!0),O(r)&&O(r).length?(N(),Z("div",Em,[fe("span",Cm,ze(O(o).contributorsText)+": ",1),fe("span",Rm,[(N(!0),Z(Pe,null,zt(O(r),(p,m)=>(N(),Z(Pe,{key:m},[fe("span",{class:"contributor",title:`email: ${p.email}`},ze(p.name),9,Pm),m!==O(r).length-1?(N(),Z(Pe,{key:0},[Lm],64)):Ae("v-if",!0)],64))),128))])])):Ae("v-if",!0)])}}}),Am=Te(Tm,[["__file","PageMeta.vue"]]),Im={key:0,class:"page-nav"},wm={class:"inner"},Om={key:0,class:"prev"},Fm={key:1,class:"next"},zm=ue({__name:"PageNav",setup(e){const t=s=>s===!1?null:be(s)?Ho(s):Oo(s)?s:!1,l=(s,c,h)=>{const p=s.findIndex(m=>m.link===c);if(p!==-1){const m=s[p+h];return m!=null&&m.link?m:null}for(const m of s)if(m.children){const g=l(m.children,c,h);if(g)return g}return null},i=vt(),o=So(),n=St(),a=Y(()=>{const s=t(i.value.prev);return s!==!1?s:l(o.value,n.path,-1)}),r=Y(()=>{const s=t(i.value.next);return s!==!1?s:l(o.value,n.path,1)});return(s,c)=>O(a)||O(r)?(N(),Z("nav",Im,[fe("p",wm,[O(a)?(N(),Z("span",Om,[oe(kt,{item:O(a)},null,8,["item"])])):Ae("v-if",!0),O(r)?(N(),Z("span",Fm,[oe(kt,{item:O(r)},null,8,["item"])])):Ae("v-if",!0)])])):Ae("v-if",!0)}}),Dm=Te(zm,[["__file","PageNav.vue"]]),Mm={class:"page"},Hm={class:"theme-default-content"},Sm=ue({__name:"Page",setup(e){return(t,l)=>{const i=_t("Content");return N(),Z("main",Mm,[Re(t.$slots,"top"),fe("div",Hm,[Re(t.$slots,"content-top"),oe(i),Re(t.$slots,"content-bottom")]),oe(Am),oe(Dm),Re(t.$slots,"bottom")])}}}),Vm=Te(Sm,[["__file","Page.vue"]]),Nm=["onKeydown"],jm={class:"sidebar-item-children"},$m=ue({__name:"SidebarItem",props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(e){const t=e,{item:l,depth:i}=Ei(t),o=St(),n=Zt(),a=Y(()=>jr(l.value,o)),r=Y(()=>({"sidebar-item":!0,"sidebar-heading":i.value===0,active:a.value,collapsible:l.value.collapsible})),s=Y(()=>l.value.collapsible?a.value:!0),[c,h]=Au(s.value),p=g=>{l.value.collapsible&&(g.preventDefault(),h())},m=n.afterEach(g=>{jl(()=>{c.value=s.value})});return Yl(()=>{m()}),(g,x)=>{var E;const P=_t("SidebarItem",!0);return N(),Z("li",null,[O(l).link?(N(),we(kt,{key:0,class:Ke(O(r)),item:O(l)},null,8,["class","item"])):(N(),Z("p",{key:1,tabindex:"0",class:Ke(O(r)),onClick:p,onKeydown:Eh(p,["enter"])},[Mt(ze(O(l).text)+" ",1),O(l).collapsible?(N(),Z("span",{key:0,class:Ke(["arrow",O(c)?"down":"right"])},null,2)):Ae("v-if",!0)],42,Nm)),(E=O(l).children)!=null&&E.length?(N(),we(Nr,{key:2},{default:He(()=>[ci(fe("ul",jm,[(N(!0),Z(Pe,null,zt(O(l).children,k=>(N(),we(P,{key:`${O(i)}${k.text}${k.link}`,item:k,depth:O(i)+1},null,8,["item","depth"]))),128))],512),[[mi,O(c)]])]),_:1})):Ae("v-if",!0)])}}}),Ym=Te($m,[["__file","SidebarItem.vue"]]),Bm={key:0,class:"sidebar-items"},Um=ue({__name:"SidebarItems",setup(e){const t=St(),l=So();return Je(()=>{dt(()=>t.hash,i=>{const o=document.querySelector(".sidebar");if(!o)return;const n=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${i}"]`);if(!n)return;const{top:a,height:r}=o.getBoundingClientRect(),{top:s,height:c}=n.getBoundingClientRect();sa+r&&n.scrollIntoView(!1)})}),(i,o)=>O(l).length?(N(),Z("ul",Bm,[(N(!0),Z(Pe,null,zt(O(l),n=>(N(),we(Ym,{key:`${n.text}${n.link}`,item:n},null,8,["item"]))),128))])):Ae("v-if",!0)}}),Wm=Te(Um,[["__file","SidebarItems.vue"]]),Xm={class:"sidebar"},qm=ue({__name:"Sidebar",setup(e){return(t,l)=>(N(),Z("aside",Xm,[oe(Yr),Re(t.$slots,"top"),oe(Wm),Re(t.$slots,"bottom")]))}}),Km=Te(qm,[["__file","Sidebar.vue"]]),Gm=ue({__name:"Layout",setup(e){const t=Ot(),l=vt(),i=$e(),o=Y(()=>l.value.navbar!==!1&&i.value.navbar!==!1),n=So(),a=ye(!1),r=E=>{a.value=typeof E=="boolean"?E:!a.value},s={x:0,y:0},c=E=>{s.x=E.changedTouches[0].clientX,s.y=E.changedTouches[0].clientY},h=E=>{const k=E.changedTouches[0].clientX-s.x,_=E.changedTouches[0].clientY-s.y;Math.abs(k)>Math.abs(_)&&Math.abs(k)>40&&(k>0&&s.x<=80?r(!0):r(!1))},p=Y(()=>[{"no-navbar":!o.value,"no-sidebar":!n.value.length,"sidebar-open":a.value},l.value.pageClass]);let m;Je(()=>{m=Zt().afterEach(()=>{r(!1)})}),Li(()=>{m()});const g=Hr(),x=g.resolve,P=g.pending;return(E,k)=>(N(),Z("div",{class:Ke(["theme-container",O(p)]),onTouchstart:c,onTouchend:h},[Re(E.$slots,"navbar",{},()=>[O(o)?(N(),we(km,{key:0,onToggleSidebar:r},{before:He(()=>[Re(E.$slots,"navbar-before")]),after:He(()=>[Re(E.$slots,"navbar-after")]),_:3})):Ae("v-if",!0)]),fe("div",{class:"sidebar-mask",onClick:k[0]||(k[0]=_=>r(!1))}),Re(E.$slots,"sidebar",{},()=>[oe(Km,null,{top:He(()=>[Re(E.$slots,"sidebar-top")]),bottom:He(()=>[Re(E.$slots,"sidebar-bottom")]),_:3})]),Re(E.$slots,"page",{},()=>[O(l).home?(N(),we(Dp,{key:0})):(N(),we(Bl,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:O(x),onBeforeLeave:O(P)},{default:He(()=>[(N(),we(Vm,{key:O(t).path},{top:He(()=>[Re(E.$slots,"page-top")]),"content-top":He(()=>[Re(E.$slots,"page-content-top")]),"content-bottom":He(()=>[Re(E.$slots,"page-content-bottom")]),bottom:He(()=>[Re(E.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34))}}),Qm=Te(Gm,[["__file","Layout.vue"]]),Jm={class:"theme-container"},Zm={class:"page"},ef={class:"theme-default-content"},tf=fe("h1",null,"404",-1),lf=ue({__name:"NotFound",setup(e){var r,s,c;const t=Wl(),l=$e(),i=(r=l.value.notFound)!=null?r:["Not Found"],o=()=>i[Math.floor(Math.random()*i.length)],n=(s=l.value.home)!=null?s:t.value,a=(c=l.value.backToHome)!=null?c:"Back to home";return(h,p)=>{const m=_t("RouterLink");return N(),Z("div",Jm,[fe("main",Zm,[fe("div",ef,[tf,fe("blockquote",null,ze(o()),1),oe(m,{to:O(n)},{default:He(()=>[Mt(ze(O(a)),1)]),_:1},8,["to"])])])])}}}),of=Te(lf,[["__file","NotFound.vue"]]);const nf=Ht({enhance({app:e,router:t}){e.component("Badge",gu),e.component("CodeGroup",ku),e.component("CodeGroupItem",yu),e.component("AutoLinkExternalIcon",()=>{const i=e.component("ExternalLinkIcon");return i?he(i):null}),e.component("NavbarSearch",()=>{const i=e.component("Docsearch")||e.component("SearchBox");return i?he(i):null});const l=t.options.scrollBehavior;t.options.scrollBehavior=async(...i)=>(await Hr().wait(),l(...i))},setup(){np(),sp()},layouts:{Layout:Qm,NotFound:of}}),af=(e,t)=>t.some(l=>{if(be(l))return l===e.key;const{key:i,ctrl:o=!1,shift:n=!1,alt:a=!1}=l;return i===e.key&&o===e.ctrlKey&&n===e.shiftKey&&a===e.altKey}),rf=/[^\x00-\x7F]/,sf=e=>e.split(/\s+/g).map(t=>t.trim()).filter(t=>!!t),ra=e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),sa=(e,t)=>{const l=t.join(" "),i=sf(e);if(rf.test(e))return i.some(a=>l.toLowerCase().indexOf(a)>-1);const o=e.endsWith(" ");return new RegExp(i.map((a,r)=>i.length===r+1&&!o?`(?=.*\\b${ra(a)})`:`(?=.*\\b${ra(a)}\\b)`).join("")+".+","gi").test(l)},cf=({input:e,hotKeys:t})=>{if(t.value.length===0)return;const l=i=>{!e.value||af(i,t.value)&&!e.value.contains(i.target)&&(i.preventDefault(),e.value.focus())};Je(()=>{document.addEventListener("keydown",l)}),Yl(()=>{document.removeEventListener("keydown",l)})},hf=[{title:"Home",headers:[{level:3,title:"All Hook process in one step, everything is simplified",slug:"all-hook-process-in-one-step-everything-is-simplified",link:"#all-hook-process-in-one-step-everything-is-simplified",children:[]}],path:"/en/",pathLocale:"/en/",extraFields:[]},{title:"\u9996\u9875",headers:[{level:3,title:"\u6240\u6709 Hook \u6D41\u7A0B\u4E00\u6B65\u5230\u4F4D\uFF0C\u62D2\u7EDD\u7E41\u7410",slug:"\u6240\u6709-hook-\u6D41\u7A0B\u4E00\u6B65\u5230\u4F4D-\u62D2\u7EDD\u7E41\u7410",link:"#\u6240\u6709-hook-\u6D41\u7A0B\u4E00\u6B65\u5230\u4F4D-\u62D2\u7EDD\u7E41\u7410",children:[]}],path:"/zh-cn/",pathLocale:"/zh-cn/",extraFields:[]},{title:"About this Document",headers:[{level:2,title:"License",slug:"license",link:"#license",children:[]}],path:"/en/about/about.html",pathLocale:"/en/",extraFields:[]},{title:"Changelog",headers:[{level:3,title:"1.1.8 | 2023.02.01",slug:"_1-1-8-2023-02-01",link:"#_1-1-8-2023-02-01",children:[]},{level:3,title:"1.1.6 | 2023.01.21",slug:"_1-1-6-2023-01-21",link:"#_1-1-6-2023-01-21",children:[]},{level:3,title:"1.1.5 | 2023.01.13",slug:"_1-1-5-2023-01-13",link:"#_1-1-5-2023-01-13",children:[]},{level:3,title:"1.1.4 | 2022.10.04",slug:"_1-1-4-2022-10-04",link:"#_1-1-4-2022-10-04",children:[]},{level:3,title:"1.1.3 | 2022.09.30",slug:"_1-1-3-2022-09-30",link:"#_1-1-3-2022-09-30",children:[]},{level:3,title:"1.1.2 | 2022.09.30",slug:"_1-1-2-2022-09-30",link:"#_1-1-2-2022-09-30",children:[]},{level:3,title:"1.1.1 | 2022.09.28",slug:"_1-1-1-2022-09-28",link:"#_1-1-1-2022-09-28",children:[]},{level:3,title:"1.1.0 | 2022.09.28",slug:"_1-1-0-2022-09-28",link:"#_1-1-0-2022-09-28",children:[]},{level:3,title:"1.0.92 | 2022.05.31",slug:"_1-0-92-2022-05-31",link:"#_1-0-92-2022-05-31",children:[]},{level:3,title:"1.0.91 | 2022.05.29",slug:"_1-0-91-2022-05-29",link:"#_1-0-91-2022-05-29",children:[]},{level:3,title:"1.0.90 | 2022.05.27",slug:"_1-0-90-2022-05-27",link:"#_1-0-90-2022-05-27",children:[]},{level:3,title:"1.0.89 | 2022.05.26",slug:"_1-0-89-2022-05-26",link:"#_1-0-89-2022-05-26",children:[]},{level:3,title:"1.0.88 | 2022.05.25",slug:"_1-0-88-2022-05-25",link:"#_1-0-88-2022-05-25",children:[]},{level:3,title:"1.0.87 | 2022.05.10",slug:"_1-0-87-2022-05-10",link:"#_1-0-87-2022-05-10",children:[]},{level:3,title:"1.0.86 | 2022.05.06",slug:"_1-0-86-2022-05-06",link:"#_1-0-86-2022-05-06",children:[]},{level:3,title:"1.0.85 | 2022.05.04",slug:"_1-0-85-2022-05-04",link:"#_1-0-85-2022-05-04",children:[]},{level:3,title:"1.0.83 | 2022.05.04",slug:"_1-0-83-2022-05-04",link:"#_1-0-83-2022-05-04",children:[]},{level:3,title:"1.0.82 | 2022.05.04",slug:"_1-0-82-2022-05-04",link:"#_1-0-82-2022-05-04",children:[]},{level:3,title:"1.0.81 | 2022.05.04",slug:"_1-0-81-2022-05-04",link:"#_1-0-81-2022-05-04",children:[]},{level:3,title:"1.0.80 | 2022.05.01",slug:"_1-0-80-2022-05-01",link:"#_1-0-80-2022-05-01",children:[]},{level:3,title:"1.0.78 | 2022.04.18",slug:"_1-0-78-2022-04-18",link:"#_1-0-78-2022-04-18",children:[]},{level:3,title:"1.0.77 | 2022.04.15",slug:"_1-0-77-2022-04-15",link:"#_1-0-77-2022-04-15",children:[]},{level:3,title:"1.0.75 | 2022.04.13",slug:"_1-0-75-2022-04-13",link:"#_1-0-75-2022-04-13",children:[]},{level:3,title:"1.0.73 | 2022.04.10",slug:"_1-0-73-2022-04-10",link:"#_1-0-73-2022-04-10",children:[]},{level:3,title:"1.0.72 | 2022.04.09",slug:"_1-0-72-2022-04-09",link:"#_1-0-72-2022-04-09",children:[]},{level:3,title:"1.0.71 | 2022.04.04",slug:"_1-0-71-2022-04-04",link:"#_1-0-71-2022-04-04",children:[]},{level:3,title:"1.0.70 | 2022.04.04",slug:"_1-0-70-2022-04-04",link:"#_1-0-70-2022-04-04",children:[]},{level:3,title:"1.0.69 | 2022.03.30",slug:"_1-0-69-2022-03-30",link:"#_1-0-69-2022-03-30",children:[]},{level:3,title:"1.0.68 | 2022.03.29",slug:"_1-0-68-2022-03-29",link:"#_1-0-68-2022-03-29",children:[]},{level:3,title:"1.0.67 | 2022.03.27",slug:"_1-0-67-2022-03-27",link:"#_1-0-67-2022-03-27",children:[]},{level:3,title:"1.0.66 | 2022.03.25",slug:"_1-0-66-2022-03-25",link:"#_1-0-66-2022-03-25",children:[]},{level:3,title:"1.0.65 | 2022.03.25",slug:"_1-0-65-2022-03-25",link:"#_1-0-65-2022-03-25",children:[]},{level:3,title:"1.0.6 | 2022.03.20",slug:"_1-0-6-2022-03-20",link:"#_1-0-6-2022-03-20",children:[]},{level:3,title:"1.0.55 | 2022.03.18",slug:"_1-0-55-2022-03-18",link:"#_1-0-55-2022-03-18",children:[]},{level:3,title:"1.0.5 | 2022.03.18",slug:"_1-0-5-2022-03-18",link:"#_1-0-5-2022-03-18",children:[]},{level:3,title:"1.0.4 | 2022.03.06",slug:"_1-0-4-2022-03-06",link:"#_1-0-4-2022-03-06",children:[]},{level:3,title:"1.0.3 | 2022.03.02",slug:"_1-0-3-2022-03-02",link:"#_1-0-3-2022-03-02",children:[]},{level:3,title:"1.0.2 | 2022.02.18",slug:"_1-0-2-2022-02-18",link:"#_1-0-2-2022-02-18",children:[]},{level:3,title:"1.0.1 | 2022.02.15",slug:"_1-0-1-2022-02-15",link:"#_1-0-1-2022-02-15",children:[]},{level:3,title:"1.0 | 2022.02.14",slug:"_1-0-2022-02-14",link:"#_1-0-2022-02-14",children:[]}],path:"/en/about/changelog.html",pathLocale:"/en/",extraFields:[]},{title:"Contact Us",headers:[{level:2,title:"Help with Maintenance",slug:"help-with-maintenance",link:"#help-with-maintenance",children:[]}],path:"/en/about/contacts.html",pathLocale:"/en/",extraFields:[]},{title:"Looking for Future",headers:[{level:2,title:"Unresolved Issues",slug:"unresolved-issues",link:"#unresolved-issues",children:[{level:3,title:"YukiHookModulePrefs",slug:"yukihookmoduleprefs",link:"#yukihookmoduleprefs",children:[]}]},{level:2,title:"Future Plans",slug:"future-plans",link:"#future-plans",children:[{level:3,title:"Lite Version Supported for Standalone Use",slug:"lite-version-supported-for-standalone-use",link:"#lite-version-supported-for-standalone-use",children:[]},{level:3,title:"Support for More Hook Framework",slug:"support-for-more-hook-framework",link:"#support-for-more-hook-framework",children:[]}]}],path:"/en/about/future.html",pathLocale:"/en/",extraFields:[]},{title:"Document Introduce",headers:[{level:2,title:"Function Description",slug:"function-description",link:"#function-description",children:[]},{level:2,title:"Function Example Description",slug:"function-example-description",link:"#function-example-description",children:[]},{level:2,title:"Change Record Description",slug:"change-record-description",link:"#change-record-description",children:[]},{level:2,title:"Related Symbols Description",slug:"related-symbols-description",link:"#related-symbols-description",children:[]}],path:"/en/api/home.html",pathLocale:"/en/",extraFields:[]},{title:"API Basic Configs",headers:[{level:2,title:"Function Configs",slug:"function-configs",link:"#function-configs",children:[{level:3,title:"configs Method",slug:"configs-method",link:"#configs-method",children:[]}]},{level:2,title:"Hooker Configs",slug:"hooker-configs",link:"#hooker-configs",children:[{level:3,title:"Created by lambda",slug:"created-by-lambda",link:"#created-by-lambda",children:[]},{level:3,title:"Created by Custom Hooker",slug:"created-by-custom-hooker",link:"#created-by-custom-hooker",children:[]},{level:3,title:"Expansion Features",slug:"expansion-features",link:"#expansion-features",children:[]},{level:3,title:"Precautions",slug:"precautions",link:"#precautions",children:[]}]},{level:2,title:"Precautions when using as Hook API",slug:"precautions-when-using-as-hook-api",link:"#precautions-when-using-as-hook-api",children:[]}],path:"/en/config/api-example.html",pathLocale:"/en/",extraFields:[]},{title:"API Exception Handling",headers:[{level:2,title:"Non-Blocking Exceptions",slug:"non-blocking-exceptions",link:"#non-blocking-exceptions",children:[]},{level:2,title:"Blocking Exceptions",slug:"blocking-exceptions",link:"#blocking-exceptions",children:[]}],path:"/en/config/api-exception.html",pathLocale:"/en/",extraFields:[]},{title:"Use as Hook API Configs",headers:[{level:2,title:"Dependency Configs",slug:"dependency-configs",link:"#dependency-configs",children:[]},{level:2,title:"Entry Configs",slug:"entry-configs",link:"#entry-configs",children:[]},{level:2,title:"Hook Framework",slug:"hook-framework",link:"#hook-framework",children:[{level:3,title:"Pine",slug:"pine",link:"#pine",children:[]},{level:3,title:"SandHook",slug:"sandhook",link:"#sandhook",children:[]},{level:3,title:"Whale",slug:"whale",link:"#whale",children:[]}]}],path:"/en/config/api-using.html",pathLocale:"/en/",extraFields:[]},{title:"R8 & Proguard Obfuscate",headers:[{level:2,title:"R8",slug:"r8",link:"#r8",children:[]},{level:2,title:"Proguard",slug:"proguard",link:"#proguard",children:[]}],path:"/en/config/r8-proguard.html",pathLocale:"/en/",extraFields:[]},{title:"Use as Xposed Module Configs",headers:[{level:2,title:"Dependency Configs",slug:"dependency-configs",link:"#dependency-configs",children:[]},{level:2,title:"Custom Automatic Builder",slug:"custom-automatic-builder",link:"#custom-automatic-builder",children:[{level:3,title:"InjectYukiHookWithXposed Annotation",slug:"injectyukihookwithxposed-annotation",link:"#injectyukihookwithxposed-annotation",children:[]},{level:3,title:"IYukiHookXposedInit Interface",slug:"iyukihookxposedinit-interface",link:"#iyukihookxposedinit-interface",children:[]}]},{level:2,title:"Native Xposed API Events",slug:"native-xposed-api-events",link:"#native-xposed-api-events",children:[]}],path:"/en/config/xposed-using.html",pathLocale:"/en/",extraFields:[]},{title:"Usage Example",headers:[{level:2,title:"Structure Diagram",slug:"structure-diagram",link:"#structure-diagram",children:[]},{level:2,title:"Demo",slug:"demo",link:"#demo",children:[]},{level:2,title:"A Simple Hook Example",slug:"a-simple-hook-example",link:"#a-simple-hook-example",children:[{level:3,title:"Hook App",slug:"hook-app",link:"#hook-app",children:[]},{level:3,title:"Hook Zygote",slug:"hook-zygote",link:"#hook-zygote",children:[]},{level:3,title:"Hook System Framework",slug:"hook-system-framework",link:"#hook-system-framework",children:[]},{level:3,title:"Hook Resources",slug:"hook-resources",link:"#hook-resources",children:[]},{level:3,title:"Remove Hook",slug:"remove-hook",link:"#remove-hook",children:[]}]},{level:2,title:"Exception Handling",slug:"exception-handling",link:"#exception-handling",children:[{level:3,title:"Listen for Exceptions",slug:"listen-for-exceptions",link:"#listen-for-exceptions",children:[]},{level:3,title:"Throw an Exception",slug:"throw-an-exception",link:"#throw-an-exception",children:[]}]},{level:2,title:"Status Monitor",slug:"status-monitor",link:"#status-monitor",children:[]},{level:2,title:"Expansion Usage",slug:"expansion-usage",link:"#expansion-usage",children:[{level:3,title:"Multiple Hosts",slug:"multiple-hosts",link:"#multiple-hosts",children:[]},{level:3,title:"Multiple Processes",slug:"multiple-processes",link:"#multiple-processes",children:[]}]},{level:2,title:"Writing Optimization",slug:"writing-optimization",link:"#writing-optimization",children:[]},{level:2,title:"Xposed Module own Active State",slug:"xposed-module-own-active-state",link:"#xposed-module-own-active-state",children:[]}],path:"/en/guide/example.html",pathLocale:"/en/",extraFields:[]},{title:"Introduce",headers:[{level:2,title:"Background",slug:"background",link:"#background",children:[]},{level:2,title:"Usage",slug:"usage",link:"#usage",children:[]},{level:2,title:"Language Requirement",slug:"language-requirement",link:"#language-requirement",children:[]},{level:2,title:"Source of Inspiration",slug:"source-of-inspiration",link:"#source-of-inspiration",children:[]},{level:2,title:"Suppored Hook Framework",slug:"suppored-hook-framework",link:"#suppored-hook-framework",children:[]}],path:"/en/guide/home.html",pathLocale:"/en/",extraFields:[]},{title:"Basic Knowledge",headers:[{level:2,title:"Related Introduction",slug:"related-introduction",link:"#related-introduction",children:[{level:3,title:"What is Xposed",slug:"what-is-xposed",link:"#what-is-xposed",children:[]},{level:3,title:"What can Xposed do",slug:"what-can-xposed-do",link:"#what-can-xposed-do",children:[]},{level:3,title:"Development Process",slug:"development-process",link:"#development-process",children:[]},{level:3,title:"Derivatives",slug:"derivatives",link:"#derivatives",children:[]},{level:3,title:"What YukiHookAPI does",slug:"what-yukihookapi-does",link:"#what-yukihookapi-does",children:[]}]},{level:2,title:"Let's Started",slug:"let-s-started",link:"#let-s-started",children:[]}],path:"/en/guide/knowledge.html",pathLocale:"/en/",extraFields:[]},{title:"Migrate from Xposed API",headers:[{level:2,title:"Migrate Hook Entry Point",slug:"migrate-hook-entry-point",link:"#migrate-hook-entry-point",children:[]},{level:2,title:"Migrate Hook Method Body",slug:"migrate-hook-method-body",link:"#migrate-hook-method-body",children:[{level:3,title:"Before/After Hook",slug:"before-after-hook",link:"#before-after-hook",children:[]},{level:3,title:"Replace Hook",slug:"replace-hook",link:"#replace-hook",children:[]}]},{level:2,title:"Migrate Other Features",slug:"migrate-other-features",link:"#migrate-other-features",children:[]}],path:"/en/guide/move-to-new-api.html",pathLocale:"/en/",extraFields:[]},{title:"Quick Start",headers:[{level:2,title:"Environment Requirements",slug:"environment-requirements",link:"#environment-requirements",children:[]},{level:2,title:"Automatically Build Project",slug:"automatically-build-project",link:"#automatically-build-project",children:[]},{level:2,title:"Manually Configure Project",slug:"manually-configure-project",link:"#manually-configure-project",children:[{level:3,title:"Create Project",slug:"create-project",link:"#create-project",children:[]},{level:3,title:"Integration Dependencies",slug:"integration-dependencies",link:"#integration-dependencies",children:[]},{level:3,title:"Use as Xposed Module",slug:"use-as-xposed-module",link:"#use-as-xposed-module",children:[]},{level:3,title:"Use as Hook API",slug:"use-as-hook-api",link:"#use-as-hook-api",children:[]}]}],path:"/en/guide/quick-start.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookAPI Project Builder",headers:[{level:2,title:"Get Project",slug:"get-project",link:"#get-project",children:[]},{level:2,title:"Usage",slug:"usage",link:"#usage",children:[{level:3,title:"Basic Usage",slug:"basic-usage",link:"#basic-usage",children:[]},{level:3,title:"Config Template",slug:"config-template",link:"#config-template",children:[]},{level:3,title:"Multilingual Support",slug:"multilingual-support",link:"#multilingual-support",children:[]}]}],path:"/en/tools/yukihookapi-projectbuilder.html",pathLocale:"/en/",extraFields:[]},{title:"\u5173\u4E8E\u6B64\u6587\u6863",headers:[{level:2,title:"License",slug:"license",link:"#license",children:[]}],path:"/zh-cn/about/about.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u66F4\u65B0\u65E5\u5FD7",headers:[{level:3,title:"1.1.8 | 2023.02.01",slug:"_1-1-8-2023-02-01",link:"#_1-1-8-2023-02-01",children:[]},{level:3,title:"1.1.6 | 2023.01.21",slug:"_1-1-6-2023-01-21",link:"#_1-1-6-2023-01-21",children:[]},{level:3,title:"1.1.5 | 2023.01.13",slug:"_1-1-5-2023-01-13",link:"#_1-1-5-2023-01-13",children:[]},{level:3,title:"1.1.4 | 2022.10.04",slug:"_1-1-4-2022-10-04",link:"#_1-1-4-2022-10-04",children:[]},{level:3,title:"1.1.3 | 2022.09.30",slug:"_1-1-3-2022-09-30",link:"#_1-1-3-2022-09-30",children:[]},{level:3,title:"1.1.2 | 2022.09.30",slug:"_1-1-2-2022-09-30",link:"#_1-1-2-2022-09-30",children:[]},{level:3,title:"1.1.1 | 2022.09.28",slug:"_1-1-1-2022-09-28",link:"#_1-1-1-2022-09-28",children:[]},{level:3,title:"1.1.0 | 2022.09.28",slug:"_1-1-0-2022-09-28",link:"#_1-1-0-2022-09-28",children:[]},{level:3,title:"1.0.92 | 2022.05.31",slug:"_1-0-92-2022-05-31",link:"#_1-0-92-2022-05-31",children:[]},{level:3,title:"1.0.91 | 2022.05.29",slug:"_1-0-91-2022-05-29",link:"#_1-0-91-2022-05-29",children:[]},{level:3,title:"1.0.90 | 2022.05.27",slug:"_1-0-90-2022-05-27",link:"#_1-0-90-2022-05-27",children:[]},{level:3,title:"1.0.89 | 2022.05.26",slug:"_1-0-89-2022-05-26",link:"#_1-0-89-2022-05-26",children:[]},{level:3,title:"1.0.88 | 2022.05.25",slug:"_1-0-88-2022-05-25",link:"#_1-0-88-2022-05-25",children:[]},{level:3,title:"1.0.87 | 2022.05.10",slug:"_1-0-87-2022-05-10",link:"#_1-0-87-2022-05-10",children:[]},{level:3,title:"1.0.86 | 2022.05.06",slug:"_1-0-86-2022-05-06",link:"#_1-0-86-2022-05-06",children:[]},{level:3,title:"1.0.85 | 2022.05.04",slug:"_1-0-85-2022-05-04",link:"#_1-0-85-2022-05-04",children:[]},{level:3,title:"1.0.83 | 2022.05.04",slug:"_1-0-83-2022-05-04",link:"#_1-0-83-2022-05-04",children:[]},{level:3,title:"1.0.82 | 2022.05.04",slug:"_1-0-82-2022-05-04",link:"#_1-0-82-2022-05-04",children:[]},{level:3,title:"1.0.81 | 2022.05.04",slug:"_1-0-81-2022-05-04",link:"#_1-0-81-2022-05-04",children:[]},{level:3,title:"1.0.80 | 2022.05.01",slug:"_1-0-80-2022-05-01",link:"#_1-0-80-2022-05-01",children:[]},{level:3,title:"1.0.78 | 2022.04.18",slug:"_1-0-78-2022-04-18",link:"#_1-0-78-2022-04-18",children:[]},{level:3,title:"1.0.77 | 2022.04.15",slug:"_1-0-77-2022-04-15",link:"#_1-0-77-2022-04-15",children:[]},{level:3,title:"1.0.75 | 2022.04.13",slug:"_1-0-75-2022-04-13",link:"#_1-0-75-2022-04-13",children:[]},{level:3,title:"1.0.73 | 2022.04.10",slug:"_1-0-73-2022-04-10",link:"#_1-0-73-2022-04-10",children:[]},{level:3,title:"1.0.72 | 2022.04.09",slug:"_1-0-72-2022-04-09",link:"#_1-0-72-2022-04-09",children:[]},{level:3,title:"1.0.71 | 2022.04.04",slug:"_1-0-71-2022-04-04",link:"#_1-0-71-2022-04-04",children:[]},{level:3,title:"1.0.70 | 2022.04.04",slug:"_1-0-70-2022-04-04",link:"#_1-0-70-2022-04-04",children:[]},{level:3,title:"1.0.69 | 2022.03.30",slug:"_1-0-69-2022-03-30",link:"#_1-0-69-2022-03-30",children:[]},{level:3,title:"1.0.68 | 2022.03.29",slug:"_1-0-68-2022-03-29",link:"#_1-0-68-2022-03-29",children:[]},{level:3,title:"1.0.67 | 2022.03.27",slug:"_1-0-67-2022-03-27",link:"#_1-0-67-2022-03-27",children:[]},{level:3,title:"1.0.66 | 2022.03.25",slug:"_1-0-66-2022-03-25",link:"#_1-0-66-2022-03-25",children:[]},{level:3,title:"1.0.65 | 2022.03.25",slug:"_1-0-65-2022-03-25",link:"#_1-0-65-2022-03-25",children:[]},{level:3,title:"1.0.6 | 2022.03.20",slug:"_1-0-6-2022-03-20",link:"#_1-0-6-2022-03-20",children:[]},{level:3,title:"1.0.55 | 2022.03.18",slug:"_1-0-55-2022-03-18",link:"#_1-0-55-2022-03-18",children:[]},{level:3,title:"1.0.5 | 2022.03.18",slug:"_1-0-5-2022-03-18",link:"#_1-0-5-2022-03-18",children:[]},{level:3,title:"1.0.4 | 2022.03.06",slug:"_1-0-4-2022-03-06",link:"#_1-0-4-2022-03-06",children:[]},{level:3,title:"1.0.3 | 2022.03.02",slug:"_1-0-3-2022-03-02",link:"#_1-0-3-2022-03-02",children:[]},{level:3,title:"1.0.2 | 2022.02.18",slug:"_1-0-2-2022-02-18",link:"#_1-0-2-2022-02-18",children:[]},{level:3,title:"1.0.1 | 2022.02.15",slug:"_1-0-1-2022-02-15",link:"#_1-0-1-2022-02-15",children:[]},{level:3,title:"1.0 | 2022.02.14",slug:"_1-0-2022-02-14",link:"#_1-0-2022-02-14",children:[]}],path:"/zh-cn/about/changelog.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u8054\u7CFB\u6211\u4EEC",headers:[{level:2,title:"\u52A9\u529B\u7EF4\u62A4",slug:"\u52A9\u529B\u7EF4\u62A4",link:"#\u52A9\u529B\u7EF4\u62A4",children:[]}],path:"/zh-cn/about/contacts.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u5C55\u671B\u672A\u6765",headers:[{level:2,title:"\u672A\u89E3\u51B3\u7684\u95EE\u9898",slug:"\u672A\u89E3\u51B3\u7684\u95EE\u9898",link:"#\u672A\u89E3\u51B3\u7684\u95EE\u9898",children:[{level:3,title:"YukiHookModulePrefs",slug:"yukihookmoduleprefs",link:"#yukihookmoduleprefs",children:[]}]},{level:2,title:"\u672A\u6765\u7684\u8BA1\u5212",slug:"\u672A\u6765\u7684\u8BA1\u5212",link:"#\u672A\u6765\u7684\u8BA1\u5212",children:[{level:3,title:"\u652F\u6301\u72EC\u7ACB\u4F7F\u7528\u7684 Lite \u7248\u672C",slug:"\u652F\u6301\u72EC\u7ACB\u4F7F\u7528\u7684-lite-\u7248\u672C",link:"#\u652F\u6301\u72EC\u7ACB\u4F7F\u7528\u7684-lite-\u7248\u672C",children:[]},{level:3,title:"\u652F\u6301\u66F4\u591A Hook Framework",slug:"\u652F\u6301\u66F4\u591A-hook-framework",link:"#\u652F\u6301\u66F4\u591A-hook-framework",children:[]}]}],path:"/zh-cn/about/future.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u6587\u6863\u4ECB\u7ECD",headers:[{level:2,title:"\u529F\u80FD\u63CF\u8FF0\u8BF4\u660E",slug:"\u529F\u80FD\u63CF\u8FF0\u8BF4\u660E",link:"#\u529F\u80FD\u63CF\u8FF0\u8BF4\u660E",children:[]},{level:2,title:"\u529F\u80FD\u793A\u4F8B\u8BF4\u660E",slug:"\u529F\u80FD\u793A\u4F8B\u8BF4\u660E",link:"#\u529F\u80FD\u793A\u4F8B\u8BF4\u660E",children:[]},{level:2,title:"\u53D8\u66F4\u8BB0\u5F55\u8BF4\u660E",slug:"\u53D8\u66F4\u8BB0\u5F55\u8BF4\u660E",link:"#\u53D8\u66F4\u8BB0\u5F55\u8BF4\u660E",children:[]},{level:2,title:"\u76F8\u5173\u7B26\u53F7\u8BF4\u660E",slug:"\u76F8\u5173\u7B26\u53F7\u8BF4\u660E",link:"#\u76F8\u5173\u7B26\u53F7\u8BF4\u660E",children:[]}],path:"/zh-cn/api/home.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"API \u57FA\u672C\u914D\u7F6E",headers:[{level:2,title:"\u529F\u80FD\u914D\u7F6E",slug:"\u529F\u80FD\u914D\u7F6E",link:"#\u529F\u80FD\u914D\u7F6E",children:[{level:3,title:"configs \u65B9\u6CD5",slug:"configs-\u65B9\u6CD5",link:"#configs-\u65B9\u6CD5",children:[]}]},{level:2,title:"Hooker \u914D\u7F6E",slug:"hooker-\u914D\u7F6E",link:"#hooker-\u914D\u7F6E",children:[{level:3,title:"\u901A\u8FC7 lambda \u521B\u5EFA",slug:"\u901A\u8FC7-lambda-\u521B\u5EFA",link:"#\u901A\u8FC7-lambda-\u521B\u5EFA",children:[]},{level:3,title:"\u901A\u8FC7\u81EA\u5B9A\u4E49 Hooker \u521B\u5EFA",slug:"\u901A\u8FC7\u81EA\u5B9A\u4E49-hooker-\u521B\u5EFA",link:"#\u901A\u8FC7\u81EA\u5B9A\u4E49-hooker-\u521B\u5EFA",children:[]},{level:3,title:"\u6269\u5C55\u7279\u6027",slug:"\u6269\u5C55\u7279\u6027",link:"#\u6269\u5C55\u7279\u6027",children:[]},{level:3,title:"\u6CE8\u610F\u4E8B\u9879",slug:"\u6CE8\u610F\u4E8B\u9879",link:"#\u6CE8\u610F\u4E8B\u9879",children:[]}]},{level:2,title:"\u4F5C\u4E3A Hook API \u4F7F\u7528\u9700\u8981\u6CE8\u610F\u7684\u5730\u65B9",slug:"\u4F5C\u4E3A-hook-api-\u4F7F\u7528\u9700\u8981\u6CE8\u610F\u7684\u5730\u65B9",link:"#\u4F5C\u4E3A-hook-api-\u4F7F\u7528\u9700\u8981\u6CE8\u610F\u7684\u5730\u65B9",children:[]}],path:"/zh-cn/config/api-example.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"API \u5F02\u5E38\u5904\u7406",headers:[{level:2,title:"\u975E\u963B\u65AD\u5F02\u5E38",slug:"\u975E\u963B\u65AD\u5F02\u5E38",link:"#\u975E\u963B\u65AD\u5F02\u5E38",children:[]},{level:2,title:"\u963B\u65AD\u5F02\u5E38",slug:"\u963B\u65AD\u5F02\u5E38",link:"#\u963B\u65AD\u5F02\u5E38",children:[]}],path:"/zh-cn/config/api-exception.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E",headers:[{level:2,title:"\u4F9D\u8D56\u914D\u7F6E",slug:"\u4F9D\u8D56\u914D\u7F6E",link:"#\u4F9D\u8D56\u914D\u7F6E",children:[]},{level:2,title:"\u5165\u53E3\u914D\u7F6E",slug:"\u5165\u53E3\u914D\u7F6E",link:"#\u5165\u53E3\u914D\u7F6E",children:[]},{level:2,title:"Hook Framework",slug:"hook-framework",link:"#hook-framework",children:[{level:3,title:"Pine",slug:"pine",link:"#pine",children:[]},{level:3,title:"SandHook",slug:"sandhook",link:"#sandhook",children:[]},{level:3,title:"Whale",slug:"whale",link:"#whale",children:[]}]}],path:"/zh-cn/config/api-using.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"R8 \u4E0E Proguard \u6DF7\u6DC6",headers:[{level:2,title:"R8",slug:"r8",link:"#r8",children:[]},{level:2,title:"Proguard",slug:"proguard",link:"#proguard",children:[]}],path:"/zh-cn/config/r8-proguard.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E",headers:[{level:2,title:"\u4F9D\u8D56\u914D\u7F6E",slug:"\u4F9D\u8D56\u914D\u7F6E",link:"#\u4F9D\u8D56\u914D\u7F6E",children:[]},{level:2,title:"\u81EA\u5B9A\u4E49\u5904\u7406\u7A0B\u5E8F",slug:"\u81EA\u5B9A\u4E49\u5904\u7406\u7A0B\u5E8F",link:"#\u81EA\u5B9A\u4E49\u5904\u7406\u7A0B\u5E8F",children:[{level:3,title:"InjectYukiHookWithXposed \u6CE8\u89E3",slug:"injectyukihookwithxposed-\u6CE8\u89E3",link:"#injectyukihookwithxposed-\u6CE8\u89E3",children:[]},{level:3,title:"IYukiHookXposedInit \u63A5\u53E3",slug:"iyukihookxposedinit-\u63A5\u53E3",link:"#iyukihookxposedinit-\u63A5\u53E3",children:[]}]},{level:2,title:"\u539F\u751F Xposed API \u4E8B\u4EF6",slug:"\u539F\u751F-xposed-api-\u4E8B\u4EF6",link:"#\u539F\u751F-xposed-api-\u4E8B\u4EF6",children:[]}],path:"/zh-cn/config/xposed-using.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u7528\u6CD5\u793A\u4F8B",headers:[{level:2,title:"\u7ED3\u6784\u56FE\u89E3",slug:"\u7ED3\u6784\u56FE\u89E3",link:"#\u7ED3\u6784\u56FE\u89E3",children:[]},{level:2,title:"Demo",slug:"demo",link:"#demo",children:[]},{level:2,title:"\u4E00\u4E2A\u7B80\u5355\u7684 Hook \u4F8B\u5B50",slug:"\u4E00\u4E2A\u7B80\u5355\u7684-hook-\u4F8B\u5B50",link:"#\u4E00\u4E2A\u7B80\u5355\u7684-hook-\u4F8B\u5B50",children:[{level:3,title:"Hook APP",slug:"hook-app",link:"#hook-app",children:[]},{level:3,title:"Hook Zygote",slug:"hook-zygote",link:"#hook-zygote",children:[]},{level:3,title:"Hook \u7CFB\u7EDF\u6846\u67B6",slug:"hook-\u7CFB\u7EDF\u6846\u67B6",link:"#hook-\u7CFB\u7EDF\u6846\u67B6",children:[]},{level:3,title:"Hook Resources",slug:"hook-resources",link:"#hook-resources",children:[]},{level:3,title:"\u89E3\u9664 Hook",slug:"\u89E3\u9664-hook",link:"#\u89E3\u9664-hook",children:[]}]},{level:2,title:"\u5F02\u5E38\u5904\u7406",slug:"\u5F02\u5E38\u5904\u7406",link:"#\u5F02\u5E38\u5904\u7406",children:[{level:3,title:"\u76D1\u542C\u5F02\u5E38",slug:"\u76D1\u542C\u5F02\u5E38",link:"#\u76D1\u542C\u5F02\u5E38",children:[]},{level:3,title:"\u629B\u51FA\u5F02\u5E38",slug:"\u629B\u51FA\u5F02\u5E38",link:"#\u629B\u51FA\u5F02\u5E38",children:[]}]},{level:2,title:"\u72B6\u6001\u76D1\u542C",slug:"\u72B6\u6001\u76D1\u542C",link:"#\u72B6\u6001\u76D1\u542C",children:[]},{level:2,title:"\u6269\u5C55\u7528\u6CD5",slug:"\u6269\u5C55\u7528\u6CD5",link:"#\u6269\u5C55\u7528\u6CD5",children:[{level:3,title:"\u591A\u4E2A\u5BBF\u4E3B",slug:"\u591A\u4E2A\u5BBF\u4E3B",link:"#\u591A\u4E2A\u5BBF\u4E3B",children:[]},{level:3,title:"\u591A\u4E2A\u8FDB\u7A0B",slug:"\u591A\u4E2A\u8FDB\u7A0B",link:"#\u591A\u4E2A\u8FDB\u7A0B",children:[]}]},{level:2,title:"\u5199\u6CD5\u4F18\u5316",slug:"\u5199\u6CD5\u4F18\u5316",link:"#\u5199\u6CD5\u4F18\u5316",children:[]},{level:2,title:"Xposed \u6A21\u5757\u5224\u65AD\u81EA\u8EAB\u6FC0\u6D3B\u72B6\u6001",slug:"xposed-\u6A21\u5757\u5224\u65AD\u81EA\u8EAB\u6FC0\u6D3B\u72B6\u6001",link:"#xposed-\u6A21\u5757\u5224\u65AD\u81EA\u8EAB\u6FC0\u6D3B\u72B6\u6001",children:[]}],path:"/zh-cn/guide/example.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u4ECB\u7ECD",headers:[{level:2,title:"\u80CC\u666F",slug:"\u80CC\u666F",link:"#\u80CC\u666F",children:[]},{level:2,title:"\u7528\u9014",slug:"\u7528\u9014",link:"#\u7528\u9014",children:[]},{level:2,title:"\u8BED\u8A00\u8981\u6C42",slug:"\u8BED\u8A00\u8981\u6C42",link:"#\u8BED\u8A00\u8981\u6C42",children:[]},{level:2,title:"\u7075\u611F\u6765\u6E90",slug:"\u7075\u611F\u6765\u6E90",link:"#\u7075\u611F\u6765\u6E90",children:[]},{level:2,title:"\u652F\u6301\u7684 Hook Framework",slug:"\u652F\u6301\u7684-hook-framework",link:"#\u652F\u6301\u7684-hook-framework",children:[]}],path:"/zh-cn/guide/home.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u57FA\u7840\u77E5\u8BC6",headers:[{level:2,title:"\u76F8\u5173\u4ECB\u7ECD",slug:"\u76F8\u5173\u4ECB\u7ECD",link:"#\u76F8\u5173\u4ECB\u7ECD",children:[{level:3,title:"Xposed \u662F\u4EC0\u4E48",slug:"xposed-\u662F\u4EC0\u4E48",link:"#xposed-\u662F\u4EC0\u4E48",children:[]},{level:3,title:"Xposed \u80FD\u505A\u4EC0\u4E48",slug:"xposed-\u80FD\u505A\u4EC0\u4E48",link:"#xposed-\u80FD\u505A\u4EC0\u4E48",children:[]},{level:3,title:"\u53D1\u5C55\u8FC7\u7A0B",slug:"\u53D1\u5C55\u8FC7\u7A0B",link:"#\u53D1\u5C55\u8FC7\u7A0B",children:[]},{level:3,title:"\u884D\u751F\u4EA7\u54C1",slug:"\u884D\u751F\u4EA7\u54C1",link:"#\u884D\u751F\u4EA7\u54C1",children:[]},{level:3,title:"YukiHookAPI \u505A\u4E86\u4EC0\u4E48",slug:"yukihookapi-\u505A\u4E86\u4EC0\u4E48",link:"#yukihookapi-\u505A\u4E86\u4EC0\u4E48",children:[]}]},{level:2,title:"\u8BA9\u6211\u4EEC\u5F00\u59CB\u5427",slug:"\u8BA9\u6211\u4EEC\u5F00\u59CB\u5427",link:"#\u8BA9\u6211\u4EEC\u5F00\u59CB\u5427",children:[]}],path:"/zh-cn/guide/knowledge.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u4ECE Xposed API \u8FC1\u79FB",headers:[{level:2,title:"\u8FC1\u79FB Hook \u5165\u53E3\u70B9",slug:"\u8FC1\u79FB-hook-\u5165\u53E3\u70B9",link:"#\u8FC1\u79FB-hook-\u5165\u53E3\u70B9",children:[]},{level:2,title:"\u8FC1\u79FB Hook \u65B9\u6CD5\u4F53",slug:"\u8FC1\u79FB-hook-\u65B9\u6CD5\u4F53",link:"#\u8FC1\u79FB-hook-\u65B9\u6CD5\u4F53",children:[{level:3,title:"Before/After Hook",slug:"before-after-hook",link:"#before-after-hook",children:[]},{level:3,title:"Replace Hook",slug:"replace-hook",link:"#replace-hook",children:[]}]},{level:2,title:"\u8FC1\u79FB\u5176\u5B83\u529F\u80FD",slug:"\u8FC1\u79FB\u5176\u5B83\u529F\u80FD",link:"#\u8FC1\u79FB\u5176\u5B83\u529F\u80FD",children:[]}],path:"/zh-cn/guide/move-to-new-api.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u5FEB\u901F\u5F00\u59CB",headers:[{level:2,title:"\u73AF\u5883\u8981\u6C42",slug:"\u73AF\u5883\u8981\u6C42",link:"#\u73AF\u5883\u8981\u6C42",children:[]},{level:2,title:"\u81EA\u52A8\u6784\u5EFA\u9879\u76EE",slug:"\u81EA\u52A8\u6784\u5EFA\u9879\u76EE",link:"#\u81EA\u52A8\u6784\u5EFA\u9879\u76EE",children:[]},{level:2,title:"\u624B\u52A8\u914D\u7F6E\u9879\u76EE",slug:"\u624B\u52A8\u914D\u7F6E\u9879\u76EE",link:"#\u624B\u52A8\u914D\u7F6E\u9879\u76EE",children:[{level:3,title:"\u521B\u5EFA\u9879\u76EE",slug:"\u521B\u5EFA\u9879\u76EE",link:"#\u521B\u5EFA\u9879\u76EE",children:[]},{level:3,title:"\u96C6\u6210\u4F9D\u8D56",slug:"\u96C6\u6210\u4F9D\u8D56",link:"#\u96C6\u6210\u4F9D\u8D56",children:[]},{level:3,title:"\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528",slug:"\u4F5C\u4E3A-xposed-\u6A21\u5757\u4F7F\u7528",link:"#\u4F5C\u4E3A-xposed-\u6A21\u5757\u4F7F\u7528",children:[]},{level:3,title:"\u4F5C\u4E3A Hook API \u4F7F\u7528",slug:"\u4F5C\u4E3A-hook-api-\u4F7F\u7528",link:"#\u4F5C\u4E3A-hook-api-\u4F7F\u7528",children:[]}]}],path:"/zh-cn/guide/quick-start.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookAPI \u6784\u5EFA\u5DE5\u5177",headers:[{level:2,title:"\u83B7\u53D6\u9879\u76EE",slug:"\u83B7\u53D6\u9879\u76EE",link:"#\u83B7\u53D6\u9879\u76EE",children:[]},{level:2,title:"\u4F7F\u7528\u65B9\u6CD5",slug:"\u4F7F\u7528\u65B9\u6CD5",link:"#\u4F7F\u7528\u65B9\u6CD5",children:[{level:3,title:"\u57FA\u672C\u7528\u6CD5",slug:"\u57FA\u672C\u7528\u6CD5",link:"#\u57FA\u672C\u7528\u6CD5",children:[]},{level:3,title:"\u914D\u7F6E\u6A21\u677F",slug:"\u914D\u7F6E\u6A21\u677F",link:"#\u914D\u7F6E\u6A21\u677F",children:[]},{level:3,title:"\u591A\u8BED\u8A00\u652F\u6301",slug:"\u591A\u8BED\u8A00\u652F\u6301",link:"#\u591A\u8BED\u8A00\u652F\u6301",children:[]}]}],path:"/zh-cn/tools/yukihookapi-projectbuilder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"Host Resource Injection Extension",headers:[{level:2,title:"Inject Module App's Resources",slug:"inject-module-app-s-resources",link:"#inject-module-app-s-resources",children:[]},{level:2,title:"Register Module App's Activity",slug:"register-module-app-s-activity",link:"#register-module-app-s-activity",children:[]},{level:2,title:"Create ContextThemeWrapper Proxy",slug:"create-contextthemewrapper-proxy",link:"#create-contextthemewrapper-proxy",children:[]},{level:2,title:"ClassLoader Conflict Problem",slug:"classloader-conflict-problem",link:"#classloader-conflict-problem",children:[]}],path:"/en/api/special-features/host-inject.html",pathLocale:"/en/",extraFields:[]},{title:"Host Lifecycle Extension",headers:[{level:2,title:"Listener Lifecycle",slug:"listener-lifecycle",link:"#listener-lifecycle",children:[]},{level:2,title:"Register System Broadcast",slug:"register-system-broadcast",link:"#register-system-broadcast",children:[]}],path:"/en/api/special-features/host-lifecycle.html",pathLocale:"/en/",extraFields:[]},{title:"Debug Logs",headers:[{level:2,title:"Normal Logs",slug:"normal-logs",link:"#normal-logs",children:[]},{level:2,title:"Error Logs",slug:"error-logs",link:"#error-logs",children:[]},{level:2,title:"Save Logs and Custom Elements",slug:"save-logs-and-custom-elements",link:"#save-logs-and-custom-elements",children:[]}],path:"/en/api/special-features/logger.html",pathLocale:"/en/",extraFields:[]},{title:"Reflection Extensions",headers:[{level:2,title:"Class Extensions",slug:"class-extensions",link:"#class-extensions",children:[{level:3,title:"Object Conversion",slug:"object-conversion",link:"#object-conversion",children:[]},{level:3,title:"Existential Judgment",slug:"existential-judgment",link:"#existential-judgment",children:[]},{level:3,title:"Vague Search",slug:"vague-search",link:"#vague-search",children:[]}]},{level:2,title:"Member Extensions",slug:"member-extensions",link:"#member-extensions",children:[{level:3,title:"Find and Reflection",slug:"find-and-reflection",link:"#find-and-reflection",children:[]},{level:3,title:"Optional Find Conditions",slug:"optional-find-conditions",link:"#optional-find-conditions",children:[]},{level:3,title:"Find in Super Class",slug:"find-in-super-class",link:"#find-in-super-class",children:[]},{level:3,title:"Vague Find",slug:"vague-find",link:"#vague-find",children:[]},{level:3,title:"Multiple Find",slug:"multiple-find",link:"#multiple-find",children:[]},{level:3,title:"Static Bytecode",slug:"static-bytecode",link:"#static-bytecode",children:[]},{level:3,title:"Obfuscated Bytecode",slug:"obfuscated-bytecode",link:"#obfuscated-bytecode",children:[]},{level:3,title:"Directly Called",slug:"directly-called",link:"#directly-called",children:[]},{level:3,title:"Original Called",slug:"original-called",link:"#original-called",children:[]},{level:3,title:"Find Again",slug:"find-again",link:"#find-again",children:[]},{level:3,title:"Relative Matching",slug:"relative-matching",link:"#relative-matching",children:[]},{level:3,title:"Calling Generics",slug:"calling-generics",link:"#calling-generics",children:[]},{level:3,title:"Pay Attention of Trap",slug:"pay-attention-of-trap",link:"#pay-attention-of-trap",children:[]}]},{level:2,title:"Common Type Extensions",slug:"common-type-extensions",link:"#common-type-extensions",children:[]}],path:"/en/api/special-features/reflection.html",pathLocale:"/en/",extraFields:[]},{title:"Xposed Module and Host Channel",headers:[{level:2,title:"Basic Usage",slug:"basic-usage",link:"#basic-usage",children:[]},{level:2,title:"Determine Module App and Host App Version Match",slug:"determine-module-app-and-host-app-version-match",link:"#determine-module-app-and-host-app-version-match",children:[]},{level:2,title:"Rules for Callback Event Response",slug:"rules-for-callback-event-response",link:"#rules-for-callback-event-response",children:[]},{level:2,title:"Security Instructions",slug:"security-instructions",link:"#security-instructions",children:[]}],path:"/en/api/special-features/xposed-channel.html",pathLocale:"/en/",extraFields:[]},{title:"Xposed Module Data Storage",headers:[{level:2,title:"Use in Activity",slug:"use-in-activity",link:"#use-in-activity",children:[]},{level:2,title:"Use in PreferenceFragment",slug:"use-in-preferencefragment",link:"#use-in-preferencefragment",children:[]}],path:"/en/api/special-features/xposed-storage.html",pathLocale:"/en/",extraFields:[]},{title:"\u5BBF\u4E3B\u8D44\u6E90\u6CE8\u5165\u6269\u5C55",headers:[{level:2,title:"\u6CE8\u5165\u6A21\u5757\u8D44\u6E90 (Resources)",slug:"\u6CE8\u5165\u6A21\u5757\u8D44\u6E90-resources",link:"#\u6CE8\u5165\u6A21\u5757\u8D44\u6E90-resources",children:[]},{level:2,title:"\u6CE8\u518C\u6A21\u5757 Activity",slug:"\u6CE8\u518C\u6A21\u5757-activity",link:"#\u6CE8\u518C\u6A21\u5757-activity",children:[]},{level:2,title:"\u521B\u5EFA ContextThemeWrapper \u4EE3\u7406",slug:"\u521B\u5EFA-contextthemewrapper-\u4EE3\u7406",link:"#\u521B\u5EFA-contextthemewrapper-\u4EE3\u7406",children:[]},{level:2,title:"ClassLoader \u51B2\u7A81\u95EE\u9898",slug:"classloader-\u51B2\u7A81\u95EE\u9898",link:"#classloader-\u51B2\u7A81\u95EE\u9898",children:[]}],path:"/zh-cn/api/special-features/host-inject.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u5BBF\u4E3B\u751F\u547D\u5468\u671F\u6269\u5C55",headers:[{level:2,title:"\u76D1\u542C\u751F\u547D\u5468\u671F",slug:"\u76D1\u542C\u751F\u547D\u5468\u671F",link:"#\u76D1\u542C\u751F\u547D\u5468\u671F",children:[]},{level:2,title:"\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD",slug:"\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD",link:"#\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD",children:[]}],path:"/zh-cn/api/special-features/host-lifecycle.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u8C03\u8BD5\u65E5\u5FD7",headers:[{level:2,title:"\u666E\u901A\u65E5\u5FD7",slug:"\u666E\u901A\u65E5\u5FD7",link:"#\u666E\u901A\u65E5\u5FD7",children:[]},{level:2,title:"\u9519\u8BEF\u65E5\u5FD7",slug:"\u9519\u8BEF\u65E5\u5FD7",link:"#\u9519\u8BEF\u65E5\u5FD7",children:[]},{level:2,title:"\u4FDD\u5B58\u65E5\u5FD7\u4E0E\u81EA\u5B9A\u4E49\u5143\u7D20",slug:"\u4FDD\u5B58\u65E5\u5FD7\u4E0E\u81EA\u5B9A\u4E49\u5143\u7D20",link:"#\u4FDD\u5B58\u65E5\u5FD7\u4E0E\u81EA\u5B9A\u4E49\u5143\u7D20",children:[]}],path:"/zh-cn/api/special-features/logger.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"\u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55",headers:[{level:2,title:"Class \u6269\u5C55",slug:"class-\u6269\u5C55",link:"#class-\u6269\u5C55",children:[{level:3,title:"\u5BF9\u8C61\u8F6C\u6362",slug:"\u5BF9\u8C61\u8F6C\u6362",link:"#\u5BF9\u8C61\u8F6C\u6362",children:[]},{level:3,title:"\u5B58\u5728\u5224\u65AD",slug:"\u5B58\u5728\u5224\u65AD",link:"#\u5B58\u5728\u5224\u65AD",children:[]},{level:3,title:"\u6A21\u7CCA\u67E5\u627E",slug:"\u6A21\u7CCA\u67E5\u627E",link:"#\u6A21\u7CCA\u67E5\u627E",children:[]}]},{level:2,title:"Member \u6269\u5C55",slug:"member-\u6269\u5C55",link:"#member-\u6269\u5C55",children:[{level:3,title:"\u67E5\u627E\u4E0E\u53CD\u5C04\u8C03\u7528",slug:"\u67E5\u627E\u4E0E\u53CD\u5C04\u8C03\u7528",link:"#\u67E5\u627E\u4E0E\u53CD\u5C04\u8C03\u7528",children:[]},{level:3,title:"\u53EF\u9009\u7684\u67E5\u627E\u6761\u4EF6",slug:"\u53EF\u9009\u7684\u67E5\u627E\u6761\u4EF6",link:"#\u53EF\u9009\u7684\u67E5\u627E\u6761\u4EF6",children:[]},{level:3,title:"\u5728\u7236\u7C7B\u67E5\u627E",slug:"\u5728\u7236\u7C7B\u67E5\u627E",link:"#\u5728\u7236\u7C7B\u67E5\u627E",children:[]},{level:3,title:"\u6A21\u7CCA\u67E5\u627E",slug:"\u6A21\u7CCA\u67E5\u627E-1",link:"#\u6A21\u7CCA\u67E5\u627E-1",children:[]},{level:3,title:"\u591A\u91CD\u67E5\u627E",slug:"\u591A\u91CD\u67E5\u627E-1",link:"#\u591A\u91CD\u67E5\u627E-1",children:[]},{level:3,title:"\u9759\u6001\u5B57\u8282\u7801",slug:"\u9759\u6001\u5B57\u8282\u7801",link:"#\u9759\u6001\u5B57\u8282\u7801",children:[]},{level:3,title:"\u6DF7\u6DC6\u7684\u5B57\u8282\u7801",slug:"\u6DF7\u6DC6\u7684\u5B57\u8282\u7801",link:"#\u6DF7\u6DC6\u7684\u5B57\u8282\u7801",children:[]},{level:3,title:"\u76F4\u63A5\u8C03\u7528",slug:"\u76F4\u63A5\u8C03\u7528",link:"#\u76F4\u63A5\u8C03\u7528",children:[]},{level:3,title:"\u539F\u59CB\u8C03\u7528",slug:"\u539F\u59CB\u8C03\u7528",link:"#\u539F\u59CB\u8C03\u7528",children:[]},{level:3,title:"\u518D\u6B21\u67E5\u627E",slug:"\u518D\u6B21\u67E5\u627E",link:"#\u518D\u6B21\u67E5\u627E",children:[]},{level:3,title:"\u76F8\u5BF9\u5339\u914D",slug:"\u76F8\u5BF9\u5339\u914D",link:"#\u76F8\u5BF9\u5339\u914D",children:[]},{level:3,title:"\u8C03\u7528\u6CDB\u578B",slug:"\u8C03\u7528\u6CDB\u578B",link:"#\u8C03\u7528\u6CDB\u578B",children:[]},{level:3,title:"\u6CE8\u610F\u8BEF\u533A",slug:"\u6CE8\u610F\u8BEF\u533A",link:"#\u6CE8\u610F\u8BEF\u533A",children:[]}]},{level:2,title:"\u5E38\u7528\u7C7B\u578B\u6269\u5C55",slug:"\u5E38\u7528\u7C7B\u578B\u6269\u5C55",link:"#\u5E38\u7528\u7C7B\u578B\u6269\u5C55",children:[]}],path:"/zh-cn/api/special-features/reflection.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"Xposed \u6A21\u5757\u4E0E\u5BBF\u4E3B\u901A\u8BAF\u6865",headers:[{level:2,title:"\u57FA\u672C\u7528\u6CD5",slug:"\u57FA\u672C\u7528\u6CD5",link:"#\u57FA\u672C\u7528\u6CD5",children:[]},{level:2,title:"\u5224\u65AD\u6A21\u5757\u4E0E\u5BBF\u4E3B\u7248\u672C\u662F\u5426\u5339\u914D",slug:"\u5224\u65AD\u6A21\u5757\u4E0E\u5BBF\u4E3B\u7248\u672C\u662F\u5426\u5339\u914D",link:"#\u5224\u65AD\u6A21\u5757\u4E0E\u5BBF\u4E3B\u7248\u672C\u662F\u5426\u5339\u914D",children:[]},{level:2,title:"\u56DE\u8C03\u4E8B\u4EF6\u54CD\u5E94\u7684\u89C4\u5219",slug:"\u56DE\u8C03\u4E8B\u4EF6\u54CD\u5E94\u7684\u89C4\u5219",link:"#\u56DE\u8C03\u4E8B\u4EF6\u54CD\u5E94\u7684\u89C4\u5219",children:[]},{level:2,title:"\u5B89\u5168\u6027\u8BF4\u660E",slug:"\u5B89\u5168\u6027\u8BF4\u660E",link:"#\u5B89\u5168\u6027\u8BF4\u660E",children:[]}],path:"/zh-cn/api/special-features/xposed-channel.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"Xposed \u6A21\u5757\u6570\u636E\u5B58\u50A8",headers:[{level:2,title:"\u5728 Activity \u4E2D\u4F7F\u7528",slug:"\u5728-activity-\u4E2D\u4F7F\u7528",link:"#\u5728-activity-\u4E2D\u4F7F\u7528",children:[]},{level:2,title:"\u5728 PreferenceFragment \u4E2D\u4F7F\u7528",slug:"\u5728-preferencefragment-\u4E2D\u4F7F\u7528",link:"#\u5728-preferencefragment-\u4E2D\u4F7F\u7528",children:[]}],path:"/zh-cn/api/special-features/xposed-storage.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookAPI - object",headers:[{level:2,title:"API_VERSION_NAME - field",slug:"api-version-name-field",link:"#api-version-name-field",children:[]},{level:2,title:"API_VERSION_CODE - field",slug:"api-version-code-field",link:"#api-version-code-field",children:[]},{level:2,title:"Status - object",slug:"status-object",link:"#status-object",children:[{level:3,title:"compiledTimestamp - field",slug:"compiledtimestamp-field",link:"#compiledtimestamp-field",children:[]},{level:3,title:"isXposedEnvironment - field",slug:"isxposedenvironment-field",link:"#isxposedenvironment-field",children:[]},{level:3,title:"isModuleActive - field",slug:"ismoduleactive-field",link:"#ismoduleactive-field",children:[]},{level:3,title:"isXposedModuleActive - field",slug:"isxposedmoduleactive-field",link:"#isxposedmoduleactive-field",children:[]},{level:3,title:"isTaiChiModuleActive - field",slug:"istaichimoduleactive-field",link:"#istaichimoduleactive-field",children:[]},{level:3,title:"isSupportResourcesHook - field",slug:"issupportresourceshook-field",link:"#issupportresourceshook-field",children:[]},{level:3,title:"Executor - object",slug:"executor-object",link:"#executor-object",children:[]}]},{level:2,title:"Configs - object",slug:"configs-object",link:"#configs-object",children:[{level:3,title:"debugLog - method",slug:"debuglog-method",link:"#debuglog-method",children:[]},{level:3,title:"isDebug - field",slug:"isdebug-field",link:"#isdebug-field",children:[]},{level:3,title:"isEnableModulePrefsCache - field",slug:"isenablemoduleprefscache-field",link:"#isenablemoduleprefscache-field",children:[]},{level:3,title:"isEnableModuleAppResourcesCache - field",slug:"isenablemoduleappresourcescache-field",link:"#isenablemoduleappresourcescache-field",children:[]},{level:3,title:"isEnableHookModuleStatus - field",slug:"isenablehookmodulestatus-field",link:"#isenablehookmodulestatus-field",children:[]},{level:3,title:"isEnableHookSharedPreferences - field",slug:"isenablehooksharedpreferences-field",link:"#isenablehooksharedpreferences-field",children:[]},{level:3,title:"isEnableDataChannel - field",slug:"isenabledatachannel-field",link:"#isenabledatachannel-field",children:[]},{level:3,title:"isEnableMemberCache - field",slug:"isenablemembercache-field",link:"#isenablemembercache-field",children:[]}]},{level:2,title:"configs - method",slug:"configs-method",link:"#configs-method",children:[]},{level:2,title:"encase - method",slug:"encase-method",link:"#encase-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookAPI - object",headers:[{level:2,title:"API_VERSION_NAME - field",slug:"api-version-name-field",link:"#api-version-name-field",children:[]},{level:2,title:"API_VERSION_CODE - field",slug:"api-version-code-field",link:"#api-version-code-field",children:[]},{level:2,title:"Status - object",slug:"status-object",link:"#status-object",children:[{level:3,title:"compiledTimestamp - field",slug:"compiledtimestamp-field",link:"#compiledtimestamp-field",children:[]},{level:3,title:"isXposedEnvironment - field",slug:"isxposedenvironment-field",link:"#isxposedenvironment-field",children:[]},{level:3,title:"isModuleActive - field",slug:"ismoduleactive-field",link:"#ismoduleactive-field",children:[]},{level:3,title:"isXposedModuleActive - field",slug:"isxposedmoduleactive-field",link:"#isxposedmoduleactive-field",children:[]},{level:3,title:"isTaiChiModuleActive - field",slug:"istaichimoduleactive-field",link:"#istaichimoduleactive-field",children:[]},{level:3,title:"isSupportResourcesHook - field",slug:"issupportresourceshook-field",link:"#issupportresourceshook-field",children:[]},{level:3,title:"Executor - object",slug:"executor-object",link:"#executor-object",children:[]}]},{level:2,title:"Configs - object",slug:"configs-object",link:"#configs-object",children:[{level:3,title:"debugLog - method",slug:"debuglog-method",link:"#debuglog-method",children:[]},{level:3,title:"isDebug - field",slug:"isdebug-field",link:"#isdebug-field",children:[]},{level:3,title:"isEnableModulePrefsCache - field",slug:"isenablemoduleprefscache-field",link:"#isenablemoduleprefscache-field",children:[]},{level:3,title:"isEnableModuleAppResourcesCache - field",slug:"isenablemoduleappresourcescache-field",link:"#isenablemoduleappresourcescache-field",children:[]},{level:3,title:"isEnableHookModuleStatus - field",slug:"isenablehookmodulestatus-field",link:"#isenablehookmodulestatus-field",children:[]},{level:3,title:"isEnableHookSharedPreferences - field",slug:"isenablehooksharedpreferences-field",link:"#isenablehooksharedpreferences-field",children:[]},{level:3,title:"isEnableDataChannel - field",slug:"isenabledatachannel-field",link:"#isenabledatachannel-field",children:[]},{level:3,title:"isEnableMemberCache - field",slug:"isenablemembercache-field",link:"#isenablemembercache-field",children:[]}]},{level:2,title:"configs - method",slug:"configs-method",link:"#configs-method",children:[]},{level:2,title:"encase - method",slug:"encase-method",link:"#encase-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"InjectYukiHookWithXposed - annotation",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html",pathLocale:"/en/",extraFields:[]},{title:"CurrentClass - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"simpleName - field",slug:"simplename-field",link:"#simplename-field",children:[]},{level:2,title:"generic - method",slug:"generic-method",link:"#generic-method",children:[]},{level:2,title:"generic - method",slug:"generic-method-1",link:"#generic-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:2,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:2,title:"SuperClass - class",slug:"superclass-class",link:"#superclass-class",children:[{level:3,title:"name - field",slug:"name-field-1",link:"#name-field-1",children:[]},{level:3,title:"simpleName - field",slug:"simplename-field-1",link:"#simplename-field-1",children:[]},{level:3,title:"generic - method",slug:"generic-method-2",link:"#generic-method-2",children:[]},{level:3,title:"generic - method",slug:"generic-method-3",link:"#generic-method-3",children:[]},{level:3,title:"field - method",slug:"field-method-1",link:"#field-method-1",children:[]},{level:3,title:"method - method",slug:"method-method-1",link:"#method-method-1",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html",pathLocale:"/en/",extraFields:[]},{title:"GenericClass - class",headers:[{level:2,title:"argument - method",slug:"argument-method",link:"#argument-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html",pathLocale:"/en/",extraFields:[]},{title:"HookClass - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html",pathLocale:"/en/",extraFields:[]},{title:"HookResources - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html",pathLocale:"/en/",extraFields:[]},{title:"VariousClass - class",headers:[{level:2,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:2,title:"getOrNull - method",slug:"getornull-method",link:"#getornull-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html",pathLocale:"/en/",extraFields:[]},{title:"YukiBaseHooker - class",headers:[{level:2,title:"onHook - method",slug:"onhook-method",link:"#onhook-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html",pathLocale:"/en/",extraFields:[]},{title:"YukiMemberHookCreator - class",headers:[{level:2,title:"PRIORITY_DEFAULT - field",slug:"priority-default-field",link:"#priority-default-field",children:[]},{level:2,title:"PRIORITY_LOWEST - field",slug:"priority-lowest-field",link:"#priority-lowest-field",children:[]},{level:2,title:"PRIORITY_HIGHEST - field",slug:"priority-highest-field",link:"#priority-highest-field",children:[]},{level:2,title:"instanceClass - field",slug:"instanceclass-field",link:"#instanceclass-field",children:[]},{level:2,title:"injectMember - method",slug:"injectmember-method",link:"#injectmember-method",children:[]},{level:2,title:"useDangerousOperation - method",slug:"usedangerousoperation-method",link:"#usedangerousoperation-method",children:[]},{level:2,title:"MemberHookCreator - class",slug:"memberhookcreator-class",link:"#memberhookcreator-class",children:[{level:3,title:"members - method",slug:"members-method",link:"#members-method",children:[]},{level:3,title:"allMembers - method",slug:"allmembers-method",link:"#allmembers-method",children:[]},{level:3,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:3,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:3,title:"HookParam.field - i-ext-method",slug:"hookparam-field-i-ext-method",link:"#hookparam-field-i-ext-method",children:[]},{level:3,title:"HookParam.method - i-ext-method",slug:"hookparam-method-i-ext-method",link:"#hookparam-method-i-ext-method",children:[]},{level:3,title:"HookParam.constructor - i-ext-method",slug:"hookparam-constructor-i-ext-method",link:"#hookparam-constructor-i-ext-method",children:[]},{level:3,title:"HookParam.injectMember - i-ext-method",slug:"hookparam-injectmember-i-ext-method",link:"#hookparam-injectmember-i-ext-method",children:[]},{level:3,title:"beforeHook - method",slug:"beforehook-method",link:"#beforehook-method",children:[]},{level:3,title:"afterHook - method",slug:"afterhook-method",link:"#afterhook-method",children:[]},{level:3,title:"replaceAny - method",slug:"replaceany-method",link:"#replaceany-method",children:[]},{level:3,title:"replaceUnit - method",slug:"replaceunit-method",link:"#replaceunit-method",children:[]},{level:3,title:"replaceTo - method",slug:"replaceto-method",link:"#replaceto-method",children:[]},{level:3,title:"replaceToTrue - method",slug:"replacetotrue-method",link:"#replacetotrue-method",children:[]},{level:3,title:"replaceToFalse - method",slug:"replacetofalse-method",link:"#replacetofalse-method",children:[]},{level:3,title:"intercept - method",slug:"intercept-method",link:"#intercept-method",children:[]},{level:3,title:"removeSelf - method",slug:"removeself-method",link:"#removeself-method",children:[]},{level:3,title:"HookCallback - class",slug:"hookcallback-class",link:"#hookcallback-class",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"by - method",slug:"by-method-1",link:"#by-method-1",children:[]},{level:3,title:"onPrepareHook - method",slug:"onpreparehook-method",link:"#onpreparehook-method",children:[]},{level:3,title:"onHookClassNotFoundFailure - method",slug:"onhookclassnotfoundfailure-method",link:"#onhookclassnotfoundfailure-method",children:[]},{level:3,title:"ignoredHookClassNotFoundFailure - method",slug:"ignoredhookclassnotfoundfailure-method",link:"#ignoredhookclassnotfoundfailure-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html",pathLocale:"/en/",extraFields:[]},{title:"YukiResourcesHookCreator - class",headers:[{level:2,title:"injectResource - method",slug:"injectresource-method",link:"#injectresource-method",children:[]},{level:2,title:"ResourcesHookCreator - class",slug:"resourceshookcreator-class",link:"#resourceshookcreator-class",children:[{level:3,title:"resourceId - field",slug:"resourceid-field",link:"#resourceid-field",children:[]},{level:3,title:"conditions - method",slug:"conditions-method",link:"#conditions-method",children:[]},{level:3,title:"replaceTo - method",slug:"replaceto-method",link:"#replaceto-method",children:[]},{level:3,title:"replaceToTrue - method",slug:"replacetotrue-method",link:"#replacetotrue-method",children:[]},{level:3,title:"replaceToFalse - method",slug:"replacetofalse-method",link:"#replacetofalse-method",children:[]},{level:3,title:"replaceToModuleResource - method",slug:"replacetomoduleresource-method",link:"#replacetomoduleresource-method",children:[]},{level:3,title:"injectAsLayout - method",slug:"injectaslayout-method",link:"#injectaslayout-method",children:[]},{level:3,title:"ConditionFinder - class",slug:"conditionfinder-class",link:"#conditionfinder-class",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]},{level:3,title:"onHookingFailure - method",slug:"onhookingfailure-method",link:"#onhookingfailure-method",children:[]},{level:3,title:"ignoredHookingFailure - method",slug:"ignoredhookingfailure-method",link:"#ignoredhookingfailure-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html",pathLocale:"/en/",extraFields:[]},{title:"ReflectionFactory - kt",headers:[{level:2,title:"MembersType - class",slug:"memberstype-class",link:"#memberstype-class",children:[{level:3,title:"ALL - enum",slug:"all-enum",link:"#all-enum",children:[]},{level:3,title:"METHOD - enum",slug:"method-enum",link:"#method-enum",children:[]},{level:3,title:"CONSTRUCTOR - enum",slug:"constructor-enum",link:"#constructor-enum",children:[]}]},{level:2,title:"ClassLoader.listOfClasses - ext-method",slug:"classloader-listofclasses-ext-method",link:"#classloader-listofclasses-ext-method",children:[]},{level:2,title:"ClassLoader.searchClass - ext-method",slug:"classloader-searchclass-ext-method",link:"#classloader-searchclass-ext-method",children:[]},{level:2,title:"ClassLoader.onLoadClass - ext-method",slug:"classloader-onloadclass-ext-method",link:"#classloader-onloadclass-ext-method",children:[]},{level:2,title:"Class.hasExtends - ext-field",slug:"class-hasextends-ext-field",link:"#class-hasextends-ext-field",children:[]},{level:2,title:"Class?.extends - ext-method",slug:"class-extends-ext-method",link:"#class-extends-ext-method",children:[]},{level:2,title:"Class?.notExtends - ext-method",slug:"class-notextends-ext-method",link:"#class-notextends-ext-method",children:[]},{level:2,title:"Class?.implements - ext-method",slug:"class-implements-ext-method",link:"#class-implements-ext-method",children:[]},{level:2,title:"Class?.notImplements - ext-method",slug:"class-notimplements-ext-method",link:"#class-notimplements-ext-method",children:[]},{level:2,title:"Class.toJavaPrimitiveType - ext-method",slug:"class-tojavaprimitivetype-ext-method",link:"#class-tojavaprimitivetype-ext-method",children:[]},{level:2,title:"String.toClass - ext-method",slug:"string-toclass-ext-method",link:"#string-toclass-ext-method",children:[]},{level:2,title:"String.toClassOrNull - ext-method",slug:"string-toclassornull-ext-method",link:"#string-toclassornull-ext-method",children:[]},{level:2,title:"classOf - method",slug:"classof-method",link:"#classof-method",children:[]},{level:2,title:"String.hasClass - ext-method",slug:"string-hasclass-ext-method",link:"#string-hasclass-ext-method",children:[]},{level:2,title:"Class.hasField - ext-method",slug:"class-hasfield-ext-method",link:"#class-hasfield-ext-method",children:[]},{level:2,title:"Class.hasMethod - ext-method",slug:"class-hasmethod-ext-method",link:"#class-hasmethod-ext-method",children:[]},{level:2,title:"Class.hasConstructor - ext-method",slug:"class-hasconstructor-ext-method",link:"#class-hasconstructor-ext-method",children:[]},{level:2,title:"Member.hasModifiers - ext-method",slug:"member-hasmodifiers-ext-method",link:"#member-hasmodifiers-ext-method",children:[]},{level:2,title:"Class.hasModifiers - ext-method",slug:"class-hasmodifiers-ext-method",link:"#class-hasmodifiers-ext-method",children:[]},{level:2,title:"Class.field - ext-method",slug:"class-field-ext-method",link:"#class-field-ext-method",children:[]},{level:2,title:"Class.method - ext-method",slug:"class-method-ext-method",link:"#class-method-ext-method",children:[]},{level:2,title:"Class.constructor - ext-method",slug:"class-constructor-ext-method",link:"#class-constructor-ext-method",children:[]},{level:2,title:"Class.generic - ext-method",slug:"class-generic-ext-method",link:"#class-generic-ext-method",children:[]},{level:2,title:"Class.generic - ext-method",slug:"class-generic-ext-method-1",link:"#class-generic-ext-method-1",children:[]},{level:2,title:"Any.current - ext-method",slug:"any-current-ext-method",link:"#any-current-ext-method",children:[]},{level:2,title:"Class.buildOf - ext-method",slug:"class-buildof-ext-method",link:"#class-buildof-ext-method",children:[]},{level:2,title:"Class.allMethods - ext-method",slug:"class-allmethods-ext-method",link:"#class-allmethods-ext-method",children:[]},{level:2,title:"Class.allConstructors - ext-method",slug:"class-allconstructors-ext-method",link:"#class-allconstructors-ext-method",children:[]},{level:2,title:"Class.allFields - ext-method",slug:"class-allfields-ext-method",link:"#class-allfields-ext-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookFactory - kt",headers:[{level:2,title:"IYukiHookXposedInit.configs - ext-method",slug:"iyukihookxposedinit-configs-ext-method",link:"#iyukihookxposedinit-configs-ext-method",children:[]},{level:2,title:"IYukiHookXposedInit.encase - ext-method",slug:"iyukihookxposedinit-encase-ext-method",link:"#iyukihookxposedinit-encase-ext-method",children:[]},{level:2,title:"Context.modulePrefs - ext-field",slug:"context-moduleprefs-ext-field",link:"#context-moduleprefs-ext-field",children:[]},{level:2,title:"Context.modulePrefs - ext-method",slug:"context-moduleprefs-ext-method",link:"#context-moduleprefs-ext-method",children:[]},{level:2,title:"Context.dataChannel - ext-method",slug:"context-datachannel-ext-method",link:"#context-datachannel-ext-method",children:[]},{level:2,title:"Context.processName - ext-field",slug:"context-processname-ext-field",link:"#context-processname-ext-field",children:[]},{level:2,title:"Context+Resources.injectModuleAppResources - ext-method",slug:"context-resources-injectmoduleappresources-ext-method",link:"#context-resources-injectmoduleappresources-ext-method",children:[]},{level:2,title:"Context.registerModuleAppActivities - ext-method",slug:"context-registermoduleappactivities-ext-method",link:"#context-registermoduleappactivities-ext-method",children:[]},{level:2,title:"Context.applyModuleTheme - ext-method",slug:"context-applymoduletheme-ext-method",link:"#context-applymoduletheme-ext-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html",pathLocale:"/en/",extraFields:[]},{title:"HookParam - class",headers:[{level:2,title:"args - field",slug:"args-field",link:"#args-field",children:[]},{level:2,title:"instance - field",slug:"instance-field",link:"#instance-field",children:[]},{level:2,title:"instanceOrNull - field",slug:"instanceornull-field",link:"#instanceornull-field",children:[]},{level:2,title:"instanceClass - field",slug:"instanceclass-field",link:"#instanceclass-field",children:[]},{level:2,title:"member - field",slug:"member-field",link:"#member-field",children:[]},{level:2,title:"method - field",slug:"method-field",link:"#method-field",children:[]},{level:2,title:"constructor - field",slug:"constructor-field",link:"#constructor-field",children:[]},{level:2,title:"result - field",slug:"result-field",link:"#result-field",children:[]},{level:2,title:"dataExtra - field",slug:"dataextra-field",link:"#dataextra-field",children:[]},{level:2,title:"hasThrowable - field",slug:"hasthrowable-field",link:"#hasthrowable-field",children:[]},{level:2,title:"throwable - field",slug:"throwable-field",link:"#throwable-field",children:[]},{level:2,title:"Throwable.throwToApp - i-ext-method",slug:"throwable-throwtoapp-i-ext-method",link:"#throwable-throwtoapp-i-ext-method",children:[]},{level:2,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:2,title:"instance - method",slug:"instance-method",link:"#instance-method",children:[]},{level:2,title:"instanceOrNull - method",slug:"instanceornull-method",link:"#instanceornull-method",children:[]},{level:2,title:"args - method",slug:"args-method",link:"#args-method",children:[]},{level:2,title:"args - method",slug:"args-method-1",link:"#args-method-1",children:[]},{level:2,title:"callOriginal - method",slug:"calloriginal-method",link:"#calloriginal-method",children:[]},{level:2,title:"invokeOriginal - method",slug:"invokeoriginal-method",link:"#invokeoriginal-method",children:[]},{level:2,title:"resultTrue - method",slug:"resulttrue-method",link:"#resulttrue-method",children:[]},{level:2,title:"resultFalse - method",slug:"resultfalse-method",link:"#resultfalse-method",children:[]},{level:2,title:"resultNull - method",slug:"resultnull-method",link:"#resultnull-method",children:[]},{level:2,title:"ArgsIndexCondition - class",slug:"argsindexcondition-class",link:"#argsindexcondition-class",children:[{level:3,title:"first - method",slug:"first-method",link:"#first-method",children:[]},{level:3,title:"last - method",slug:"last-method",link:"#last-method",children:[]}]},{level:2,title:"ArgsModifyer - class",slug:"argsmodifyer-class",link:"#argsmodifyer-class",children:[{level:3,title:"cast - method",slug:"cast-method",link:"#cast-method",children:[]},{level:3,title:"byte - method",slug:"byte-method",link:"#byte-method",children:[]},{level:3,title:"int - method",slug:"int-method",link:"#int-method",children:[]},{level:3,title:"long - method",slug:"long-method",link:"#long-method",children:[]},{level:3,title:"short - method",slug:"short-method",link:"#short-method",children:[]},{level:3,title:"double - method",slug:"double-method",link:"#double-method",children:[]},{level:3,title:"float - method",slug:"float-method",link:"#float-method",children:[]},{level:3,title:"string - method",slug:"string-method",link:"#string-method",children:[]},{level:3,title:"char - method",slug:"char-method",link:"#char-method",children:[]},{level:3,title:"boolean - method",slug:"boolean-method",link:"#boolean-method",children:[]},{level:3,title:"any - method",slug:"any-method",link:"#any-method",children:[]},{level:3,title:"array - method",slug:"array-method",link:"#array-method",children:[]},{level:3,title:"list - method",slug:"list-method",link:"#list-method",children:[]},{level:3,title:"set - method",slug:"set-method",link:"#set-method",children:[]},{level:3,title:"setNull - method",slug:"setnull-method",link:"#setnull-method",children:[]},{level:3,title:"setTrue - method",slug:"settrue-method",link:"#settrue-method",children:[]},{level:3,title:"setFalse - method",slug:"setfalse-method",link:"#setfalse-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html",pathLocale:"/en/",extraFields:[]},{title:"PackageParam - class",headers:[{level:2,title:"appClassLoader - field",slug:"appclassloader-field",link:"#appclassloader-field",children:[]},{level:2,title:"appInfo - field",slug:"appinfo-field",link:"#appinfo-field",children:[]},{level:2,title:"appUserId - field",slug:"appuserid-field",link:"#appuserid-field",children:[]},{level:2,title:"appContext - field",slug:"appcontext-field",link:"#appcontext-field",children:[]},{level:2,title:"appResources - field",slug:"appresources-field",link:"#appresources-field",children:[]},{level:2,title:"systemContext - field",slug:"systemcontext-field",link:"#systemcontext-field",children:[]},{level:2,title:"processName - field",slug:"processname-field",link:"#processname-field",children:[]},{level:2,title:"packageName - field",slug:"packagename-field",link:"#packagename-field",children:[]},{level:2,title:"isFirstApplication - field",slug:"isfirstapplication-field",link:"#isfirstapplication-field",children:[]},{level:2,title:"mainProcessName - field",slug:"mainprocessname-field",link:"#mainprocessname-field",children:[]},{level:2,title:"moduleAppFilePath - field",slug:"moduleappfilepath-field",link:"#moduleappfilepath-field",children:[]},{level:2,title:"moduleAppResources - field",slug:"moduleappresources-field",link:"#moduleappresources-field",children:[]},{level:2,title:"prefs - field",slug:"prefs-field",link:"#prefs-field",children:[]},{level:2,title:"prefs - method",slug:"prefs-method",link:"#prefs-method",children:[]},{level:2,title:"dataChannel - field",slug:"datachannel-field",link:"#datachannel-field",children:[]},{level:2,title:"resources - method",slug:"resources-method",link:"#resources-method",children:[]},{level:2,title:"refreshModuleAppResources - method",slug:"refreshmoduleappresources-method",link:"#refreshmoduleappresources-method",children:[]},{level:2,title:"onAppLifecycle - method",slug:"onapplifecycle-method",link:"#onapplifecycle-method",children:[]},{level:2,title:"loadApp - method",slug:"loadapp-method",link:"#loadapp-method",children:[]},{level:2,title:"loadZygote - method",slug:"loadzygote-method",link:"#loadzygote-method",children:[]},{level:2,title:"loadSystem - method",slug:"loadsystem-method",link:"#loadsystem-method",children:[]},{level:2,title:"withProcess - method",slug:"withprocess-method",link:"#withprocess-method",children:[]},{level:2,title:"loadHooker - method",slug:"loadhooker-method",link:"#loadhooker-method",children:[]},{level:2,title:"searchClass - method",slug:"searchclass-method",link:"#searchclass-method",children:[]},{level:2,title:"String+VariousClass.toClass - i-ext-method",slug:"string-variousclass-toclass-i-ext-method",link:"#string-variousclass-toclass-i-ext-method",children:[]},{level:2,title:"String+VariousClass.toClassOrNull - i-ext-method",slug:"string-variousclass-toclassornull-i-ext-method",link:"#string-variousclass-toclassornull-i-ext-method",children:[]},{level:2,title:"String.hasClass - i-ext-method",slug:"string-hasclass-i-ext-method",link:"#string-hasclass-i-ext-method",children:[]},{level:2,title:"findClass - method",slug:"findclass-method",link:"#findclass-method",children:[]},{level:2,title:"String+Class+VariousClass+HookClass.hook - i-ext-method",slug:"string-class-variousclass-hookclass-hook-i-ext-method",link:"#string-class-variousclass-hookclass-hook-i-ext-method",children:[]},{level:2,title:"HookResources.hook - i-ext-method",slug:"hookresources-hook-i-ext-method",link:"#hookresources-hook-i-ext-method",children:[]},{level:2,title:"AppLifecycle - class",slug:"applifecycle-class",link:"#applifecycle-class",children:[{level:3,title:"attachBaseContext - method",slug:"attachbasecontext-method",link:"#attachbasecontext-method",children:[]},{level:3,title:"onCreate - method",slug:"oncreate-method",link:"#oncreate-method",children:[]},{level:3,title:"onTerminate - method",slug:"onterminate-method",link:"#onterminate-method",children:[]},{level:3,title:"onLowMemory - method",slug:"onlowmemory-method",link:"#onlowmemory-method",children:[]},{level:3,title:"onTrimMemory - method",slug:"ontrimmemory-method",link:"#ontrimmemory-method",children:[]},{level:3,title:"onConfigurationChanged - method",slug:"onconfigurationchanged-method",link:"#onconfigurationchanged-method",children:[]},{level:3,title:"registerReceiver - method",slug:"registerreceiver-method",link:"#registerreceiver-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html",pathLocale:"/en/",extraFields:[]},{title:"InjectYukiHookWithXposed - annotation",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"CurrentClass - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"simpleName - field",slug:"simplename-field",link:"#simplename-field",children:[]},{level:2,title:"generic - method",slug:"generic-method",link:"#generic-method",children:[]},{level:2,title:"generic - method",slug:"generic-method-1",link:"#generic-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:2,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:2,title:"SuperClass - class",slug:"superclass-class",link:"#superclass-class",children:[{level:3,title:"name - field",slug:"name-field-1",link:"#name-field-1",children:[]},{level:3,title:"simpleName - field",slug:"simplename-field-1",link:"#simplename-field-1",children:[]},{level:3,title:"generic - method",slug:"generic-method-2",link:"#generic-method-2",children:[]},{level:3,title:"generic - method",slug:"generic-method-3",link:"#generic-method-3",children:[]},{level:3,title:"field - method",slug:"field-method-1",link:"#field-method-1",children:[]},{level:3,title:"method - method",slug:"method-method-1",link:"#method-method-1",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"GenericClass - class",headers:[{level:2,title:"argument - method",slug:"argument-method",link:"#argument-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"HookClass - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"HookResources - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"VariousClass - class",headers:[{level:2,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:2,title:"getOrNull - method",slug:"getornull-method",link:"#getornull-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"LoggerFactory - kt",headers:[{level:2,title:"LoggerType - class",slug:"loggertype-class",link:"#loggertype-class",children:[{level:3,title:"LOGD - enum",slug:"logd-enum",link:"#logd-enum",children:[]},{level:3,title:"XPOSED_ENVIRONMENT - enum",slug:"xposed-environment-enum",link:"#xposed-environment-enum",children:[]},{level:3,title:"SCOPE - enum",slug:"scope-enum",link:"#scope-enum",children:[]},{level:3,title:"BOTH - enum",slug:"both-enum",link:"#both-enum",children:[]}]},{level:2,title:"YukiLoggerData - class",slug:"yukiloggerdata-class",link:"#yukiloggerdata-class",children:[]},{level:2,title:"YukiHookLogger - object",slug:"yukihooklogger-object",link:"#yukihooklogger-object",children:[{level:3,title:"inMemoryData - field",slug:"inmemorydata-field",link:"#inmemorydata-field",children:[]},{level:3,title:"contents - field",slug:"contents-field",link:"#contents-field",children:[]},{level:3,title:"contents - method",slug:"contents-method",link:"#contents-method",children:[]},{level:3,title:"clear - method",slug:"clear-method",link:"#clear-method",children:[]},{level:3,title:"saveToFile - method",slug:"savetofile-method",link:"#savetofile-method",children:[]},{level:3,title:"Configs - object",slug:"configs-object",link:"#configs-object",children:[]}]},{level:2,title:"loggerD - method",slug:"loggerd-method",link:"#loggerd-method",children:[]},{level:2,title:"loggerI - method",slug:"loggeri-method",link:"#loggeri-method",children:[]},{level:2,title:"loggerW - method",slug:"loggerw-method",link:"#loggerw-method",children:[]},{level:2,title:"loggerE - method",slug:"loggere-method",link:"#loggere-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html",pathLocale:"/en/",extraFields:[]},{title:"YukiMemberHookCreator - class",headers:[{level:2,title:"PRIORITY_DEFAULT - field",slug:"priority-default-field",link:"#priority-default-field",children:[]},{level:2,title:"PRIORITY_LOWEST - field",slug:"priority-lowest-field",link:"#priority-lowest-field",children:[]},{level:2,title:"PRIORITY_HIGHEST - field",slug:"priority-highest-field",link:"#priority-highest-field",children:[]},{level:2,title:"instanceClass - field",slug:"instanceclass-field",link:"#instanceclass-field",children:[]},{level:2,title:"injectMember - method",slug:"injectmember-method",link:"#injectmember-method",children:[]},{level:2,title:"useDangerousOperation - method",slug:"usedangerousoperation-method",link:"#usedangerousoperation-method",children:[]},{level:2,title:"MemberHookCreator - class",slug:"memberhookcreator-class",link:"#memberhookcreator-class",children:[{level:3,title:"members - method",slug:"members-method",link:"#members-method",children:[]},{level:3,title:"allMembers - method",slug:"allmembers-method",link:"#allmembers-method",children:[]},{level:3,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:3,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:3,title:"HookParam.field - i-ext-method",slug:"hookparam-field-i-ext-method",link:"#hookparam-field-i-ext-method",children:[]},{level:3,title:"HookParam.method - i-ext-method",slug:"hookparam-method-i-ext-method",link:"#hookparam-method-i-ext-method",children:[]},{level:3,title:"HookParam.constructor - i-ext-method",slug:"hookparam-constructor-i-ext-method",link:"#hookparam-constructor-i-ext-method",children:[]},{level:3,title:"HookParam.injectMember - i-ext-method",slug:"hookparam-injectmember-i-ext-method",link:"#hookparam-injectmember-i-ext-method",children:[]},{level:3,title:"beforeHook - method",slug:"beforehook-method",link:"#beforehook-method",children:[]},{level:3,title:"afterHook - method",slug:"afterhook-method",link:"#afterhook-method",children:[]},{level:3,title:"replaceAny - method",slug:"replaceany-method",link:"#replaceany-method",children:[]},{level:3,title:"replaceUnit - method",slug:"replaceunit-method",link:"#replaceunit-method",children:[]},{level:3,title:"replaceTo - method",slug:"replaceto-method",link:"#replaceto-method",children:[]},{level:3,title:"replaceToTrue - method",slug:"replacetotrue-method",link:"#replacetotrue-method",children:[]},{level:3,title:"replaceToFalse - method",slug:"replacetofalse-method",link:"#replacetofalse-method",children:[]},{level:3,title:"intercept - method",slug:"intercept-method",link:"#intercept-method",children:[]},{level:3,title:"removeSelf - method",slug:"removeself-method",link:"#removeself-method",children:[]},{level:3,title:"HookCallback - class",slug:"hookcallback-class",link:"#hookcallback-class",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"by - method",slug:"by-method-1",link:"#by-method-1",children:[]},{level:3,title:"onPrepareHook - method",slug:"onpreparehook-method",link:"#onpreparehook-method",children:[]},{level:3,title:"onHookClassNotFoundFailure - method",slug:"onhookclassnotfoundfailure-method",link:"#onhookclassnotfoundfailure-method",children:[]},{level:3,title:"ignoredHookClassNotFoundFailure - method",slug:"ignoredhookclassnotfoundfailure-method",link:"#ignoredhookclassnotfoundfailure-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiResourcesHookCreator - class",headers:[{level:2,title:"injectResource - method",slug:"injectresource-method",link:"#injectresource-method",children:[]},{level:2,title:"ResourcesHookCreator - class",slug:"resourceshookcreator-class",link:"#resourceshookcreator-class",children:[{level:3,title:"resourceId - field",slug:"resourceid-field",link:"#resourceid-field",children:[]},{level:3,title:"conditions - method",slug:"conditions-method",link:"#conditions-method",children:[]},{level:3,title:"replaceTo - method",slug:"replaceto-method",link:"#replaceto-method",children:[]},{level:3,title:"replaceToTrue - method",slug:"replacetotrue-method",link:"#replacetotrue-method",children:[]},{level:3,title:"replaceToFalse - method",slug:"replacetofalse-method",link:"#replacetofalse-method",children:[]},{level:3,title:"replaceToModuleResource - method",slug:"replacetomoduleresource-method",link:"#replacetomoduleresource-method",children:[]},{level:3,title:"injectAsLayout - method",slug:"injectaslayout-method",link:"#injectaslayout-method",children:[]},{level:3,title:"ConditionFinder - class",slug:"conditionfinder-class",link:"#conditionfinder-class",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]},{level:3,title:"onHookingFailure - method",slug:"onhookingfailure-method",link:"#onhookingfailure-method",children:[]},{level:3,title:"ignoredHookingFailure - method",slug:"ignoredhookingfailure-method",link:"#ignoredhookingfailure-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiBaseHooker - class",headers:[{level:2,title:"onHook - method",slug:"onhook-method",link:"#onhook-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ReflectionFactory - kt",headers:[{level:2,title:"MembersType - class",slug:"memberstype-class",link:"#memberstype-class",children:[{level:3,title:"ALL - enum",slug:"all-enum",link:"#all-enum",children:[]},{level:3,title:"METHOD - enum",slug:"method-enum",link:"#method-enum",children:[]},{level:3,title:"CONSTRUCTOR - enum",slug:"constructor-enum",link:"#constructor-enum",children:[]}]},{level:2,title:"ClassLoader.listOfClasses - ext-method",slug:"classloader-listofclasses-ext-method",link:"#classloader-listofclasses-ext-method",children:[]},{level:2,title:"ClassLoader.searchClass - ext-method",slug:"classloader-searchclass-ext-method",link:"#classloader-searchclass-ext-method",children:[]},{level:2,title:"ClassLoader.onLoadClass - ext-method",slug:"classloader-onloadclass-ext-method",link:"#classloader-onloadclass-ext-method",children:[]},{level:2,title:"Class.hasExtends - ext-field",slug:"class-hasextends-ext-field",link:"#class-hasextends-ext-field",children:[]},{level:2,title:"Class?.extends - ext-method",slug:"class-extends-ext-method",link:"#class-extends-ext-method",children:[]},{level:2,title:"Class?.notExtends - ext-method",slug:"class-notextends-ext-method",link:"#class-notextends-ext-method",children:[]},{level:2,title:"Class?.implements - ext-method",slug:"class-implements-ext-method",link:"#class-implements-ext-method",children:[]},{level:2,title:"Class?.notImplements - ext-method",slug:"class-notimplements-ext-method",link:"#class-notimplements-ext-method",children:[]},{level:2,title:"Class.toJavaPrimitiveType - ext-method",slug:"class-tojavaprimitivetype-ext-method",link:"#class-tojavaprimitivetype-ext-method",children:[]},{level:2,title:"String.toClass - ext-method",slug:"string-toclass-ext-method",link:"#string-toclass-ext-method",children:[]},{level:2,title:"String.toClassOrNull - ext-method",slug:"string-toclassornull-ext-method",link:"#string-toclassornull-ext-method",children:[]},{level:2,title:"classOf - method",slug:"classof-method",link:"#classof-method",children:[]},{level:2,title:"String.hasClass - ext-method",slug:"string-hasclass-ext-method",link:"#string-hasclass-ext-method",children:[]},{level:2,title:"Class.hasField - ext-method",slug:"class-hasfield-ext-method",link:"#class-hasfield-ext-method",children:[]},{level:2,title:"Class.hasMethod - ext-method",slug:"class-hasmethod-ext-method",link:"#class-hasmethod-ext-method",children:[]},{level:2,title:"Class.hasConstructor - ext-method",slug:"class-hasconstructor-ext-method",link:"#class-hasconstructor-ext-method",children:[]},{level:2,title:"Member.hasModifiers - ext-method",slug:"member-hasmodifiers-ext-method",link:"#member-hasmodifiers-ext-method",children:[]},{level:2,title:"Class.hasModifiers - ext-method",slug:"class-hasmodifiers-ext-method",link:"#class-hasmodifiers-ext-method",children:[]},{level:2,title:"Class.field - ext-method",slug:"class-field-ext-method",link:"#class-field-ext-method",children:[]},{level:2,title:"Class.method - ext-method",slug:"class-method-ext-method",link:"#class-method-ext-method",children:[]},{level:2,title:"Class.constructor - ext-method",slug:"class-constructor-ext-method",link:"#class-constructor-ext-method",children:[]},{level:2,title:"Class.generic - ext-method",slug:"class-generic-ext-method",link:"#class-generic-ext-method",children:[]},{level:2,title:"Class.generic - ext-method",slug:"class-generic-ext-method-1",link:"#class-generic-ext-method-1",children:[]},{level:2,title:"Any.current - ext-method",slug:"any-current-ext-method",link:"#any-current-ext-method",children:[]},{level:2,title:"Class.buildOf - ext-method",slug:"class-buildof-ext-method",link:"#class-buildof-ext-method",children:[]},{level:2,title:"Class.allMethods - ext-method",slug:"class-allmethods-ext-method",link:"#class-allmethods-ext-method",children:[]},{level:2,title:"Class.allConstructors - ext-method",slug:"class-allconstructors-ext-method",link:"#class-allconstructors-ext-method",children:[]},{level:2,title:"Class.allFields - ext-method",slug:"class-allfields-ext-method",link:"#class-allfields-ext-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookFactory - kt",headers:[{level:2,title:"IYukiHookXposedInit.configs - ext-method",slug:"iyukihookxposedinit-configs-ext-method",link:"#iyukihookxposedinit-configs-ext-method",children:[]},{level:2,title:"IYukiHookXposedInit.encase - ext-method",slug:"iyukihookxposedinit-encase-ext-method",link:"#iyukihookxposedinit-encase-ext-method",children:[]},{level:2,title:"Context.modulePrefs - ext-field",slug:"context-moduleprefs-ext-field",link:"#context-moduleprefs-ext-field",children:[]},{level:2,title:"Context.modulePrefs - ext-method",slug:"context-moduleprefs-ext-method",link:"#context-moduleprefs-ext-method",children:[]},{level:2,title:"Context.dataChannel - ext-method",slug:"context-datachannel-ext-method",link:"#context-datachannel-ext-method",children:[]},{level:2,title:"Context.processName - ext-field",slug:"context-processname-ext-field",link:"#context-processname-ext-field",children:[]},{level:2,title:"Context+Resources.injectModuleAppResources - ext-method",slug:"context-resources-injectmoduleappresources-ext-method",link:"#context-resources-injectmoduleappresources-ext-method",children:[]},{level:2,title:"Context.registerModuleAppActivities - ext-method",slug:"context-registermoduleappactivities-ext-method",link:"#context-registermoduleappactivities-ext-method",children:[]},{level:2,title:"Context.applyModuleTheme - ext-method",slug:"context-applymoduletheme-ext-method",link:"#context-applymoduletheme-ext-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"LoggerFactory - kt",headers:[{level:2,title:"LoggerType - class",slug:"loggertype-class",link:"#loggertype-class",children:[{level:3,title:"LOGD - enum",slug:"logd-enum",link:"#logd-enum",children:[]},{level:3,title:"XPOSED_ENVIRONMENT - enum",slug:"xposed-environment-enum",link:"#xposed-environment-enum",children:[]},{level:3,title:"SCOPE - enum",slug:"scope-enum",link:"#scope-enum",children:[]},{level:3,title:"BOTH - enum",slug:"both-enum",link:"#both-enum",children:[]}]},{level:2,title:"YukiLoggerData - class",slug:"yukiloggerdata-class",link:"#yukiloggerdata-class",children:[]},{level:2,title:"YukiHookLogger - object",slug:"yukihooklogger-object",link:"#yukihooklogger-object",children:[{level:3,title:"inMemoryData - field",slug:"inmemorydata-field",link:"#inmemorydata-field",children:[]},{level:3,title:"contents - field",slug:"contents-field",link:"#contents-field",children:[]},{level:3,title:"contents - method",slug:"contents-method",link:"#contents-method",children:[]},{level:3,title:"clear - method",slug:"clear-method",link:"#clear-method",children:[]},{level:3,title:"saveToFile - method",slug:"savetofile-method",link:"#savetofile-method",children:[]},{level:3,title:"Configs - object",slug:"configs-object",link:"#configs-object",children:[]}]},{level:2,title:"loggerD - method",slug:"loggerd-method",link:"#loggerd-method",children:[]},{level:2,title:"loggerI - method",slug:"loggeri-method",link:"#loggeri-method",children:[]},{level:2,title:"loggerW - method",slug:"loggerw-method",link:"#loggerw-method",children:[]},{level:2,title:"loggerE - method",slug:"loggere-method",link:"#loggere-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"HookParam - class",headers:[{level:2,title:"args - field",slug:"args-field",link:"#args-field",children:[]},{level:2,title:"instance - field",slug:"instance-field",link:"#instance-field",children:[]},{level:2,title:"instanceOrNull - field",slug:"instanceornull-field",link:"#instanceornull-field",children:[]},{level:2,title:"instanceClass - field",slug:"instanceclass-field",link:"#instanceclass-field",children:[]},{level:2,title:"member - field",slug:"member-field",link:"#member-field",children:[]},{level:2,title:"method - field",slug:"method-field",link:"#method-field",children:[]},{level:2,title:"constructor - field",slug:"constructor-field",link:"#constructor-field",children:[]},{level:2,title:"result - field",slug:"result-field",link:"#result-field",children:[]},{level:2,title:"dataExtra - field",slug:"dataextra-field",link:"#dataextra-field",children:[]},{level:2,title:"hasThrowable - field",slug:"hasthrowable-field",link:"#hasthrowable-field",children:[]},{level:2,title:"throwable - field",slug:"throwable-field",link:"#throwable-field",children:[]},{level:2,title:"Throwable.throwToApp - i-ext-method",slug:"throwable-throwtoapp-i-ext-method",link:"#throwable-throwtoapp-i-ext-method",children:[]},{level:2,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:2,title:"instance - method",slug:"instance-method",link:"#instance-method",children:[]},{level:2,title:"instanceOrNull - method",slug:"instanceornull-method",link:"#instanceornull-method",children:[]},{level:2,title:"args - method",slug:"args-method",link:"#args-method",children:[]},{level:2,title:"args - method",slug:"args-method-1",link:"#args-method-1",children:[]},{level:2,title:"callOriginal - method",slug:"calloriginal-method",link:"#calloriginal-method",children:[]},{level:2,title:"invokeOriginal - method",slug:"invokeoriginal-method",link:"#invokeoriginal-method",children:[]},{level:2,title:"resultTrue - method",slug:"resulttrue-method",link:"#resulttrue-method",children:[]},{level:2,title:"resultFalse - method",slug:"resultfalse-method",link:"#resultfalse-method",children:[]},{level:2,title:"resultNull - method",slug:"resultnull-method",link:"#resultnull-method",children:[]},{level:2,title:"ArgsIndexCondition - class",slug:"argsindexcondition-class",link:"#argsindexcondition-class",children:[{level:3,title:"first - method",slug:"first-method",link:"#first-method",children:[]},{level:3,title:"last - method",slug:"last-method",link:"#last-method",children:[]}]},{level:2,title:"ArgsModifyer - class",slug:"argsmodifyer-class",link:"#argsmodifyer-class",children:[{level:3,title:"cast - method",slug:"cast-method",link:"#cast-method",children:[]},{level:3,title:"byte - method",slug:"byte-method",link:"#byte-method",children:[]},{level:3,title:"int - method",slug:"int-method",link:"#int-method",children:[]},{level:3,title:"long - method",slug:"long-method",link:"#long-method",children:[]},{level:3,title:"short - method",slug:"short-method",link:"#short-method",children:[]},{level:3,title:"double - method",slug:"double-method",link:"#double-method",children:[]},{level:3,title:"float - method",slug:"float-method",link:"#float-method",children:[]},{level:3,title:"string - method",slug:"string-method",link:"#string-method",children:[]},{level:3,title:"char - method",slug:"char-method",link:"#char-method",children:[]},{level:3,title:"boolean - method",slug:"boolean-method",link:"#boolean-method",children:[]},{level:3,title:"any - method",slug:"any-method",link:"#any-method",children:[]},{level:3,title:"array - method",slug:"array-method",link:"#array-method",children:[]},{level:3,title:"list - method",slug:"list-method",link:"#list-method",children:[]},{level:3,title:"set - method",slug:"set-method",link:"#set-method",children:[]},{level:3,title:"setNull - method",slug:"setnull-method",link:"#setnull-method",children:[]},{level:3,title:"setTrue - method",slug:"settrue-method",link:"#settrue-method",children:[]},{level:3,title:"setFalse - method",slug:"setfalse-method",link:"#setfalse-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"PackageParam - class",headers:[{level:2,title:"appClassLoader - field",slug:"appclassloader-field",link:"#appclassloader-field",children:[]},{level:2,title:"appInfo - field",slug:"appinfo-field",link:"#appinfo-field",children:[]},{level:2,title:"appUserId - field",slug:"appuserid-field",link:"#appuserid-field",children:[]},{level:2,title:"appContext - field",slug:"appcontext-field",link:"#appcontext-field",children:[]},{level:2,title:"appResources - field",slug:"appresources-field",link:"#appresources-field",children:[]},{level:2,title:"systemContext - field",slug:"systemcontext-field",link:"#systemcontext-field",children:[]},{level:2,title:"processName - field",slug:"processname-field",link:"#processname-field",children:[]},{level:2,title:"packageName - field",slug:"packagename-field",link:"#packagename-field",children:[]},{level:2,title:"isFirstApplication - field",slug:"isfirstapplication-field",link:"#isfirstapplication-field",children:[]},{level:2,title:"mainProcessName - field",slug:"mainprocessname-field",link:"#mainprocessname-field",children:[]},{level:2,title:"moduleAppFilePath - field",slug:"moduleappfilepath-field",link:"#moduleappfilepath-field",children:[]},{level:2,title:"moduleAppResources - field",slug:"moduleappresources-field",link:"#moduleappresources-field",children:[]},{level:2,title:"prefs - field",slug:"prefs-field",link:"#prefs-field",children:[]},{level:2,title:"prefs - method",slug:"prefs-method",link:"#prefs-method",children:[]},{level:2,title:"dataChannel - field",slug:"datachannel-field",link:"#datachannel-field",children:[]},{level:2,title:"resources - method",slug:"resources-method",link:"#resources-method",children:[]},{level:2,title:"refreshModuleAppResources - method",slug:"refreshmoduleappresources-method",link:"#refreshmoduleappresources-method",children:[]},{level:2,title:"onAppLifecycle - method",slug:"onapplifecycle-method",link:"#onapplifecycle-method",children:[]},{level:2,title:"loadApp - method",slug:"loadapp-method",link:"#loadapp-method",children:[]},{level:2,title:"loadZygote - method",slug:"loadzygote-method",link:"#loadzygote-method",children:[]},{level:2,title:"loadSystem - method",slug:"loadsystem-method",link:"#loadsystem-method",children:[]},{level:2,title:"withProcess - method",slug:"withprocess-method",link:"#withprocess-method",children:[]},{level:2,title:"loadHooker - method",slug:"loadhooker-method",link:"#loadhooker-method",children:[]},{level:2,title:"searchClass - method",slug:"searchclass-method",link:"#searchclass-method",children:[]},{level:2,title:"String+VariousClass.toClass - i-ext-method",slug:"string-variousclass-toclass-i-ext-method",link:"#string-variousclass-toclass-i-ext-method",children:[]},{level:2,title:"String+VariousClass.toClassOrNull - i-ext-method",slug:"string-variousclass-toclassornull-i-ext-method",link:"#string-variousclass-toclassornull-i-ext-method",children:[]},{level:2,title:"String.hasClass - i-ext-method",slug:"string-hasclass-i-ext-method",link:"#string-hasclass-i-ext-method",children:[]},{level:2,title:"findClass - method",slug:"findclass-method",link:"#findclass-method",children:[]},{level:2,title:"String+Class+VariousClass+HookClass.hook - i-ext-method",slug:"string-class-variousclass-hookclass-hook-i-ext-method",link:"#string-class-variousclass-hookclass-hook-i-ext-method",children:[]},{level:2,title:"HookResources.hook - i-ext-method",slug:"hookresources-hook-i-ext-method",link:"#hookresources-hook-i-ext-method",children:[]},{level:2,title:"AppLifecycle - class",slug:"applifecycle-class",link:"#applifecycle-class",children:[{level:3,title:"attachBaseContext - method",slug:"attachbasecontext-method",link:"#attachbasecontext-method",children:[]},{level:3,title:"onCreate - method",slug:"oncreate-method",link:"#oncreate-method",children:[]},{level:3,title:"onTerminate - method",slug:"onterminate-method",link:"#onterminate-method",children:[]},{level:3,title:"onLowMemory - method",slug:"onlowmemory-method",link:"#onlowmemory-method",children:[]},{level:3,title:"onTrimMemory - method",slug:"ontrimmemory-method",link:"#ontrimmemory-method",children:[]},{level:3,title:"onConfigurationChanged - method",slug:"onconfigurationchanged-method",link:"#onconfigurationchanged-method",children:[]},{level:3,title:"registerReceiver - method",slug:"registerreceiver-method",link:"#registerreceiver-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ComponentTypeFactory - kt",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"GraphicsTypeFactory - kt",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"ViewTypeFactory - kt",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"DefinedTypeFactory - kt",headers:[{level:2,title:"VagueType - field",slug:"vaguetype-field",link:"#vaguetype-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"VariableTypeFactory - kt",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleApplication - class",headers:[{level:2,title:"appContext - field",slug:"appcontext-field",link:"#appcontext-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookDataChannel - class",headers:[{level:2,title:"NameSpace - class",slug:"namespace-class",link:"#namespace-class",children:[{level:3,title:"with - method",slug:"with-method",link:"#with-method",children:[]},{level:3,title:"allowSendTooLargeData - method",slug:"allowsendtoolargedata-method",link:"#allowsendtoolargedata-method",children:[]},{level:3,title:"put - method",slug:"put-method",link:"#put-method",children:[]},{level:3,title:"put - method",slug:"put-method-1",link:"#put-method-1",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"wait - method",slug:"wait-method-1",link:"#wait-method-1",children:[]},{level:3,title:"checkingVersionEquals - method",slug:"checkingversionequals-method",link:"#checkingversionequals-method",children:[]},{level:3,title:"obtainLoggerInMemoryData - method",slug:"obtainloggerinmemorydata-method",link:"#obtainloggerinmemorydata-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html",pathLocale:"/en/",extraFields:[]},{title:"YukiHookModulePrefs - class",headers:[{level:2,title:"isPreferencesAvailable - field",slug:"ispreferencesavailable-field",link:"#ispreferencesavailable-field",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"direct - method",slug:"direct-method",link:"#direct-method",children:[]},{level:2,title:"getString - method",slug:"getstring-method",link:"#getstring-method",children:[]},{level:2,title:"getStringSet - method",slug:"getstringset-method",link:"#getstringset-method",children:[]},{level:2,title:"getBoolean - method",slug:"getboolean-method",link:"#getboolean-method",children:[]},{level:2,title:"getInt - method",slug:"getint-method",link:"#getint-method",children:[]},{level:2,title:"getLong - method",slug:"getlong-method",link:"#getlong-method",children:[]},{level:2,title:"getFloat - method",slug:"getfloat-method",link:"#getfloat-method",children:[]},{level:2,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:2,title:"remove - method",slug:"remove-method",link:"#remove-method",children:[]},{level:2,title:"remove - method",slug:"remove-method-1",link:"#remove-method-1",children:[]},{level:2,title:"clear - method",slug:"clear-method",link:"#clear-method",children:[]},{level:2,title:"putString - method",slug:"putstring-method",link:"#putstring-method",children:[]},{level:2,title:"putStringSet - method",slug:"putstringset-method",link:"#putstringset-method",children:[]},{level:2,title:"putBoolean - method",slug:"putboolean-method",link:"#putboolean-method",children:[]},{level:2,title:"putInt - method",slug:"putint-method",link:"#putint-method",children:[]},{level:2,title:"putLong - method",slug:"putlong-method",link:"#putlong-method",children:[]},{level:2,title:"putFloat - method",slug:"putfloat-method",link:"#putfloat-method",children:[]},{level:2,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:2,title:"put - method",slug:"put-method",link:"#put-method",children:[]},{level:2,title:"clearCache - method",slug:"clearcache-method",link:"#clearcache-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html",pathLocale:"/en/",extraFields:[]},{title:"IYukiHookXposedInit - interface",headers:[{level:2,title:"onInit - method",slug:"oninit-method",link:"#oninit-method",children:[]},{level:2,title:"onHook - method",slug:"onhook-method",link:"#onhook-method",children:[]},{level:2,title:"onXposedEvent - method",slug:"onxposedevent-method",link:"#onxposedevent-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html",pathLocale:"/en/",extraFields:[]},{title:"ComponentTypeFactory - kt",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"GraphicsTypeFactory - kt",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ViewTypeFactory - kt",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"DefinedTypeFactory - kt",headers:[{level:2,title:"VagueType - field",slug:"vaguetype-field",link:"#vaguetype-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"VariableTypeFactory - kt",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleApplication - class",headers:[{level:2,title:"appContext - field",slug:"appcontext-field",link:"#appcontext-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookDataChannel - class",headers:[{level:2,title:"NameSpace - class",slug:"namespace-class",link:"#namespace-class",children:[{level:3,title:"with - method",slug:"with-method",link:"#with-method",children:[]},{level:3,title:"allowSendTooLargeData - method",slug:"allowsendtoolargedata-method",link:"#allowsendtoolargedata-method",children:[]},{level:3,title:"put - method",slug:"put-method",link:"#put-method",children:[]},{level:3,title:"put - method",slug:"put-method-1",link:"#put-method-1",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"wait - method",slug:"wait-method-1",link:"#wait-method-1",children:[]},{level:3,title:"checkingVersionEquals - method",slug:"checkingversionequals-method",link:"#checkingversionequals-method",children:[]},{level:3,title:"obtainLoggerInMemoryData - method",slug:"obtainloggerinmemorydata-method",link:"#obtainloggerinmemorydata-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiHookModulePrefs - class",headers:[{level:2,title:"isPreferencesAvailable - field",slug:"ispreferencesavailable-field",link:"#ispreferencesavailable-field",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"direct - method",slug:"direct-method",link:"#direct-method",children:[]},{level:2,title:"getString - method",slug:"getstring-method",link:"#getstring-method",children:[]},{level:2,title:"getStringSet - method",slug:"getstringset-method",link:"#getstringset-method",children:[]},{level:2,title:"getBoolean - method",slug:"getboolean-method",link:"#getboolean-method",children:[]},{level:2,title:"getInt - method",slug:"getint-method",link:"#getint-method",children:[]},{level:2,title:"getLong - method",slug:"getlong-method",link:"#getlong-method",children:[]},{level:2,title:"getFloat - method",slug:"getfloat-method",link:"#getfloat-method",children:[]},{level:2,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:2,title:"remove - method",slug:"remove-method",link:"#remove-method",children:[]},{level:2,title:"remove - method",slug:"remove-method-1",link:"#remove-method-1",children:[]},{level:2,title:"clear - method",slug:"clear-method",link:"#clear-method",children:[]},{level:2,title:"putString - method",slug:"putstring-method",link:"#putstring-method",children:[]},{level:2,title:"putStringSet - method",slug:"putstringset-method",link:"#putstringset-method",children:[]},{level:2,title:"putBoolean - method",slug:"putboolean-method",link:"#putboolean-method",children:[]},{level:2,title:"putInt - method",slug:"putint-method",link:"#putint-method",children:[]},{level:2,title:"putLong - method",slug:"putlong-method",link:"#putlong-method",children:[]},{level:2,title:"putFloat - method",slug:"putfloat-method",link:"#putfloat-method",children:[]},{level:2,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:2,title:"put - method",slug:"put-method",link:"#put-method",children:[]},{level:2,title:"clearCache - method",slug:"clearcache-method",link:"#clearcache-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"IYukiHookXposedInit - interface",headers:[{level:2,title:"onInit - method",slug:"oninit-method",link:"#oninit-method",children:[]},{level:2,title:"onHook - method",slug:"onhook-method",link:"#onhook-method",children:[]},{level:2,title:"onXposedEvent - method",slug:"onxposedevent-method",link:"#onxposedevent-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"BaseFinder - class",headers:[{level:2,title:"BaseFinder.IndexTypeCondition - class",slug:"basefinder-indextypecondition-class",link:"#basefinder-indextypecondition-class",children:[{level:3,title:"index - method",slug:"index-method",link:"#index-method",children:[]},{level:3,title:"index - method",slug:"index-method-1",link:"#index-method-1",children:[]},{level:3,title:"IndexTypeConditionSort - class",slug:"indextypeconditionsort-class",link:"#indextypeconditionsort-class",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html",pathLocale:"/en/",extraFields:[]},{title:"DexClassFinder - class",headers:[{level:2,title:"companion object - object",slug:"companion-object-object",link:"#companion-object-object",children:[{level:3,title:"clearCache - method",slug:"clearcache-method",link:"#clearcache-method",children:[]}]},{level:2,title:"fullName - field",slug:"fullname-field",link:"#fullname-field",children:[]},{level:2,title:"simpleName - field",slug:"simplename-field",link:"#simplename-field",children:[]},{level:2,title:"singleName - field",slug:"singlename-field",link:"#singlename-field",children:[]},{level:2,title:"from - method",slug:"from-method",link:"#from-method",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"fullName - method",slug:"fullname-method",link:"#fullname-method",children:[]},{level:2,title:"simpleName - method",slug:"simplename-method",link:"#simplename-method",children:[]},{level:2,title:"singleName - method",slug:"singlename-method",link:"#singlename-method",children:[]},{level:2,title:"fullName - method",slug:"fullname-method-1",link:"#fullname-method-1",children:[]},{level:2,title:"simpleName - method",slug:"simplename-method-1",link:"#simplename-method-1",children:[]},{level:2,title:"singleName - method",slug:"singlename-method-1",link:"#singlename-method-1",children:[]},{level:2,title:"extends - method",slug:"extends-method",link:"#extends-method",children:[]},{level:2,title:"extends - method",slug:"extends-method-1",link:"#extends-method-1",children:[]},{level:2,title:"implements - method",slug:"implements-method",link:"#implements-method",children:[]},{level:2,title:"implements - method",slug:"implements-method-1",link:"#implements-method-1",children:[]},{level:2,title:"anonymous - method",slug:"anonymous-method",link:"#anonymous-method",children:[]},{level:2,title:"noExtends - method",slug:"noextends-method",link:"#noextends-method",children:[]},{level:2,title:"noImplements - method",slug:"noimplements-method",link:"#noimplements-method",children:[]},{level:2,title:"noSuper - method",slug:"nosuper-method",link:"#nosuper-method",children:[]},{level:2,title:"enclosing - method",slug:"enclosing-method",link:"#enclosing-method",children:[]},{level:2,title:"enclosing - method",slug:"enclosing-method-1",link:"#enclosing-method-1",children:[]},{level:2,title:"FromPackageRules - class",slug:"frompackagerules-class",link:"#frompackagerules-class",children:[{level:3,title:"absolute - method",slug:"absolute-method",link:"#absolute-method",children:[]}]},{level:2,title:"ClassNameRules - class",slug:"classnamerules-class",link:"#classnamerules-class",children:[{level:3,title:"optional - method",slug:"optional-method",link:"#optional-method",children:[]}]},{level:2,title:"member - method",slug:"member-method",link:"#member-method",children:[]},{level:2,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:2,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:2,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:2,title:"Result - class",slug:"result-class",link:"#result-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"onNoClassDefFoundError - method",slug:"onnoclassdeffounderror-method",link:"#onnoclassdeffounderror-method",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html",pathLocale:"/en/",extraFields:[]},{title:"ConstructorFinder - class",headers:[{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-2",link:"#paramcount-method-2",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Process - class",slug:"process-class",link:"#process-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchConstructor - method",slug:"onnosuchconstructor-method",link:"#onnosuchconstructor-method",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method-1",link:"#remedys-method-1",children:[]},{level:3,title:"onNoSuchConstructor - method",slug:"onnosuchconstructor-method-1",link:"#onnosuchconstructor-method-1",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html",pathLocale:"/en/",extraFields:[]},{title:"FieldFinder - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"type - field",slug:"type-field",link:"#type-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"order - method",slug:"order-method",link:"#order-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"name - method",slug:"name-method-1",link:"#name-method-1",children:[]},{level:2,title:"type - method",slug:"type-method",link:"#type-method",children:[]},{level:2,title:"type - method",slug:"type-method-1",link:"#type-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchField - method",slug:"onnosuchfield-method",link:"#onnosuchfield-method",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html",pathLocale:"/en/",extraFields:[]},{title:"MethodFinder - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"returnType - field",slug:"returntype-field",link:"#returntype-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"order - method",slug:"order-method",link:"#order-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"name - method",slug:"name-method-1",link:"#name-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-2",link:"#paramcount-method-2",children:[]},{level:2,title:"returnType - method",slug:"returntype-method",link:"#returntype-method",children:[]},{level:2,title:"returnType - method",slug:"returntype-method-1",link:"#returntype-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Process - class",slug:"process-class",link:"#process-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchMethod - method",slug:"onnosuchmethod-method",link:"#onnosuchmethod-method",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method-1",link:"#remedys-method-1",children:[]},{level:3,title:"onNoSuchMethod - method",slug:"onnosuchmethod-method-1",link:"#onnosuchmethod-method-1",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]},{level:3,title:"array - method",slug:"array-method",link:"#array-method",children:[]},{level:3,title:"list - method",slug:"list-method",link:"#list-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html",pathLocale:"/en/",extraFields:[]},{title:"YukiXposedEvent - object",headers:[{level:2,title:"events - method",slug:"events-method",link:"#events-method",children:[]},{level:2,title:"onInitZygote - method",slug:"oninitzygote-method",link:"#oninitzygote-method",children:[]},{level:2,title:"onHandleLoadPackage - method",slug:"onhandleloadpackage-method",link:"#onhandleloadpackage-method",children:[]},{level:2,title:"onHandleInitPackageResources - method",slug:"onhandleinitpackageresources-method",link:"#onhandleinitpackageresources-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html",pathLocale:"/en/",extraFields:[]},{title:"YukiModuleResources - class",headers:[{level:2,title:"fwd - method",slug:"fwd-method",link:"#fwd-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html",pathLocale:"/en/",extraFields:[]},{title:"YukiResForwarder - class",headers:[{level:2,title:"id - field",slug:"id-field",link:"#id-field",children:[]},{level:2,title:"resources - field",slug:"resources-field",link:"#resources-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html",pathLocale:"/en/",extraFields:[]},{title:"YukiResources - class",headers:[{level:2,title:"LayoutInflatedParam - class",slug:"layoutinflatedparam-class",link:"#layoutinflatedparam-class",children:[{level:3,title:"variantName - field",slug:"variantname-field",link:"#variantname-field",children:[]},{level:3,title:"currentView - field",slug:"currentview-field",link:"#currentview-field",children:[]},{level:3,title:"findViewByIdentifier - method",slug:"findviewbyidentifier-method",link:"#findviewbyidentifier-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html",pathLocale:"/en/",extraFields:[]},{title:"ChannelData - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html",pathLocale:"/en/",extraFields:[]},{title:"ChannelPriority - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleClassLoader - class",headers:[{level:2,title:"companion object - object",slug:"companion-object-object",link:"#companion-object-object",children:[{level:3,title:"excludeHostClasses - method",slug:"excludehostclasses-method",link:"#excludehostclasses-method",children:[]},{level:3,title:"excludeModuleClasses - method",slug:"excludemoduleclasses-method",link:"#excludemoduleclasses-method",children:[]}]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html",pathLocale:"/en/",extraFields:[]},{title:"PrefsData - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html",pathLocale:"/en/",extraFields:[]},{title:"ModulePreferenceFragment - class",headers:[{level:2,title:"onCreatePreferencesInModuleApp - method",slug:"oncreatepreferencesinmoduleapp-method",link:"#oncreatepreferencesinmoduleapp-method",children:[]},{level:2,title:"onSharedPreferenceChanged - method",slug:"onsharedpreferencechanged-method",link:"#onsharedpreferencechanged-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html",pathLocale:"/en/",extraFields:[]},{title:"BaseFinder - class",headers:[{level:2,title:"BaseFinder.IndexTypeCondition - class",slug:"basefinder-indextypecondition-class",link:"#basefinder-indextypecondition-class",children:[{level:3,title:"index - method",slug:"index-method",link:"#index-method",children:[]},{level:3,title:"index - method",slug:"index-method-1",link:"#index-method-1",children:[]},{level:3,title:"IndexTypeConditionSort - class",slug:"indextypeconditionsort-class",link:"#indextypeconditionsort-class",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"DexClassFinder - class",headers:[{level:2,title:"companion object - object",slug:"companion-object-object",link:"#companion-object-object",children:[{level:3,title:"clearCache - method",slug:"clearcache-method",link:"#clearcache-method",children:[]}]},{level:2,title:"fullName - field",slug:"fullname-field",link:"#fullname-field",children:[]},{level:2,title:"simpleName - field",slug:"simplename-field",link:"#simplename-field",children:[]},{level:2,title:"singleName - field",slug:"singlename-field",link:"#singlename-field",children:[]},{level:2,title:"from - method",slug:"from-method",link:"#from-method",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"fullName - method",slug:"fullname-method",link:"#fullname-method",children:[]},{level:2,title:"simpleName - method",slug:"simplename-method",link:"#simplename-method",children:[]},{level:2,title:"singleName - method",slug:"singlename-method",link:"#singlename-method",children:[]},{level:2,title:"fullName - method",slug:"fullname-method-1",link:"#fullname-method-1",children:[]},{level:2,title:"simpleName - method",slug:"simplename-method-1",link:"#simplename-method-1",children:[]},{level:2,title:"singleName - method",slug:"singlename-method-1",link:"#singlename-method-1",children:[]},{level:2,title:"extends - method",slug:"extends-method",link:"#extends-method",children:[]},{level:2,title:"extends - method",slug:"extends-method-1",link:"#extends-method-1",children:[]},{level:2,title:"implements - method",slug:"implements-method",link:"#implements-method",children:[]},{level:2,title:"implements - method",slug:"implements-method-1",link:"#implements-method-1",children:[]},{level:2,title:"anonymous - method",slug:"anonymous-method",link:"#anonymous-method",children:[]},{level:2,title:"noExtends - method",slug:"noextends-method",link:"#noextends-method",children:[]},{level:2,title:"noImplements - method",slug:"noimplements-method",link:"#noimplements-method",children:[]},{level:2,title:"noSuper - method",slug:"nosuper-method",link:"#nosuper-method",children:[]},{level:2,title:"enclosing - method",slug:"enclosing-method",link:"#enclosing-method",children:[]},{level:2,title:"enclosing - method",slug:"enclosing-method-1",link:"#enclosing-method-1",children:[]},{level:2,title:"FromPackageRules - class",slug:"frompackagerules-class",link:"#frompackagerules-class",children:[{level:3,title:"absolute - method",slug:"absolute-method",link:"#absolute-method",children:[]}]},{level:2,title:"ClassNameRules - class",slug:"classnamerules-class",link:"#classnamerules-class",children:[{level:3,title:"optional - method",slug:"optional-method",link:"#optional-method",children:[]}]},{level:2,title:"member - method",slug:"member-method",link:"#member-method",children:[]},{level:2,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:2,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:2,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:2,title:"Result - class",slug:"result-class",link:"#result-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"onNoClassDefFoundError - method",slug:"onnoclassdeffounderror-method",link:"#onnoclassdeffounderror-method",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ConstructorFinder - class",headers:[{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-2",link:"#paramcount-method-2",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"constructor - method",slug:"constructor-method",link:"#constructor-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Process - class",slug:"process-class",link:"#process-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchConstructor - method",slug:"onnosuchconstructor-method",link:"#onnosuchconstructor-method",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method-1",link:"#remedys-method-1",children:[]},{level:3,title:"onNoSuchConstructor - method",slug:"onnosuchconstructor-method-1",link:"#onnosuchconstructor-method-1",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"FieldFinder - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"type - field",slug:"type-field",link:"#type-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"order - method",slug:"order-method",link:"#order-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"name - method",slug:"name-method-1",link:"#name-method-1",children:[]},{level:2,title:"type - method",slug:"type-method",link:"#type-method",children:[]},{level:2,title:"type - method",slug:"type-method-1",link:"#type-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"field - method",slug:"field-method",link:"#field-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchField - method",slug:"onnosuchfield-method",link:"#onnosuchfield-method",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"MethodFinder - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"returnType - field",slug:"returntype-field",link:"#returntype-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"order - method",slug:"order-method",link:"#order-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"name - method",slug:"name-method-1",link:"#name-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-2",link:"#paramcount-method-2",children:[]},{level:2,title:"returnType - method",slug:"returntype-method",link:"#returntype-method",children:[]},{level:2,title:"returnType - method",slug:"returntype-method-1",link:"#returntype-method-1",children:[]},{level:2,title:"superClass - method",slug:"superclass-method",link:"#superclass-method",children:[]},{level:2,title:"RemedyPlan - class",slug:"remedyplan-class",link:"#remedyplan-class",children:[{level:3,title:"method - method",slug:"method-method",link:"#method-method",children:[]},{level:3,title:"Result - class",slug:"result-class",link:"#result-class",children:[]}]},{level:2,title:"Process - class",slug:"process-class",link:"#process-class",children:[{level:3,title:"result - method",slug:"result-method",link:"#result-method",children:[]},{level:3,title:"all - method",slug:"all-method",link:"#all-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method",link:"#remedys-method",children:[]},{level:3,title:"onNoSuchMethod - method",slug:"onnosuchmethod-method",link:"#onnosuchmethod-method",children:[]}]},{level:2,title:"Result - class",slug:"result-class-1",link:"#result-class-1",children:[{level:3,title:"result - method",slug:"result-method-1",link:"#result-method-1",children:[]},{level:3,title:"get - method",slug:"get-method",link:"#get-method",children:[]},{level:3,title:"all - method",slug:"all-method-1",link:"#all-method-1",children:[]},{level:3,title:"give - method",slug:"give-method",link:"#give-method",children:[]},{level:3,title:"giveAll - method",slug:"giveall-method",link:"#giveall-method",children:[]},{level:3,title:"wait - method",slug:"wait-method",link:"#wait-method",children:[]},{level:3,title:"waitAll - method",slug:"waitall-method",link:"#waitall-method",children:[]},{level:3,title:"remedys - method",slug:"remedys-method-1",link:"#remedys-method-1",children:[]},{level:3,title:"onNoSuchMethod - method",slug:"onnosuchmethod-method-1",link:"#onnosuchmethod-method-1",children:[]},{level:3,title:"ignored - method",slug:"ignored-method",link:"#ignored-method",children:[]},{level:3,title:"Instance - class",slug:"instance-class",link:"#instance-class",children:[]},{level:3,title:"array - method",slug:"array-method",link:"#array-method",children:[]},{level:3,title:"list - method",slug:"list-method",link:"#list-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiXposedEvent - object",headers:[{level:2,title:"events - method",slug:"events-method",link:"#events-method",children:[]},{level:2,title:"onInitZygote - method",slug:"oninitzygote-method",link:"#oninitzygote-method",children:[]},{level:2,title:"onHandleLoadPackage - method",slug:"onhandleloadpackage-method",link:"#onhandleloadpackage-method",children:[]},{level:2,title:"onHandleInitPackageResources - method",slug:"onhandleinitpackageresources-method",link:"#onhandleinitpackageresources-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiModuleResources - class",headers:[{level:2,title:"fwd - method",slug:"fwd-method",link:"#fwd-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiResForwarder - class",headers:[{level:2,title:"id - field",slug:"id-field",link:"#id-field",children:[]},{level:2,title:"resources - field",slug:"resources-field",link:"#resources-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"YukiResources - class",headers:[{level:2,title:"LayoutInflatedParam - class",slug:"layoutinflatedparam-class",link:"#layoutinflatedparam-class",children:[{level:3,title:"variantName - field",slug:"variantname-field",link:"#variantname-field",children:[]},{level:3,title:"currentView - field",slug:"currentview-field",link:"#currentview-field",children:[]},{level:3,title:"findViewByIdentifier - method",slug:"findviewbyidentifier-method",link:"#findviewbyidentifier-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ChannelData - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ChannelPriority - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleClassLoader - class",headers:[{level:2,title:"companion object - object",slug:"companion-object-object",link:"#companion-object-object",children:[{level:3,title:"excludeHostClasses - method",slug:"excludehostclasses-method",link:"#excludehostclasses-method",children:[]},{level:3,title:"excludeModuleClasses - method",slug:"excludemoduleclasses-method",link:"#excludemoduleclasses-method",children:[]}]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"PrefsData - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModulePreferenceFragment - class",headers:[{level:2,title:"onCreatePreferencesInModuleApp - method",slug:"oncreatepreferencesinmoduleapp-method",link:"#oncreatepreferencesinmoduleapp-method",children:[]},{level:2,title:"onSharedPreferenceChanged - method",slug:"onsharedpreferencechanged-method",link:"#onsharedpreferencechanged-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"CountRules - class",headers:[{level:2,title:"Int.isZero - i-ext-method",slug:"int-iszero-i-ext-method",link:"#int-iszero-i-ext-method",children:[]},{level:2,title:"Int.moreThan - i-ext-method",slug:"int-morethan-i-ext-method",link:"#int-morethan-i-ext-method",children:[]},{level:2,title:"Int.lessThan - i-ext-method",slug:"int-lessthan-i-ext-method",link:"#int-lessthan-i-ext-method",children:[]},{level:2,title:"Int.inInterval - i-ext-method",slug:"int-ininterval-i-ext-method",link:"#int-ininterval-i-ext-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html",pathLocale:"/en/",extraFields:[]},{title:"ModifierRules - class",headers:[{level:2,title:"isPublic - i-ext-field",slug:"ispublic-i-ext-field",link:"#ispublic-i-ext-field",children:[]},{level:2,title:"isPrivate - i-ext-field",slug:"isprivate-i-ext-field",link:"#isprivate-i-ext-field",children:[]},{level:2,title:"isProtected - i-ext-field",slug:"isprotected-i-ext-field",link:"#isprotected-i-ext-field",children:[]},{level:2,title:"isStatic - i-ext-field",slug:"isstatic-i-ext-field",link:"#isstatic-i-ext-field",children:[]},{level:2,title:"isFinal - i-ext-field",slug:"isfinal-i-ext-field",link:"#isfinal-i-ext-field",children:[]},{level:2,title:"isSynchronized - i-ext-field",slug:"issynchronized-i-ext-field",link:"#issynchronized-i-ext-field",children:[]},{level:2,title:"isVolatile - i-ext-field",slug:"isvolatile-i-ext-field",link:"#isvolatile-i-ext-field",children:[]},{level:2,title:"isTransient - i-ext-field",slug:"istransient-i-ext-field",link:"#istransient-i-ext-field",children:[]},{level:2,title:"isNative - i-ext-field",slug:"isnative-i-ext-field",link:"#isnative-i-ext-field",children:[]},{level:2,title:"isInterface - i-ext-field",slug:"isinterface-i-ext-field",link:"#isinterface-i-ext-field",children:[]},{level:2,title:"isAbstract - i-ext-field",slug:"isabstract-i-ext-field",link:"#isabstract-i-ext-field",children:[]},{level:2,title:"isStrict - i-ext-field",slug:"isstrict-i-ext-field",link:"#isstrict-i-ext-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html",pathLocale:"/en/",extraFields:[]},{title:"NameRules - class",headers:[{level:2,title:"String.isSynthetic - i-ext-method",slug:"string-issynthetic-i-ext-method",link:"#string-issynthetic-i-ext-method",children:[]},{level:2,title:"String.isOnlySymbols - i-ext-method",slug:"string-isonlysymbols-i-ext-method",link:"#string-isonlysymbols-i-ext-method",children:[]},{level:2,title:"String.isOnlyLetters - i-ext-method",slug:"string-isonlyletters-i-ext-method",link:"#string-isonlyletters-i-ext-method",children:[]},{level:2,title:"String.isOnlyNumbers - i-ext-method",slug:"string-isonlynumbers-i-ext-method",link:"#string-isonlynumbers-i-ext-method",children:[]},{level:2,title:"String.isOnlyLettersNumbers - i-ext-method",slug:"string-isonlylettersnumbers-i-ext-method",link:"#string-isonlylettersnumbers-i-ext-method",children:[]},{level:2,title:"String.isOnlyLowercase - i-ext-method",slug:"string-isonlylowercase-i-ext-method",link:"#string-isonlylowercase-i-ext-method",children:[]},{level:2,title:"String.isOnlyUppercase - i-ext-method",slug:"string-isonlyuppercase-i-ext-method",link:"#string-isonlyuppercase-i-ext-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html",pathLocale:"/en/",extraFields:[]},{title:"ObjectRules - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html",pathLocale:"/en/",extraFields:[]},{title:"ConstructorRules - class",headers:[{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html",pathLocale:"/en/",extraFields:[]},{title:"FieldRules - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"type - field",slug:"type-field",link:"#type-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"type - method",slug:"type-method",link:"#type-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html",pathLocale:"/en/",extraFields:[]},{title:"MemberRules - class",headers:[{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html",pathLocale:"/en/",extraFields:[]},{title:"MethodRules - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"returnType - field",slug:"returntype-field",link:"#returntype-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"returnType - method",slug:"returntype-method",link:"#returntype-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleAppActivity - class",headers:[],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleAppCompatActivity - class",headers:[{level:2,title:"moduleTheme - field",slug:"moduletheme-field",link:"#moduletheme-field",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html",pathLocale:"/en/",extraFields:[]},{title:"ModuleContextThemeWrapper - class",headers:[{level:2,title:"applyConfiguration - method",slug:"applyconfiguration-method",link:"#applyconfiguration-method",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html",pathLocale:"/en/",extraFields:[]},{title:"CountRules - class",headers:[{level:2,title:"Int.isZero - i-ext-method",slug:"int-iszero-i-ext-method",link:"#int-iszero-i-ext-method",children:[]},{level:2,title:"Int.moreThan - i-ext-method",slug:"int-morethan-i-ext-method",link:"#int-morethan-i-ext-method",children:[]},{level:2,title:"Int.lessThan - i-ext-method",slug:"int-lessthan-i-ext-method",link:"#int-lessthan-i-ext-method",children:[]},{level:2,title:"Int.inInterval - i-ext-method",slug:"int-ininterval-i-ext-method",link:"#int-ininterval-i-ext-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModifierRules - class",headers:[{level:2,title:"isPublic - i-ext-field",slug:"ispublic-i-ext-field",link:"#ispublic-i-ext-field",children:[]},{level:2,title:"isPrivate - i-ext-field",slug:"isprivate-i-ext-field",link:"#isprivate-i-ext-field",children:[]},{level:2,title:"isProtected - i-ext-field",slug:"isprotected-i-ext-field",link:"#isprotected-i-ext-field",children:[]},{level:2,title:"isStatic - i-ext-field",slug:"isstatic-i-ext-field",link:"#isstatic-i-ext-field",children:[]},{level:2,title:"isFinal - i-ext-field",slug:"isfinal-i-ext-field",link:"#isfinal-i-ext-field",children:[]},{level:2,title:"isSynchronized - i-ext-field",slug:"issynchronized-i-ext-field",link:"#issynchronized-i-ext-field",children:[]},{level:2,title:"isVolatile - i-ext-field",slug:"isvolatile-i-ext-field",link:"#isvolatile-i-ext-field",children:[]},{level:2,title:"isTransient - i-ext-field",slug:"istransient-i-ext-field",link:"#istransient-i-ext-field",children:[]},{level:2,title:"isNative - i-ext-field",slug:"isnative-i-ext-field",link:"#isnative-i-ext-field",children:[]},{level:2,title:"isInterface - i-ext-field",slug:"isinterface-i-ext-field",link:"#isinterface-i-ext-field",children:[]},{level:2,title:"isAbstract - i-ext-field",slug:"isabstract-i-ext-field",link:"#isabstract-i-ext-field",children:[]},{level:2,title:"isStrict - i-ext-field",slug:"isstrict-i-ext-field",link:"#isstrict-i-ext-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"NameRules - class",headers:[{level:2,title:"String.isSynthetic - i-ext-method",slug:"string-issynthetic-i-ext-method",link:"#string-issynthetic-i-ext-method",children:[]},{level:2,title:"String.isOnlySymbols - i-ext-method",slug:"string-isonlysymbols-i-ext-method",link:"#string-isonlysymbols-i-ext-method",children:[]},{level:2,title:"String.isOnlyLetters - i-ext-method",slug:"string-isonlyletters-i-ext-method",link:"#string-isonlyletters-i-ext-method",children:[]},{level:2,title:"String.isOnlyNumbers - i-ext-method",slug:"string-isonlynumbers-i-ext-method",link:"#string-isonlynumbers-i-ext-method",children:[]},{level:2,title:"String.isOnlyLettersNumbers - i-ext-method",slug:"string-isonlylettersnumbers-i-ext-method",link:"#string-isonlylettersnumbers-i-ext-method",children:[]},{level:2,title:"String.isOnlyLowercase - i-ext-method",slug:"string-isonlylowercase-i-ext-method",link:"#string-isonlylowercase-i-ext-method",children:[]},{level:2,title:"String.isOnlyUppercase - i-ext-method",slug:"string-isonlyuppercase-i-ext-method",link:"#string-isonlyuppercase-i-ext-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ObjectRules - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ConstructorRules - class",headers:[{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"FieldRules - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"type - field",slug:"type-field",link:"#type-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"type - method",slug:"type-method",link:"#type-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"MemberRules - class",headers:[{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"MethodRules - class",headers:[{level:2,title:"name - field",slug:"name-field",link:"#name-field",children:[]},{level:2,title:"paramCount - field",slug:"paramcount-field",link:"#paramcount-field",children:[]},{level:2,title:"returnType - field",slug:"returntype-field",link:"#returntype-field",children:[]},{level:2,title:"modifiers - method",slug:"modifiers-method",link:"#modifiers-method",children:[]},{level:2,title:"emptyParam - method",slug:"emptyparam-method",link:"#emptyparam-method",children:[]},{level:2,title:"param - method",slug:"param-method",link:"#param-method",children:[]},{level:2,title:"param - method",slug:"param-method-1",link:"#param-method-1",children:[]},{level:2,title:"name - method",slug:"name-method",link:"#name-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method",link:"#paramcount-method",children:[]},{level:2,title:"paramCount - method",slug:"paramcount-method-1",link:"#paramcount-method-1",children:[]},{level:2,title:"returnType - method",slug:"returntype-method",link:"#returntype-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleAppActivity - class",headers:[],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleAppCompatActivity - class",headers:[{level:2,title:"moduleTheme - field",slug:"moduletheme-field",link:"#moduletheme-field",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"ModuleContextThemeWrapper - class",headers:[{level:2,title:"applyConfiguration - method",slug:"applyconfiguration-method",link:"#applyconfiguration-method",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"MemberRulesResult - class",headers:[{level:2,title:"none - method",slug:"none-method",link:"#none-method",children:[]},{level:2,title:"count - method",slug:"count-method",link:"#count-method",children:[]},{level:2,title:"count - method",slug:"count-method-1",link:"#count-method-1",children:[]},{level:2,title:"count - method",slug:"count-method-2",link:"#count-method-2",children:[]}],path:"/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html",pathLocale:"/en/",extraFields:[]},{title:"MemberRulesResult - class",headers:[{level:2,title:"none - method",slug:"none-method",link:"#none-method",children:[]},{level:2,title:"count - method",slug:"count-method",link:"#count-method",children:[]},{level:2,title:"count - method",slug:"count-method-1",link:"#count-method-1",children:[]},{level:2,title:"count - method",slug:"count-method-2",link:"#count-method-2",children:[]}],path:"/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html",pathLocale:"/zh-cn/",extraFields:[]},{title:"",headers:[],path:"/404.html",pathLocale:"/",extraFields:[]}],Br=ye(hf),df=()=>Br;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updateSearchIndex=e=>{Br.value=e});const uf=({searchIndex:e,routeLocale:t,query:l,maxSuggestions:i})=>{const o=Y(()=>e.value.filter(n=>n.pathLocale===t.value));return Y(()=>{const n=l.value.trim().toLowerCase();if(!n)return[];const a=[],r=(s,c)=>{sa(n,[c.title])&&a.push({link:`${s.path}#${c.slug}`,title:s.title,header:c.title});for(const h of c.children){if(a.length>=i.value)return;r(s,h)}};for(const s of o.value){if(a.length>=i.value)break;if(sa(n,[s.title,...s.extraFields])){a.push({link:s.path,title:s.title});continue}for(const c of s.headers){if(a.length>=i.value)break;r(s,c)}}return a})},pf=e=>{const t=ye(0);return{focusIndex:t,focusNext:()=>{t.value{t.value>0?t.value-=1:t.value=e.value.length-1}}},mf=ue({name:"SearchBox",props:{locales:{type:Object,required:!1,default:()=>({})},hotKeys:{type:Array,required:!1,default:()=>[]},maxSuggestions:{type:Number,required:!1,default:5}},setup(e){const{locales:t,hotKeys:l,maxSuggestions:i}=Ei(e),o=Zt(),n=Wl(),a=df(),r=ye(null),s=ye(!1),c=ye(""),h=Y(()=>{var L;return(L=t.value[n.value])!=null?L:{}}),p=uf({searchIndex:a,routeLocale:n,query:c,maxSuggestions:i}),{focusIndex:m,focusNext:g,focusPrev:x}=pf(p);cf({input:r,hotKeys:l});const P=Y(()=>s.value&&!!p.value.length),E=()=>{!P.value||x()},k=()=>{!P.value||g()},_=L=>{if(!P.value)return;const H=p.value[L];!H||o.push(H.link).then(()=>{c.value="",m.value=0})};return()=>he("form",{class:"search-box",role:"search"},[he("input",{ref:r,type:"search",placeholder:h.value.placeholder,autocomplete:"off",spellcheck:!1,value:c.value,onFocus:()=>s.value=!0,onBlur:()=>s.value=!1,onInput:L=>c.value=L.target.value,onKeydown:L=>{switch(L.key){case"ArrowUp":{E();break}case"ArrowDown":{k();break}case"Enter":{L.preventDefault(),_(m.value);break}}}}),P.value&&he("ul",{class:"suggestions",onMouseleave:()=>m.value=-1},p.value.map(({link:L,title:H,header:U},ee)=>he("li",{class:["suggestion",{focus:m.value===ee}],onMouseenter:()=>m.value=ee,onMousedown:()=>_(ee)},he("a",{href:L,onClick:w=>w.preventDefault()},[he("span",{class:"page-title"},H),U&&he("span",{class:"page-header"},`> ${U}`)]))))])}});const ff={"/en/":{placeholder:"Search"},"/zh-cn/":{placeholder:"\u641C\u7D22"}},gf=["s","/"],kf=5,vf=Ht({enhance({app:e}){e.component("SearchBox",t=>he(mf,{locales:ff,hotKeys:gf,maxSuggestions:kf,...t}))}}),oi=[Nd,Yd,Xd,nu,cu,mu,nf,vf];var Ur=ye(es),Wr=Co({key:"",path:"",title:"",lang:"",frontmatter:{},excerpt:"",headers:[]}),gt=ye(Wr),Ot=()=>gt;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updatePageData=e=>{Ur.value[e.key]=()=>Promise.resolve(e),e.key===gt.value.key&&(gt.value=e)});var Xr=Symbol(""),vt=()=>{const e=Me(Xr);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},qr=Symbol(""),bf=()=>{const e=Me(qr);if(!e)throw new Error("usePageHead() is called without provider.");return e},_f=Symbol(""),Kr=Symbol(""),yf=()=>{const e=Me(Kr);if(!e)throw new Error("usePageLang() is called without provider.");return e},No=Symbol(""),Wl=()=>{const e=Me(No);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},At=ye(Th),Gr=()=>At;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updateSiteData=e=>{At.value=e});var Qr=Symbol(""),jo=()=>{const e=Me(Qr);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},xf=Symbol(""),Ut=gl({resolvePageData:async e=>{const t=Ur.value[e],l=await(t==null?void 0:t());return l!=null?l:Wr},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,l)=>{const i=be(t.description)?t.description:l.description,o=[...te(t.head)?t.head:[],...l.head,["title",{},e],["meta",{name:"description",content:i}]];return Ih(o)},resolvePageHeadTitle:(e,t)=>`${e.title?`${e.title} | `:""}${t.title}`,resolvePageLang:e=>e.lang||"en",resolveRouteLocale:(e,t)=>pr(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),$o=ue({name:"ClientOnly",setup(e,t){const l=ye(!1);return Je(()=>{l.value=!0}),()=>{var i,o;return l.value?(o=(i=t.slots).default)==null?void 0:o.call(i):null}}}),Ef=ue({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=Ot(),l=Y(()=>mr[e.pageKey||t.value.key]);return()=>l.value?he(l.value):he("div","404 Not Found")}}),Cf="Layout",Rf="NotFound",Pf=oi.reduce((e,t)=>({...e,...t.layouts}),{}),ca=ue({name:"Vuepress",setup(){const e=Ot(),t=Y(()=>{let l;if(e.value.path){const i=e.value.frontmatter.layout;be(i)?l=i:l=Cf}else l=Rf;return Pf[l]});return()=>he(t.value)}}),Yo=e=>Ul(e)?e:`${Gr().value.base}${ur(e)}`;const Lf=[["v-8daa1a0e","/",{title:""},["/index.html","/index.md"]],["v-2d0a870d","/en/",{title:"Home"},["/en/index.html","/en/index.md"]],["v-c0c85b84","/zh-cn/",{title:"\u9996\u9875"},["/zh-cn/index.html","/zh-cn/index.md"]],["v-7a15fe3b","/en/about/about.html",{title:"About this Document"},["/en/about/about","/en/about/about.md"]],["v-3f851d14","/en/about/changelog.html",{title:"Changelog"},["/en/about/changelog","/en/about/changelog.md"]],["v-193cf592","/en/about/contacts.html",{title:"Contact Us"},["/en/about/contacts","/en/about/contacts.md"]],["v-ae7b83f2","/en/about/future.html",{title:"Looking for Future"},["/en/about/future","/en/about/future.md"]],["v-64fc7bb8","/en/api/home.html",{title:"Document Introduce"},["/en/api/home","/en/api/home.md"]],["v-9cfea7fc","/en/config/api-example.html",{title:"API Basic Configs"},["/en/config/api-example","/en/config/api-example.md"]],["v-72c12b7d","/en/config/api-exception.html",{title:"API Exception Handling"},["/en/config/api-exception","/en/config/api-exception.md"]],["v-793879e8","/en/config/api-using.html",{title:"Use as Hook API Configs"},["/en/config/api-using","/en/config/api-using.md"]],["v-29d6c1ba","/en/config/r8-proguard.html",{title:"R8 & Proguard Obfuscate"},["/en/config/r8-proguard","/en/config/r8-proguard.md"]],["v-24e71de7","/en/config/xposed-using.html",{title:"Use as Xposed Module Configs"},["/en/config/xposed-using","/en/config/xposed-using.md"]],["v-7b22efaf","/en/guide/example.html",{title:"Usage Example"},["/en/guide/example","/en/guide/example.md"]],["v-efb45d4c","/en/guide/home.html",{title:"Introduce"},["/en/guide/home","/en/guide/home.md"]],["v-277b35ca","/en/guide/knowledge.html",{title:"Basic Knowledge"},["/en/guide/knowledge","/en/guide/knowledge.md"]],["v-77d752a2","/en/guide/move-to-new-api.html",{title:"Migrate from Xposed API"},["/en/guide/move-to-new-api","/en/guide/move-to-new-api.md"]],["v-72889797","/en/guide/quick-start.html",{title:"Quick Start"},["/en/guide/quick-start","/en/guide/quick-start.md"]],["v-55c11626","/en/tools/yukihookapi-projectbuilder.html",{title:"YukiHookAPI Project Builder"},["/en/tools/yukihookapi-projectbuilder","/en/tools/yukihookapi-projectbuilder.md"]],["v-41967128","/zh-cn/about/about.html",{title:"\u5173\u4E8E\u6B64\u6587\u6863"},["/zh-cn/about/about","/zh-cn/about/about.md"]],["v-0e6c3476","/zh-cn/about/changelog.html",{title:"\u66F4\u65B0\u65E5\u5FD7"},["/zh-cn/about/changelog","/zh-cn/about/changelog.md"]],["v-6cf86266","/zh-cn/about/contacts.html",{title:"\u8054\u7CFB\u6211\u4EEC"},["/zh-cn/about/contacts","/zh-cn/about/contacts.md"]],["v-3106ca14","/zh-cn/about/future.html",{title:"\u5C55\u671B\u672A\u6765"},["/zh-cn/about/future","/zh-cn/about/future.md"]],["v-c8deafb2","/zh-cn/api/home.html",{title:"\u6587\u6863\u4ECB\u7ECD"},["/zh-cn/api/home","/zh-cn/api/home.md"]],["v-c6114c9e","/zh-cn/config/api-example.html",{title:"API \u57FA\u672C\u914D\u7F6E"},["/zh-cn/config/api-example","/zh-cn/config/api-example.md"]],["v-5b43296c","/zh-cn/config/api-exception.html",{title:"API \u5F02\u5E38\u5904\u7406"},["/zh-cn/config/api-exception","/zh-cn/config/api-exception.md"]],["v-2ee67152","/zh-cn/config/api-using.html",{title:"\u4F5C\u4E3A Hook API \u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E"},["/zh-cn/config/api-using","/zh-cn/config/api-using.md"]],["v-154d6f69","/zh-cn/config/r8-proguard.html",{title:"R8 \u4E0E Proguard \u6DF7\u6DC6"},["/zh-cn/config/r8-proguard","/zh-cn/config/r8-proguard.md"]],["v-af73b3d0","/zh-cn/config/xposed-using.html",{title:"\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E"},["/zh-cn/config/xposed-using","/zh-cn/config/xposed-using.md"]],["v-13b430a0","/zh-cn/guide/example.html",{title:"\u7528\u6CD5\u793A\u4F8B"},["/zh-cn/guide/example","/zh-cn/guide/example.md"]],["v-6a609e09","/zh-cn/guide/home.html",{title:"\u4ECB\u7ECD"},["/zh-cn/guide/home","/zh-cn/guide/home.md"]],["v-b4f1a468","/zh-cn/guide/knowledge.html",{title:"\u57FA\u7840\u77E5\u8BC6"},["/zh-cn/guide/knowledge","/zh-cn/guide/knowledge.md"]],["v-c0d5dada","/zh-cn/guide/move-to-new-api.html",{title:"\u4ECE Xposed API \u8FC1\u79FB"},["/zh-cn/guide/move-to-new-api","/zh-cn/guide/move-to-new-api.md"]],["v-24840ff0","/zh-cn/guide/quick-start.html",{title:"\u5FEB\u901F\u5F00\u59CB"},["/zh-cn/guide/quick-start","/zh-cn/guide/quick-start.md"]],["v-a2fab4d6","/zh-cn/tools/yukihookapi-projectbuilder.html",{title:"YukiHookAPI \u6784\u5EFA\u5DE5\u5177"},["/zh-cn/tools/yukihookapi-projectbuilder","/zh-cn/tools/yukihookapi-projectbuilder.md"]],["v-12042f1f","/en/api/special-features/host-inject.html",{title:"Host Resource Injection Extension"},["/en/api/special-features/host-inject","/en/api/special-features/host-inject.md"]],["v-deaff1d0","/en/api/special-features/host-lifecycle.html",{title:"Host Lifecycle Extension"},["/en/api/special-features/host-lifecycle","/en/api/special-features/host-lifecycle.md"]],["v-33c1dc26","/en/api/special-features/logger.html",{title:"Debug Logs"},["/en/api/special-features/logger","/en/api/special-features/logger.md"]],["v-581ddb9c","/en/api/special-features/reflection.html",{title:"Reflection Extensions"},["/en/api/special-features/reflection","/en/api/special-features/reflection.md"]],["v-2e6ad66c","/en/api/special-features/xposed-channel.html",{title:"Xposed Module and Host Channel"},["/en/api/special-features/xposed-channel","/en/api/special-features/xposed-channel.md"]],["v-68bebbf4","/en/api/special-features/xposed-storage.html",{title:"Xposed Module Data Storage"},["/en/api/special-features/xposed-storage","/en/api/special-features/xposed-storage.md"]],["v-6ac5be8e","/zh-cn/api/special-features/host-inject.html",{title:"\u5BBF\u4E3B\u8D44\u6E90\u6CE8\u5165\u6269\u5C55"},["/zh-cn/api/special-features/host-inject","/zh-cn/api/special-features/host-inject.md"]],["v-357a8d49","/zh-cn/api/special-features/host-lifecycle.html",{title:"\u5BBF\u4E3B\u751F\u547D\u5468\u671F\u6269\u5C55"},["/zh-cn/api/special-features/host-lifecycle","/zh-cn/api/special-features/host-lifecycle.md"]],["v-1f0f591e","/zh-cn/api/special-features/logger.html",{title:"\u8C03\u8BD5\u65E5\u5FD7"},["/zh-cn/api/special-features/logger","/zh-cn/api/special-features/logger.md"]],["v-001858e3","/zh-cn/api/special-features/reflection.html",{title:"\u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55"},["/zh-cn/api/special-features/reflection","/zh-cn/api/special-features/reflection.md"]],["v-598546c6","/zh-cn/api/special-features/xposed-channel.html",{title:"Xposed \u6A21\u5757\u4E0E\u5BBF\u4E3B\u901A\u8BAF\u6865"},["/zh-cn/api/special-features/xposed-channel","/zh-cn/api/special-features/xposed-channel.md"]],["v-0d914225","/zh-cn/api/special-features/xposed-storage.html",{title:"Xposed \u6A21\u5757\u6570\u636E\u5B58\u50A8"},["/zh-cn/api/special-features/xposed-storage","/zh-cn/api/special-features/xposed-storage.md"]],["v-053599a5","/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.html",{title:"YukiHookAPI - object"},["/en/api/public/com/highcapable/yukihookapi/YukiHookAPI","/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.md"]],["v-6931cb54","/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.html",{title:"YukiHookAPI - object"},["/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI","/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.md"]],["v-818b3ca6","/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html",{title:"InjectYukiHookWithXposed - annotation"},["/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed","/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.md"]],["v-b6a815c4","/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html",{title:"CurrentClass - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.md"]],["v-0183e3fc","/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html",{title:"GenericClass - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.md"]],["v-57506200","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html",{title:"HookClass - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.md"]],["v-9af56c1a","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html",{title:"HookResources - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources","/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.md"]],["v-032b1710","/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html",{title:"VariousClass - class"},["/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass","/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.md"]],["v-e288ce96","/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html",{title:"YukiBaseHooker - class"},["/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker","/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.md"]],["v-71147891","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html",{title:"YukiMemberHookCreator - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md"]],["v-5ed1ceee","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html",{title:"YukiResourcesHookCreator - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator","/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.md"]],["v-0d0fcec2","/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html",{title:"ReflectionFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory","/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.md"]],["v-65091354","/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html",{title:"YukiHookFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory","/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md"]],["v-60cbe1b4","/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html",{title:"HookParam - class"},["/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam","/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md"]],["v-b381a126","/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html",{title:"PackageParam - class"},["/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam","/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md"]],["v-30f3ba1e","/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html",{title:"InjectYukiHookWithXposed - annotation"},["/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed","/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.md"]],["v-6e47300f","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html",{title:"CurrentClass - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.md"]],["v-69c1c226","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html",{title:"GenericClass - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.md"]],["v-735374af","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html",{title:"HookClass - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.md"]],["v-1c516d22","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html",{title:"HookResources - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.md"]],["v-66735bfe","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html",{title:"VariousClass - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass","/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.md"]],["v-36aec5ad","/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html",{title:"LoggerFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory","/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.md"]],["v-3ac40680","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html",{title:"YukiMemberHookCreator - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.md"]],["v-5e81af42","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html",{title:"YukiResourcesHookCreator - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.md"]],["v-516df326","/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html",{title:"YukiBaseHooker - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker","/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.md"]],["v-213d88b3","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html",{title:"ReflectionFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.md"]],["v-448e9585","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html",{title:"YukiHookFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md"]],["v-004a009e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html",{title:"LoggerFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.md"]],["v-75a9b636","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html",{title:"HookParam - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.md"]],["v-100b529c","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html",{title:"PackageParam - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam","/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md"]],["v-8293d958","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html",{title:"ComponentTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.md"]],["v-7b0abf86","/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html",{title:"GraphicsTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.md"]],["v-5309e4a0","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html",{title:"ViewTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.md"]],["v-a2615d0c","/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html",{title:"DefinedTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.md"]],["v-ba01a600","/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html",{title:"VariableTypeFactory - kt"},["/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory","/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.md"]],["v-7fec5836","/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html",{title:"ModuleApplication - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication","/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.md"]],["v-7414265a","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html",{title:"YukiHookDataChannel - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.md"]],["v-003862c2","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html",{title:"YukiHookModulePrefs - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.md"]],["v-1d680acc","/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html",{title:"IYukiHookXposedInit - interface"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit","/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.md"]],["v-5e874c45","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html",{title:"ComponentTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.md"]],["v-4ea62475","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html",{title:"GraphicsTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.md"]],["v-ef79cde2","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html",{title:"ViewTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.md"]],["v-5acc12ab","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html",{title:"DefinedTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.md"]],["v-14ec8671","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html",{title:"VariableTypeFactory - kt"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory","/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.md"]],["v-4709ad58","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html",{title:"ModuleApplication - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.md"]],["v-632be8ee","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html",{title:"YukiHookDataChannel - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.md"]],["v-5858709e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html",{title:"YukiHookModulePrefs - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.md"]],["v-763140ee","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html",{title:"IYukiHookXposedInit - interface"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.md"]],["v-4fca92c0","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html",{title:"BaseFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.md"]],["v-2a898c66","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html",{title:"DexClassFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md"]],["v-a71937aa","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html",{title:"ConstructorFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.md"]],["v-42e0f0ab","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html",{title:"FieldFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.md"]],["v-a4aa4d00","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html",{title:"MethodFinder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.md"]],["v-19e7277e","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html",{title:"YukiXposedEvent - object"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.md"]],["v-8455e04e","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html",{title:"YukiModuleResources - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.md"]],["v-7b087cce","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html",{title:"YukiResForwarder - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.md"]],["v-a00b4de6","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html",{title:"YukiResources - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources","/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.md"]],["v-2f64a2d4","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html",{title:"ChannelData - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.md"]],["v-87027140","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html",{title:"ChannelPriority - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority","/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.md"]],["v-2d4e0da6","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html",{title:"ModuleClassLoader - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.md"]],["v-58ed8298","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html",{title:"PrefsData - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.md"]],["v-23e1a817","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html",{title:"ModulePreferenceFragment - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment","/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.md"]],["v-0f719471","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html",{title:"BaseFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.md"]],["v-45111efc","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html",{title:"DexClassFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md"]],["v-1e2cbc9c","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html",{title:"ConstructorFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.md"]],["v-22449c48","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html",{title:"FieldFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.md"]],["v-fd738322","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html",{title:"MethodFinder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.md"]],["v-0a4de82f","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html",{title:"YukiXposedEvent - object"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.md"]],["v-8266e0ec","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html",{title:"YukiModuleResources - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.md"]],["v-aa38fa86","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html",{title:"YukiResForwarder - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.md"]],["v-21b3b17e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html",{title:"YukiResources - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.md"]],["v-493d37f6","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html",{title:"ChannelData - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.md"]],["v-b57870de","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html",{title:"ChannelPriority - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.md"]],["v-4b468415","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html",{title:"ModuleClassLoader - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.md"]],["v-d99f7f36","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html",{title:"PrefsData - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.md"]],["v-53bcae06","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html",{title:"ModulePreferenceFragment - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.md"]],["v-52995ef7","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html",{title:"CountRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.md"]],["v-8d5ce71a","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html",{title:"ModifierRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.md"]],["v-f5b1ffb2","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html",{title:"NameRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.md"]],["v-652b815b","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html",{title:"ObjectRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.md"]],["v-08b70f7f","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html",{title:"ConstructorRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.md"]],["v-21f64ebf","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html",{title:"FieldRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.md"]],["v-77f11cf9","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html",{title:"MemberRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.md"]],["v-64827680","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html",{title:"MethodRules - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.md"]],["v-2d5d16db","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html",{title:"ModuleAppActivity - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.md"]],["v-cadbe48e","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html",{title:"ModuleAppCompatActivity - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.md"]],["v-78731c50","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html",{title:"ModuleContextThemeWrapper - class"},["/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper","/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.md"]],["v-1b2ad030","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html",{title:"CountRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.md"]],["v-547a3c3c","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html",{title:"ModifierRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.md"]],["v-58c26516","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html",{title:"NameRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.md"]],["v-80fd32ec","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html",{title:"ObjectRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.md"]],["v-a42f54a4","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html",{title:"ConstructorRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.md"]],["v-3e67a42e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html",{title:"FieldRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.md"]],["v-2cab152c","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html",{title:"MemberRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.md"]],["v-5388621e","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html",{title:"MethodRules - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.md"]],["v-1446bdca","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html",{title:"ModuleAppActivity - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.md"]],["v-c7cef530","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html",{title:"ModuleAppCompatActivity - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.md"]],["v-44efb702","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html",{title:"ModuleContextThemeWrapper - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper","/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.md"]],["v-5e375d98","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html",{title:"MemberRulesResult - class"},["/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult","/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.md"]],["v-b8000f3a","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html",{title:"MemberRulesResult - class"},["/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult","/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.md"]],["v-3706649a","/404.html",{title:""},["/404"]]];var Tf=()=>Lf.reduce((e,[t,l,i,o])=>(e.push({name:t,path:l,component:ca,meta:i},...o.map(n=>({path:n,redirect:l}))),e),[{name:"404",path:"/:catchAll(.*)",component:ca}]),Af=Gh,If=()=>{const e=Fd({history:Af(dr(At.value.base)),routes:Tf(),scrollBehavior:(t,l,i)=>i||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,l)=>{var i;(t.path!==l.path||l===mt)&&([gt.value]=await Promise.all([Ut.resolvePageData(t.name),(i=mr[t.name])==null?void 0:i.__asyncLoader()]))}),e},wf=e=>{e.component("ClientOnly",$o),e.component("Content",Ef)},Of=(e,t)=>{const l=Y(()=>Ut.resolveRouteLocale(At.value.locales,t.currentRoute.value.path)),i=Y(()=>Ut.resolveSiteLocaleData(At.value,l.value)),o=Y(()=>Ut.resolvePageFrontmatter(gt.value)),n=Y(()=>Ut.resolvePageHeadTitle(gt.value,i.value)),a=Y(()=>Ut.resolvePageHead(n.value,o.value,i.value)),r=Y(()=>Ut.resolvePageLang(gt.value));return e.provide(No,l),e.provide(Qr,i),e.provide(Xr,o),e.provide(_f,n),e.provide(qr,a),e.provide(Kr,r),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>o.value},$head:{get:()=>a.value},$headTitle:{get:()=>n.value},$lang:{get:()=>r.value},$page:{get:()=>gt.value},$routeLocale:{get:()=>l.value},$site:{get:()=>At.value},$siteLocale:{get:()=>i.value},$withBase:{get:()=>Yo}}),{pageData:gt,pageFrontmatter:o,pageHead:a,pageHeadTitle:n,pageLang:r,routeLocale:l,siteData:At,siteLocaleData:i}},Ff=()=>{const e=St(),t=bf(),l=yf(),i=ye([]),o=()=>{t.value.forEach(a=>{const r=zf(a);r&&i.value.push(r)})},n=()=>{document.documentElement.lang=l.value,i.value.forEach(a=>{a.parentNode===document.head&&document.head.removeChild(a)}),i.value.splice(0,i.value.length),t.value.forEach(a=>{const r=Df(a);r!==null&&(document.head.appendChild(r),i.value.push(r))})};Gt(xf,n),Je(()=>{o(),n(),dt(()=>e.path,()=>n())})},zf=([e,t,l=""])=>{const i=Object.entries(t).map(([r,s])=>be(s)?`[${r}="${s}"]`:s===!0?`[${r}]`:"").join(""),o=`head > ${e}${i}`;return Array.from(document.querySelectorAll(o)).find(r=>r.innerText===l)||null},Df=([e,t,l])=>{if(!be(e))return null;const i=document.createElement(e);return Oo(t)&&Object.entries(t).forEach(([o,n])=>{be(n)?i.setAttribute(o,n):n===!0&&i.setAttribute(o,"")}),be(l)&&i.appendChild(document.createTextNode(l)),i},Mf=Ph,Hf=async()=>{var l;const e=Mf({name:"VuepressApp",setup(){var i;Ff();for(const o of oi)(i=o.setup)==null||i.call(o);return()=>[he(Pr),...oi.flatMap(({rootComponents:o=[]})=>o.map(n=>he(n)))]}}),t=If();wf(e),Of(e,t);for(const i of oi)await((l=i.enhance)==null?void 0:l.call(i,{app:e,router:t,siteData:At}));return e.use(t),{app:e,router:t}};Hf().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{Te as _,jc as a,fe as b,Z as c,Hf as createVueApp,oe as d,Mt as e,N as o,_t as r,He as w}; diff --git a/docs/assets/changelog.html.65b4c0c8.js b/docs/assets/changelog.html.65b4c0c8.js deleted file mode 100644 index d6db907bd..000000000 --- a/docs/assets/changelog.html.65b4c0c8.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,r as c,o as s,c as l,b as e,d as t,a as i,e as o}from"./app.09f06ad9.js";const r={},h=i('

    Changelog

    The version update history of YukiHookAPI is recorded here.

    Pay Attention

    We will only maintain the latest API version, if you are using an outdate API version, you voluntarily renounce any possibility of maintenance.

    Notice

    To avoid translation time consumption, Changelog will use Google Translation from Chinese to English, please refer to the original text for actual reference.

    Time zone of version release date: UTC+8

    ',4),u={id:"_1-1-7-2023-02-01",tabindex:"-1"},m=e("a",{class:"header-anchor",href:"#_1-1-7-2023-02-01","aria-hidden":"true"},"#",-1),_=o(" 1.1.7 | 2023.02.01 \u2002"),p=o("Fixed the problem that the underlying Hook method cannot update the modified state synchronously when modifying parameters such as "),f=e("code",null,"result",-1),g=o(" during callback, thanks to the "),k={href:"https://github.com/fankes/YukiHookAPI/issues/23",target:"_blank",rel:"noopener noreferrer"},y=o("Issue"),b=o(" of "),x={href:"https://github.com/elvizlai",target:"_blank",rel:"noopener noreferrer"},w=o("Yongzheng Lai"),v=i("
  • Move the entry class name file automatically generated by YukiHookAPI from assets/yukihookapi_init to resources/META-INF/yukihookapi_init
  • When only printing the exception stack, the msg parameter is allowed to be empty and the msg parameter can not be set, and the log with the msg parameter left blank will not be logged unless the exception stack is not empty
  • Fixed the bug that the log printed by the exception that occurs in the body of the Hook callback method has no specific method information
  • HookParam adds instanceOrNull variable and method, which can be used on the premise that the Hook instance is not sure whether it is empty to prevent the Hook instance from being empty and throw an exception
  • Fixed some process conflicts that may occur when Xposed modules are loaded
  • Decoupled all hookers in Member lookup functionality to MemberBaseFinder.MemberHookerManager
  • Modified the usage of by condition in YukiMemberHookCreator, now you can reuse by method to set multiple conditions
  • Removed wrong Class object declaration in Android type
  • The registerReceiver method in PackageParam.AppLifecycle adds the function of directly using IntentFilter to create a system broadcast listener
  • Fixed the problem that there may be multiple registration lifecycles in PackageParam.AppLifecycle
  • ",10),A={id:"_1-1-6-2023-01-21",tabindex:"-1"},H=e("a",{class:"header-anchor",href:"#_1-1-6-2023-01-21","aria-hidden":"true"},"#",-1),P=o(" 1.1.6 | 2023.01.21 \u2002"),C=i("
    • Fixed the serious problem that ClassLoader does not match after PackageParam keeps a single instance when there may be multiple package names in the same process when Xposed Module is loaded
    • When the package name is not distinguished when there are multiple package names in the same process, stop loading the singleton child Hooker and print a warning message
    • Fixed the problem that the number of parameters is incorrect when methods such as HookParam.callOriginal, HookParam.invokeOriginal call the original method
    • Modify the method parameter name param of reflection calls in MethodFinder, ConstructorFinder, ReflectionFactory to args
    • Added the function of judging the parameters of the entry class constructor in the automatic processing program of the Xposed Module, the entry class needs to ensure that it does not have any constructor parameters
    ",1),F={id:"_1-1-5-2023-01-13",tabindex:"-1"},M=e("a",{class:"header-anchor",href:"#_1-1-5-2023-01-13","aria-hidden":"true"},"#",-1),I=o(" 1.1.5 | 2023.01.13 \u2002"),Y=i('
    • Standardize and optimize the overall code style
    • Privatized some APIs called internally
    • The underlying API interface is decoupled as a whole to prepare for compatibility with more Hook Frameworks
    • Move some of the functions integrated in the API to ksp-xposed dependencies (decoupling), and the separate introduction of api dependencies will no longer contain references to functions such as third-party libraries
    • Documentation Quick Start page added instructions on when YukiHookAPI.Configs.isDebug needs to be closed
    • Standardize Java Primitive Types in type definitions and sync update to docs
    • Java type adds NumberClass type
    • Improved (Xposed) Host environment recognition
    • Take over all exceptions after loading the Xposed Module, if an exception occurs, it will automatically intercept and print the error log
    • Modify the Class that does not exist in the lower Android system version (Android 5.0) in the type definition to be an empty safe type
    • Adapt and support native Xposed, the minimum recommended version is Android 7.0
    • Added support for Hook entry class declared as object type (singleton)
    • Fixed the problem that the system below Android 8 does not support the Executable type, causing the Hook to fail
    • Fixed the problem of reporting an error when using the Activity proxy function for systems below Android 9 and limit the minimum supported version of this function to Android 7.0
    • Added the prohibition of resource injection and Activity proxy function injection into the current module's own instance process to prevent problems
    • Fixed a serious error that the return value of a method in the Hook process is not consistent with the target's inherited class and interface.
    • Fixed the problem that the object is empty when calling HookParam.callOriginal and HookParam.invokeOriginal when the current Hook instance object is static
    • Optimize the function of judging the Tai Chi activation method and update the relevant instructions of the document synchronously
    • Obsolete YukiHookAPI.Status.executorName, YukiHookAPI.Status.executorVersion, please move to YukiHookAPI.Status.Executor
    • Adapted the YukiHookAPI.Status.Executor.name name display function of some third-party Hook Frameworks
    • Added Class.extends, Class.implements and other methods, which can more conveniently judge the inheritance and interface relationship of the current Class
    • Added generic methods of the same name as Class.toClass, Class.toClassOrNull and other related methods, you can use generics to constrain the instance object type of known Class
    • Modify the return value of the classOf<T> method to the generic type T to constrain the instance object type of the known Class
    • Added initialize parameter of Class related extension method, which can control whether to initialize its static method block at the same time when getting Class object
    • Added param { ... }, type { ... } and other usages in the variable, method, and construction method search functions, which can add more specific conditional judgments to the searched objects
    • The loadApp method of PackageParam adds the isExcludeSelf parameter, which can be used to exclude Hook-related functions from injecting into the module's own instance process
    • The onAppLifecycle method of PackageParam adds the isOnFailureThrowToApp parameter, which can directly throw the exception that occurs in the lifecycle method body to the host
    • Modify appClassLoader in PackageParam to be a modifiable variable, which can dynamically set the ClassLoader used by the host in the Hook process
    • Added dataExtra function in HookParam, which can be used to temporarily store the data in the Hook method body
    • Obsolete isRunInNewXShareMode, isXSharePrefsReadable in YukiHookModulePrefs, merged into isPreferencesAvailable
    • Class.allFields, Class.allMethods and other related methods add the isAccessible parameter, which can control when the member object can be set as an accessible type
    • Fixed the problem that only the last method body will be called back when receiving the same key-value data in an Activity when there are multiple hosts in YukiHookDataChannel
    • Added priority parameter in wait and other related methods of YukiHookDataChannel, you can pass in ChannelPriority to customize the conditions for callback data results
    • YukiHookDataChannel adds the function of automatically using ChannelDataWrapper type wrapper when sending data, which improves the user experience and enhances data protection
    • YukiHookDataChannel has added the function of limiting the maximum byte size of data sent at one time to prevent the app from crashing due to excessive data
    • YukiHookDataChannel has added the function of automatically segmenting when the sent data is too large, only supports List, Map, Set, String types
    • YukiHookLogger adds the contents method and the data parameter of saveToFile, which can be passed in custom debug log data for formatting or saving to a file
    • Fixed the problem that the debug log data package name processed by YukiHookLogger may be incorrect in the (Xposed) Host environment
    • Fixed the problem that the package name may be incorrect on some systems (in some system apps) when the Xposed Module loads the Resource Hook event
    ',1),R={id:"_1-1-4-2022-10-04",tabindex:"-1"},S=e("a",{class:"header-anchor",href:"#_1-1-4-2022-10-04","aria-hidden":"true"},"#",-1),L=o(" 1.1.4 | 2022.10.04 \u2002"),z=i("
    • Fixed the issue that YukiHookDataChannel may not respond to broadcast events in the system framework, reproduced in A13
    • Fixed the issue that YukiHookDataChannel could not communicate with Module App in Host App for multiple versions
    • Added obtainLoggerInMemoryData method in YukiHookDataChannel to share debug log data between module and host
    • Modify the type of YukiHookLogger.inMemoryData to ArrayList and change YukiLoggerData to data class
    • Fixed YukiLoggerData printing blank when the package name is empty in the module
    • Added loadApp, loadZygote, loadSystem, withProcess multi-parameter methods of the same name in PackageParam
    • Fixed some possible bugs
    ",1),T={id:"_1-1-3-2022-09-30",tabindex:"-1"},X=e("a",{class:"header-anchor",href:"#_1-1-3-2022-09-30","aria-hidden":"true"},"#",-1),D=o(" 1.1.3 | 2022.09.30 \u2002"),j=e("ul",null,[e("li",null,"Fixed a fatal bug where the Hook entry class name could not be customized"),e("li",null,[o("Added some code notes in "),e("code",null,"LoggerFactory"),o(" and updated special features documentation")])],-1),W={id:"_1-1-2-2022-09-30",tabindex:"-1"},O=e("a",{class:"header-anchor",href:"#_1-1-2-2022-09-30","aria-hidden":"true"},"#",-1),N=o(" 1.1.2 | 2022.09.30 \u2002"),B=i('
    • Documentation Basic Knowledge page add a friend link to the English version
    • Fixed YukiBaseHooker comments in English code note link errors
    • Fixed ClassCastException in ModuleClassLoader
    • Fixed and standardize some code notes
    • Added ModuleClassLoader exclusion list function, you can use excludeHostClasses and excludeModuleClasses methods to customize the exclusion list
    • Added YukiLoggerData real-time log data class, you can get the log array in real time through YukiHookLogger.inMemoryData
    • Added ClassLoader.listOfClasses method, which can directly get all Class in the current Dex
    ',1),E={id:"_1-1-1-2022-09-28",tabindex:"-1"},q=e("a",{class:"header-anchor",href:"#_1-1-1-2022-09-28","aria-hidden":"true"},"#",-1),U=o(" 1.1.1 | 2022.09.28 \u2002"),V=e("ul",null,[e("li",null,[o("Fixed the problem of wrong document friend links in "),e("a",{href:"../guide/knowledge"},"Basic Knowledge"),o(" page")]),e("li",null,[o("Fixed document "),e("code",null,"favicon"),o(" not showing up")]),e("li",null,[o("Fixed bug in "),e("code",null,"DexClassFinder"),o(" search conditions")])],-1),K={id:"_1-1-0-2022-09-28",tabindex:"-1"},Z=e("a",{class:"header-anchor",href:"#_1-1-0-2022-09-28","aria-hidden":"true"},"#",-1),G=o(" 1.1.0 | 2022.09.28 \u2002"),J=e("li",null,[o("This is a major version update, please refer to "),e("a",{href:"../api/home"},"API Document"),o(" and "),e("a",{href:"../api/special-features/reflection"},"Special Features"),o(" for the changes and usage mentioned in the changelog")],-1),Q=o("Change the help documentation framework to "),$={href:"https://v2.vuepress.vuejs.org",target:"_blank",rel:"noopener noreferrer"},ee=o("VuePress"),oe=i('
  • Unify and standardize the terms and nouns in the document, for example, "query" is always changed to "find", XposedHelper is misspelled and changed to XposedHelpers
  • Documentation Basic Knowledge page to add friend links, Simplified Chinese only
  • Convert Class and Method of Hook App Demo to Java to provide better demo effect
  • Fixed code comment naming in Hook Module Demo
  • Refactored a lot of low-level Hook logic and the docking method of Xposed API
  • Removed HookParamWrapper, it now interfaces directly with YukiBridgeFactory
  • Moved methods in section YukiHookBridge to AppParasitics
  • Removed HookParam.args and the underlying direct connection method setArgs, directly get and set the object of the current array
  • Optimized automatic handler to merge referenced jar into stub project
  • ',9),te=o("Fixed the problem that the module package name cannot be correctly matched when multi-project packaging, and modify the module package name matching logic of the automatic handler, thanks to "),de={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},ie=o("5ec1cff"),ne=o(" for the feedback and solutions provided"),ce=i("
  • Internal closure processing for the methods of API private tool classes to avoid polluting the top-level namespace
  • Fixed Creater naming to Creator for all reflection and Hook classes
  • Added YukiHookAPI.Status.compiledTimestamp function, which can get the compilation completion timestamp when used as an Xposed module
  • Added YukiHookAPI.Status.isXposedEnvironment function, which can determine whether the current (Xposed) host environment or module environment is
  • The debug logging function has been overhauled, and functions such as YukiHookAPI.Configs.debugTag have been merged into YukiHookLogger.Configs
  • The debug log can be added to specify the printing method as XposedBridge.log or Logd
  • The package name of the current host and the current user ID are added to the debug log by default for debugging, you can change it yourself in the debugLog configuration
  • Added generic function to reflect and call generics, you can use it in Class or CurrentClass
  • obsolete the buildOfAny method, now use the buildOf method directly (without generics) to use the constructor to create a new object and get the result Any
  • Fixed the issue of null pointer exception when using hasExtends
  • CurrentClass added non-lambda method of calling
  • CurrentClass adds name and simpleName functions
  • Completely rewrite the core method of ReflectionTool, sorting and classifying different search conditions
  • Fixed the problem that Member obtained by directly calling declared in ReflectionTool throws an exception
  • Fixed UndefinedType in ReflectionTool is not correctly judged in Method and Constructor conditions
  • Added a friendly prompt method when the reflection search result is abnormal, which can specifically locate the problem that Member cannot be found under specified conditions
  • Added VagueType condition in Method and Constructor for reflection search, which can be used in param condition to ignore parameters you don't want to fill in
  • Added paramCount { ... } condition in Method and Constructor of reflection search, now you can directly get it in it to customize your judgment condition
  • The current method is added to the FieldFinder result, which can directly create a call space for the result instance
  • Modified the modifiers condition and name condition in the reflection lookup function, now you need to return a Boolean at the end of the method body to make the condition true
  • ",20),ae=e("code",null,"as*",-1),se=o(" function in "),le=e("code",null,"ModifierRules",-1),re=o(" renamed to "),he=e("code",null,"is*",-1),ue=o(", thanks to "),me={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},_e=o("Kitsune"),pe=o(" suggestion"),fe=i("
  • Added RemedyPlan feature in FieldFinder
  • Added Class fuzzy search function (Beta) in Dex, you can now directly use searchClass function to fuzzy search Class with specified conditions
  • ",2),ge=o("Added multiple search function in reflection search, you can use relative search conditions to obtain multiple search results at the same time, thanks to "),ke=e("strong",null,"AA",-1),ye=o(" and "),be={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},xe=o("Kitsune"),we=o(" for suggestions"),ve=o("Fixed the problem that the object obtained by "),Ae=e("code",null,"appClassLoader",-1),He=o(" is incorrect in system applications in some systems, thanks to "),Pe={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Ce=o("Luckyzyx"),Fe=o(" for the feedback"),Me=e("li",null,[o("Modified the calling method of "),e("code",null,"XposedBridge.invokeOriginalMethod"),o(" and added "),e("code",null,"original"),o(" function in "),e("code",null,"MethodFinder.Result.Instance")],-1),Ie=o("Fixed the problem of wrong value of "),Ye=e("code",null,"getStringSet",-1),Re=o(" method in "),Se=e("code",null,"YukiHookModulePrefs",-1),Le=o(" and optimize the code style, thanks to "),ze={href:"https://github.com/Teddy-Zhu",target:"_blank",rel:"noopener noreferrer"},Te=o("Teddy_Zhu"),Xe=o(),De={href:"https://github.com/fankes/YukiHookAPI/pull/19",target:"_blank",rel:"noopener noreferrer"},je=o("PR"),We=e("li",null,[o("Modify "),e("code",null,"YukiHookModulePrefs"),o(" to intercept exceptions that may not exist in "),e("code",null,"XSharePreference")],-1),Oe=e("li",null,[o("Fixed the problem that "),e("code",null,"YukiHookDataChannel"),o(" could not be successfully registered in some third-party ROM system frameworks")],-1),Ne=e("li",null,[o("Secured "),e("code",null,"YukiHookDataChannel"),o(", now it can only communicate between modules from the specified package name and the host")],-1),Be=o("Added automatic hook "),Ee=e("code",null,"SharedPreferences",-1),qe=o(" to fix the problem that file permissions are not "),Ue=e("code",null,"0664",-1),Ve=o(" in some systems, thanks to "),Ke={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},Ze=o("5ec1cff"),Ge=o(" for the feedback and implementation code provided"),Je=i("
  • Added YukiHookAPI.Configs.isEnableHookSharedPreferences function, which is disabled by default and can be enabled if the permission of SharedPreferences is incorrect
  • Fixed the bug that the no-parameter construction method cannot be found when searching for Constructor without filling in the search conditions, thanks B5 KAKA for the feedback
  • Detach Result instances located in method, constructor in injectMember to Process
  • Added the useDangerousOperation method in the Hook process, which will automatically stop the Hook and print an error after the function in the Hook Dangerous List is not declared
  • Added module resource injection and Activity proxy functions, you can call injectModuleAppResources and registerModuleAppActivities to use
  • Added ModuleContextThemeWrapper function, you can call applyModuleTheme to create the Context of a module in any Activity
  • Added ClassLoader.onLoadClass function, which can be used to listen for events when the loadClass method of ClassLoader is called
  • obsolete classOf and clazz extension methods, add toClass and toClassOrNull usage, please move to the new method now
  • VariousClass adds a getOrNull method, which can return null instead of throwing an exception when it can't match Class
  • Removed isUseAppClassLoader parameter in PackageParam.hook, changed it to isForceUseAbsolute and automatically matched the target Class
  • PackageParam adds systemContext function, you can call this function at any time to get a persistent Context
  • no longer expose any methods in HookClass
  • Added throwToApp function in HookParam, which can throw exceptions directly to the host
  • The onFailureThrowToApp function is added to the Hook callback, which can be directly thrown to the host when an exception occurs
  • Modified the printing logic of the debug log, the time-consuming records in the reflection search function will only be printed during the Hook process
  • Added the function of removing Hook in the Hook process, you can use the remove and removeSelf methods to remove the hook
  • Fixed the issue that caused the host to throw an exception when ReplaceHook failed, and now it is modified to call the original method to ensure the normal operation of the host function
  • Added the function of checking the return value of the method in the Hook process. If the return value does not match, it will automatically throw an exception or print an error according to the situation
  • ",18),Qe=o("Added "),$e=e("code",null,"array",-1),eo=o(" type to Resources Hook, thanks to "),oo={href:"https://github.com/fankes/YukiHookAPI/pull/12",target:"_blank",rel:"noopener noreferrer"},to=o("PR"),io=o(" of "),no={href:"https://github.com/GSWXXN",target:"_blank",rel:"noopener noreferrer"},co=o("GSWXXN"),ao=e("li",null,[o("Moved "),e("code",null,"me.weishu.reflection"),o(" to "),e("code",null,"thirdparty"),o(" to prevent conflicting dependencies of the same name introduced at the same time")],-1),so=e("li",null,"Remove the exception thrown when the Hook method body is empty, and modify it to print the warning log",-1),lo=e("li",null,[o("Modify the exception handling logic of "),e("code",null,"AppLifecycle"),o(" and throw it directly to the host when an exception occurs")],-1),ro=e("li",null,"Updated Demo API version to 33",-1),ho={id:"_1-0-92-2022-05-31",tabindex:"-1"},uo=e("a",{class:"header-anchor",href:"#_1-0-92-2022-05-31","aria-hidden":"true"},"#",-1),mo=o(" 1.0.92 | 2022.05.31 \u2002"),_o=i("
    • Fixed the naming method of callback in a large number of methods
    • Changed the solution to fix the problem that YukiHookDataChannel cannot call back the current Activity broadcast on devices lower than Android 12
    • The InjectYukiHookWithXposed annotation adds the isUsingResourcesHook function, now you can selectively disable the dependency interface that automatically generates IXposedHookInitPackageResources
    ",1),po={id:"_1-0-91-2022-05-29",tabindex:"-1"},fo=e("a",{class:"header-anchor",href:"#_1-0-91-2022-05-29","aria-hidden":"true"},"#",-1),go=o(" 1.0.91 | 2022.05.29 \u2002"),ko=o("Fixed the "),yo=e("code",null,"ClassLoader",-1),bo=o(" error when the customized system of some devices is booted in the LSPosed environment, thanks to "),xo={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},wo=o("Luckyzyx"),vo=o(" for the feedback"),Ao=i("
  • Fixed YukiHookDataChannel not being able to call back the current Activity broadcast on ZUI and systems below Android 12
  • Integrate the YukiHookModuleStatus function into YukiHookAPI.Status, rewrite a lot of methods, now you can judge the status information such as module activation in the module and the host in both directions
  • ",2),Ho={id:"_1-0-90-2022-05-27",tabindex:"-1"},Po=e("a",{class:"header-anchor",href:"#_1-0-90-2022-05-27","aria-hidden":"true"},"#",-1),Co=o(" 1.0.90 | 2022.05.27 \u2002"),Fo=i("
    • Fixed YukiHookDataChannel crashing when the module sets the listener callback
    • Fixed YukiHookDataChannel still calling back when not in current Activity
    • Remove the default value of YukiHookDataChannel callback event, no callback
    • Removed YukiHookModulePrefs warning printed if XShare is unreadable
    • Added the isXSharePrefsReadable method in YukiHookModulePrefs to determine whether the current XShare is available
    ",1),Mo={id:"_1-0-89-2022-05-26",tabindex:"-1"},Io=e("a",{class:"header-anchor",href:"#_1-0-89-2022-05-26","aria-hidden":"true"},"#",-1),Yo=o(" 1.0.89 | 2022.05.26 \u2002"),Ro=i("
    • Fixed the problem that YukiHookDataChannel cannot be repeatedly set to monitor, and added the function of repeating response in different Activity modules and automatically following Activity to destroy the monitor function
    • Added YukiHookDataChannel repeated listening use case description document
    • Add the onAlreadyHooked method to determine whether the current method is repeated Hook
    • Modify part of the logic of repeatedly adding HashMap, remove the putIfAbsent method, allow to override the addition
    • Fixed several possible bugs
    ",1),So={id:"_1-0-88-2022-05-25",tabindex:"-1"},Lo=e("a",{class:"header-anchor",href:"#_1-0-88-2022-05-25","aria-hidden":"true"},"#",-1),zo=o(" 1.0.88 | 2022.05.25 \u2002"),To=i("
    • Fully decoupled from Xposed API
    • Added android type in type
    • Separate YukiHookModuleStatus from auto-generated code and add isEnableHookModuleStatus switch, it is up to you to enable or not
    • Internal closure processing for the constructors of a large number of classes in the API
    • Set YukiHookModulePrefs to run as a singleton to prevent repeated creation and waste of system resources
    • Fixed the bug that Hook cannot be nested since version 1.0.80, and optimize the related functions of nested Hook
    • Modify the Hooker storage scheme from HashSet to HashMap to prevent the problem of repeatedly adding Hookers
    • Modify the core implementation method of Hook, add duplicate checking to avoid repeating the Hook multiple callbacks to the HookParam method
    • MethodFinder and FieldFinder add the function of finding fuzzy methods and variable names, you can call name { ... } to set search conditions, and support regular expressions
    • Optimize and modify the way to get appContext to reduce the possibility of getting empty
    • Modify the print TAG of logger in the automatically generated code to default to your custom name, which is convenient for debugging
    • Optimize the Hooker implementation of YukiHookBridge to improve Hook performance
    • PackageParam adds the onAppLifecycle method, which can natively monitor the life cycle of the host and implement the registration system broadcast function
    • Added YukiHookDataChannel function to communicate using system out-of-order broadcast while the module and the host remain alive
    • YukiHookDataChannel adds the checkingVersionEquals method, which can be monitored to verify that the host has not updated the version mismatch problem after the module is updated
    • Added Java version example in the example code of demo-module for reference only
    ",1),Xo={id:"_1-0-87-2022-05-10",tabindex:"-1"},Do=e("a",{class:"header-anchor",href:"#_1-0-87-2022-05-10","aria-hidden":"true"},"#",-1),jo=o(" 1.0.87 | 2022.05.10 \u2002"),Wo=e("ul",null,[e("li",null,[o("Added "),e("code",null,"refreshModuleAppResources"),o(" function to adapt Resources refresh when the language region, font size, resolution changes, etc.")]),e("li",null,[o("Added "),e("code",null,"isEnableModuleAppResourcesCache"),o(" function, you can set whether to automatically cache the resources of the current module")])],-1),Oo={id:"_1-0-86-2022-05-06",tabindex:"-1"},No=e("a",{class:"header-anchor",href:"#_1-0-86-2022-05-06","aria-hidden":"true"},"#",-1),Bo=o(" 1.0.86 | 2022.05.06 \u2002"),Eo=e("ul",null,[e("li",null,[o("Fixed the problem of continuous error reporting during "),e("code",null,"initZygote"),o(" when Resources Hook is not supported, reproduced in "),e("strong",null,"ZUI"),o("/"),e("strong",null,"LSPosed CI(1.8.3-6550)")]),e("li",null,"Optimize and handle exceptions for Resources Hook, only print errors and warnings if they are used and not supported")],-1),qo={id:"_1-0-85-2022-05-04",tabindex:"-1"},Uo=e("a",{class:"header-anchor",href:"#_1-0-85-2022-05-04","aria-hidden":"true"},"#",-1),Vo=o(" 1.0.85 | 2022.05.04 \u2002"),Ko=e("ul",null,[e("li",null,[o("Fixed a serious problem of not being able to hook the system framework, since "),e("code",null,"1.0.80")]),e("li",null,[o("Added in the debug log to distinguish the package name loaded by "),e("code",null,"initZygote"),o(" as "),e("code",null,"android-zygote"),o(", "),e("code",null,"packageName"),o(" keeps "),e("code",null,"android"),o(" unchanged")])],-1),Zo={id:"_1-0-83-2022-05-04",tabindex:"-1"},Go=e("a",{class:"header-anchor",href:"#_1-0-83-2022-05-04","aria-hidden":"true"},"#",-1),Jo=o(" 1.0.83 | 2022.05.04 \u2002"),Qo=e("ul",null,[e("li",null,[o("Fixed "),e("code",null,"YukiHookModuleStatus"),o(" reporting a lot of errors after "),e("code",null,"loadSystem")]),e("li",null,[o("Added "),e("code",null,"android"),o(" type in "),e("code",null,"type")]),e("li",null,"Updated example descriptions in help documentation")],-1),$o={id:"_1-0-82-2022-05-04",tabindex:"-1"},et=e("a",{class:"header-anchor",href:"#_1-0-82-2022-05-04","aria-hidden":"true"},"#",-1),ot=o(" 1.0.82 | 2022.05.04 \u2002"),tt=e("ul",null,[e("li",null,[o("Fixed a concept confusion error, distinguishing the relationship between "),e("code",null,"initZygote"),o(" and the system framework, there are problems with the previous comments and documentation, I am very sorry")]),e("li",null,[e("code",null,"PackageParam"),o(" adds "),e("code",null,"loadSystem"),o(" method, no need to write "),e("code",null,'loadApp(name = "android")'),o(" to hook the system framework")])],-1),dt={id:"_1-0-81-2022-05-04",tabindex:"-1"},it=e("a",{class:"header-anchor",href:"#_1-0-81-2022-05-04","aria-hidden":"true"},"#",-1),nt=o(" 1.0.81 | 2022.05.04 \u2002"),ct=e("ul",null,[e("li",null,[o("Fixed the problem that the method and constructor that cannot be found in the Hook method body still output the error log after setting the condition using the "),e("code",null,"by"),o(" method")]),e("li",null,"Added a global log to display the package name of the current Hook APP during the execution of the Hook, and fixed a problem with the printing style of the error log")],-1),at={id:"_1-0-80-2022-05-01",tabindex:"-1"},st=e("a",{class:"header-anchor",href:"#_1-0-80-2022-05-01","aria-hidden":"true"},"#",-1),lt=o(" 1.0.80 | 2022.05.01 \u2002"),rt=i("
  • The InjectYukiHookWithXposed annotation adds the entryClassName function, which can customize the generated xposed_init entry class name
  • YukiHookXposedInitProxy renamed to IYukiHookXposedInit, the original interface name has been invalidated and will be deleted directly in subsequent versions
  • Added initZygote and Resources Hook functions to support Hook Layout
  • Added onXposedEvent method to listen to all events of native Xposed API
  • Perform inline processing on the lambda of the Hook function to avoid generating excessively broken anonymous classes and improve the running performance after compilation
  • Fixed PrefsData compiled method body copy is too large
  • Added XSharePreference readability test, which will automatically print a warning log if it fails
  • PackageParam adds appResources, moduleAppResources, moduleAppFilePath functions
  • loadApp of PackageParam adds the function of not writing name, and all APPs are filtered by default
  • PackageParam adds the loadZygote method, which can directly hook the system framework
  • PackageParam added resources().hook function
  • Optimization method, construction method, variable search function, the error log that cannot be found will display the set query conditions first
  • Added hasExtends extension method to determine whether the current Class has an inheritance relationship
  • Added isSupportResourcesHook function to determine whether resource hooks are currently supported (Resources Hook)
  • current function adds superClass method to call superclass
  • New superClass query conditions for search methods, construction methods and variables, you can continue to search in the parent class
  • YukiHookAPI lots of methods are decoupled from Xposed API
  • Added native Hook priority function of Xposed API
  • Fixed the problem that isFirstApplication may be inaccurate
  • Block the problem that MiuiCatcherPatch repeatedly calls the Hook entry method on the MIUI system
  • Optimize Hook entry calling method to avoid multiple calls due to Hook Framework issues
  • ",21),ht=o("Fixed the problem that Hook "),ut=e("code",null,"ClassLoader",-1),mt=o(" causes Hook to freeze, thanks to "),_t={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},pt=o("WankkoRee"),ft=o(" for the feedback"),gt=e("li",null,[o("Improve the performance after the "),e("code",null,"XC_Callback"),o(" interface is connected")],-1),kt=e("li",null,[o("Java "),e("code",null,"type"),o(" added "),e("code",null,"ClassLoader"),o(" type")],-1),yt=e("li",null,"Optimize the API help documentation, fix the problem that the page may be continuously cached",-1),bt={id:"_1-0-78-2022-04-18",tabindex:"-1"},xt=e("a",{class:"header-anchor",href:"#_1-0-78-2022-04-18","aria-hidden":"true"},"#",-1),wt=o(" 1.0.78 | 2022.04.18 \u2002"),vt=i("
  • YukiHookModulePrefs adds isRunInNewXShareMode method, which can be used to determine whether the module is currently in New XSharePreference mode
  • Fixed YukiHookModulePrefs working in New XSharePreference mode
  • Added ModulePreferenceFragment, now you can completely replace PreferenceFragmentCompat and start using the new functionality
  • ",3),At=o("Adapt the Sp data storage solution of "),Ht=e("code",null,"PreferenceFragmentCompat",-1),Pt=o(", thanks to "),Ct={href:"https://github.com/mahoshojoHCG",target:"_blank",rel:"noopener noreferrer"},Ft=o("mahoshojoHCG"),Mt=o(" for feedback"),It=e("li",null,[o("Update autohandlers and "),e("code",null,"Kotlin"),o(" dependencies to the latest version")],-1),Yt=e("li",null,"Fixed some bugs in documentation and code comments",-1),Rt={id:"_1-0-77-2022-04-15",tabindex:"-1"},St=e("a",{class:"header-anchor",href:"#_1-0-77-2022-04-15","aria-hidden":"true"},"#",-1),Lt=o(" 1.0.77 | 2022.04.15 \u2002"),zt=e("code",null,"YukiHookModulePrefs",-1),Tt=o(" added "),Xt=e("code",null,"clear",-1),Dt=o(" method, thanks to "),jt={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Wt=o("WankkoRee"),Ot=o(" for the suggestion"),Nt=i("
  • YukiHookModulePrefs added getStringSet, putStringSet, all methods
  • Added any method to args of HookParam
  • Added ModuleApplication, which can be inherited in modules to achieve more functions
  • Connect all findClass functions to the Xposed API, and continue to use native ClassLoader in non-hosted environments
  • Fixed some possible bugs
  • ",5),Bt={id:"_1-0-75-2022-04-13",tabindex:"-1"},Et=e("a",{class:"header-anchor",href:"#_1-0-75-2022-04-13","aria-hidden":"true"},"#",-1),qt=o(" 1.0.75 | 2022.04.13 \u2002"),Ut=o("Corrected the logic recognition part of the automatic handler, thanks to "),Vt={href:"https://github.com/ApeaSuperz",target:"_blank",rel:"noopener noreferrer"},Kt=o("ApeaSuperz"),Zt=o(" contribution"),Gt=i("
  • Fixed an issue where the reference to a doc comment was not changed
  • firstArgs and lastArgs methods have been removed from HookParam, now you can use args().first() and args().last() instead of it
  • Removed default parameter index = 0 in args() in HookParam, now you can use args().first() or args(index = 0) to replace it
  • The result function in HookParam adds generic matching, now you can use result<T> to match the known return value type of your target method
  • The emptyParam condition is added to the method and constructor query function, and the misunderstanding of the query condition that needs to be paid attention to in the document has been improved
  • Added android type in type
  • ",6),Jt={id:"_1-0-73-2022-04-10",tabindex:"-1"},Qt=e("a",{class:"header-anchor",href:"#_1-0-73-2022-04-10","aria-hidden":"true"},"#",-1),$t=o(" 1.0.73 | 2022.04.10 \u2002"),ed=o("Fixed some Chinese translation errors in documents, thanks to "),od={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},td=o("WankkoRee"),dd=o(" for their contributions"),id=o("Fixed the problem that "),nd=e("code",null,"XC_LoadPackage.LoadPackageParam",-1),cd=o(" throws an exception when the content is empty in some cases, thanks to "),ad={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},sd=o("Luckyzyx"),ld=o(" for the feedback"),rd=e("li",null,"Fixed some known bugs and improve Hook stability",-1),hd={id:"_1-0-72-2022-04-09",tabindex:"-1"},ud=e("a",{class:"header-anchor",href:"#_1-0-72-2022-04-09","aria-hidden":"true"},"#",-1),md=o(" 1.0.72 | 2022.04.09 \u2002"),_d=e("ul",null,[e("li",null,"Update API documentation to new address"),e("li",null,[o("Add "),e("code",null,"appContext"),o(" function to "),e("code",null,"PackageParam")]),e("li",null,"Fixed some known bugs and improve Hook stability")],-1),pd={id:"_1-0-71-2022-04-04",tabindex:"-1"},fd=e("a",{class:"header-anchor",href:"#_1-0-71-2022-04-04","aria-hidden":"true"},"#",-1),gd=o(" 1.0.71 | 2022.04.04 \u2002"),kd=e("ul",null,[e("li",null,"Fixed a serious issue that would stop the Hook from throwing an exception when VariousClass could not be matched")],-1),yd={id:"_1-0-70-2022-04-04",tabindex:"-1"},bd=e("a",{class:"header-anchor",href:"#_1-0-70-2022-04-04","aria-hidden":"true"},"#",-1),xd=o(" 1.0.70 | 2022.04.04 \u2002"),wd=e("li",null,[o("Fixed "),e("code",null,"instanceClass"),o(" reporting an error after being called in a static instance")],-1),vd=o("Add "),Ad=e("code",null,"isUseAppClassLoader",-1),Hd=o(" function in Hook process, thanks to "),Pd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Cd=o("WankkoRee"),Fd=o(" for feedback"),Md=e("li",null,[o("Added the "),e("code",null,"withProcess"),o(" function, which can be hooked according to the currently specified process of the APP")],-1),Id=e("li",null,"Fixed critical logic errors in lookup methods, constructor classes and variables",-1),Yd=e("li",null,"Fixed the problem that the abnormal output cannot be ignored when the Hook target class does not exist",-1),Rd=e("li",null,"Fixed the problem that the Hook could not take effect due to the fast loading of the APP startup method in some cases",-1),Sd=o("Fixed "),Ld=e("code",null,"allMethods",-1),zd=o(" not throwing an exception when it is not hooked to a method, thanks to "),Td={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Xd=o("WankkoRee"),Dd=o(" for the feedback"),jd=o("Added Hook status monitoring function, thanks to "),Wd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Od=o("WankkoRee"),Nd=o(" for the suggestion"),Bd=e("li",null,"Modify the way the Xposed entry is injected into the class, and redefine the definition domain of the API",-1),Ed=o("Added obfuscated method and variable lookup function, you can use different types of filter "),qd=e("code",null,"index",-1),Ud=o(" to locate the specified method and variable, thanks to "),Vd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Kd=o("WankkoRee"),Zd=o(" for the ideas provided"),Gd=e("li",null,[o("When looking for methods and variables, multiple types are allowed, such as the class name declared by "),e("code",null,"String"),o(" and "),e("code",null,"VariousClass")],-1),Jd=e("li",null,[o("Add a new "),e("code",null,"current"),o(" function, which can build a reflection method operation space for any class, and easily call and modify the methods and variables in it")],-1),Qd=o("Fixed a lot of bugs in the hook process, thanks to "),$d={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},ei=o("WankkoRee"),oi=o(" for contributing to this project"),ti={id:"_1-0-69-2022-03-30",tabindex:"-1"},di=e("a",{class:"header-anchor",href:"#_1-0-69-2022-03-30","aria-hidden":"true"},"#",-1),ii=o(" 1.0.69 | 2022.03.30 \u2002"),ni=e("li",null,"Added and improved annotations for some method functions",-1),ci=e("li",null,"Added more example Hook content in Demo",-1),ai=o("Fixed the issue that only the last one takes effect when "),si=e("code",null,"allMethods",-1),li=o(" is used multiple times in a Hook instance, thanks to "),ri={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},hi=o("WankkoRee"),ui=o(" for the feedback"),mi={id:"_1-0-68-2022-03-29",tabindex:"-1"},_i=e("a",{class:"header-anchor",href:"#_1-0-68-2022-03-29","aria-hidden":"true"},"#",-1),pi=o(" 1.0.68 | 2022.03.29 \u2002"),fi=i("
    • Added new use case and LSPosed scope in Demo
    • Added Member lookup cache and lookup cache configuration switches
    • Removed and modified MethodFinder, FieldFinder and HookParam related method calls
    • Add more cast types in Finder and support cast as array
    • Overall performance and stability improvements
    • Fixed bugs that may exist in the previous version
    ",1),gi={id:"_1-0-67-2022-03-27",tabindex:"-1"},ki=e("a",{class:"header-anchor",href:"#_1-0-67-2022-03-27","aria-hidden":"true"},"#",-1),yi=o(" 1.0.67 | 2022.03.27 \u2002"),bi=i("
    • Added three modifiers functions in Finder, which can filter static, native, public, abstract and many other description types
    • When searching for methods and constructors, the method parameter type can be blurred to a specified number for searching
    • Added hasModifiers extension for Member
    • Added give method in MethodFinder and ConstructorFinder to get primitive types
    • Added PrefsData template function in YukiHookModulePrefs
    • Completely refactored method, constructor and variable lookup scheme
    • Optimized code comments and fixed possible bugs
    ",1),xi={id:"_1-0-66-2022-03-25",tabindex:"-1"},wi=e("a",{class:"header-anchor",href:"#_1-0-66-2022-03-25","aria-hidden":"true"},"#",-1),vi=o(" 1.0.66 | 2022.03.25 \u2002"),Ai=e("ul",null,[e("li",null,[o("Fixed a serious bug in "),e("code",null,"MethodFinder")]),e("li",null,[o("Added "),e("code",null,"args"),o(" call method in "),e("code",null,"hookParam")]),e("li",null,"Fixed other possible problems and fix some class annotation problems")],-1),Hi={id:"_1-0-65-2022-03-25",tabindex:"-1"},Pi=e("a",{class:"header-anchor",href:"#_1-0-65-2022-03-25","aria-hidden":"true"},"#",-1),Ci=o(" 1.0.65 | 2022.03.25 \u2002"),Fi=i("
    • Republished version to fix the incorrect new version of the Maven repository due to cache issues
    • Added MethodFinder and FieldFinder new return value calling methods
    • Fixed possible problems and fix possible problems during the use of Tai Chi
    • Fixed possible problems with auto-generated Xposed entry classes
    • Added android type and java type in type
    ",1),Mi={id:"_1-0-6-2022-03-20",tabindex:"-1"},Ii=e("a",{class:"header-anchor",href:"#_1-0-6-2022-03-20","aria-hidden":"true"},"#",-1),Yi=o(" 1.0.6 | 2022.03.20 \u2002"),Ri=i("
    • Fixed YukiHookModulePrefs being ignored every time after using direct once to ignore cache
    • Added new API, abolished the traditional usage of isActive to judge module activation
    • Fixed the issue of printing debug logs when using the API in a non-Xposed environment
    • Fixed log output issue and unintercepted exception issue when looking for Field
    • Decoupling Xposed API in ReflectionUtils
    • Added YukiHookModuleStatus method name confusion to reduce the size of module generation
    • The welcome message will no longer be printed when loading the module's own Hook
    • Fixed some bugs that still exist in the previous version
    ",1),Si={id:"_1-0-55-2022-03-18",tabindex:"-1"},Li=e("a",{class:"header-anchor",href:"#_1-0-55-2022-03-18","aria-hidden":"true"},"#",-1),zi=o(" 1.0.55 | 2022.03.18 \u2002"),Ti=e("ul",null,[e("li",null,"Fixed an annotation error"),e("li",null,"Temporarily fix a bug"),e("li",null,[o("Added a large number of "),e("code",null,"android"),o(" types in "),e("code",null,"type"),o(" and a small number of "),e("code",null,"java"),o(" types")]),e("li",null,"Fixed compatibility issues between new and old Kotlin APIs")],-1),Xi={id:"_1-0-5-2022-03-18",tabindex:"-1"},Di=e("a",{class:"header-anchor",href:"#_1-0-5-2022-03-18","aria-hidden":"true"},"#",-1),ji=o(" 1.0.5 | 2022.03.18 \u2002"),Wi=i("
    • Fixed the problem that the welcome message was printed multiple times in the case of the old version of the LSPosed framework
    • Added onInit method to configure YukiHookAPI
    • Added executorName and executorVersion to get the name and version number of the current hook framework
    • Added by method to set the timing and condition of Hook
    • YukiHookModulePrefs adds a controllable key-value cache, which can dynamically update data when the host is running
    • Fixed some possible bugs
    ",1),Oi={id:"_1-0-4-2022-03-06",tabindex:"-1"},Ni=e("a",{class:"header-anchor",href:"#_1-0-4-2022-03-06","aria-hidden":"true"},"#",-1),Bi=o(" 1.0.4 | 2022.03.06 \u2002"),Ei=i("
    • Fixed LSPosed cannot find XposedBridge after enabling "Only module classloader can use Xposed API" option in latest version
    • Added constant version name and version number for YukiHookAPI
    • Added hasField method and isAllowPrintingLogs configuration parameter
    • Added isDebug to enable the API to automatically print the welcome message to test whether the module is valid
    ",1),qi={id:"_1-0-3-2022-03-02",tabindex:"-1"},Ui=e("a",{class:"header-anchor",href:"#_1-0-3-2022-03-02","aria-hidden":"true"},"#",-1),Vi=o(" 1.0.3 | 2022.03.02 \u2002"),Ki=i("
    • Fixed a potential exception not intercepted BUG
    • Added ignoredError function
    • Added android type in type
    • Added ClassNotFound function after listening to hook
    ",1),Zi={id:"_1-0-2-2022-02-18",tabindex:"-1"},Gi=e("a",{class:"header-anchor",href:"#_1-0-2-2022-02-18","aria-hidden":"true"},"#",-1),Ji=o(" 1.0.2 | 2022.02.18 \u2002"),Qi=e("ul",null,[e("li",null,"Fixed the problem that the project path cannot be found under Windows"),e("li",null,[o("Remove part of reflection API, merge into "),e("code",null,"BaseFinder"),o(" for integration")]),e("li",null,"Add a method to create Hook directly using string")],-1),$i={id:"_1-0-1-2022-02-15",tabindex:"-1"},en=e("a",{class:"header-anchor",href:"#_1-0-1-2022-02-15","aria-hidden":"true"},"#",-1),on=o(" 1.0.1 | 2022.02.15 \u2002"),tn=e("ul",null,[e("li",null,[e("code",null,"RemedyPlan"),o(" adds "),e("code",null,"onFind"),o(" function")]),e("li",null,"Integrate and modify some reflection API code"),e("li",null,[o("Added "),e("code",null,"java"),o(" type in "),e("code",null,"type")]),e("li",null,"Fixed the issue that ignored errors still output in the console")],-1),dn={id:"_1-0-2022-02-14",tabindex:"-1"},nn=e("a",{class:"header-anchor",href:"#_1-0-2022-02-14","aria-hidden":"true"},"#",-1),cn=o(" 1.0 | 2022.02.14 \u2002"),an=e("ul",null,[e("li",null,"The first version is submitted to Maven")],-1);function sn(ln,rn){const d=c("Badge"),n=c("ExternalLinkIcon");return s(),l("div",null,[h,e("h3",u,[m,_,t(d,{type:"tip",text:"latest",vertical:"middle"})]),e("ul",null,[e("li",null,[p,f,g,e("a",k,[y,t(n)]),b,e("a",x,[w,t(n)])]),v]),e("h3",A,[H,P,t(d,{type:"warning",text:"stale",vertical:"middle"})]),C,e("h3",F,[M,I,t(d,{type:"warning",text:"stale",vertical:"middle"})]),Y,e("h3",R,[S,L,t(d,{type:"warning",text:"stale",vertical:"middle"})]),z,e("h3",T,[X,D,t(d,{type:"warning",text:"stale",vertical:"middle"})]),j,e("h3",W,[O,N,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),B,e("h3",E,[q,U,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),V,e("h3",K,[Z,G,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[J,e("li",null,[Q,e("a",$,[ee,t(n)])]),oe,e("li",null,[te,e("a",de,[ie,t(n)]),ne]),ce,e("li",null,[ae,se,le,re,he,ue,e("a",me,[_e,t(n)]),pe]),fe,e("li",null,[ge,ke,ye,e("a",be,[xe,t(n)]),we]),e("li",null,[ve,Ae,He,e("a",Pe,[Ce,t(n)]),Fe]),Me,e("li",null,[Ie,Ye,Re,Se,Le,e("a",ze,[Te,t(n)]),Xe,e("a",De,[je,t(n)])]),We,Oe,Ne,e("li",null,[Be,Ee,qe,Ue,Ve,e("a",Ke,[Ze,t(n)]),Ge]),Je,e("li",null,[Qe,$e,eo,e("a",oo,[to,t(n)]),io,e("a",no,[co,t(n)])]),ao,so,lo,ro]),e("h3",ho,[uo,mo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),_o,e("h3",po,[fo,go,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[ko,yo,bo,e("a",xo,[wo,t(n)]),vo]),Ao]),e("h3",Ho,[Po,Co,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Fo,e("h3",Mo,[Io,Yo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ro,e("h3",So,[Lo,zo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),To,e("h3",Xo,[Do,jo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Wo,e("h3",Oo,[No,Bo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Eo,e("h3",qo,[Uo,Vo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ko,e("h3",Zo,[Go,Jo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Qo,e("h3",$o,[et,ot,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),tt,e("h3",dt,[it,nt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),ct,e("h3",at,[st,lt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[rt,e("li",null,[ht,ut,mt,e("a",_t,[pt,t(n)]),ft]),gt,kt,yt]),e("h3",bt,[xt,wt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[vt,e("li",null,[At,Ht,Pt,e("a",Ct,[Ft,t(n)]),Mt]),It,Yt]),e("h3",Rt,[St,Lt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[zt,Tt,Xt,Dt,e("a",jt,[Wt,t(n)]),Ot]),Nt]),e("h3",Bt,[Et,qt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[Ut,e("a",Vt,[Kt,t(n)]),Zt]),Gt]),e("h3",Jt,[Qt,$t,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[ed,e("a",od,[td,t(n)]),dd]),e("li",null,[id,nd,cd,e("a",ad,[sd,t(n)]),ld]),rd]),e("h3",hd,[ud,md,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),_d,e("h3",pd,[fd,gd,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),kd,e("h3",yd,[bd,xd,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[wd,e("li",null,[vd,Ad,Hd,e("a",Pd,[Cd,t(n)]),Fd]),Md,Id,Yd,Rd,e("li",null,[Sd,Ld,zd,e("a",Td,[Xd,t(n)]),Dd]),e("li",null,[jd,e("a",Wd,[Od,t(n)]),Nd]),Bd,e("li",null,[Ed,qd,Ud,e("a",Vd,[Kd,t(n)]),Zd]),Gd,Jd,e("li",null,[Qd,e("a",$d,[ei,t(n)]),oi])]),e("h3",ti,[di,ii,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[ni,ci,e("li",null,[ai,si,li,e("a",ri,[hi,t(n)]),ui])]),e("h3",mi,[_i,pi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),fi,e("h3",gi,[ki,yi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),bi,e("h3",xi,[wi,vi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ai,e("h3",Hi,[Pi,Ci,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Fi,e("h3",Mi,[Ii,Yi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ri,e("h3",Si,[Li,zi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ti,e("h3",Xi,[Di,ji,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Wi,e("h3",Oi,[Ni,Bi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ei,e("h3",qi,[Ui,Vi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ki,e("h3",Zi,[Gi,Ji,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Qi,e("h3",$i,[en,on,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),tn,e("h3",dn,[nn,cn,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),an])}const un=a(r,[["render",sn],["__file","changelog.html.vue"]]);export{un as default}; diff --git a/docs/assets/changelog.html.77be4f03.js b/docs/assets/changelog.html.77be4f03.js new file mode 100644 index 000000000..03544e5dc --- /dev/null +++ b/docs/assets/changelog.html.77be4f03.js @@ -0,0 +1 @@ +import{_ as s,r as t,o as n,c as a,b as e,d,e as o,a as i}from"./app.0312b331.js";const r={},_=e("h1",{id:"\u66F4\u65B0\u65E5\u5FD7",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u66F4\u65B0\u65E5\u5FD7","aria-hidden":"true"},"#"),o(" \u66F4\u65B0\u65E5\u5FD7")],-1),h=e("blockquote",null,[e("p",null,[o("\u8FD9\u91CC\u8BB0\u5F55\u4E86 "),e("code",null,"YukiHookAPI"),o(" \u7684\u7248\u672C\u66F4\u65B0\u5386\u53F2\u3002")])],-1),u=e("div",{class:"custom-container danger"},[e("p",{class:"custom-container-title"},"\u7279\u522B\u6CE8\u610F"),e("p",null,"\u6211\u4EEC\u53EA\u4F1A\u5BF9\u6700\u65B0\u7684 API \u7248\u672C\u8FDB\u884C\u7EF4\u62A4\uFF0C\u82E5\u4F60\u6B63\u5728\u4F7F\u7528\u8FC7\u65F6\u7684 API \u7248\u672C\u5219\u4EE3\u8868\u4F60\u81EA\u613F\u653E\u5F03\u4E00\u5207\u7EF4\u62A4\u7684\u53EF\u80FD\u6027\u3002")],-1),k={id:"_1-1-8-2023-02-01",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#_1-1-8-2023-02-01","aria-hidden":"true"},"#",-1),g=o(" 1.1.8 | 2023.02.01 \u2002"),m=o("\u4FEE\u590D\u5E95\u5C42 Hook \u65B9\u6CD5\u5728\u56DE\u8C03\u65F6\u4FEE\u6539 "),f=e("code",null,"result",-1),H=o(" \u7B49\u53C2\u6570\u65F6\u65F6\u4E0D\u80FD\u540C\u6B65\u66F4\u65B0\u4FEE\u6539\u540E\u7684\u72B6\u6001\u95EE\u9898\uFF0C\u611F\u8C22 "),P={href:"https://github.com/elvizlai",target:"_blank",rel:"noopener noreferrer"},b=o("Yongzheng Lai"),y=o(" \u7684 "),x={href:"https://github.com/fankes/YukiHookAPI/issues/23",target:"_blank",rel:"noopener noreferrer"},C=o("Issue"),A=i("
  • \u79FB\u52A8 YukiHookAPI \u81EA\u52A8\u751F\u6210\u7684\u5165\u53E3\u7C7B\u540D\u79F0\u6587\u4EF6 assets/yukihookapi_init \u5230 resources/META-INF/yukihookapi_init
  • \u5141\u8BB8\u5728\u4EC5\u6253\u5370\u5F02\u5E38\u5806\u6808\u65F6 msg \u53C2\u6570\u4E3A\u7A7A\u5E76\u53EF\u4EE5\u4E0D\u8BBE\u7F6E msg \u53C2\u6570\uFF0C\u7559\u7A7A msg \u53C2\u6570\u7684\u65E5\u5FD7\u9664\u975E\u5F02\u5E38\u5806\u6808\u4E0D\u4E3A\u7A7A\u5426\u5219\u5C06\u4E0D\u4F1A\u88AB\u8BB0\u5F55
  • \u4FEE\u590D Hook \u56DE\u8C03\u65B9\u6CD5\u4F53\u5185\u53D1\u751F\u7684\u5F02\u5E38\u6253\u5370\u7684\u65E5\u5FD7\u65E0\u5177\u4F53\u65B9\u6CD5\u4FE1\u606F\u7684 BUG
  • HookParam \u65B0\u589E instanceOrNull \u53D8\u91CF\u4E0E\u65B9\u6CD5\uFF0C\u53EF\u4EE5\u5728\u4E0D\u786E\u5B9A Hook \u5B9E\u4F8B\u662F\u5426\u4E3A\u7A7A\u7684\u524D\u63D0\u4E0B\u4F7F\u7528\u4EE5\u9632\u6B62 Hook \u5B9E\u4F8B\u4E3A\u7A7A\u629B\u51FA\u5F02\u5E38
  • \u89E3\u8026\u5408\u6240\u6709 Member \u67E5\u627E\u529F\u80FD\u4E2D\u7684 Hooker \u5230 MemberBaseFinder.MemberHookerManager
  • \u4FEE\u6539\u4E86 YukiMemberHookCreator \u4E2D\u7684 by \u6761\u4EF6\u7528\u6CD5\uFF0C\u73B0\u5728\u53EF\u4EE5\u91CD\u590D\u4F7F\u7528 by \u65B9\u6CD5\u8BBE\u7F6E\u591A\u4E2A\u6761\u4EF6
  • \u79FB\u9664\u4E86 Android type \u4E2D\u7684\u9519\u8BEF Class \u5BF9\u8C61\u58F0\u660E
  • PackageParam.AppLifecycle \u4E2D\u7684 registerReceiver \u65B9\u6CD5\u65B0\u589E\u76F4\u63A5\u4F7F\u7528 IntentFilter \u521B\u5EFA\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C\u7684\u529F\u80FD
  • \u4FEE\u590D\u5728 PackageParam.AppLifecycle \u4E2D\u53EF\u80FD\u5B58\u5728\u591A\u6B21\u6CE8\u518C\u751F\u547D\u5468\u671F\u7684\u95EE\u9898
  • Revert: 1.1.7 \u7248\u672C\u7531\u4E8E\u6709\u4E00\u4E2A\u4E25\u91CD\u95EE\u9898\u5DF2\u7ECF\u64A4\u56DE\uFF0C\u8BF7\u76F4\u63A5\u66F4\u65B0\u5230\u6B64\u7248\u672C\u5373\u53EF (\u66F4\u65B0\u65E5\u5FD7\u540C 1.1.7 \u7248\u672C)
  • ",10),v={id:"_1-1-6-2023-01-21",tabindex:"-1"},Y=e("a",{class:"header-anchor",href:"#_1-1-6-2023-01-21","aria-hidden":"true"},"#",-1),M=o(" 1.1.6 | 2023.01.21 \u2002"),I=i("
    • \u4FEE\u590D Xposed \u6A21\u5757\u88C5\u8F7D\u65F6\u53EF\u80FD\u5B58\u5728\u540C\u4E00\u4E2A\u8FDB\u7A0B\u591A\u4E2A\u5305\u540D\u7684\u60C5\u51B5\u5BFC\u81F4 PackageParam \u4FDD\u6301\u5355\u4F8B\u540E ClassLoader \u4E0D\u7B26\u7684\u4E25\u91CD\u95EE\u9898
    • \u65B0\u589E\u540C\u4E00\u4E2A\u8FDB\u7A0B\u591A\u4E2A\u5305\u540D\u7684\u60C5\u51B5\u4E0B\u672A\u533A\u5206\u5305\u540D\u65F6\uFF0C\u505C\u6B62\u88C5\u8F7D\u5355\u4F8B\u5316\u7684\u5B50 Hooker \u5E76\u6253\u5370\u8B66\u544A\u4FE1\u606F
    • \u4FEE\u590D HookParam.callOriginal\u3001HookParam.invokeOriginal \u7B49\u65B9\u6CD5\u8C03\u7528\u539F\u59CB\u65B9\u6CD5\u65F6\u53C2\u6570\u4E2A\u6570\u4E0D\u6B63\u786E\u7684\u95EE\u9898
    • \u4FEE\u6539 MethodFinder\u3001ConstructorFinder\u3001ReflectionFactory \u4E2D\u53CD\u5C04\u8C03\u7528\u7684\u65B9\u6CD5\u53C2\u6570\u540D param \u4E3A args
    • \u65B0\u589E Xposed \u6A21\u5757\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u4E2D\u5224\u65AD\u5165\u53E3\u7C7B\u6784\u9020\u65B9\u6CD5\u53C2\u6570\u529F\u80FD\uFF0C\u5165\u53E3\u7C7B\u9700\u8981\u4FDD\u8BC1\u5176\u4E0D\u5B58\u5728\u4EFB\u4F55\u6784\u9020\u65B9\u6CD5\u53C2\u6570
    ",1),R={id:"_1-1-5-2023-01-13",tabindex:"-1"},S=e("a",{class:"header-anchor",href:"#_1-1-5-2023-01-13","aria-hidden":"true"},"#",-1),L=o(" 1.1.5 | 2023.01.13 \u2002"),X=i('
    • \u89C4\u8303\u5E76\u4F18\u5316\u6574\u4F53\u4EE3\u7801\u98CE\u683C
    • \u5BF9\u90E8\u5206\u5185\u90E8\u8C03\u7528\u7684 API \u8FDB\u884C\u4E86\u79C1\u6709\u5316\u5904\u7406
    • \u5E95\u5C42 API \u63A5\u53E3\u6574\u4F53\u89E3\u8026\u5408\uFF0C\u4E3A\u517C\u5BB9\u66F4\u591A Hook Framework \u505A\u51C6\u5907
    • \u5C06\u90E8\u5206\u96C6\u6210\u4E8E API \u4E2D\u7684\u529F\u80FD\u79FB\u52A8\u5230 ksp-xposed \u4F9D\u8D56 (\u89E3\u8026\u5408)\uFF0C\u5355\u72EC\u5F15\u5165 api \u4F9D\u8D56\u5C06\u4E0D\u518D\u5305\u542B\u7B2C\u4E09\u65B9\u5E93\u7B49\u529F\u80FD\u7684\u5F15\u7528
    • \u6587\u6863 \u5FEB\u901F\u5F00\u59CB \u9875\u9762\u52A0\u5165 YukiHookAPI.Configs.isDebug \u4F55\u65F6\u9700\u8981\u5173\u95ED\u7684\u8BF4\u660E
    • \u89C4\u8303\u7C7B\u578B\u5B9A\u4E49\u4E2D\u7684 Java \u539F\u59CB\u7C7B\u578B (Primitive Type) \u5E76\u540C\u6B65\u66F4\u65B0\u5230\u6587\u6863
    • Java type \u65B0\u589E NumberClass \u7C7B\u578B
    • \u6539\u8FDB\u4E86 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u7684\u8BC6\u522B\u80FD\u529B
    • \u63A5\u7BA1\u4E86 Xposed \u6A21\u5757\u88C5\u8F7D\u540E\u7684\u5168\u90E8\u5F02\u5E38\uFF0C\u82E5\u53D1\u751F\u5F02\u5E38\u5C06\u4F1A\u81EA\u52A8\u62E6\u622A\u5E76\u6253\u5370\u9519\u8BEF\u65E5\u5FD7
    • \u4FEE\u6539\u7C7B\u578B\u5B9A\u4E49\u4E2D\u8F83\u4F4E Android \u7CFB\u7EDF\u7248\u672C (Android 5.0) \u4E2D\u4E0D\u5B58\u5728\u7684 Class \u4E3A\u7A7A\u5B89\u5168\u7C7B\u578B
    • \u9002\u914D\u5E76\u652F\u6301\u539F\u751F Xposed\uFF0C\u6700\u4F4E\u63A8\u8350\u7248\u672C\u4E3A Android 7.0
    • Hook \u5165\u53E3\u7C7B\u65B0\u589E\u652F\u6301\u58F0\u660E\u4E3A object \u7C7B\u578B (\u5355\u4F8B)
    • \u4FEE\u590D Android 8 \u4EE5\u4E0B\u7CFB\u7EDF\u4E0D\u652F\u6301 Executable \u7C7B\u578B\u5BFC\u81F4 Hook \u5931\u6548\u7684\u95EE\u9898
    • \u4FEE\u590D Android 9 \u4EE5\u4E0B\u7CFB\u7EDF\u5728\u4F7F\u7528 Activity \u4EE3\u7406\u529F\u80FD\u65F6\u62A5\u9519\u95EE\u9898\u5E76\u9650\u5236\u6B64\u529F\u80FD\u6700\u4F4E\u652F\u6301\u7248\u672C\u4E3A Android 7.0
    • \u65B0\u589E\u7981\u6B62\u8D44\u6E90\u6CE8\u5165\u4E0E Activity \u4EE3\u7406\u529F\u80FD\u6CE8\u5165\u5F53\u524D\u6A21\u5757\u81EA\u8EAB\u5B9E\u4F8B\u8FDB\u7A0B\uFF0C\u9632\u6B62\u53D1\u751F\u95EE\u9898
    • \u4FEE\u590D\u4E00\u4E2A Hook \u8FC7\u7A0B\u4E2D\u65B9\u6CD5\u8FD4\u56DE\u503C\u7684\u5BF9\u8C61\u662F\u76EE\u6807\u7684\u7EE7\u627F\u7C7B\u548C\u63A5\u53E3\u65F6\u88AB\u8BC6\u522B\u4E3A\u8FD4\u56DE\u503C\u4E0D\u7B26\u7684\u4E25\u91CD\u9519\u8BEF
    • \u4FEE\u590D\u5728\u5F53\u524D Hook \u7684\u5B9E\u4F8B\u5BF9\u8C61\u662F\u9759\u6001\u7684\u60C5\u51B5\u4E0B\u8C03\u7528 HookParam.callOriginal\u3001HookParam.invokeOriginal \u51FA\u73B0\u5BF9\u8C61\u4E3A\u7A7A\u95EE\u9898
    • \u4F18\u5316\u5BF9\u592A\u6781\u6FC0\u6D3B\u65B9\u6CD5\u76F8\u5173\u5224\u65AD\u529F\u80FD\u4EE5\u53CA\u540C\u6B65\u66F4\u65B0\u6587\u6863\u76F8\u5173\u8BF4\u660E
    • \u4F5C\u5E9F\u4E86 YukiHookAPI.Status.executorName\u3001YukiHookAPI.Status.executorVersion\uFF0C\u8BF7\u8F6C\u79FB\u5230 YukiHookAPI.Status.Executor
    • \u9002\u914D\u4E86\u4E00\u4E9B\u7B2C\u4E09\u65B9 Hook Framework \u7684 YukiHookAPI.Status.Executor.name \u540D\u79F0\u663E\u793A\u529F\u80FD
    • \u65B0\u589E Class.extends\u3001Class.implements \u7B49\u65B9\u6CD5\uFF0C\u53EF\u66F4\u52A0\u65B9\u4FBF\u5730\u5224\u65AD\u5F53\u524D Class \u7684\u7EE7\u627F\u4E0E\u63A5\u53E3\u5173\u7CFB
    • \u65B0\u589E Class.toClass\u3001Class.toClassOrNull \u7B49\u76F8\u5173\u65B9\u6CD5\u7684\u540C\u540D\u6CDB\u578B\u65B9\u6CD5\uFF0C\u53EF\u4F7F\u7528\u6CDB\u578B\u6765\u7EA6\u675F\u5DF2\u77E5 Class \u7684\u5B9E\u4F8B\u5BF9\u8C61\u7C7B\u578B
    • \u4FEE\u6539 classOf<T> \u65B9\u6CD5\u7684\u8FD4\u56DE\u503C\u4E3A\u6CDB\u578B T\uFF0C\u4EE5\u7EA6\u675F\u5DF2\u77E5 Class \u7684\u5B9E\u4F8B\u5BF9\u8C61\u7C7B\u578B
    • \u65B0\u589E Class \u76F8\u5173\u6269\u5C55\u65B9\u6CD5\u7684 initialize \u53C2\u6570\uFF0C\u53EF\u63A7\u5236\u5728\u5F97\u5230 Class \u5BF9\u8C61\u65F6\u662F\u5426\u540C\u65F6\u521D\u59CB\u5316\u5176\u9759\u6001\u65B9\u6CD5\u5757
    • \u53D8\u91CF\u3001\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u67E5\u627E\u529F\u80FD\u4E2D\u65B0\u589E param { ... }\u3001type { ... } \u7B49\u7528\u6CD5\uFF0C\u53EF\u5BF9\u67E5\u627E\u7684\u5BF9\u8C61\u589E\u52A0\u66F4\u52A0\u5177\u4F53\u7684\u6761\u4EF6\u5224\u65AD
    • PackageParam \u7684 loadApp \u65B9\u6CD5\u65B0\u589E isExcludeSelf \u53C2\u6570\uFF0C\u53EF\u7528\u4E8E\u6392\u9664 Hook \u76F8\u5173\u529F\u80FD\u6CE8\u5165\u6A21\u5757\u81EA\u8EAB\u5B9E\u4F8B\u8FDB\u7A0B
    • PackageParam \u7684 onAppLifecycle \u65B9\u6CD5\u65B0\u589E isOnFailureThrowToApp \u53C2\u6570\uFF0C\u53EF\u5C06\u751F\u547D\u5468\u671F\u65B9\u6CD5\u4F53\u5185\u53D1\u751F\u7684\u5F02\u5E38\u76F4\u63A5\u629B\u7ED9\u5BBF\u4E3B
    • \u4FEE\u6539 PackageParam \u4E2D\u7684 appClassLoader \u4E3A\u53EF\u4FEE\u6539\u53D8\u91CF\uFF0C\u53EF\u5728 Hook \u8FC7\u7A0B\u4E2D\u52A8\u6001\u8BBE\u7F6E\u5BBF\u4E3B\u4F7F\u7528\u7684 ClassLoader
    • HookParam \u4E2D\u65B0\u589E dataExtra \u529F\u80FD\uFF0C\u53EF\u7528\u4E8E\u4E34\u65F6\u5B58\u50A8 Hook \u65B9\u6CD5\u4F53\u4E2D\u7684\u6570\u636E
    • \u4F5C\u5E9F YukiHookModulePrefs \u4E2D\u7684 isRunInNewXShareMode\u3001isXSharePrefsReadable\uFF0C\u7EDF\u4E00\u5408\u5E76\u5230 isPreferencesAvailable
    • Class.allFields\u3001Class.allMethods \u7B49\u76F8\u5173\u65B9\u6CD5\u65B0\u589E isAccessible \u53C2\u6570\uFF0C\u53EF\u63A7\u5236\u6210\u5458\u5BF9\u8C61\u4F55\u65F6\u53EF\u88AB\u8BBE\u7F6E\u4E3A\u53EF\u8BBF\u95EE\u7C7B\u578B
    • \u4FEE\u590D YukiHookDataChannel \u5B58\u5728\u591A\u4E2A\u5BBF\u4E3B\u65F6\u5728\u4E00\u4E2A Activity \u4E2D\u63A5\u6536\u76F8\u540C\u952E\u503C\u6570\u636E\u65F6\u4EC5\u4F1A\u56DE\u8C03\u6700\u540E\u4E00\u4E2A\u65B9\u6CD5\u4F53\u7684\u95EE\u9898
    • YukiHookDataChannel \u7684 wait \u7B49\u76F8\u5173\u65B9\u6CD5\u4E2D\u65B0\u589E priority \u53C2\u6570\uFF0C\u53EF\u4F20\u5165 ChannelPriority \u6765\u81EA\u5B9A\u4E49\u56DE\u8C03\u6570\u636E\u7ED3\u679C\u7684\u6761\u4EF6
    • YukiHookDataChannel \u65B0\u589E\u53D1\u9001\u6570\u636E\u65F6\u81EA\u52A8\u4F7F\u7528 ChannelDataWrapper \u7C7B\u578B\u5305\u88C5\u529F\u80FD\uFF0C\u63D0\u5347\u4F7F\u7528\u4F53\u9A8C\u5E76\u589E\u5F3A\u6570\u636E\u4FDD\u62A4
    • YukiHookDataChannel \u65B0\u589E\u9650\u5236\u4E00\u6B21\u6027\u53D1\u9001\u6570\u636E\u7684\u6700\u5927\u5B57\u8282\u5927\u5C0F\u529F\u80FD\uFF0C\u9632\u6B62\u6570\u636E\u8FC7\u5927\u9020\u6210 APP \u5D29\u6E83
    • YukiHookDataChannel \u65B0\u589E\u53D1\u9001\u6570\u636E\u8FC7\u5927\u65F6\u81EA\u52A8\u5206\u6BB5\u53D1\u9001\u529F\u80FD\uFF0C\u4EC5\u652F\u6301 List\u3001Map\u3001Set\u3001String \u7C7B\u578B
    • YukiHookLogger \u65B0\u589E contents \u65B9\u6CD5\u4E0E saveToFile \u7684 data \u53C2\u6570\uFF0C\u53EF\u4F20\u5165\u81EA\u5B9A\u4E49\u7684\u8C03\u8BD5\u65E5\u5FD7\u6570\u636E\u8FDB\u884C\u683C\u5F0F\u5316\u6216\u4FDD\u5B58\u5230\u6587\u4EF6
    • \u4FEE\u590D YukiHookLogger \u5904\u7406\u540E\u7684\u8C03\u8BD5\u65E5\u5FD7\u6570\u636E\u5305\u540D\u53EF\u80FD\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E0D\u6B63\u786E\u7684\u95EE\u9898
    • \u4FEE\u590D Xposed \u6A21\u5757\u88C5\u8F7D\u8D44\u6E90\u94A9\u5B50 (Resources Hook) \u4E8B\u4EF6\u65F6\u5728\u90E8\u5206\u7CFB\u7EDF\u4E0A (\u90E8\u5206\u7CFB\u7EDF APP \u4E2D) \u5305\u540D\u53EF\u80FD\u4E0D\u6B63\u786E\u7684\u95EE\u9898
    ',1),F={id:"_1-1-4-2022-10-04",tabindex:"-1"},D=e("a",{class:"header-anchor",href:"#_1-1-4-2022-10-04","aria-hidden":"true"},"#",-1),B=o(" 1.1.4 | 2022.10.04 \u2002"),U=i("
    • \u4FEE\u590D YukiHookDataChannel \u53EF\u80FD\u4E0D\u80FD\u54CD\u5E94\u7CFB\u7EDF\u6846\u67B6\u4E2D\u54CD\u5E94\u5E7F\u64AD\u4E8B\u4EF6\u7684\u95EE\u9898\uFF0C\u5728 Android 13 \u4E2D\u590D\u73B0
    • \u4FEE\u590D YukiHookDataChannel \u957F\u8FBE\u591A\u4E2A\u7248\u672C\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u65E0\u6CD5\u4E0E\u6A21\u5757\u901A\u8BAF\u7684\u95EE\u9898
    • YukiHookDataChannel \u4E2D\u65B0\u589E obtainLoggerInMemoryData \u65B9\u6CD5\uFF0C\u53EF\u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E4B\u95F4\u5171\u4EAB\u8C03\u8BD5\u65E5\u5FD7\u6570\u636E
    • \u4FEE\u6539 YukiHookLogger.inMemoryData \u7684\u7C7B\u578B\u4E3A ArrayList \u5E76\u4FEE\u6539 YukiLoggerData \u4E3A data class
    • \u4FEE\u590D YukiLoggerData \u5728\u6A21\u5757\u4E2D\u5305\u540D\u4E3A\u7A7A\u6253\u5370\u7A7A\u767D\u7684\u95EE\u9898
    • PackageParam \u4E2D\u65B0\u589E loadApp\u3001loadZygote\u3001loadSystem\u3001withProcess \u7684\u540C\u540D\u591A\u53C2\u6570\u65B9\u6CD5
    • \u4FEE\u590D\u4E86\u4E00\u4E9B\u53EF\u80FD\u5B58\u5728\u7684 BUG
    ",1),W={id:"_1-1-3-2022-09-30",tabindex:"-1"},w=e("a",{class:"header-anchor",href:"#_1-1-3-2022-09-30","aria-hidden":"true"},"#",-1),T=o(" 1.1.3 | 2022.09.30 \u2002"),G=e("ul",null,[e("li",null,"\u4FEE\u590D\u4E00\u4E2A\u65E0\u6CD5\u81EA\u5B9A\u4E49 Hook \u5165\u53E3\u7C7B\u540D\u7684\u81F4\u547D\u9519\u8BEF"),e("li",null,[o("\u6DFB\u52A0 "),e("code",null,"LoggerFactory"),o(" \u4E2D\u7684\u90E8\u5206\u4EE3\u7801\u6CE8\u91CA\u6587\u6848\u5E76\u66F4\u65B0\u7279\u8272\u529F\u80FD\u6587\u6863")])],-1),N={id:"_1-1-2-2022-09-30",tabindex:"-1"},E=e("a",{class:"header-anchor",href:"#_1-1-2-2022-09-30","aria-hidden":"true"},"#",-1),O=o(" 1.1.2 | 2022.09.30 \u2002"),z=i('
    • \u6587\u6863 \u57FA\u7840\u77E5\u8BC6 \u9875\u9762\u65B0\u589E English \u7248\u672C\u53CB\u60C5\u94FE\u63A5
    • \u4FEE\u590D YukiBaseHooker \u6CE8\u91CA\u4E2D\u7684 English \u6587\u6863\u94FE\u63A5\u9519\u8BEF\u95EE\u9898
    • \u4FEE\u590D ModuleClassLoader \u4E2D\u7684 ClassCastException \u95EE\u9898
    • \u4FEE\u6B63\u5E76\u89C4\u8303\u90E8\u5206\u4EE3\u7801\u6CE8\u91CA
    • \u65B0\u589E ModuleClassLoader \u6392\u9664\u5217\u8868\u529F\u80FD\uFF0C\u53EF\u4F7F\u7528 excludeHostClasses \u548C excludeModuleClasses \u65B9\u6CD5\u6765\u81EA\u5B9A\u4E49\u6392\u9664\u5217\u8868
    • \u65B0\u589E YukiLoggerData \u5B9E\u65F6\u65E5\u5FD7\u6570\u636E\u7C7B\uFF0C\u53EF\u5B9E\u65F6\u901A\u8FC7 YukiHookLogger.inMemoryData \u83B7\u53D6\u65E5\u5FD7\u6570\u7EC4
    • \u65B0\u589E ClassLoader.listOfClasses \u65B9\u6CD5\uFF0C\u53EF\u76F4\u63A5\u83B7\u53D6\u5F53\u524D Dex \u4E2D\u7684\u5168\u90E8 Class
    ',1),j={id:"_1-1-1-2022-09-28",tabindex:"-1"},V=e("a",{class:"header-anchor",href:"#_1-1-1-2022-09-28","aria-hidden":"true"},"#",-1),Z=o(" 1.1.1 | 2022.09.28 \u2002"),K=e("ul",null,[e("li",null,[o("\u4FEE\u590D\u4E86\u6587\u6863 "),e("a",{href:"../guide/knowledge"},"\u57FA\u7840\u77E5\u8BC6"),o(" \u9875\u9762\u53CB\u60C5\u94FE\u63A5\u9519\u8BEF\u7684\u95EE\u9898")]),e("li",null,[o("\u4FEE\u590D\u4E86\u6587\u6863 "),e("code",null,"favicon"),o(" \u4E0D\u663E\u793A\u7684\u95EE\u9898")]),e("li",null,[o("\u4FEE\u590D "),e("code",null,"DexClassFinder"),o(" \u67E5\u627E\u6761\u4EF6\u4E2D\u7684 BUG")])],-1),J={id:"_1-1-0-2022-09-28",tabindex:"-1"},q=e("a",{class:"header-anchor",href:"#_1-1-0-2022-09-28","aria-hidden":"true"},"#",-1),Q=o(" 1.1.0 | 2022.09.28 \u2002"),$=e("li",null,[o("\u8FD9\u662F\u4E00\u6B21\u5927\u7248\u672C\u66F4\u65B0\uFF0C\u6709\u5173\u66F4\u65B0\u65E5\u5FD7\u4E2D\u63D0\u5230\u7684\u53D8\u5316\u53CA\u7528\u6CD5\u8BF7\u53C2\u8003 "),e("a",{href:"../api/home"},"API \u6587\u6863"),o(" \u4EE5\u53CA "),e("a",{href:"../api/special-features/reflection"},"\u7279\u8272\u529F\u80FD")],-1),ee=o("\u66F4\u6362\u5E2E\u52A9\u6587\u6863\u6846\u67B6\u5230 "),oe={href:"https://v2.vuepress.vuejs.org",target:"_blank",rel:"noopener noreferrer"},de=o("VuePress"),ce=i('
  • \u7EDF\u4E00\u5E76\u89C4\u8303\u6587\u6863\u4E2D\u7684\u672F\u8BED\u540D\u8BCD\uFF0C\u4F8B\u5982\u201C\u67E5\u8BE2\u201D\u4E00\u5F8B\u66F4\u6539\u4E3A\u4E86\u201C\u67E5\u627E\u201D\uFF0CXposedHelper \u62FC\u5199\u9519\u8BEF\u4FEE\u6539\u4E3A\u4E86 XposedHelpers
  • \u6587\u6863 \u57FA\u7840\u77E5\u8BC6 \u9875\u9762\u52A0\u5165\u53CB\u60C5\u94FE\u63A5\uFF0C\u4EC5\u9650\u7B80\u4F53\u4E2D\u6587
  • \u5C06 Hook App Demo \u7684 Class \u4E0E Method \u8F6C\u4E3A Java \u4EE5\u63D0\u4F9B\u66F4\u597D\u7684\u6F14\u793A\u6548\u679C
  • \u4FEE\u6B63\u4E86 Hook Module Demo \u4E2D\u7684\u4EE3\u7801\u6CE8\u91CA\u547D\u540D
  • \u91CD\u6784\u4E86\u5927\u91CF\u5E95\u5C42 Hook \u903B\u8F91\u53CA Xposed API \u7684\u5BF9\u63A5\u65B9\u5F0F
  • \u79FB\u9664\u4E86 HookParamWrapper\uFF0C\u73B0\u5DF2\u5C06\u5176\u76F4\u63A5\u4E0E YukiBridgeFactory \u5BF9\u63A5
  • \u79FB\u52A8\u90E8\u5206 YukiHookBridge \u4E2D\u7684\u65B9\u6CD5\u5230 AppParasitics
  • \u79FB\u9664\u4E86 HookParam.args \u4E0E\u5E95\u5C42\u7684\u76F4\u63A5\u5BF9\u63A5\u65B9\u6CD5 setArgs\uFF0C\u76F4\u63A5\u83B7\u53D6\u5E76\u8BBE\u7F6E\u5F53\u524D\u6570\u7EC4\u7684\u5BF9\u8C61
  • \u4F18\u5316\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\uFF0C\u5C06\u5F15\u7528\u7684 jar \u5408\u5E76\u5230 stub \u9879\u76EE
  • ',9),ie=o("\u4FEE\u590D\u591A\u9879\u76EE\u6253\u5305\u65F6\u6A21\u5757\u5305\u540D\u65E0\u6CD5\u6B63\u786E\u5339\u914D\u7684\u95EE\u9898\u4EE5\u53CA\u4FEE\u6539\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u7684\u6A21\u5757\u5305\u540D\u5339\u914D\u903B\u8F91\uFF0C\u611F\u8C22 "),le={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},te=o("5ec1cff"),se=o(" \u7684\u53CD\u9988\u53CA\u63D0\u4F9B\u7684\u89E3\u51B3\u65B9\u6848"),ne=i("
  • \u5BF9 API \u79C1\u6709\u5DE5\u5177\u7C7B\u7684\u65B9\u6CD5\u8FDB\u884C\u4E86 internal \u95ED\u5305\u5904\u7406\uFF0C\u907F\u514D\u6C61\u67D3\u9876\u7EA7\u547D\u540D\u7A7A\u95F4
  • \u4FEE\u6B63\u4E86\u6240\u6709\u53CD\u5C04\u548C Hook \u7C7B\u7684 Creater \u547D\u540D\u5230 Creator
  • \u65B0\u589E YukiHookAPI.Status.compiledTimestamp \u529F\u80FD\uFF0C\u53EF\u4EE5\u5728\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u65F6\u83B7\u53D6\u7F16\u8BD1\u5B8C\u6210\u7684\u65F6\u95F4\u6233
  • \u65B0\u589E YukiHookAPI.Status.isXposedEnvironment \u529F\u80FD\uFF0C\u53EF\u4EE5\u5224\u65AD\u5F53\u524D\u4E3A (Xposed) \u5BBF\u4E3B\u73AF\u5883\u8FD8\u662F\u6A21\u5757\u73AF\u5883
  • \u8C03\u8BD5\u65E5\u5FD7\u529F\u80FD\u8FDB\u884C\u4E86\u5927\u6539\u7248\uFF0C\u73B0\u5DF2\u5C06 YukiHookAPI.Configs.debugTag \u7B49\u529F\u80FD\u5408\u5E76\u5230 YukiHookLogger.Configs \u4E2D
  • \u8C03\u8BD5\u65E5\u5FD7\u65B0\u589E\u53EF\u6307\u5B9A\u6253\u5370\u4F7F\u7528\u7684\u65B9\u6CD5\u4E3A XposedBridge.log \u6216 Logd
  • \u8C03\u8BD5\u65E5\u5FD7\u4E2D\u9ED8\u8BA4\u52A0\u5165\u5F53\u524D\u5BBF\u4E3B\u7684\u5305\u540D\u4EE5\u53CA\u5F53\u524D\u7528\u6237 ID\uFF0C\u4EE5\u4F9B\u8C03\u8BD5\uFF0C\u4F60\u53EF\u4EE5\u5728 debugLog \u914D\u7F6E\u4E2D\u81EA\u884C\u66F4\u6539
  • \u65B0\u589E generic \u529F\u80FD\uFF0C\u53EF\u5BF9\u6CDB\u578B\u8FDB\u884C\u53CD\u5C04\u548C\u8C03\u7528\uFF0C\u4F60\u53EF\u4EE5\u5728 Class \u6216 CurrentClass \u4E2D\u4F7F\u7528\u5B83
  • \u4F5C\u5E9F buildOfAny \u65B9\u6CD5\uFF0C\u73B0\u5728\u8BF7\u76F4\u63A5\u4F7F\u7528 buildOf \u65B9\u6CD5 (\u4E0D\u5E26\u6CDB\u578B) \u6765\u4F7F\u7528\u6784\u9020\u65B9\u6CD5\u521B\u5EFA\u65B0\u5BF9\u8C61\u5E76\u5F97\u5230\u7ED3\u679C Any
  • \u4FEE\u590D hasExtends \u4F7F\u7528\u8FC7\u7A0B\u53D1\u751F\u7A7A\u6307\u9488\u5F02\u5E38\u7684\u95EE\u9898
  • CurrentClass \u65B0\u589E\u975E lambda \u65B9\u5F0F\u7684\u8C03\u7528\u65B9\u6CD5
  • CurrentClass \u65B0\u589E name \u4E0E simpleName \u529F\u80FD
  • \u5B8C\u5168\u91CD\u5199 ReflectionTool \u7684\u6838\u5FC3\u65B9\u6CD5\uFF0C\u5C06\u4E0D\u540C\u7684\u67E5\u627E\u6761\u4EF6\u8FDB\u884C\u4E86\u6574\u7406\u5206\u7C7B
  • \u4FEE\u590D ReflectionTool \u4E2D\u53EF\u80FD\u7684\u76F4\u63A5\u8C03\u7528 declared \u83B7\u53D6\u7684 Member \u629B\u51FA\u5F02\u5E38\u7684\u95EE\u9898
  • \u4FEE\u590D ReflectionTool \u4E2D UndefinedType \u672A\u5728 Method \u4E0E Constructor \u6761\u4EF6\u4E2D\u6B63\u786E\u5224\u65AD\u7684\u95EE\u9898
  • \u65B0\u589E\u53CD\u5C04\u67E5\u627E\u7ED3\u679C\u53D1\u751F\u5F02\u5E38\u65F6\u7684\u53CB\u597D\u63D0\u793A\u65B9\u5F0F\uFF0C\u53EF\u5177\u4F53\u5B9A\u4F4D\u5230\u6307\u5B9A\u6761\u4EF6\u627E\u4E0D\u5230 Member \u7684\u95EE\u9898
  • \u53CD\u5C04\u67E5\u627E Method\u3001Constructor \u4E2D\u65B0\u589E VagueType \u6761\u4EF6\uFF0C\u53EF\u4F7F\u7528\u5728 param \u6761\u4EF6\u4E2D\u7528\u4E8E\u5FFD\u7565\u4F60\u4E0D\u60F3\u586B\u5199\u7684\u53C2\u6570
  • \u53CD\u5C04\u67E5\u627E Method\u3001Constructor \u4E2D\u65B0\u589E paramCount { ... } \u6761\u4EF6\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u76F4\u63A5\u62FF\u5230\u5176\u4E2D\u7684 it \u6765\u81EA\u5B9A\u4E49\u4F60\u7684\u5224\u65AD\u6761\u4EF6
  • FieldFinder \u7ED3\u679C\u4E2D\u65B0\u589E current \u65B9\u6CD5\uFF0C\u53EF\u76F4\u63A5\u5BF9\u7ED3\u679C\u5B9E\u4F8B\u521B\u5EFA\u8C03\u7528\u7A7A\u95F4
  • \u4FEE\u6539\u4E86\u53CD\u5C04\u67E5\u627E\u529F\u80FD\u4E2D\u7684 modifiers \u6761\u4EF6\u4EE5\u53CA name \u6761\u4EF6\uFF0C\u73B0\u5728\u4F60\u9700\u8981\u5BF9\u6B64\u65B9\u6CD5\u4F53\u7ED3\u5C3E\u8FD4\u56DE\u4E00\u4E2A Boolean \u4EE5\u4F7F\u6761\u4EF6\u6210\u7ACB
  • ",20),ae=e("code",null,"ModifierRules",-1),re=o(" \u4E2D\u7684 "),_e=e("code",null,"as*",-1),he=o(" \u529F\u80FD\u6539\u540D\u4E3A "),ue=e("code",null,"is*",-1),ke=o("\uFF0C\u611F\u8C22 "),pe={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},ge=o("Kitsune"),me=o(" \u7684\u5EFA\u8BAE"),fe=i("
  • FieldFinder \u4E2D\u65B0\u589E RemedyPlan \u529F\u80FD
  • \u65B0\u589E Dex \u4E2D\u7684 Class \u6A21\u7CCA\u67E5\u627E\u529F\u80FD (Beta)\uFF0C\u4F60\u73B0\u5728\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 searchClass \u529F\u80FD\u6765\u4F7F\u7528\u6307\u5B9A\u6761\u4EF6\u6A21\u7CCA\u67E5\u627E Class
  • ",2),He=o("\u65B0\u589E\u53CD\u5C04\u67E5\u627E\u4E2D\u7684\u591A\u91CD\u67E5\u627E\u529F\u80FD\uFF0C\u53EF\u4F7F\u7528\u76F8\u5BF9\u67E5\u627E\u6761\u4EF6\u540C\u65F6\u83B7\u53D6\u591A\u4E2A\u67E5\u627E\u7ED3\u679C\uFF0C\u611F\u8C22 "),Pe=e("strong",null,"AA",-1),be=o(" \u4EE5\u53CA "),ye={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},xe=o("Kitsune"),Ce=o(" \u7684\u5EFA\u8BAE"),Ae=o("\u4FEE\u590D "),ve=e("code",null,"appClassLoader",-1),Ye=o(" \u83B7\u53D6\u5230\u7684\u5BF9\u8C61\u5728\u67D0\u4E9B\u7CFB\u7EDF\u4E2D\u7684\u7CFB\u7EDF\u5E94\u7528\u4E2D\u4E0D\u6B63\u786E\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),Me={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Ie=o("Luckyzyx"),Re=o(" \u7684\u53CD\u9988"),Se=e("li",null,[o("\u4FEE\u6539\u4E86 "),e("code",null,"XposedBridge.invokeOriginalMethod"),o(" \u7684\u8C03\u7528\u65B9\u5F0F\u5E76\u5728 "),e("code",null,"MethodFinder.Result.Instance"),o(" \u4E2D\u589E\u52A0 "),e("code",null,"original"),o(" \u529F\u80FD")],-1),Le=o("\u4FEE\u590D "),Xe=e("code",null,"YukiHookModulePrefs",-1),Fe=o(" \u4E2D "),De=e("code",null,"getStringSet",-1),Be=o(" \u65B9\u6CD5\u53D6\u503C\u9519\u8BEF\u7684\u95EE\u9898\u5E76\u4F18\u5316\u4EE3\u7801\u98CE\u683C\uFF0C\u611F\u8C22 "),Ue={href:"https://github.com/Teddy-Zhu",target:"_blank",rel:"noopener noreferrer"},We=o("Teddy_Zhu"),we=o(" \u7684 "),Te={href:"https://github.com/fankes/YukiHookAPI/pull/19",target:"_blank",rel:"noopener noreferrer"},Ge=o("PR"),Ne=e("li",null,[o("\u4FEE\u6539 "),e("code",null,"YukiHookModulePrefs"),o("\uFF0C\u62E6\u622A "),e("code",null,"XSharePreference"),o(" \u53EF\u80FD\u4E0D\u5B58\u5728\u7684\u5F02\u5E38")],-1),Ee=e("li",null,[o("\u4FEE\u590D "),e("code",null,"YukiHookDataChannel"),o(" \u5728\u67D0\u4E9B\u7B2C\u4E09\u65B9 ROM \u7CFB\u7EDF\u6846\u67B6\u4E2D\u65E0\u6CD5\u6CE8\u518C\u6210\u529F\u7684\u95EE\u9898")],-1),Oe=e("li",null,[o("\u5B89\u5168\u5316 "),e("code",null,"YukiHookDataChannel"),o("\uFF0C\u73B0\u5728\u5B83\u53EA\u80FD\u5728\u6765\u81EA\u6307\u5B9A\u5305\u540D\u7684\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E4B\u95F4\u901A\u4FE1")],-1),ze=o("\u65B0\u589E\u81EA\u52A8 Hook "),je=e("code",null,"SharedPreferences",-1),Ve=o(" \u4EE5\u4FEE\u590D\u90E8\u5206\u7CFB\u7EDF\u4E2D\u6587\u4EF6\u6743\u9650\u4E0D\u662F "),Ze=e("code",null,"0664",-1),Ke=o(" \u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),Je={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},qe=o("5ec1cff"),Qe=o(" \u7684\u53CD\u9988\u53CA\u63D0\u4F9B\u7684\u5B9E\u73B0\u4EE3\u7801"),$e=i("
  • \u65B0\u589E YukiHookAPI.Configs.isEnableHookSharedPreferences \u529F\u80FD\uFF0C\u9ED8\u8BA4\u5173\u95ED\uFF0C\u82E5 SharedPreferences \u7684\u6743\u9650\u9519\u8BEF\u53EF\u8FDB\u884C\u542F\u7528
  • \u4FEE\u590D\u67E5\u627E Constructor \u65F6\u65E0\u53C2\u6784\u9020\u65B9\u6CD5\u5728\u4E0D\u586B\u5199\u67E5\u627E\u6761\u4EF6\u65F6\u65E0\u6CD5\u627E\u5230\u7684 BUG\uFF0C\u611F\u8C22 B5 KAKA \u7684\u53CD\u9988
  • \u5206\u79BB\u4F4D\u4E8E injectMember \u4E2D method\u3001constructor \u7684 Result \u5B9E\u4F8B\u5230 Process
  • \u5728 Hook \u8FC7\u7A0B\u4E2D\u65B0\u589E useDangerousOperation \u65B9\u6CD5\uFF0C\u672A\u8FDB\u884C\u58F0\u660E\u65F6\u5728 Hook \u5371\u9669\u5217\u8868\u4E2D\u7684\u529F\u80FD\u540E\u4F1A\u81EA\u52A8\u505C\u6B62 Hook \u5E76\u6253\u5370\u9519\u8BEF
  • \u65B0\u589E\u6A21\u5757\u8D44\u6E90\u6CE8\u5165\u4E0E Activity \u4EE3\u7406\u529F\u80FD\uFF0C\u4F60\u53EF\u4EE5\u8C03\u7528 injectModuleAppResources \u53CA registerModuleAppActivities \u6765\u4F7F\u7528
  • \u65B0\u589E ModuleContextThemeWrapper \u529F\u80FD\uFF0C\u4F60\u53EF\u4EE5\u8C03\u7528 applyModuleTheme \u5728\u4EFB\u610F Activity \u4E2D\u521B\u5EFA\u6A21\u5757\u7684 Context
  • \u65B0\u589E ClassLoader.onLoadClass \u529F\u80FD\uFF0C\u53EF\u7528\u4E8E\u76D1\u542C ClassLoader \u7684 loadClass \u65B9\u6CD5\u88AB\u8C03\u7528\u7684\u4E8B\u4EF6
  • \u4F5C\u5E9F\u4E86 classOf \u4E0E clazz \u6269\u5C55\u65B9\u6CD5\uFF0C\u65B0\u589E toClass \u4EE5\u53CA toClassOrNull \u7528\u6CD5\uFF0C\u8BF7\u73B0\u5728\u8F6C\u79FB\u5230\u65B0\u7684\u65B9\u6CD5
  • VariousClass \u65B0\u589E getOrNull \u65B9\u6CD5\uFF0C\u53EF\u5728\u5339\u914D\u4E0D\u5230 Class \u7684\u65F6\u5019\u4E0D\u629B\u51FA\u5F02\u5E38\u800C\u662F\u8FD4\u56DE null
  • PackageParam.hook \u4E2D\u79FB\u9664\u4E86 isUseAppClassLoader \u53C2\u6570\uFF0C\u4FEE\u6539\u4E3A isForceUseAbsolute \u5E76\u81EA\u52A8\u5339\u914D\u76EE\u6807 Class
  • PackageParam \u65B0\u589E systemContext \u529F\u80FD\uFF0C\u4F60\u53EF\u4EE5\u5728\u4EFB\u610F\u65F6\u95F4\u8C03\u7528\u6B64\u529F\u80FD\u83B7\u53D6\u4E00\u4E2A\u6301\u4E45\u5316\u7684 Context
  • \u4E0D\u518D\u5BF9\u5916\u5F00\u653E HookClass \u4E2D\u7684\u4EFB\u4F55\u65B9\u6CD5
  • HookParam \u4E2D\u65B0\u589E throwToApp \u529F\u80FD\uFF0C\u53EF\u5C06\u5F02\u5E38\u76F4\u63A5\u629B\u7ED9\u5BBF\u4E3B
  • Hook \u56DE\u8C03\u4E2D\u65B0\u589E onFailureThrowToApp \u529F\u80FD\uFF0C\u53EF\u5728\u53D1\u751F\u5F02\u5E38\u65F6\u76F4\u63A5\u629B\u7ED9\u5BBF\u4E3B
  • \u4FEE\u6539\u4E86\u8C03\u8BD5\u65E5\u5FD7\u7684\u6253\u5370\u903B\u8F91\uFF0C\u53CD\u5C04\u67E5\u627E\u529F\u80FD\u4E2D\u7684\u8017\u65F6\u8BB0\u5F55\u4EC5\u4F1A\u5728 Hook \u8FC7\u7A0B\u4E2D\u8FDB\u884C\u6253\u5370
  • Hook \u8FC7\u7A0B\u4E2D\u65B0\u589E\u89E3\u9664 Hook \u529F\u80FD\uFF0C\u53EF\u4F7F\u7528 remove \u53CA removeSelf \u65B9\u6CD5\u89E3\u9664 Hook
  • \u4FEE\u590D\u5728 ReplaceHook \u5931\u8D25\u7684\u65F6\u5019\u5BFC\u81F4\u5BBF\u4E3B\u629B\u51FA\u5F02\u5E38\u7684\u95EE\u9898\uFF0C\u73B0\u4FEE\u6539\u4E3A\u8C03\u7528\u539F\u59CB\u65B9\u6CD5\u4FDD\u8BC1\u5BBF\u4E3B\u529F\u80FD\u6B63\u5E38\u8FD0\u884C
  • \u65B0\u589E Hook \u8FC7\u7A0B\u4E2D\u5BF9\u65B9\u6CD5\u8FD4\u56DE\u503C\u7684\u68C0\u67E5\u529F\u80FD\uFF0C\u5728\u8FD4\u56DE\u503C\u4E0D\u5339\u914D\u7684\u60C5\u51B5\u4E0B\u4F1A\u6839\u636E\u60C5\u666F\u81EA\u52A8\u629B\u51FA\u5F02\u5E38\u6216\u6253\u5370\u9519\u8BEF
  • ",18),eo=o("Resources Hook \u4E2D\u65B0\u589E "),oo=e("code",null,"array",-1),co=o(" \u7C7B\u578B\uFF0C\u611F\u8C22 "),io={href:"https://github.com/GSWXXN",target:"_blank",rel:"noopener noreferrer"},lo=o("GSWXXN"),to=o(" \u7684 "),so={href:"https://github.com/fankes/YukiHookAPI/pull/12",target:"_blank",rel:"noopener noreferrer"},no=o("PR"),ao=e("li",null,[o("\u79FB\u52A8 "),e("code",null,"me.weishu.reflection"),o(" \u5230 "),e("code",null,"thirdparty"),o(" \u9632\u6B62\u540C\u65F6\u5F15\u5165\u7684\u540C\u540D\u4F9D\u8D56\u51B2\u7A81")],-1),ro=e("li",null,"\u79FB\u9664 Hook \u65B9\u6CD5\u4F53\u4E3A\u7A7A\u65F6\u629B\u51FA\u7684\u5F02\u5E38\uFF0C\u4FEE\u6539\u4E3A\u6253\u5370\u8B66\u544A\u65E5\u5FD7",-1),_o=e("li",null,[o("\u4FEE\u6539 "),e("code",null,"AppLifecycle"),o(" \u7684\u5F02\u5E38\u5904\u7406\u903B\u8F91\uFF0C\u5F53\u5176\u53D1\u751F\u5F02\u5E38\u65F6\u76F4\u63A5\u629B\u7ED9\u5BBF\u4E3B")],-1),ho=e("li",null,"\u66F4\u65B0 Demo \u7684 API \u7248\u672C\u5230 33",-1),uo={id:"_1-0-92-2022-05-31",tabindex:"-1"},ko=e("a",{class:"header-anchor",href:"#_1-0-92-2022-05-31","aria-hidden":"true"},"#",-1),po=o(" 1.0.92 | 2022.05.31 \u2002"),go=i("
    • \u4FEE\u6B63\u4E86\u5927\u91CF\u65B9\u6CD5\u4E2D callback \u7684\u547D\u540D\u65B9\u6CD5
    • \u66F4\u6362\u65B9\u6848\u518D\u6B21\u4FEE\u590D YukiHookDataChannel \u5728\u4F4E\u4E8E Android 12 \u7684\u8BBE\u5907\u4E0A\u4E0D\u80FD\u56DE\u8C03\u5F53\u524D Activity \u5E7F\u64AD\u7684\u95EE\u9898
    • InjectYukiHookWithXposed \u6CE8\u89E3\u65B0\u589E isUsingResourcesHook \u529F\u80FD\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u9009\u62E9\u6027\u5173\u95ED\u81EA\u52A8\u751F\u6210 IXposedHookInitPackageResources \u7684\u4F9D\u8D56\u63A5\u53E3\u4E86
    ",1),mo={id:"_1-0-91-2022-05-29",tabindex:"-1"},fo=e("a",{class:"header-anchor",href:"#_1-0-91-2022-05-29","aria-hidden":"true"},"#",-1),Ho=o(" 1.0.91 | 2022.05.29 \u2002"),Po=o("\u4FEE\u590D\u90E8\u5206\u8BBE\u5907\u7684\u5B9A\u5236\u7CFB\u7EDF\u5728 LSPosed \u73AF\u5883\u4E0B\u5F00\u673A\u542F\u52A8\u83B7\u53D6\u7684 "),bo=e("code",null,"ClassLoader",-1),yo=o(" \u9519\u8BEF\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),xo={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Co=o("Luckyzyx"),Ao=o(" \u7684\u53CD\u9988"),vo=i("
  • \u4FEE\u590D YukiHookDataChannel \u5728 ZUI \u4EE5\u53CA\u4F4E\u4E8E Android 12 \u7684\u7CFB\u7EDF\u4E0A\u4E0D\u80FD\u56DE\u8C03\u5F53\u524D Activity \u5E7F\u64AD\u7684\u95EE\u9898
  • \u6574\u5408 YukiHookModuleStatus \u529F\u80FD\u5230 YukiHookAPI.Status\uFF0C\u91CD\u5199\u4E86\u5927\u91CF\u65B9\u6CD5\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E2D\u53CC\u5411\u5224\u65AD\u6A21\u5757\u6FC0\u6D3B\u7B49\u72B6\u6001\u4FE1\u606F
  • ",2),Yo={id:"_1-0-90-2022-05-27",tabindex:"-1"},Mo=e("a",{class:"header-anchor",href:"#_1-0-90-2022-05-27","aria-hidden":"true"},"#",-1),Io=o(" 1.0.90 | 2022.05.27 \u2002"),Ro=i("
    • \u4FEE\u590D YukiHookDataChannel \u5728\u6A21\u5757\u8BBE\u7F6E\u76D1\u542C\u56DE\u8C03\u65F6\u95EA\u9000\u7684\u95EE\u9898
    • \u4FEE\u590D YukiHookDataChannel \u5728\u975E\u5F53\u524D Activity \u60C5\u51B5\u4E0B\u4F9D\u7136\u4F1A\u56DE\u8C03\u7684\u95EE\u9898
    • \u79FB\u9664 YukiHookDataChannel \u56DE\u8C03\u4E8B\u4EF6\u7684\u9ED8\u8BA4\u503C\uFF0C\u6CA1\u6709\u5373\u4E0D\u56DE\u8C03
    • \u79FB\u9664 YukiHookModulePrefs \u5728 XShare \u4E0D\u53EF\u8BFB\u7684\u60C5\u51B5\u4E0B\u6253\u5370\u7684\u8B66\u544A
    • \u65B0\u589E YukiHookModulePrefs \u4E2D\u7684 isXSharePrefsReadable \u65B9\u6CD5\uFF0C\u53EF\u5224\u65AD\u5F53\u524D\u7684 XShare \u662F\u5426\u53EF\u7528
    ",1),So={id:"_1-0-89-2022-05-26",tabindex:"-1"},Lo=e("a",{class:"header-anchor",href:"#_1-0-89-2022-05-26","aria-hidden":"true"},"#",-1),Xo=o(" 1.0.89 | 2022.05.26 \u2002"),Fo=i("
    • \u4FEE\u590D YukiHookDataChannel \u4E0D\u80FD\u91CD\u590D\u8BBE\u7F6E\u76D1\u542C\u7684\u95EE\u9898\uFF0C\u5E76\u52A0\u5165\u5728\u6A21\u5757\u4E0D\u540C Activity \u4E2D\u91CD\u590D\u54CD\u5E94\u548C\u81EA\u52A8\u8DDF\u968F Activity \u9500\u6BC1\u76D1\u542C\u529F\u80FD
    • \u65B0\u589E YukiHookDataChannel \u91CD\u590D\u76D1\u542C\u7528\u4F8B\u8BF4\u660E\u6587\u6863
    • \u52A0\u5165 onAlreadyHooked \u65B9\u6CD5\uFF0C\u53EF\u5224\u65AD\u5F53\u524D\u65B9\u6CD5\u662F\u5426\u88AB\u91CD\u590D Hook
    • \u4FEE\u6539\u90E8\u5206\u91CD\u590D\u6DFB\u52A0 HashMap \u7684\u903B\u8F91\uFF0C\u79FB\u9664 putIfAbsent \u65B9\u6CD5\uFF0C\u5141\u8BB8\u8986\u76D6\u6DFB\u52A0
    • \u4FEE\u590D\u4E86\u51E0\u5904\u53EF\u80FD\u7684 BUG
    ",1),Do={id:"_1-0-88-2022-05-25",tabindex:"-1"},Bo=e("a",{class:"header-anchor",href:"#_1-0-88-2022-05-25","aria-hidden":"true"},"#",-1),Uo=o(" 1.0.88 | 2022.05.25 \u2002"),Wo=i("
    • \u5BF9 Xposed API \u5B8C\u5168\u89E3\u8026\u5408
    • \u589E\u52A0\u4E86 type \u4E2D\u7684 android \u7C7B\u578B
    • \u5C06 YukiHookModuleStatus \u4ECE\u81EA\u52A8\u751F\u6210\u4EE3\u7801\u4E2D\u5206\u79BB\uFF0C\u5E76\u52A0\u5165 isEnableHookModuleStatus \u7684\u5F00\u5173\uFF0C\u7531\u4F60\u51B3\u5B9A\u662F\u5426\u542F\u7528
    • \u5BF9 API \u5927\u91CF\u7C7B\u7684\u6784\u9020\u65B9\u6CD5\u8FDB\u884C\u4E86 internal \u95ED\u5305\u5904\u7406
    • \u5C06 YukiHookModulePrefs \u8BBE\u7F6E\u4E3A\u5355\u4F8B\u8FD0\u884C\uFF0C\u9632\u6B62\u91CD\u590D\u521B\u5EFA\u6D6A\u8D39\u7CFB\u7EDF\u8D44\u6E90
    • \u4FEE\u590D\u81EA 1.0.80 \u7248\u672C\u540E\u65E0\u6CD5\u5D4C\u5957 Hook \u7684 BUG\uFF0C\u5E76\u4F18\u5316\u5D4C\u5957 Hook \u76F8\u5173\u529F\u80FD
    • \u4FEE\u6539 Hooker \u5B58\u50A8\u65B9\u6848\u7531 HashSet \u5230 HashMap\uFF0C\u9632\u6B62\u91CD\u590D\u6DFB\u52A0 Hooker \u7684\u95EE\u9898
    • \u4FEE\u6539 Hook \u6838\u5FC3\u5B9E\u73B0\u65B9\u6CD5\uFF0C\u52A0\u5165\u67E5\u91CD\uFF0C\u907F\u514D\u91CD\u590D Hook \u591A\u6B21\u56DE\u8C03 HookParam \u65B9\u6CD5
    • MethodFinder \u4E0E FieldFinder \u52A0\u5165\u67E5\u627E\u6A21\u7CCA\u65B9\u6CD5\u3001\u53D8\u91CF\u540D\u79F0\u529F\u80FD\uFF0C\u53EF\u8C03\u7528 name { ... } \u6765\u8BBE\u7F6E\u67E5\u627E\u6761\u4EF6\uFF0C\u652F\u6301\u6B63\u5219
    • \u4F18\u5316\u5E76\u4FEE\u6539 appContext \u7684\u83B7\u53D6\u65B9\u5F0F\uFF0C\u964D\u4F4E\u4F1A\u53D6\u5230\u7A7A\u7684\u95EE\u9898\u7684\u53EF\u80FD\u6027
    • \u4FEE\u6539\u81EA\u52A8\u751F\u6210\u7684\u4EE3\u7801\u4E2D logger \u7684\u6253\u5370 TAG \u9ED8\u8BA4\u4E3A\u4F60\u81EA\u5B9A\u4E49\u7684\u540D\u79F0\uFF0C\u65B9\u4FBF\u8FDB\u884C\u8C03\u8BD5
    • \u4F18\u5316 YukiHookBridge \u7684 Hooker \u5B9E\u73B0\u65B9\u5F0F\uFF0C\u63D0\u5347 Hook \u6027\u80FD
    • PackageParam \u589E\u52A0 onAppLifecycle \u65B9\u6CD5\uFF0C\u53EF\u539F\u751F\u76D1\u542C\u5BBF\u4E3B\u7684\u751F\u547D\u5468\u671F\u4EE5\u53CA\u5B9E\u73B0\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u529F\u80FD
    • \u65B0\u589E YukiHookDataChannel \u529F\u80FD\uFF0C\u53EF\u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4FDD\u6301\u5B58\u6D3B\u7684\u60C5\u51B5\u4E0B\u4F7F\u7528\u7CFB\u7EDF\u65E0\u5E8F\u5E7F\u64AD\u8FDB\u884C\u901A\u8BAF
    • YukiHookDataChannel \u589E\u52A0 checkingVersionEquals \u65B9\u6CD5\uFF0C\u53EF\u901A\u8FC7\u76D1\u542C\u6765\u9A8C\u8BC1\u6A21\u5757\u66F4\u65B0\u540E\u5BBF\u4E3B\u5E76\u672A\u66F4\u65B0\u7248\u672C\u4E0D\u5339\u914D\u95EE\u9898
    • demo-module \u7684\u793A\u4F8B\u4EE3\u7801\u4E2D\u65B0\u589E Java \u7248\u672C\u7684\u793A\u4F8B\uFF0C\u4EC5\u4F9B\u53C2\u8003
    ",1),wo={id:"_1-0-87-2022-05-10",tabindex:"-1"},To=e("a",{class:"header-anchor",href:"#_1-0-87-2022-05-10","aria-hidden":"true"},"#",-1),Go=o(" 1.0.87 | 2022.05.10 \u2002"),No=e("ul",null,[e("li",null,[o("\u65B0\u589E "),e("code",null,"refreshModuleAppResources"),o(" \u529F\u80FD\uFF0C\u4EE5\u9002\u914D\u8BED\u8A00\u533A\u57DF\u3001\u5B57\u4F53\u5927\u5C0F\u3001\u5206\u8FA8\u7387\u6539\u53D8\u7B49\u60C5\u51B5\u4E0B\u7684 Resources \u5237\u65B0")]),e("li",null,[o("\u65B0\u589E "),e("code",null,"isEnableModuleAppResourcesCache"),o(" \u529F\u80FD\uFF0C\u53EF\u81EA\u884C\u8BBE\u7F6E\u662F\u5426\u81EA\u52A8\u7F13\u5B58\u5F53\u524D\u6A21\u5757\u7684 Resources")])],-1),Eo={id:"_1-0-86-2022-05-06",tabindex:"-1"},Oo=e("a",{class:"header-anchor",href:"#_1-0-86-2022-05-06","aria-hidden":"true"},"#",-1),zo=o(" 1.0.86 | 2022.05.06 \u2002"),jo=e("ul",null,[e("li",null,[o("\u4FEE\u590D\u4E0D\u652F\u6301 Resources Hook(\u8D44\u6E90\u94A9\u5B50) \u7684\u60C5\u51B5\u4E0B\u5728 "),e("code",null,"initZygote"),o(" \u65F6\u6301\u7EED\u62A5\u9519\u7684\u95EE\u9898\uFF0C\u590D\u73B0\u5728 "),e("strong",null,"ZUI"),o("/"),e("strong",null,"LSPosed CI(1.8.3-6550)")]),e("li",null,"\u4F18\u5316\u5E76\u5BF9 Resources Hook \u8FDB\u884C\u5F02\u5E38\u5904\u7406\uFF0C\u53EA\u6709\u88AB\u4F7F\u7528\u540E\u4E0D\u652F\u6301\u624D\u4F1A\u6253\u5370\u9519\u8BEF\u548C\u8B66\u544A")],-1),Vo={id:"_1-0-85-2022-05-04",tabindex:"-1"},Zo=e("a",{class:"header-anchor",href:"#_1-0-85-2022-05-04","aria-hidden":"true"},"#",-1),Ko=o(" 1.0.85 | 2022.05.04 \u2002"),Jo=i("
    • \u4FEE\u590D\u65E0\u6CD5 Hook \u7CFB\u7EDF\u6846\u67B6\u7684\u4E25\u91CD\u95EE\u9898\uFF0C\u4ECE 1.0.80 \u5F00\u59CB\u51FA\u73B0
    • \u8C03\u8BD5\u65E5\u5FD7\u4E2D\u65B0\u589E\u533A\u5206 initZygote \u88C5\u8F7D\u7684\u5305\u540D\u4E3A android-zygote\uFF0CpackageName \u4FDD\u6301 android \u4E0D\u53D8
    ",1),qo={id:"_1-0-83-2022-05-04",tabindex:"-1"},Qo=e("a",{class:"header-anchor",href:"#_1-0-83-2022-05-04","aria-hidden":"true"},"#",-1),$o=o(" 1.0.83 | 2022.05.04 \u2002"),ed=e("ul",null,[e("li",null,[o("\u4FEE\u590D "),e("code",null,"YukiHookModuleStatus"),o(" \u5728 "),e("code",null,"loadSystem"),o(" \u540E\u5927\u91CF\u62A5\u9519\u7684\u95EE\u9898")]),e("li",null,[o("\u65B0\u589E "),e("code",null,"type"),o(" \u4E2D\u7684 "),e("code",null,"android"),o(" \u7C7B\u578B")]),e("li",null,"\u66F4\u65B0\u5E2E\u52A9\u6587\u6863\u7684\u793A\u4F8B\u8BF4\u660E")],-1),od={id:"_1-0-82-2022-05-04",tabindex:"-1"},dd=e("a",{class:"header-anchor",href:"#_1-0-82-2022-05-04","aria-hidden":"true"},"#",-1),cd=o(" 1.0.82 | 2022.05.04 \u2002"),id=e("ul",null,[e("li",null,[o("\u4FEE\u590D\u4E86\u4E00\u5904\u6982\u5FF5\u6DF7\u6DC6\u9519\u8BEF\uFF0C\u533A\u5206 "),e("code",null,"initZygote"),o(" \u4E0E\u7CFB\u7EDF\u6846\u67B6\u7684\u5173\u7CFB\uFF0C\u4E4B\u524D\u7684\u6CE8\u91CA\u548C\u6587\u6863\u6709\u95EE\u9898\uFF0C\u975E\u5E38\u62B1\u6B49")]),e("li",null,[e("code",null,"PackageParam"),o(" \u65B0\u589E "),e("code",null,"loadSystem"),o(" \u65B9\u6CD5\uFF0C\u4E0D\u9700\u8981\u518D\u5199 "),e("code",null,'loadApp(name = "android")'),o(" \u5373\u53EF Hook \u7CFB\u7EDF\u6846\u67B6")])],-1),ld={id:"_1-0-81-2022-05-04",tabindex:"-1"},td=e("a",{class:"header-anchor",href:"#_1-0-81-2022-05-04","aria-hidden":"true"},"#",-1),sd=o(" 1.0.81 | 2022.05.04 \u2002"),nd=e("ul",null,[e("li",null,[o("\u4FEE\u590D\u4F7F\u7528 "),e("code",null,"by"),o(" \u65B9\u6CD5\u8BBE\u7F6E\u6761\u4EF6\u540E Hook \u65B9\u6CD5\u4F53\u5185\u67E5\u627E\u4E0D\u5230\u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u4F9D\u7136\u8F93\u51FA\u9519\u8BEF\u65E5\u5FD7\u7684\u95EE\u9898")]),e("li",null,"\u5728\u6267\u884C Hook \u8FC7\u7A0B\u4E2D\u52A0\u5165\u5168\u5C40\u65E5\u5FD7\u663E\u793A\u5F53\u524D Hook APP \u7684\u5305\u540D\uFF0C\u5E76\u4FEE\u590D\u4E00\u5904\u9519\u8BEF\u65E5\u5FD7\u6253\u5370\u6837\u5F0F\u7684\u95EE\u9898")],-1),ad={id:"_1-0-80-2022-05-01",tabindex:"-1"},rd=e("a",{class:"header-anchor",href:"#_1-0-80-2022-05-01","aria-hidden":"true"},"#",-1),_d=o(" 1.0.80 | 2022.05.01 \u2002"),hd=i("
  • InjectYukiHookWithXposed \u6CE8\u89E3\u65B0\u589E entryClassName \u529F\u80FD\uFF0C\u53EF\u81EA\u5B9A\u4E49\u751F\u6210\u7684 xposed_init \u5165\u53E3\u7C7B\u540D
  • YukiHookXposedInitProxy \u66F4\u540D\u4E3A IYukiHookXposedInit\uFF0C\u539F\u63A5\u53E3\u540D\u79F0\u5DF2\u4F5C\u5E9F\uFF0C\u5C06\u5728\u540E\u7EED\u7248\u672C\u4E2D\u76F4\u63A5\u88AB\u5220\u9664
  • \u65B0\u589E initZygote \u4E0E Resources Hook \u529F\u80FD\uFF0C\u652F\u6301 Hook Layout
  • \u65B0\u589E onXposedEvent \u65B9\u6CD5\uFF0C\u53EF\u76D1\u542C\u539F\u751F Xposed API \u7684\u5168\u90E8\u4E8B\u4EF6
  • \u5BF9 Hook \u529F\u80FD\u7684 lambda \u8FDB\u884C inline \u5904\u7406\uFF0C\u907F\u514D\u751F\u6210\u8FC7\u788E\u7684\u533F\u540D\u7C7B\uFF0C\u63D0\u5347\u7F16\u8BD1\u540E\u7684\u8FD0\u884C\u6027\u80FD
  • \u4FEE\u590D PrefsData \u7F16\u8BD1\u540E\u7684\u65B9\u6CD5\u4F53\u590D\u5236\u8FC7\u5927\u7684\u95EE\u9898
  • \u589E\u52A0 XSharePreference \u53EF\u8BFB\u6027\u6D4B\u8BD5\uFF0C\u5931\u8D25\u540E\u4F1A\u81EA\u52A8\u6253\u5370\u8B66\u544A\u65E5\u5FD7
  • PackageParam \u65B0\u589E appResources\u3001moduleAppResources\u3001moduleAppFilePath \u529F\u80FD
  • PackageParam \u7684 loadApp \u65B0\u589E\u4E0D\u5199 name \u529F\u80FD\uFF0C\u9ED8\u8BA4\u7B5B\u9009\u5168\u90E8 APP
  • PackageParam \u65B0\u589E loadZygote \u65B9\u6CD5\uFF0C\u53EF\u76F4\u63A5 Hook \u7CFB\u7EDF\u6846\u67B6
  • PackageParam \u65B0\u589E resources().hook \u529F\u80FD
  • \u4F18\u5316\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u3001\u53D8\u91CF\u67E5\u627E\u529F\u80FD\uFF0C\u627E\u4E0D\u5230\u7684\u9519\u8BEF\u65E5\u5FD7\u5C06\u4F18\u5148\u663E\u793A\u5DF2\u8BBE\u7F6E\u7684\u67E5\u627E\u6761\u4EF6
  • \u589E\u52A0 hasExtends \u6269\u5C55\u65B9\u6CD5\uFF0C\u53EF\u5224\u65AD\u5F53\u524D Class \u662F\u5426\u6709\u7EE7\u627F\u5173\u7CFB
  • \u589E\u52A0 isSupportResourcesHook \u529F\u80FD\uFF0C\u5224\u65AD\u5F53\u524D\u662F\u5426\u652F\u6301\u8D44\u6E90\u94A9\u5B50(Resources Hook)
  • current \u529F\u80FD\u65B0\u589E superClass \u65B9\u6CD5\u8C03\u7528\u7236\u7C7B
  • \u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u3001\u53D8\u91CF\u65B0\u589E superClass \u67E5\u627E\u6761\u4EF6\uFF0C\u53EF\u7EE7\u7EED\u5728\u7236\u7C7B\u4E2D\u67E5\u627E
  • YukiHookAPI \u5927\u91CF\u65B9\u6CD5\u4E0E Xposed API \u89E3\u8026\u5408
  • \u65B0\u589E Xposed API \u7684\u539F\u751F Hook \u4F18\u5148\u7EA7\u529F\u80FD
  • \u4FEE\u590D isFirstApplication \u53EF\u80FD\u5224\u65AD\u4E0D\u51C6\u786E\u7684\u95EE\u9898
  • \u5C4F\u853D MIUI \u7CFB\u7EDF\u4E0A MiuiCatcherPatch \u91CD\u590D\u8C03\u7528 Hook \u5165\u53E3\u65B9\u6CD5\u7684\u95EE\u9898
  • \u4F18\u5316 Hook \u5165\u53E3\u8C03\u7528\u65B9\u6CD5\uFF0C\u907F\u514D\u56E0\u4E3A Hook Framework \u95EE\u9898\u5BFC\u81F4\u591A\u6B21\u8C03\u7528
  • ",21),ud=o("\u4FEE\u590D Hook "),kd=e("code",null,"ClassLoader",-1),pd=o(" \u5BFC\u81F4 Hook \u5361\u6B7B\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),gd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},md=o("WankkoRee"),fd=o(" \u7684\u53CD\u9988"),Hd=e("li",null,[o("\u63D0\u5347 "),e("code",null,"XC_Callback"),o(" \u63A5\u53E3\u5BF9\u63A5\u540E\u7684\u6027\u80FD")],-1),Pd=e("li",null,[o("Java "),e("code",null,"type"),o(" \u65B0\u589E "),e("code",null,"ClassLoader"),o(" \u7C7B\u578B")],-1),bd=e("li",null,"\u4F18\u5316 API \u5E2E\u52A9\u6587\u6863\uFF0C\u4FEE\u590D\u53EF\u80FD\u6301\u7EED\u7F13\u5B58\u9875\u9762\u7684\u95EE\u9898",-1),yd={id:"_1-0-78-2022-04-18",tabindex:"-1"},xd=e("a",{class:"header-anchor",href:"#_1-0-78-2022-04-18","aria-hidden":"true"},"#",-1),Cd=o(" 1.0.78 | 2022.04.18 \u2002"),Ad=i("
  • YukiHookModulePrefs \u65B0\u589E isRunInNewXShareMode \u65B9\u6CD5\uFF0C\u53EF\u7528\u4E8E\u5224\u65AD\u6A21\u5757\u5F53\u524D\u662F\u5426\u5904\u4E8E New XSharePreference \u6A21\u5F0F
  • \u4FEE\u590D YukiHookModulePrefs \u5728 New XSharePreference \u6A21\u5F0F\u4E0B\u5DE5\u4F5C\u7684\u90E8\u5206\u95EE\u9898
  • \u65B0\u589E ModulePreferenceFragment\uFF0C\u73B0\u5728\uFF0C\u4F60\u53EF\u4EE5\u5B8C\u5168\u66FF\u6362\u6389 PreferenceFragmentCompat \u5E76\u5F00\u59CB\u4F7F\u7528\u65B0\u7684\u529F\u80FD
  • ",3),vd=o("\u9002\u914D "),Yd=e("code",null,"PreferenceFragmentCompat",-1),Md=o(" \u7684 Sp \u6570\u636E\u5B58\u50A8\u89E3\u51B3\u65B9\u6848\uFF0C\u611F\u8C22 "),Id={href:"https://github.com/mahoshojoHCG",target:"_blank",rel:"noopener noreferrer"},Rd=o("mahoshojoHCG"),Sd=o(" \u7684\u53CD\u9988"),Ld=e("li",null,[o("\u66F4\u65B0\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u4EE5\u53CA "),e("code",null,"Kotlin"),o(" \u4F9D\u8D56\u5230\u6700\u65B0\u7248\u672C")],-1),Xd=e("li",null,"\u4FEE\u6B63\u90E8\u5206\u6587\u6863\u548C\u4EE3\u7801\u6CE8\u91CA\u4E2D\u7684\u9519\u8BEF",-1),Fd={id:"_1-0-77-2022-04-15",tabindex:"-1"},Dd=e("a",{class:"header-anchor",href:"#_1-0-77-2022-04-15","aria-hidden":"true"},"#",-1),Bd=o(" 1.0.77 | 2022.04.15 \u2002"),Ud=e("code",null,"YukiHookModulePrefs",-1),Wd=o(" \u65B0\u589E "),wd=e("code",null,"clear",-1),Td=o(" \u65B9\u6CD5\uFF0C\u611F\u8C22 "),Gd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Nd=o("WankkoRee"),Ed=o(" \u7684\u5EFA\u8BAE"),Od=i("
  • YukiHookModulePrefs \u65B0\u589E getStringSet\u3001putStringSet\u3001all \u65B9\u6CD5
  • HookParam \u7684 args \u589E\u52A0 any \u65B9\u6CD5
  • \u65B0\u589E ModuleApplication\uFF0C\u53EF\u5728\u6A21\u5757\u4E2D\u7EE7\u627F\u6B64\u7C7B\u5B9E\u73B0\u66F4\u591A\u529F\u80FD
  • \u5BF9\u63A5\u5168\u90E8\u7684 findClass \u529F\u80FD\u5230 Xposed API\uFF0C\u5728\u975E\u5BBF\u4E3B\u73AF\u5883\u7EE7\u7EED\u4F7F\u7528\u539F\u751F ClassLoader
  • \u4FEE\u590D\u4E86\u4E00\u4E9B\u53EF\u80FD\u5B58\u5728\u7684 BUG
  • ",5),zd={id:"_1-0-75-2022-04-13",tabindex:"-1"},jd=e("a",{class:"header-anchor",href:"#_1-0-75-2022-04-13","aria-hidden":"true"},"#",-1),Vd=o(" 1.0.75 | 2022.04.13 \u2002"),Zd=o("\u66F4\u6B63\u4E86\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u7684\u903B\u8F91\u8BC6\u522B\u90E8\u5206\uFF0C\u611F\u8C22 "),Kd={href:"https://github.com/ApeaSuperz",target:"_blank",rel:"noopener noreferrer"},Jd=o("ApeaSuperz"),qd=o(" \u7684\u8D21\u732E"),Qd=i("
  • \u4FEE\u6B63\u4E00\u5904\u6587\u6863\u6CE8\u91CA\u7684\u5F15\u7528\u672A\u66F4\u6539\u7684\u95EE\u9898
  • HookParam \u4E2D\u5220\u9664\u4E86 firstArgs \u4E0E lastArgs \u65B9\u6CD5\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u4F7F\u7528 args().first() \u4E0E args().last() \u6765\u53D6\u4EE3\u5B83
  • HookParam \u4E2D\u5220\u9664\u4E86 args() \u4E2D\u7684\u9ED8\u8BA4\u53C2\u6570 index = 0\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u4F7F\u7528 args().first() \u6216 args(index = 0) \u6765\u53D6\u4EE3\u5B83
  • HookParam \u4E2D result \u529F\u80FD\u589E\u52A0\u4E86\u6CDB\u578B\u5339\u914D\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u4F7F\u7528 result<T> \u6765\u5339\u914D\u4F60\u7684\u76EE\u6807\u65B9\u6CD5\u5DF2\u77E5\u8FD4\u56DE\u503C\u7C7B\u578B\u4E86
  • \u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u67E5\u627E\u529F\u80FD\u65B0\u589E emptyParam \u6761\u4EF6\uFF0C\u5E76\u5B8C\u5584\u4E86\u6587\u6863\u76F8\u5173\u9700\u8981\u6CE8\u610F\u7684\u67E5\u627E\u6761\u4EF6\u8BEF\u533A
  • \u589E\u52A0\u4E86 type \u4E2D\u7684 android \u7C7B\u578B
  • ",6),$d=e("h3",{id:"_1-0-73-2022-04-10",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_1-0-73-2022-04-10","aria-hidden":"true"},"#"),o(" 1.0.73 | 2022.04.10")],-1),ec=o("\u4FEE\u6B63\u51E0\u5904\u6587\u6863\u7684\u4E2D\u6587\u7FFB\u8BD1\u9519\u8BEF\uFF0C\u611F\u8C22 "),oc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},dc=o("WankkoRee"),cc=o(" \u7684\u8D21\u732E"),ic=o("\u4FEE\u590D\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B "),lc=e("code",null,"XC_LoadPackage.LoadPackageParam",-1),tc=o(" \u5185\u5BB9\u4E3A\u7A7A\u629B\u51FA\u5F02\u5E38\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),sc={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},nc=o("Luckyzyx"),ac=o(" \u7684\u53CD\u9988"),rc=e("li",null,"\u4FEE\u590D\u4E00\u4E9B\u5DF2\u77E5\u7684 BUG\uFF0C\u63D0\u5347 Hook \u7A33\u5B9A\u6027",-1),_c={id:"_1-0-72-2022-04-09",tabindex:"-1"},hc=e("a",{class:"header-anchor",href:"#_1-0-72-2022-04-09","aria-hidden":"true"},"#",-1),uc=o(" 1.0.72 | 2022.04.09 \u2002"),kc=e("ul",null,[e("li",null,"\u66F4\u65B0 API \u6587\u6863\u5230\u65B0\u7684\u5730\u5740"),e("li",null,[e("code",null,"PackageParam"),o(" \u4E2D\u52A0\u5165 "),e("code",null,"appContext"),o(" \u529F\u80FD")]),e("li",null,"\u4FEE\u590D\u4E00\u4E9B\u5DF2\u77E5\u7684 BUG\uFF0C\u63D0\u5347 Hook \u7A33\u5B9A\u6027")],-1),pc={id:"_1-0-71-2022-04-04",tabindex:"-1"},gc=e("a",{class:"header-anchor",href:"#_1-0-71-2022-04-04","aria-hidden":"true"},"#",-1),mc=o(" 1.0.71 | 2022.04.04 \u2002"),fc=e("ul",null,[e("li",null,"\u4FEE\u590D VariousClass \u65E0\u6CD5\u5339\u914D\u65F6\u4F1A\u505C\u6B62 Hook \u629B\u51FA\u5F02\u5E38\u7684\u4E25\u91CD\u95EE\u9898")],-1),Hc={id:"_1-0-70-2022-04-04",tabindex:"-1"},Pc=e("a",{class:"header-anchor",href:"#_1-0-70-2022-04-04","aria-hidden":"true"},"#",-1),bc=o(" 1.0.70 | 2022.04.04 \u2002"),yc=e("li",null,[o("\u4FEE\u590D "),e("code",null,"instanceClass"),o(" \u5728\u9759\u6001\u5B9E\u4F8B\u4E2D\u8C03\u7528\u540E\u62A5\u9519\u95EE\u9898")],-1),xc=o("\u5728 Hook \u8FC7\u7A0B\u4E2D\u52A0\u5165 "),Cc=e("code",null,"isUseAppClassLoader",-1),Ac=o(" \u529F\u80FD\uFF0C\u611F\u8C22 "),vc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Yc=o("WankkoRee"),Mc=o(" \u7684\u53CD\u9988"),Ic=e("li",null,[o("\u52A0\u5165 "),e("code",null,"withProcess"),o(" \u529F\u80FD\uFF0C\u53EF\u6839\u636E APP \u5F53\u524D\u6307\u5B9A\u8FDB\u7A0B\u8FDB\u884C Hook")],-1),Rc=e("li",null,"\u4FEE\u590D\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u7C7B\u548C\u53D8\u91CF\u7684\u4E25\u91CD\u903B\u8F91\u9519\u8BEF\u95EE\u9898",-1),Sc=e("li",null,"\u4FEE\u590D Hook \u76EE\u6807\u7C7B\u4E0D\u5B58\u5728\u7684\u65F6\u5019\u65E0\u6CD5\u5FFD\u7565\u5F02\u5E38\u8F93\u51FA\u7684\u95EE\u9898",-1),Lc=e("li",null,"\u4FEE\u590D\u90E8\u5206\u60C5\u51B5\u4E0B APP \u542F\u52A8\u65B9\u6CD5\u88C5\u8F7D\u8FC7\u5FEB\u5BFC\u81F4 Hook \u4E0D\u80FD\u751F\u6548\u7684\u95EE\u9898",-1),Xc=o("\u4FEE\u590D "),Fc=e("code",null,"allMethods",-1),Dc=o(" \u672A Hook \u5230\u65B9\u6CD5\u65F6\u4E0D\u4F1A\u629B\u51FA\u5F02\u5E38\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),Bc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Uc=o("WankkoRee"),Wc=o(" \u7684\u53CD\u9988"),wc=o("\u52A0\u5165 Hook \u72B6\u6001\u76D1\u542C\u529F\u80FD\uFF0C\u611F\u8C22 "),Tc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Gc=o("WankkoRee"),Nc=o(" \u7684\u5EFA\u8BAE"),Ec=e("li",null,"\u4FEE\u6539 Xposed \u5165\u53E3\u6CE8\u5165\u7C7B\u7684\u65B9\u5F0F\uFF0C\u91CD\u65B0\u58F0\u660E API \u7684\u5B9A\u4E49\u57DF",-1),Oc=o("\u52A0\u5165\u6DF7\u6DC6\u7684\u65B9\u6CD5\u4EE5\u53CA\u53D8\u91CF\u7684\u67E5\u627E\u529F\u80FD\uFF0C\u53EF\u4F7F\u7528\u4E0D\u540C\u7C7B\u578B\u7B5B\u9009 "),zc=e("code",null,"index",-1),jc=o(" \u5B9A\u4F4D\u6307\u5B9A\u7684\u65B9\u6CD5\u548C\u53D8\u91CF\uFF0C\u611F\u8C22 "),Vc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Zc=o("WankkoRee"),Kc=o(" \u63D0\u4F9B\u7684\u601D\u8DEF"),Jc=e("li",null,[o("\u67E5\u627E\u65B9\u6CD5\u3001\u53D8\u91CF\u65F6\u5141\u8BB8\u4F20\u5165\u591A\u79CD\u7C7B\u578B\uFF0C\u4F8B\u5982 "),e("code",null,"String"),o(" \u58F0\u660E\u7684\u7C7B\u540D\u548C "),e("code",null,"VariousClass")],-1),qc=e("li",null,[o("\u52A0\u5165\u5168\u65B0\u7684 "),e("code",null,"current"),o(" \u529F\u80FD\uFF0C\u53EF\u5BF9\u4EFB\u610F\u7684\u7C7B\u6784\u5EFA\u4E00\u4E2A\u53CD\u5C04\u65B9\u6CD5\u64CD\u4F5C\u7A7A\u95F4\uFF0C\u65B9\u4FBF\u5730\u8C03\u7528\u548C\u4FEE\u6539\u5176\u4E2D\u7684\u65B9\u6CD5\u548C\u53D8\u91CF")],-1),Qc=o("\u4FEE\u590D\u4E86 Hook \u8FC7\u7A0B\u4E2D\u7684\u5927\u91CF BUG\uFF0C\u611F\u8C22 "),$c={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},ei=o("WankkoRee"),oi=o(" \u5BF9\u6B64\u9879\u76EE\u6240\u505A\u51FA\u7684\u8D21\u732E"),di={id:"_1-0-69-2022-03-30",tabindex:"-1"},ci=e("a",{class:"header-anchor",href:"#_1-0-69-2022-03-30","aria-hidden":"true"},"#",-1),ii=o(" 1.0.69 | 2022.03.30 \u2002"),li=e("li",null,"\u6DFB\u52A0\u5E76\u6539\u8FDB\u4E00\u4E9B\u65B9\u6CD5\u529F\u80FD\u7684\u6CE8\u91CA",-1),ti=e("li",null,"\u589E\u52A0 Demo \u4E2D\u7684\u66F4\u591A\u793A\u4F8B Hook \u5185\u5BB9",-1),si=o("\u4FEE\u590D\u5728\u4E00\u4E2A Hook \u5B9E\u4F8B\u4E2D\uFF0C"),ni=e("code",null,"allMethods",-1),ai=o(" \u591A\u6B21\u4F7F\u7528\u65F6\u53EA\u6709\u6700\u540E\u4E00\u4E2A\u751F\u6548\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),ri={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},_i=o("WankkoRee"),hi=o(" \u7684\u53CD\u9988"),ui={id:"_1-0-68-2022-03-29",tabindex:"-1"},ki=e("a",{class:"header-anchor",href:"#_1-0-68-2022-03-29","aria-hidden":"true"},"#",-1),pi=o(" 1.0.68 | 2022.03.29 \u2002"),gi=i("
    • \u589E\u52A0 Demo \u4E2D\u7684\u65B0\u7528\u4F8B\u548C LSPosed \u4F5C\u7528\u57DF
    • \u589E\u52A0 Member \u67E5\u627E\u7F13\u5B58\u548C\u67E5\u627E\u7F13\u5B58\u914D\u7F6E\u5F00\u5173
    • \u79FB\u9664\u548C\u4FEE\u6539 MethodFinder\u3001FieldFinder \u4EE5\u53CA HookParam \u76F8\u5173\u65B9\u6CD5\u7684\u8C03\u7528
    • \u589E\u52A0\u66F4\u591A Finder \u4E2D\u7684 cast \u7C7B\u578B\u5E76\u652F\u6301 cast \u4E3A\u6570\u7EC4
    • \u6574\u4F53\u7684\u6027\u80FD\u548C\u7A33\u5B9A\u6027\u63D0\u5347
    • \u4FEE\u590D\u4E0A\u4E00\u4E2A\u7248\u672C\u53EF\u80FD\u5B58\u5728\u7684 BUG
    ",1),mi={id:"_1-0-67-2022-03-27",tabindex:"-1"},fi=e("a",{class:"header-anchor",href:"#_1-0-67-2022-03-27","aria-hidden":"true"},"#",-1),Hi=o(" 1.0.67 | 2022.03.27 \u2002"),Pi=i("
    • \u589E\u52A0\u4E09\u4E2A Finder \u4E2D\u7684 modifiers \u529F\u80FD\uFF0C\u53EF\u7B5B\u9009 static\u3001native\u3001public\u3001abstract \u7B49\u8BF8\u591A\u63CF\u8FF0\u7C7B\u578B
    • \u589E\u52A0\u65B9\u6CD5\u548C\u6784\u9020\u65B9\u6CD5\u67E5\u627E\u65F6\u53EF\u6A21\u7CCA\u65B9\u6CD5\u53C2\u6570\u7C7B\u578B\u4E3A\u6307\u5B9A\u4E2A\u6570\u8FDB\u884C\u67E5\u627E
    • \u589E\u52A0 Member \u7684 hasModifiers \u6269\u5C55\u529F\u80FD
    • \u589E\u52A0 MethodFinder \u548C ConstructorFinder \u4E2D\u7684 give \u65B9\u6CD5\uFF0C\u53EF\u83B7\u5F97\u539F\u59CB\u7C7B\u578B
    • \u589E\u52A0 YukiHookModulePrefs \u4E2D\u7684 PrefsData \u6A21\u677F\u529F\u80FD
    • \u5F7B\u5E95\u5BF9\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u53CA\u53D8\u91CF\u7684\u67E5\u627E\u65B9\u6848\u8FDB\u884C\u91CD\u6784
    • \u4F18\u5316\u4EE3\u7801\u6CE8\u91CA\uFF0C\u4FEE\u590D\u4E86\u53EF\u80FD\u4EA7\u751F\u7684 BUG
    ",1),bi={id:"_1-0-66-2022-03-25",tabindex:"-1"},yi=e("a",{class:"header-anchor",href:"#_1-0-66-2022-03-25","aria-hidden":"true"},"#",-1),xi=o(" 1.0.66 | 2022.03.25 \u2002"),Ci=e("ul",null,[e("li",null,[o("\u4FEE\u590D "),e("code",null,"MethodFinder"),o(" \u4E2D\u7684\u4E00\u4E2A\u4E25\u91CD\u95EE\u9898")]),e("li",null,[o("\u589E\u52A0 "),e("code",null,"hookParam"),o(" \u4E2D\u7684 "),e("code",null,"args"),o(" \u8C03\u7528\u65B9\u6CD5")]),e("li",null,"\u4FEE\u590D\u5176\u5B83\u53EF\u80FD\u5B58\u5728\u7684\u95EE\u9898\u4EE5\u53CA\u4FEE\u590D\u90E8\u5206\u7C7B\u7684\u6CE8\u91CA\u95EE\u9898")],-1),Ai={id:"_1-0-65-2022-03-25",tabindex:"-1"},vi=e("a",{class:"header-anchor",href:"#_1-0-65-2022-03-25","aria-hidden":"true"},"#",-1),Yi=o(" 1.0.65 | 2022.03.25 \u2002"),Mi=i("
    • \u91CD\u65B0\u53D1\u5E03\u7248\u672C\u4FEE\u590D Maven \u4ED3\u5E93\u56E0\u4E3A\u7F13\u5B58\u95EE\u9898\u65B0\u7248\u672C\u4E0D\u6B63\u786E\u7684\u60C5\u51B5
    • \u589E\u52A0 MethodFinder \u4E0E FieldFinder \u65B0\u7684\u8FD4\u56DE\u503C\u8C03\u7528\u65B9\u6CD5
    • \u4FEE\u590D\u53EF\u80FD\u5B58\u5728\u7684\u95EE\u9898\uFF0C\u5E76\u4FEE\u590D\u592A\u6781\u4F7F\u7528\u8FC7\u7A0B\u4E2D\u53EF\u80FD\u5B58\u5728\u7684\u95EE\u9898
    • \u4FEE\u590D\u81EA\u52A8\u751F\u6210 Xposed \u5165\u53E3\u7C7B\u53EF\u80FD\u53D1\u751F\u7684\u95EE\u9898
    • \u589E\u52A0\u4E86 type \u4E2D\u7684 android \u7C7B\u578B\u4EE5\u53CA java \u7C7B\u578B
    ",1),Ii={id:"_1-0-6-2022-03-20",tabindex:"-1"},Ri=e("a",{class:"header-anchor",href:"#_1-0-6-2022-03-20","aria-hidden":"true"},"#",-1),Si=o(" 1.0.6 | 2022.03.20 \u2002"),Li=i("
    • \u4FEE\u590D YukiHookModulePrefs \u5728\u4F7F\u7528\u4E00\u6B21 direct \u5FFD\u7565\u7F13\u5B58\u540E\u6BCF\u6B21\u90FD\u5FFD\u7565\u7684 BUG
    • \u589E\u52A0\u65B0\u7684 API\uFF0C\u4F5C\u5E9F\u4E86 isActive \u5224\u65AD\u6A21\u5757\u6FC0\u6D3B\u7684\u4F20\u7EDF\u7528\u6CD5
    • \u4FEE\u590D\u975E Xposed \u73AF\u5883\u4F7F\u7528 API \u65F6\u6253\u5370\u8C03\u8BD5\u65E5\u5FD7\u7684\u95EE\u9898
    • \u4FEE\u590D\u67E5\u627E Field \u65F6\u7684\u65E5\u5FD7\u8F93\u51FA\u95EE\u9898\u548C\u672A\u62E6\u622A\u7684\u5F02\u5E38\u95EE\u9898
    • \u89E3\u8026\u5408 ReflectionUtils \u4E2D\u7684 Xposed API
    • \u589E\u52A0 YukiHookModuleStatus \u65B9\u6CD5\u540D\u79F0\u7684\u6DF7\u6DC6\uFF0C\u4EE5\u7CBE\u7B80\u6A21\u5757\u751F\u6210\u7684\u4F53\u79EF
    • \u88C5\u8F7D\u6A21\u5757\u81EA\u8EAB Hook \u65F6\u5C06\u4E0D\u518D\u6253\u5370\u6B22\u8FCE\u4FE1\u606F
    • \u4FEE\u590D\u4E0A\u4E00\u4E2A\u7248\u672C\u4ECD\u7136\u5B58\u5728\u7684\u67D0\u4E9B BUG
    ",1),Xi={id:"_1-0-55-2022-03-18",tabindex:"-1"},Fi=e("a",{class:"header-anchor",href:"#_1-0-55-2022-03-18","aria-hidden":"true"},"#",-1),Di=o(" 1.0.55 | 2022.03.18 \u2002"),Bi=e("ul",null,[e("li",null,"\u4FEE\u6B63\u4E00\u5904\u6CE8\u91CA\u9519\u8BEF"),e("li",null,"\u4E34\u65F6\u4FEE\u590D\u4E00\u4E2A BUG"),e("li",null,[o("\u589E\u52A0\u4E86 "),e("code",null,"type"),o(" \u4E2D\u7684\u5927\u91CF "),e("code",null,"android"),o(" \u7C7B\u578B\u4EE5\u53CA\u5C11\u91CF "),e("code",null,"java"),o(" \u7C7B\u578B")]),e("li",null,"\u4FEE\u590D\u65B0\u7248\u4E0E\u65E7\u7248 Kotlin APIs \u7684\u517C\u5BB9\u6027\u95EE\u9898")],-1),Ui={id:"_1-0-5-2022-03-18",tabindex:"-1"},Wi=e("a",{class:"header-anchor",href:"#_1-0-5-2022-03-18","aria-hidden":"true"},"#",-1),wi=o(" 1.0.5 | 2022.03.18 \u2002"),Ti=i("
    • \u4FEE\u590D\u65E7\u7248\u672C LSPosed \u6846\u67B6\u60C5\u51B5\u4E0B\u6B22\u8FCE\u4FE1\u606F\u591A\u6B21\u6253\u5370\u7684\u95EE\u9898
    • \u6DFB\u52A0 onInit \u65B9\u6CD5\u6765\u914D\u7F6E YukiHookAPI
    • \u65B0\u589E executorName \u548C executorVersion \u6765\u83B7\u53D6\u5F53\u524D Hook Framework \u7684\u540D\u79F0\u548C\u7248\u672C\u53F7
    • \u65B0\u589E by \u65B9\u6CD5\u6765\u8BBE\u7F6E Hook \u7684\u65F6\u673A\u548C\u6761\u4EF6
    • YukiHookModulePrefs \u65B0\u589E\u53EF\u63A7\u5236\u7684\u952E\u503C\u7F13\u5B58\uFF0C\u53EF\u5728\u5BBF\u4E3B\u8FD0\u884C\u65F6\u6A21\u5757\u52A8\u6001\u66F4\u65B0\u6570\u636E
    • \u4FEE\u590D\u4E86\u4E00\u4E9B\u53EF\u80FD\u5B58\u5728\u7684 BUG
    ",1),Gi={id:"_1-0-4-2022-03-06",tabindex:"-1"},Ni=e("a",{class:"header-anchor",href:"#_1-0-4-2022-03-06","aria-hidden":"true"},"#",-1),Ei=o(" 1.0.4 | 2022.03.06 \u2002"),Oi=i("
    • \u4FEE\u590D LSPosed \u5728\u6700\u65B0\u7248\u672C\u4E2D\u542F\u7528\u201C\u53EA\u6709\u6A21\u5757classloader\u53EF\u4EE5\u4F7F\u7528Xposed API\u201D\u9009\u9879\u540E\u627E\u4E0D\u5230 XposedBridge \u7684\u95EE\u9898
    • \u6DFB\u52A0 YukiHookAPI \u7684\u5E38\u91CF\u7248\u672C\u540D\u79F0\u548C\u7248\u672C\u53F7
    • \u65B0\u589E hasField \u65B9\u6CD5\u4EE5\u53CA isAllowPrintingLogs \u914D\u7F6E\u53C2\u6570
    • \u65B0\u589E isDebug \u5F00\u542F\u7684\u60C5\u51B5\u4E0B API \u5C06\u81EA\u52A8\u6253\u5370\u6B22\u8FCE\u4FE1\u606F\u6D4B\u8BD5\u6A21\u5757\u662F\u5426\u751F\u6548
    ",1),zi={id:"_1-0-3-2022-03-02",tabindex:"-1"},ji=e("a",{class:"header-anchor",href:"#_1-0-3-2022-03-02","aria-hidden":"true"},"#",-1),Vi=o(" 1.0.3 | 2022.03.02 \u2002"),Zi=i("
    • \u4FEE\u590D\u4E00\u4E2A\u6F5C\u5728\u6027\u7684\u5F02\u5E38\u672A\u62E6\u622A BUG
    • \u589E\u52A0 ignoredError \u529F\u80FD
    • \u589E\u52A0\u4E86 type \u4E2D\u7684 android \u7C7B\u578B
    • \u589E\u52A0\u76D1\u542C hook \u540E\u7684 ClassNotFound \u529F\u80FD
    ",1),Ki={id:"_1-0-2-2022-02-18",tabindex:"-1"},Ji=e("a",{class:"header-anchor",href:"#_1-0-2-2022-02-18","aria-hidden":"true"},"#",-1),qi=o(" 1.0.2 | 2022.02.18 \u2002"),Qi=e("ul",null,[e("li",null,"\u4FEE\u590D Windows \u4E0B\u65E0\u6CD5\u627E\u5230\u9879\u76EE\u8DEF\u5F84\u7684\u95EE\u9898"),e("li",null,[o("\u79FB\u9664\u90E8\u5206\u53CD\u5C04 API\uFF0C\u5408\u5E76\u81F3 "),e("code",null,"BaseFinder"),o(" \u8FDB\u884C\u6574\u5408")]),e("li",null,"\u589E\u52A0\u76F4\u63A5\u4F7F\u7528\u5B57\u7B26\u4E32\u521B\u5EFA Hook \u7684\u65B9\u6CD5")],-1),$i={id:"_1-0-1-2022-02-15",tabindex:"-1"},el=e("a",{class:"header-anchor",href:"#_1-0-1-2022-02-15","aria-hidden":"true"},"#",-1),ol=o(" 1.0.1 | 2022.02.15 \u2002"),dl=i("
    • RemedyPlan \u589E\u52A0 onFind \u529F\u80FD
    • \u6574\u5408\u5E76\u4FEE\u6539\u4E86\u90E8\u5206\u53CD\u5C04 API \u4EE3\u7801
    • \u589E\u52A0\u4E86 type \u4E2D\u7684 java \u7C7B\u578B
    • \u4FEE\u590D\u5FFD\u7565\u9519\u8BEF\u5728\u63A7\u5236\u53F0\u4ECD\u7136\u8F93\u51FA\u7684\u95EE\u9898
    ",1),cl={id:"_1-0-2022-02-14",tabindex:"-1"},il=e("a",{class:"header-anchor",href:"#_1-0-2022-02-14","aria-hidden":"true"},"#",-1),ll=o(" 1.0 | 2022.02.14 \u2002"),tl=e("ul",null,[e("li",null,"\u9996\u4E2A\u7248\u672C\u63D0\u4EA4\u81F3 Maven")],-1);function sl(nl,al){const c=t("Badge"),l=t("ExternalLinkIcon");return n(),a("div",null,[_,h,u,e("h3",k,[p,g,d(c,{type:"tip",text:"\u6700\u65B0",vertical:"middle"})]),e("ul",null,[e("li",null,[m,f,H,e("a",P,[b,d(l)]),y,e("a",x,[C,d(l)])]),A]),e("h3",v,[Y,M,d(c,{type:"warning",text:"\u8FC7\u65E7",vertical:"middle"})]),I,e("h3",R,[S,L,d(c,{type:"warning",text:"\u8FC7\u65E7",vertical:"middle"})]),X,e("h3",F,[D,B,d(c,{type:"warning",text:"\u8FC7\u65E7",vertical:"middle"})]),U,e("h3",W,[w,T,d(c,{type:"warning",text:"\u8FC7\u65E7",vertical:"middle"})]),G,e("h3",N,[E,O,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),z,e("h3",j,[V,Z,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),K,e("h3",J,[q,Q,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[$,e("li",null,[ee,e("a",oe,[de,d(l)])]),ce,e("li",null,[ie,e("a",le,[te,d(l)]),se]),ne,e("li",null,[ae,re,_e,he,ue,ke,e("a",pe,[ge,d(l)]),me]),fe,e("li",null,[He,Pe,be,e("a",ye,[xe,d(l)]),Ce]),e("li",null,[Ae,ve,Ye,e("a",Me,[Ie,d(l)]),Re]),Se,e("li",null,[Le,Xe,Fe,De,Be,e("a",Ue,[We,d(l)]),we,e("a",Te,[Ge,d(l)])]),Ne,Ee,Oe,e("li",null,[ze,je,Ve,Ze,Ke,e("a",Je,[qe,d(l)]),Qe]),$e,e("li",null,[eo,oo,co,e("a",io,[lo,d(l)]),to,e("a",so,[no,d(l)])]),ao,ro,_o,ho]),e("h3",uo,[ko,po,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),go,e("h3",mo,[fo,Ho,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[e("li",null,[Po,bo,yo,e("a",xo,[Co,d(l)]),Ao]),vo]),e("h3",Yo,[Mo,Io,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Ro,e("h3",So,[Lo,Xo,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Fo,e("h3",Do,[Bo,Uo,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Wo,e("h3",wo,[To,Go,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),No,e("h3",Eo,[Oo,zo,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),jo,e("h3",Vo,[Zo,Ko,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Jo,e("h3",qo,[Qo,$o,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),ed,e("h3",od,[dd,cd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),id,e("h3",ld,[td,sd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),nd,e("h3",ad,[rd,_d,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[hd,e("li",null,[ud,kd,pd,e("a",gd,[md,d(l)]),fd]),Hd,Pd,bd]),e("h3",yd,[xd,Cd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[Ad,e("li",null,[vd,Yd,Md,e("a",Id,[Rd,d(l)]),Sd]),Ld,Xd]),e("h3",Fd,[Dd,Bd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[e("li",null,[Ud,Wd,wd,Td,e("a",Gd,[Nd,d(l)]),Ed]),Od]),e("h3",zd,[jd,Vd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[e("li",null,[Zd,e("a",Kd,[Jd,d(l)]),qd]),Qd]),$d,e("ul",null,[e("li",null,[ec,e("a",oc,[dc,d(l)]),cc]),e("li",null,[ic,lc,tc,e("a",sc,[nc,d(l)]),ac]),rc]),e("h3",_c,[hc,uc,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),kc,e("h3",pc,[gc,mc,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),fc,e("h3",Hc,[Pc,bc,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[yc,e("li",null,[xc,Cc,Ac,e("a",vc,[Yc,d(l)]),Mc]),Ic,Rc,Sc,Lc,e("li",null,[Xc,Fc,Dc,e("a",Bc,[Uc,d(l)]),Wc]),e("li",null,[wc,e("a",Tc,[Gc,d(l)]),Nc]),Ec,e("li",null,[Oc,zc,jc,e("a",Vc,[Zc,d(l)]),Kc]),Jc,qc,e("li",null,[Qc,e("a",$c,[ei,d(l)]),oi])]),e("h3",di,[ci,ii,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[li,ti,e("li",null,[si,ni,ai,e("a",ri,[_i,d(l)]),hi])]),e("h3",ui,[ki,pi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),gi,e("h3",mi,[fi,Hi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Pi,e("h3",bi,[yi,xi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Ci,e("h3",Ai,[vi,Yi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Mi,e("h3",Ii,[Ri,Si,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Li,e("h3",Xi,[Fi,Di,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Bi,e("h3",Ui,[Wi,wi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Ti,e("h3",Gi,[Ni,Ei,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Oi,e("h3",zi,[ji,Vi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Zi,e("h3",Ki,[Ji,qi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Qi,e("h3",$i,[el,ol,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),dl,e("h3",cl,[il,ll,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),tl])}const _l=s(r,[["render",sl],["__file","changelog.html.vue"]]);export{_l as default}; diff --git a/docs/assets/changelog.html.7afbf574.js b/docs/assets/changelog.html.7afbf574.js new file mode 100644 index 000000000..8b3a9fa67 --- /dev/null +++ b/docs/assets/changelog.html.7afbf574.js @@ -0,0 +1 @@ +import{_ as a,r as c,o as s,c as l,b as e,d as t,a as i,e as o}from"./app.0312b331.js";const r={},h=i('

    Changelog

    The version update history of YukiHookAPI is recorded here.

    Pay Attention

    We will only maintain the latest API version, if you are using an outdate API version, you voluntarily renounce any possibility of maintenance.

    Notice

    To avoid translation time consumption, Changelog will use Google Translation from Chinese to English, please refer to the original text for actual reference.

    Time zone of version release date: UTC+8

    ',4),u={id:"_1-1-8-2023-02-01",tabindex:"-1"},m=e("a",{class:"header-anchor",href:"#_1-1-8-2023-02-01","aria-hidden":"true"},"#",-1),_=o(" 1.1.8 | 2023.02.01 \u2002"),p=o("Fixed the problem that the underlying Hook method cannot update the modified state synchronously when modifying parameters such as "),f=e("code",null,"result",-1),g=o(" during callback, thanks to the "),k={href:"https://github.com/fankes/YukiHookAPI/issues/23",target:"_blank",rel:"noopener noreferrer"},y=o("Issue"),b=o(" of "),x={href:"https://github.com/elvizlai",target:"_blank",rel:"noopener noreferrer"},v=o("Yongzheng Lai"),w=i("
  • Move the entry class name file automatically generated by YukiHookAPI from assets/yukihookapi_init to resources/META-INF/yukihookapi_init
  • When only printing the exception stack, the msg parameter is allowed to be empty and the msg parameter can not be set, and the log with the msg parameter left blank will not be logged unless the exception stack is not empty
  • Fixed the bug that the log printed by the exception that occurs in the body of the Hook callback method has no specific method information
  • HookParam adds instanceOrNull variable and method, which can be used on the premise that the Hook instance is not sure whether it is empty to prevent the Hook instance from being empty and throw an exception
  • Decoupled all hookers in Member lookup functionality to MemberBaseFinder.MemberHookerManager
  • Modified the usage of by condition in YukiMemberHookCreator, now you can reuse by method to set multiple conditions
  • Removed wrong Class object declaration in Android type
  • The registerReceiver method in PackageParam.AppLifecycle adds the function of directly using IntentFilter to create a system broadcast listener
  • Fixed the problem that there may be multiple registration lifecycles in PackageParam.AppLifecycle
  • Revert: The 1.1.7 version has been withdrawn due to a serious problem, please update to this version directly (the update log is the same as version 1.1.7)
  • ",10),A={id:"_1-1-6-2023-01-21",tabindex:"-1"},H=e("a",{class:"header-anchor",href:"#_1-1-6-2023-01-21","aria-hidden":"true"},"#",-1),P=o(" 1.1.6 | 2023.01.21 \u2002"),C=i("
    • Fixed the serious problem that ClassLoader does not match after PackageParam keeps a single instance when there may be multiple package names in the same process when Xposed Module is loaded
    • When the package name is not distinguished when there are multiple package names in the same process, stop loading the singleton child Hooker and print a warning message
    • Fixed the problem that the number of parameters is incorrect when methods such as HookParam.callOriginal, HookParam.invokeOriginal call the original method
    • Modify the method parameter name param of reflection calls in MethodFinder, ConstructorFinder, ReflectionFactory to args
    • Added the function of judging the parameters of the entry class constructor in the automatic processing program of the Xposed Module, the entry class needs to ensure that it does not have any constructor parameters
    ",1),F={id:"_1-1-5-2023-01-13",tabindex:"-1"},M=e("a",{class:"header-anchor",href:"#_1-1-5-2023-01-13","aria-hidden":"true"},"#",-1),I=o(" 1.1.5 | 2023.01.13 \u2002"),Y=i('
    • Standardize and optimize the overall code style
    • Privatized some APIs called internally
    • The underlying API interface is decoupled as a whole to prepare for compatibility with more Hook Frameworks
    • Move some of the functions integrated in the API to ksp-xposed dependencies (decoupling), and the separate introduction of api dependencies will no longer contain references to functions such as third-party libraries
    • Documentation Quick Start page added instructions on when YukiHookAPI.Configs.isDebug needs to be closed
    • Standardize Java Primitive Types in type definitions and sync update to docs
    • Java type adds NumberClass type
    • Improved (Xposed) Host environment recognition
    • Take over all exceptions after loading the Xposed Module, if an exception occurs, it will automatically intercept and print the error log
    • Modify the Class that does not exist in the lower Android system version (Android 5.0) in the type definition to be an empty safe type
    • Adapt and support native Xposed, the minimum recommended version is Android 7.0
    • Added support for Hook entry class declared as object type (singleton)
    • Fixed the problem that the system below Android 8 does not support the Executable type, causing the Hook to fail
    • Fixed the problem of reporting an error when using the Activity proxy function for systems below Android 9 and limit the minimum supported version of this function to Android 7.0
    • Added the prohibition of resource injection and Activity proxy function injection into the current module's own instance process to prevent problems
    • Fixed a serious error that the return value of a method in the Hook process is not consistent with the target's inherited class and interface.
    • Fixed the problem that the object is empty when calling HookParam.callOriginal and HookParam.invokeOriginal when the current Hook instance object is static
    • Optimize the function of judging the Tai Chi activation method and update the relevant instructions of the document synchronously
    • Obsolete YukiHookAPI.Status.executorName, YukiHookAPI.Status.executorVersion, please move to YukiHookAPI.Status.Executor
    • Adapted the YukiHookAPI.Status.Executor.name name display function of some third-party Hook Frameworks
    • Added Class.extends, Class.implements and other methods, which can more conveniently judge the inheritance and interface relationship of the current Class
    • Added generic methods of the same name as Class.toClass, Class.toClassOrNull and other related methods, you can use generics to constrain the instance object type of known Class
    • Modify the return value of the classOf<T> method to the generic type T to constrain the instance object type of the known Class
    • Added initialize parameter of Class related extension method, which can control whether to initialize its static method block at the same time when getting Class object
    • Added param { ... }, type { ... } and other usages in the variable, method, and construction method search functions, which can add more specific conditional judgments to the searched objects
    • The loadApp method of PackageParam adds the isExcludeSelf parameter, which can be used to exclude Hook-related functions from injecting into the module's own instance process
    • The onAppLifecycle method of PackageParam adds the isOnFailureThrowToApp parameter, which can directly throw the exception that occurs in the lifecycle method body to the host
    • Modify appClassLoader in PackageParam to be a modifiable variable, which can dynamically set the ClassLoader used by the host in the Hook process
    • Added dataExtra function in HookParam, which can be used to temporarily store the data in the Hook method body
    • Obsolete isRunInNewXShareMode, isXSharePrefsReadable in YukiHookModulePrefs, merged into isPreferencesAvailable
    • Class.allFields, Class.allMethods and other related methods add the isAccessible parameter, which can control when the member object can be set as an accessible type
    • Fixed the problem that only the last method body will be called back when receiving the same key-value data in an Activity when there are multiple hosts in YukiHookDataChannel
    • Added priority parameter in wait and other related methods of YukiHookDataChannel, you can pass in ChannelPriority to customize the conditions for callback data results
    • YukiHookDataChannel adds the function of automatically using ChannelDataWrapper type wrapper when sending data, which improves the user experience and enhances data protection
    • YukiHookDataChannel has added the function of limiting the maximum byte size of data sent at one time to prevent the app from crashing due to excessive data
    • YukiHookDataChannel has added the function of automatically segmenting when the sent data is too large, only supports List, Map, Set, String types
    • YukiHookLogger adds the contents method and the data parameter of saveToFile, which can be passed in custom debug log data for formatting or saving to a file
    • Fixed the problem that the debug log data package name processed by YukiHookLogger may be incorrect in the (Xposed) Host environment
    • Fixed the problem that the package name may be incorrect on some systems (in some system apps) when the Xposed Module loads the Resource Hook event
    ',1),R={id:"_1-1-4-2022-10-04",tabindex:"-1"},S=e("a",{class:"header-anchor",href:"#_1-1-4-2022-10-04","aria-hidden":"true"},"#",-1),L=o(" 1.1.4 | 2022.10.04 \u2002"),T=i("
    • Fixed the issue that YukiHookDataChannel may not respond to broadcast events in the system framework, reproduced in A13
    • Fixed the issue that YukiHookDataChannel could not communicate with Module App in Host App for multiple versions
    • Added obtainLoggerInMemoryData method in YukiHookDataChannel to share debug log data between module and host
    • Modify the type of YukiHookLogger.inMemoryData to ArrayList and change YukiLoggerData to data class
    • Fixed YukiLoggerData printing blank when the package name is empty in the module
    • Added loadApp, loadZygote, loadSystem, withProcess multi-parameter methods of the same name in PackageParam
    • Fixed some possible bugs
    ",1),z={id:"_1-1-3-2022-09-30",tabindex:"-1"},D=e("a",{class:"header-anchor",href:"#_1-1-3-2022-09-30","aria-hidden":"true"},"#",-1),X=o(" 1.1.3 | 2022.09.30 \u2002"),j=e("ul",null,[e("li",null,"Fixed a fatal bug where the Hook entry class name could not be customized"),e("li",null,[o("Added some code notes in "),e("code",null,"LoggerFactory"),o(" and updated special features documentation")])],-1),W={id:"_1-1-2-2022-09-30",tabindex:"-1"},O=e("a",{class:"header-anchor",href:"#_1-1-2-2022-09-30","aria-hidden":"true"},"#",-1),N=o(" 1.1.2 | 2022.09.30 \u2002"),B=i('
    • Documentation Basic Knowledge page add a friend link to the English version
    • Fixed YukiBaseHooker comments in English code note link errors
    • Fixed ClassCastException in ModuleClassLoader
    • Fixed and standardize some code notes
    • Added ModuleClassLoader exclusion list function, you can use excludeHostClasses and excludeModuleClasses methods to customize the exclusion list
    • Added YukiLoggerData real-time log data class, you can get the log array in real time through YukiHookLogger.inMemoryData
    • Added ClassLoader.listOfClasses method, which can directly get all Class in the current Dex
    ',1),E={id:"_1-1-1-2022-09-28",tabindex:"-1"},q=e("a",{class:"header-anchor",href:"#_1-1-1-2022-09-28","aria-hidden":"true"},"#",-1),U=o(" 1.1.1 | 2022.09.28 \u2002"),V=e("ul",null,[e("li",null,[o("Fixed the problem of wrong document friend links in "),e("a",{href:"../guide/knowledge"},"Basic Knowledge"),o(" page")]),e("li",null,[o("Fixed document "),e("code",null,"favicon"),o(" not showing up")]),e("li",null,[o("Fixed bug in "),e("code",null,"DexClassFinder"),o(" search conditions")])],-1),K={id:"_1-1-0-2022-09-28",tabindex:"-1"},Z=e("a",{class:"header-anchor",href:"#_1-1-0-2022-09-28","aria-hidden":"true"},"#",-1),G=o(" 1.1.0 | 2022.09.28 \u2002"),J=e("li",null,[o("This is a major version update, please refer to "),e("a",{href:"../api/home"},"API Document"),o(" and "),e("a",{href:"../api/special-features/reflection"},"Special Features"),o(" for the changes and usage mentioned in the changelog")],-1),Q=o("Change the help documentation framework to "),$={href:"https://v2.vuepress.vuejs.org",target:"_blank",rel:"noopener noreferrer"},ee=o("VuePress"),oe=i('
  • Unify and standardize the terms and nouns in the document, for example, "query" is always changed to "find", XposedHelper is misspelled and changed to XposedHelpers
  • Documentation Basic Knowledge page to add friend links, Simplified Chinese only
  • Convert Class and Method of Hook App Demo to Java to provide better demo effect
  • Fixed code comment naming in Hook Module Demo
  • Refactored a lot of low-level Hook logic and the docking method of Xposed API
  • Removed HookParamWrapper, it now interfaces directly with YukiBridgeFactory
  • Moved methods in section YukiHookBridge to AppParasitics
  • Removed HookParam.args and the underlying direct connection method setArgs, directly get and set the object of the current array
  • Optimized automatic handler to merge referenced jar into stub project
  • ',9),te=o("Fixed the problem that the module package name cannot be correctly matched when multi-project packaging, and modify the module package name matching logic of the automatic handler, thanks to "),de={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},ie=o("5ec1cff"),ne=o(" for the feedback and solutions provided"),ce=i("
  • Internal closure processing for the methods of API private tool classes to avoid polluting the top-level namespace
  • Fixed Creater naming to Creator for all reflection and Hook classes
  • Added YukiHookAPI.Status.compiledTimestamp function, which can get the compilation completion timestamp when used as an Xposed module
  • Added YukiHookAPI.Status.isXposedEnvironment function, which can determine whether the current (Xposed) host environment or module environment is
  • The debug logging function has been overhauled, and functions such as YukiHookAPI.Configs.debugTag have been merged into YukiHookLogger.Configs
  • The debug log can be added to specify the printing method as XposedBridge.log or Logd
  • The package name of the current host and the current user ID are added to the debug log by default for debugging, you can change it yourself in the debugLog configuration
  • Added generic function to reflect and call generics, you can use it in Class or CurrentClass
  • obsolete the buildOfAny method, now use the buildOf method directly (without generics) to use the constructor to create a new object and get the result Any
  • Fixed the issue of null pointer exception when using hasExtends
  • CurrentClass added non-lambda method of calling
  • CurrentClass adds name and simpleName functions
  • Completely rewrite the core method of ReflectionTool, sorting and classifying different search conditions
  • Fixed the problem that Member obtained by directly calling declared in ReflectionTool throws an exception
  • Fixed UndefinedType in ReflectionTool is not correctly judged in Method and Constructor conditions
  • Added a friendly prompt method when the reflection search result is abnormal, which can specifically locate the problem that Member cannot be found under specified conditions
  • Added VagueType condition in Method and Constructor for reflection search, which can be used in param condition to ignore parameters you don't want to fill in
  • Added paramCount { ... } condition in Method and Constructor of reflection search, now you can directly get it in it to customize your judgment condition
  • The current method is added to the FieldFinder result, which can directly create a call space for the result instance
  • Modified the modifiers condition and name condition in the reflection lookup function, now you need to return a Boolean at the end of the method body to make the condition true
  • ",20),ae=e("code",null,"as*",-1),se=o(" function in "),le=e("code",null,"ModifierRules",-1),re=o(" renamed to "),he=e("code",null,"is*",-1),ue=o(", thanks to "),me={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},_e=o("Kitsune"),pe=o(" suggestion"),fe=i("
  • Added RemedyPlan feature in FieldFinder
  • Added Class fuzzy search function (Beta) in Dex, you can now directly use searchClass function to fuzzy search Class with specified conditions
  • ",2),ge=o("Added multiple search function in reflection search, you can use relative search conditions to obtain multiple search results at the same time, thanks to "),ke=e("strong",null,"AA",-1),ye=o(" and "),be={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},xe=o("Kitsune"),ve=o(" for suggestions"),we=o("Fixed the problem that the object obtained by "),Ae=e("code",null,"appClassLoader",-1),He=o(" is incorrect in system applications in some systems, thanks to "),Pe={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Ce=o("Luckyzyx"),Fe=o(" for the feedback"),Me=e("li",null,[o("Modified the calling method of "),e("code",null,"XposedBridge.invokeOriginalMethod"),o(" and added "),e("code",null,"original"),o(" function in "),e("code",null,"MethodFinder.Result.Instance")],-1),Ie=o("Fixed the problem of wrong value of "),Ye=e("code",null,"getStringSet",-1),Re=o(" method in "),Se=e("code",null,"YukiHookModulePrefs",-1),Le=o(" and optimize the code style, thanks to "),Te={href:"https://github.com/Teddy-Zhu",target:"_blank",rel:"noopener noreferrer"},ze=o("Teddy_Zhu"),De=o(),Xe={href:"https://github.com/fankes/YukiHookAPI/pull/19",target:"_blank",rel:"noopener noreferrer"},je=o("PR"),We=e("li",null,[o("Modify "),e("code",null,"YukiHookModulePrefs"),o(" to intercept exceptions that may not exist in "),e("code",null,"XSharePreference")],-1),Oe=e("li",null,[o("Fixed the problem that "),e("code",null,"YukiHookDataChannel"),o(" could not be successfully registered in some third-party ROM system frameworks")],-1),Ne=e("li",null,[o("Secured "),e("code",null,"YukiHookDataChannel"),o(", now it can only communicate between modules from the specified package name and the host")],-1),Be=o("Added automatic hook "),Ee=e("code",null,"SharedPreferences",-1),qe=o(" to fix the problem that file permissions are not "),Ue=e("code",null,"0664",-1),Ve=o(" in some systems, thanks to "),Ke={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},Ze=o("5ec1cff"),Ge=o(" for the feedback and implementation code provided"),Je=i("
  • Added YukiHookAPI.Configs.isEnableHookSharedPreferences function, which is disabled by default and can be enabled if the permission of SharedPreferences is incorrect
  • Fixed the bug that the no-parameter construction method cannot be found when searching for Constructor without filling in the search conditions, thanks B5 KAKA for the feedback
  • Detach Result instances located in method, constructor in injectMember to Process
  • Added the useDangerousOperation method in the Hook process, which will automatically stop the Hook and print an error after the function in the Hook Dangerous List is not declared
  • Added module resource injection and Activity proxy functions, you can call injectModuleAppResources and registerModuleAppActivities to use
  • Added ModuleContextThemeWrapper function, you can call applyModuleTheme to create the Context of a module in any Activity
  • Added ClassLoader.onLoadClass function, which can be used to listen for events when the loadClass method of ClassLoader is called
  • obsolete classOf and clazz extension methods, add toClass and toClassOrNull usage, please move to the new method now
  • VariousClass adds a getOrNull method, which can return null instead of throwing an exception when it can't match Class
  • Removed isUseAppClassLoader parameter in PackageParam.hook, changed it to isForceUseAbsolute and automatically matched the target Class
  • PackageParam adds systemContext function, you can call this function at any time to get a persistent Context
  • no longer expose any methods in HookClass
  • Added throwToApp function in HookParam, which can throw exceptions directly to the host
  • The onFailureThrowToApp function is added to the Hook callback, which can be directly thrown to the host when an exception occurs
  • Modified the printing logic of the debug log, the time-consuming records in the reflection search function will only be printed during the Hook process
  • Added the function of removing Hook in the Hook process, you can use the remove and removeSelf methods to remove the hook
  • Fixed the issue that caused the host to throw an exception when ReplaceHook failed, and now it is modified to call the original method to ensure the normal operation of the host function
  • Added the function of checking the return value of the method in the Hook process. If the return value does not match, it will automatically throw an exception or print an error according to the situation
  • ",18),Qe=o("Added "),$e=e("code",null,"array",-1),eo=o(" type to Resources Hook, thanks to "),oo={href:"https://github.com/fankes/YukiHookAPI/pull/12",target:"_blank",rel:"noopener noreferrer"},to=o("PR"),io=o(" of "),no={href:"https://github.com/GSWXXN",target:"_blank",rel:"noopener noreferrer"},co=o("GSWXXN"),ao=e("li",null,[o("Moved "),e("code",null,"me.weishu.reflection"),o(" to "),e("code",null,"thirdparty"),o(" to prevent conflicting dependencies of the same name introduced at the same time")],-1),so=e("li",null,"Remove the exception thrown when the Hook method body is empty, and modify it to print the warning log",-1),lo=e("li",null,[o("Modify the exception handling logic of "),e("code",null,"AppLifecycle"),o(" and throw it directly to the host when an exception occurs")],-1),ro=e("li",null,"Updated Demo API version to 33",-1),ho={id:"_1-0-92-2022-05-31",tabindex:"-1"},uo=e("a",{class:"header-anchor",href:"#_1-0-92-2022-05-31","aria-hidden":"true"},"#",-1),mo=o(" 1.0.92 | 2022.05.31 \u2002"),_o=i("
    • Fixed the naming method of callback in a large number of methods
    • Changed the solution to fix the problem that YukiHookDataChannel cannot call back the current Activity broadcast on devices lower than Android 12
    • The InjectYukiHookWithXposed annotation adds the isUsingResourcesHook function, now you can selectively disable the dependency interface that automatically generates IXposedHookInitPackageResources
    ",1),po={id:"_1-0-91-2022-05-29",tabindex:"-1"},fo=e("a",{class:"header-anchor",href:"#_1-0-91-2022-05-29","aria-hidden":"true"},"#",-1),go=o(" 1.0.91 | 2022.05.29 \u2002"),ko=o("Fixed the "),yo=e("code",null,"ClassLoader",-1),bo=o(" error when the customized system of some devices is booted in the LSPosed environment, thanks to "),xo={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},vo=o("Luckyzyx"),wo=o(" for the feedback"),Ao=i("
  • Fixed YukiHookDataChannel not being able to call back the current Activity broadcast on ZUI and systems below Android 12
  • Integrate the YukiHookModuleStatus function into YukiHookAPI.Status, rewrite a lot of methods, now you can judge the status information such as module activation in the module and the host in both directions
  • ",2),Ho={id:"_1-0-90-2022-05-27",tabindex:"-1"},Po=e("a",{class:"header-anchor",href:"#_1-0-90-2022-05-27","aria-hidden":"true"},"#",-1),Co=o(" 1.0.90 | 2022.05.27 \u2002"),Fo=i("
    • Fixed YukiHookDataChannel crashing when the module sets the listener callback
    • Fixed YukiHookDataChannel still calling back when not in current Activity
    • Remove the default value of YukiHookDataChannel callback event, no callback
    • Removed YukiHookModulePrefs warning printed if XShare is unreadable
    • Added the isXSharePrefsReadable method in YukiHookModulePrefs to determine whether the current XShare is available
    ",1),Mo={id:"_1-0-89-2022-05-26",tabindex:"-1"},Io=e("a",{class:"header-anchor",href:"#_1-0-89-2022-05-26","aria-hidden":"true"},"#",-1),Yo=o(" 1.0.89 | 2022.05.26 \u2002"),Ro=i("
    • Fixed the problem that YukiHookDataChannel cannot be repeatedly set to monitor, and added the function of repeating response in different Activity modules and automatically following Activity to destroy the monitor function
    • Added YukiHookDataChannel repeated listening use case description document
    • Add the onAlreadyHooked method to determine whether the current method is repeated Hook
    • Modify part of the logic of repeatedly adding HashMap, remove the putIfAbsent method, allow to override the addition
    • Fixed several possible bugs
    ",1),So={id:"_1-0-88-2022-05-25",tabindex:"-1"},Lo=e("a",{class:"header-anchor",href:"#_1-0-88-2022-05-25","aria-hidden":"true"},"#",-1),To=o(" 1.0.88 | 2022.05.25 \u2002"),zo=i("
    • Fully decoupled from Xposed API
    • Added android type in type
    • Separate YukiHookModuleStatus from auto-generated code and add isEnableHookModuleStatus switch, it is up to you to enable or not
    • Internal closure processing for the constructors of a large number of classes in the API
    • Set YukiHookModulePrefs to run as a singleton to prevent repeated creation and waste of system resources
    • Fixed the bug that Hook cannot be nested since version 1.0.80, and optimize the related functions of nested Hook
    • Modify the Hooker storage scheme from HashSet to HashMap to prevent the problem of repeatedly adding Hookers
    • Modify the core implementation method of Hook, add duplicate checking to avoid repeating the Hook multiple callbacks to the HookParam method
    • MethodFinder and FieldFinder add the function of finding fuzzy methods and variable names, you can call name { ... } to set search conditions, and support regular expressions
    • Optimize and modify the way to get appContext to reduce the possibility of getting empty
    • Modify the print TAG of logger in the automatically generated code to default to your custom name, which is convenient for debugging
    • Optimize the Hooker implementation of YukiHookBridge to improve Hook performance
    • PackageParam adds the onAppLifecycle method, which can natively monitor the life cycle of the host and implement the registration system broadcast function
    • Added YukiHookDataChannel function to communicate using system out-of-order broadcast while the module and the host remain alive
    • YukiHookDataChannel adds the checkingVersionEquals method, which can be monitored to verify that the host has not updated the version mismatch problem after the module is updated
    • Added Java version example in the example code of demo-module for reference only
    ",1),Do={id:"_1-0-87-2022-05-10",tabindex:"-1"},Xo=e("a",{class:"header-anchor",href:"#_1-0-87-2022-05-10","aria-hidden":"true"},"#",-1),jo=o(" 1.0.87 | 2022.05.10 \u2002"),Wo=e("ul",null,[e("li",null,[o("Added "),e("code",null,"refreshModuleAppResources"),o(" function to adapt Resources refresh when the language region, font size, resolution changes, etc.")]),e("li",null,[o("Added "),e("code",null,"isEnableModuleAppResourcesCache"),o(" function, you can set whether to automatically cache the resources of the current module")])],-1),Oo={id:"_1-0-86-2022-05-06",tabindex:"-1"},No=e("a",{class:"header-anchor",href:"#_1-0-86-2022-05-06","aria-hidden":"true"},"#",-1),Bo=o(" 1.0.86 | 2022.05.06 \u2002"),Eo=e("ul",null,[e("li",null,[o("Fixed the problem of continuous error reporting during "),e("code",null,"initZygote"),o(" when Resources Hook is not supported, reproduced in "),e("strong",null,"ZUI"),o("/"),e("strong",null,"LSPosed CI(1.8.3-6550)")]),e("li",null,"Optimize and handle exceptions for Resources Hook, only print errors and warnings if they are used and not supported")],-1),qo={id:"_1-0-85-2022-05-04",tabindex:"-1"},Uo=e("a",{class:"header-anchor",href:"#_1-0-85-2022-05-04","aria-hidden":"true"},"#",-1),Vo=o(" 1.0.85 | 2022.05.04 \u2002"),Ko=e("ul",null,[e("li",null,[o("Fixed a serious problem of not being able to hook the system framework, since "),e("code",null,"1.0.80")]),e("li",null,[o("Added in the debug log to distinguish the package name loaded by "),e("code",null,"initZygote"),o(" as "),e("code",null,"android-zygote"),o(", "),e("code",null,"packageName"),o(" keeps "),e("code",null,"android"),o(" unchanged")])],-1),Zo={id:"_1-0-83-2022-05-04",tabindex:"-1"},Go=e("a",{class:"header-anchor",href:"#_1-0-83-2022-05-04","aria-hidden":"true"},"#",-1),Jo=o(" 1.0.83 | 2022.05.04 \u2002"),Qo=e("ul",null,[e("li",null,[o("Fixed "),e("code",null,"YukiHookModuleStatus"),o(" reporting a lot of errors after "),e("code",null,"loadSystem")]),e("li",null,[o("Added "),e("code",null,"android"),o(" type in "),e("code",null,"type")]),e("li",null,"Updated example descriptions in help documentation")],-1),$o={id:"_1-0-82-2022-05-04",tabindex:"-1"},et=e("a",{class:"header-anchor",href:"#_1-0-82-2022-05-04","aria-hidden":"true"},"#",-1),ot=o(" 1.0.82 | 2022.05.04 \u2002"),tt=e("ul",null,[e("li",null,[o("Fixed a concept confusion error, distinguishing the relationship between "),e("code",null,"initZygote"),o(" and the system framework, there are problems with the previous comments and documentation, I am very sorry")]),e("li",null,[e("code",null,"PackageParam"),o(" adds "),e("code",null,"loadSystem"),o(" method, no need to write "),e("code",null,'loadApp(name = "android")'),o(" to hook the system framework")])],-1),dt={id:"_1-0-81-2022-05-04",tabindex:"-1"},it=e("a",{class:"header-anchor",href:"#_1-0-81-2022-05-04","aria-hidden":"true"},"#",-1),nt=o(" 1.0.81 | 2022.05.04 \u2002"),ct=e("ul",null,[e("li",null,[o("Fixed the problem that the method and constructor that cannot be found in the Hook method body still output the error log after setting the condition using the "),e("code",null,"by"),o(" method")]),e("li",null,"Added a global log to display the package name of the current Hook APP during the execution of the Hook, and fixed a problem with the printing style of the error log")],-1),at={id:"_1-0-80-2022-05-01",tabindex:"-1"},st=e("a",{class:"header-anchor",href:"#_1-0-80-2022-05-01","aria-hidden":"true"},"#",-1),lt=o(" 1.0.80 | 2022.05.01 \u2002"),rt=i("
  • The InjectYukiHookWithXposed annotation adds the entryClassName function, which can customize the generated xposed_init entry class name
  • YukiHookXposedInitProxy renamed to IYukiHookXposedInit, the original interface name has been invalidated and will be deleted directly in subsequent versions
  • Added initZygote and Resources Hook functions to support Hook Layout
  • Added onXposedEvent method to listen to all events of native Xposed API
  • Perform inline processing on the lambda of the Hook function to avoid generating excessively broken anonymous classes and improve the running performance after compilation
  • Fixed PrefsData compiled method body copy is too large
  • Added XSharePreference readability test, which will automatically print a warning log if it fails
  • PackageParam adds appResources, moduleAppResources, moduleAppFilePath functions
  • loadApp of PackageParam adds the function of not writing name, and all APPs are filtered by default
  • PackageParam adds the loadZygote method, which can directly hook the system framework
  • PackageParam added resources().hook function
  • Optimization method, construction method, variable search function, the error log that cannot be found will display the set query conditions first
  • Added hasExtends extension method to determine whether the current Class has an inheritance relationship
  • Added isSupportResourcesHook function to determine whether resource hooks are currently supported (Resources Hook)
  • current function adds superClass method to call superclass
  • New superClass query conditions for search methods, construction methods and variables, you can continue to search in the parent class
  • YukiHookAPI lots of methods are decoupled from Xposed API
  • Added native Hook priority function of Xposed API
  • Fixed the problem that isFirstApplication may be inaccurate
  • Block the problem that MiuiCatcherPatch repeatedly calls the Hook entry method on the MIUI system
  • Optimize Hook entry calling method to avoid multiple calls due to Hook Framework issues
  • ",21),ht=o("Fixed the problem that Hook "),ut=e("code",null,"ClassLoader",-1),mt=o(" causes Hook to freeze, thanks to "),_t={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},pt=o("WankkoRee"),ft=o(" for the feedback"),gt=e("li",null,[o("Improve the performance after the "),e("code",null,"XC_Callback"),o(" interface is connected")],-1),kt=e("li",null,[o("Java "),e("code",null,"type"),o(" added "),e("code",null,"ClassLoader"),o(" type")],-1),yt=e("li",null,"Optimize the API help documentation, fix the problem that the page may be continuously cached",-1),bt={id:"_1-0-78-2022-04-18",tabindex:"-1"},xt=e("a",{class:"header-anchor",href:"#_1-0-78-2022-04-18","aria-hidden":"true"},"#",-1),vt=o(" 1.0.78 | 2022.04.18 \u2002"),wt=i("
  • YukiHookModulePrefs adds isRunInNewXShareMode method, which can be used to determine whether the module is currently in New XSharePreference mode
  • Fixed YukiHookModulePrefs working in New XSharePreference mode
  • Added ModulePreferenceFragment, now you can completely replace PreferenceFragmentCompat and start using the new functionality
  • ",3),At=o("Adapt the Sp data storage solution of "),Ht=e("code",null,"PreferenceFragmentCompat",-1),Pt=o(", thanks to "),Ct={href:"https://github.com/mahoshojoHCG",target:"_blank",rel:"noopener noreferrer"},Ft=o("mahoshojoHCG"),Mt=o(" for feedback"),It=e("li",null,[o("Update autohandlers and "),e("code",null,"Kotlin"),o(" dependencies to the latest version")],-1),Yt=e("li",null,"Fixed some bugs in documentation and code comments",-1),Rt={id:"_1-0-77-2022-04-15",tabindex:"-1"},St=e("a",{class:"header-anchor",href:"#_1-0-77-2022-04-15","aria-hidden":"true"},"#",-1),Lt=o(" 1.0.77 | 2022.04.15 \u2002"),Tt=e("code",null,"YukiHookModulePrefs",-1),zt=o(" added "),Dt=e("code",null,"clear",-1),Xt=o(" method, thanks to "),jt={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Wt=o("WankkoRee"),Ot=o(" for the suggestion"),Nt=i("
  • YukiHookModulePrefs added getStringSet, putStringSet, all methods
  • Added any method to args of HookParam
  • Added ModuleApplication, which can be inherited in modules to achieve more functions
  • Connect all findClass functions to the Xposed API, and continue to use native ClassLoader in non-hosted environments
  • Fixed some possible bugs
  • ",5),Bt={id:"_1-0-75-2022-04-13",tabindex:"-1"},Et=e("a",{class:"header-anchor",href:"#_1-0-75-2022-04-13","aria-hidden":"true"},"#",-1),qt=o(" 1.0.75 | 2022.04.13 \u2002"),Ut=o("Corrected the logic recognition part of the automatic handler, thanks to "),Vt={href:"https://github.com/ApeaSuperz",target:"_blank",rel:"noopener noreferrer"},Kt=o("ApeaSuperz"),Zt=o(" contribution"),Gt=i("
  • Fixed an issue where the reference to a doc comment was not changed
  • firstArgs and lastArgs methods have been removed from HookParam, now you can use args().first() and args().last() instead of it
  • Removed default parameter index = 0 in args() in HookParam, now you can use args().first() or args(index = 0) to replace it
  • The result function in HookParam adds generic matching, now you can use result<T> to match the known return value type of your target method
  • The emptyParam condition is added to the method and constructor query function, and the misunderstanding of the query condition that needs to be paid attention to in the document has been improved
  • Added android type in type
  • ",6),Jt={id:"_1-0-73-2022-04-10",tabindex:"-1"},Qt=e("a",{class:"header-anchor",href:"#_1-0-73-2022-04-10","aria-hidden":"true"},"#",-1),$t=o(" 1.0.73 | 2022.04.10 \u2002"),ed=o("Fixed some Chinese translation errors in documents, thanks to "),od={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},td=o("WankkoRee"),dd=o(" for their contributions"),id=o("Fixed the problem that "),nd=e("code",null,"XC_LoadPackage.LoadPackageParam",-1),cd=o(" throws an exception when the content is empty in some cases, thanks to "),ad={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},sd=o("Luckyzyx"),ld=o(" for the feedback"),rd=e("li",null,"Fixed some known bugs and improve Hook stability",-1),hd={id:"_1-0-72-2022-04-09",tabindex:"-1"},ud=e("a",{class:"header-anchor",href:"#_1-0-72-2022-04-09","aria-hidden":"true"},"#",-1),md=o(" 1.0.72 | 2022.04.09 \u2002"),_d=e("ul",null,[e("li",null,"Update API documentation to new address"),e("li",null,[o("Add "),e("code",null,"appContext"),o(" function to "),e("code",null,"PackageParam")]),e("li",null,"Fixed some known bugs and improve Hook stability")],-1),pd={id:"_1-0-71-2022-04-04",tabindex:"-1"},fd=e("a",{class:"header-anchor",href:"#_1-0-71-2022-04-04","aria-hidden":"true"},"#",-1),gd=o(" 1.0.71 | 2022.04.04 \u2002"),kd=e("ul",null,[e("li",null,"Fixed a serious issue that would stop the Hook from throwing an exception when VariousClass could not be matched")],-1),yd={id:"_1-0-70-2022-04-04",tabindex:"-1"},bd=e("a",{class:"header-anchor",href:"#_1-0-70-2022-04-04","aria-hidden":"true"},"#",-1),xd=o(" 1.0.70 | 2022.04.04 \u2002"),vd=e("li",null,[o("Fixed "),e("code",null,"instanceClass"),o(" reporting an error after being called in a static instance")],-1),wd=o("Add "),Ad=e("code",null,"isUseAppClassLoader",-1),Hd=o(" function in Hook process, thanks to "),Pd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Cd=o("WankkoRee"),Fd=o(" for feedback"),Md=e("li",null,[o("Added the "),e("code",null,"withProcess"),o(" function, which can be hooked according to the currently specified process of the APP")],-1),Id=e("li",null,"Fixed critical logic errors in lookup methods, constructor classes and variables",-1),Yd=e("li",null,"Fixed the problem that the abnormal output cannot be ignored when the Hook target class does not exist",-1),Rd=e("li",null,"Fixed the problem that the Hook could not take effect due to the fast loading of the APP startup method in some cases",-1),Sd=o("Fixed "),Ld=e("code",null,"allMethods",-1),Td=o(" not throwing an exception when it is not hooked to a method, thanks to "),zd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Dd=o("WankkoRee"),Xd=o(" for the feedback"),jd=o("Added Hook status monitoring function, thanks to "),Wd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Od=o("WankkoRee"),Nd=o(" for the suggestion"),Bd=e("li",null,"Modify the way the Xposed entry is injected into the class, and redefine the definition domain of the API",-1),Ed=o("Added obfuscated method and variable lookup function, you can use different types of filter "),qd=e("code",null,"index",-1),Ud=o(" to locate the specified method and variable, thanks to "),Vd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Kd=o("WankkoRee"),Zd=o(" for the ideas provided"),Gd=e("li",null,[o("When looking for methods and variables, multiple types are allowed, such as the class name declared by "),e("code",null,"String"),o(" and "),e("code",null,"VariousClass")],-1),Jd=e("li",null,[o("Add a new "),e("code",null,"current"),o(" function, which can build a reflection method operation space for any class, and easily call and modify the methods and variables in it")],-1),Qd=o("Fixed a lot of bugs in the hook process, thanks to "),$d={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},ei=o("WankkoRee"),oi=o(" for contributing to this project"),ti={id:"_1-0-69-2022-03-30",tabindex:"-1"},di=e("a",{class:"header-anchor",href:"#_1-0-69-2022-03-30","aria-hidden":"true"},"#",-1),ii=o(" 1.0.69 | 2022.03.30 \u2002"),ni=e("li",null,"Added and improved annotations for some method functions",-1),ci=e("li",null,"Added more example Hook content in Demo",-1),ai=o("Fixed the issue that only the last one takes effect when "),si=e("code",null,"allMethods",-1),li=o(" is used multiple times in a Hook instance, thanks to "),ri={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},hi=o("WankkoRee"),ui=o(" for the feedback"),mi={id:"_1-0-68-2022-03-29",tabindex:"-1"},_i=e("a",{class:"header-anchor",href:"#_1-0-68-2022-03-29","aria-hidden":"true"},"#",-1),pi=o(" 1.0.68 | 2022.03.29 \u2002"),fi=i("
    • Added new use case and LSPosed scope in Demo
    • Added Member lookup cache and lookup cache configuration switches
    • Removed and modified MethodFinder, FieldFinder and HookParam related method calls
    • Add more cast types in Finder and support cast as array
    • Overall performance and stability improvements
    • Fixed bugs that may exist in the previous version
    ",1),gi={id:"_1-0-67-2022-03-27",tabindex:"-1"},ki=e("a",{class:"header-anchor",href:"#_1-0-67-2022-03-27","aria-hidden":"true"},"#",-1),yi=o(" 1.0.67 | 2022.03.27 \u2002"),bi=i("
    • Added three modifiers functions in Finder, which can filter static, native, public, abstract and many other description types
    • When searching for methods and constructors, the method parameter type can be blurred to a specified number for searching
    • Added hasModifiers extension for Member
    • Added give method in MethodFinder and ConstructorFinder to get primitive types
    • Added PrefsData template function in YukiHookModulePrefs
    • Completely refactored method, constructor and variable lookup scheme
    • Optimized code comments and fixed possible bugs
    ",1),xi={id:"_1-0-66-2022-03-25",tabindex:"-1"},vi=e("a",{class:"header-anchor",href:"#_1-0-66-2022-03-25","aria-hidden":"true"},"#",-1),wi=o(" 1.0.66 | 2022.03.25 \u2002"),Ai=e("ul",null,[e("li",null,[o("Fixed a serious bug in "),e("code",null,"MethodFinder")]),e("li",null,[o("Added "),e("code",null,"args"),o(" call method in "),e("code",null,"hookParam")]),e("li",null,"Fixed other possible problems and fix some class annotation problems")],-1),Hi={id:"_1-0-65-2022-03-25",tabindex:"-1"},Pi=e("a",{class:"header-anchor",href:"#_1-0-65-2022-03-25","aria-hidden":"true"},"#",-1),Ci=o(" 1.0.65 | 2022.03.25 \u2002"),Fi=i("
    • Republished version to fix the incorrect new version of the Maven repository due to cache issues
    • Added MethodFinder and FieldFinder new return value calling methods
    • Fixed possible problems and fix possible problems during the use of Tai Chi
    • Fixed possible problems with auto-generated Xposed entry classes
    • Added android type and java type in type
    ",1),Mi={id:"_1-0-6-2022-03-20",tabindex:"-1"},Ii=e("a",{class:"header-anchor",href:"#_1-0-6-2022-03-20","aria-hidden":"true"},"#",-1),Yi=o(" 1.0.6 | 2022.03.20 \u2002"),Ri=i("
    • Fixed YukiHookModulePrefs being ignored every time after using direct once to ignore cache
    • Added new API, abolished the traditional usage of isActive to judge module activation
    • Fixed the issue of printing debug logs when using the API in a non-Xposed environment
    • Fixed log output issue and unintercepted exception issue when looking for Field
    • Decoupling Xposed API in ReflectionUtils
    • Added YukiHookModuleStatus method name confusion to reduce the size of module generation
    • The welcome message will no longer be printed when loading the module's own Hook
    • Fixed some bugs that still exist in the previous version
    ",1),Si={id:"_1-0-55-2022-03-18",tabindex:"-1"},Li=e("a",{class:"header-anchor",href:"#_1-0-55-2022-03-18","aria-hidden":"true"},"#",-1),Ti=o(" 1.0.55 | 2022.03.18 \u2002"),zi=e("ul",null,[e("li",null,"Fixed an annotation error"),e("li",null,"Temporarily fix a bug"),e("li",null,[o("Added a large number of "),e("code",null,"android"),o(" types in "),e("code",null,"type"),o(" and a small number of "),e("code",null,"java"),o(" types")]),e("li",null,"Fixed compatibility issues between new and old Kotlin APIs")],-1),Di={id:"_1-0-5-2022-03-18",tabindex:"-1"},Xi=e("a",{class:"header-anchor",href:"#_1-0-5-2022-03-18","aria-hidden":"true"},"#",-1),ji=o(" 1.0.5 | 2022.03.18 \u2002"),Wi=i("
    • Fixed the problem that the welcome message was printed multiple times in the case of the old version of the LSPosed framework
    • Added onInit method to configure YukiHookAPI
    • Added executorName and executorVersion to get the name and version number of the current hook framework
    • Added by method to set the timing and condition of Hook
    • YukiHookModulePrefs adds a controllable key-value cache, which can dynamically update data when the host is running
    • Fixed some possible bugs
    ",1),Oi={id:"_1-0-4-2022-03-06",tabindex:"-1"},Ni=e("a",{class:"header-anchor",href:"#_1-0-4-2022-03-06","aria-hidden":"true"},"#",-1),Bi=o(" 1.0.4 | 2022.03.06 \u2002"),Ei=i("
    • Fixed LSPosed cannot find XposedBridge after enabling "Only module classloader can use Xposed API" option in latest version
    • Added constant version name and version number for YukiHookAPI
    • Added hasField method and isAllowPrintingLogs configuration parameter
    • Added isDebug to enable the API to automatically print the welcome message to test whether the module is valid
    ",1),qi={id:"_1-0-3-2022-03-02",tabindex:"-1"},Ui=e("a",{class:"header-anchor",href:"#_1-0-3-2022-03-02","aria-hidden":"true"},"#",-1),Vi=o(" 1.0.3 | 2022.03.02 \u2002"),Ki=i("
    • Fixed a potential exception not intercepted BUG
    • Added ignoredError function
    • Added android type in type
    • Added ClassNotFound function after listening to hook
    ",1),Zi={id:"_1-0-2-2022-02-18",tabindex:"-1"},Gi=e("a",{class:"header-anchor",href:"#_1-0-2-2022-02-18","aria-hidden":"true"},"#",-1),Ji=o(" 1.0.2 | 2022.02.18 \u2002"),Qi=e("ul",null,[e("li",null,"Fixed the problem that the project path cannot be found under Windows"),e("li",null,[o("Remove part of reflection API, merge into "),e("code",null,"BaseFinder"),o(" for integration")]),e("li",null,"Add a method to create Hook directly using string")],-1),$i={id:"_1-0-1-2022-02-15",tabindex:"-1"},en=e("a",{class:"header-anchor",href:"#_1-0-1-2022-02-15","aria-hidden":"true"},"#",-1),on=o(" 1.0.1 | 2022.02.15 \u2002"),tn=e("ul",null,[e("li",null,[e("code",null,"RemedyPlan"),o(" adds "),e("code",null,"onFind"),o(" function")]),e("li",null,"Integrate and modify some reflection API code"),e("li",null,[o("Added "),e("code",null,"java"),o(" type in "),e("code",null,"type")]),e("li",null,"Fixed the issue that ignored errors still output in the console")],-1),dn={id:"_1-0-2022-02-14",tabindex:"-1"},nn=e("a",{class:"header-anchor",href:"#_1-0-2022-02-14","aria-hidden":"true"},"#",-1),cn=o(" 1.0 | 2022.02.14 \u2002"),an=e("ul",null,[e("li",null,"The first version is submitted to Maven")],-1);function sn(ln,rn){const d=c("Badge"),n=c("ExternalLinkIcon");return s(),l("div",null,[h,e("h3",u,[m,_,t(d,{type:"tip",text:"latest",vertical:"middle"})]),e("ul",null,[e("li",null,[p,f,g,e("a",k,[y,t(n)]),b,e("a",x,[v,t(n)])]),w]),e("h3",A,[H,P,t(d,{type:"warning",text:"stale",vertical:"middle"})]),C,e("h3",F,[M,I,t(d,{type:"warning",text:"stale",vertical:"middle"})]),Y,e("h3",R,[S,L,t(d,{type:"warning",text:"stale",vertical:"middle"})]),T,e("h3",z,[D,X,t(d,{type:"warning",text:"stale",vertical:"middle"})]),j,e("h3",W,[O,N,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),B,e("h3",E,[q,U,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),V,e("h3",K,[Z,G,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[J,e("li",null,[Q,e("a",$,[ee,t(n)])]),oe,e("li",null,[te,e("a",de,[ie,t(n)]),ne]),ce,e("li",null,[ae,se,le,re,he,ue,e("a",me,[_e,t(n)]),pe]),fe,e("li",null,[ge,ke,ye,e("a",be,[xe,t(n)]),ve]),e("li",null,[we,Ae,He,e("a",Pe,[Ce,t(n)]),Fe]),Me,e("li",null,[Ie,Ye,Re,Se,Le,e("a",Te,[ze,t(n)]),De,e("a",Xe,[je,t(n)])]),We,Oe,Ne,e("li",null,[Be,Ee,qe,Ue,Ve,e("a",Ke,[Ze,t(n)]),Ge]),Je,e("li",null,[Qe,$e,eo,e("a",oo,[to,t(n)]),io,e("a",no,[co,t(n)])]),ao,so,lo,ro]),e("h3",ho,[uo,mo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),_o,e("h3",po,[fo,go,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[ko,yo,bo,e("a",xo,[vo,t(n)]),wo]),Ao]),e("h3",Ho,[Po,Co,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Fo,e("h3",Mo,[Io,Yo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ro,e("h3",So,[Lo,To,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),zo,e("h3",Do,[Xo,jo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Wo,e("h3",Oo,[No,Bo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Eo,e("h3",qo,[Uo,Vo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ko,e("h3",Zo,[Go,Jo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Qo,e("h3",$o,[et,ot,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),tt,e("h3",dt,[it,nt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),ct,e("h3",at,[st,lt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[rt,e("li",null,[ht,ut,mt,e("a",_t,[pt,t(n)]),ft]),gt,kt,yt]),e("h3",bt,[xt,vt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[wt,e("li",null,[At,Ht,Pt,e("a",Ct,[Ft,t(n)]),Mt]),It,Yt]),e("h3",Rt,[St,Lt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[Tt,zt,Dt,Xt,e("a",jt,[Wt,t(n)]),Ot]),Nt]),e("h3",Bt,[Et,qt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[Ut,e("a",Vt,[Kt,t(n)]),Zt]),Gt]),e("h3",Jt,[Qt,$t,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[ed,e("a",od,[td,t(n)]),dd]),e("li",null,[id,nd,cd,e("a",ad,[sd,t(n)]),ld]),rd]),e("h3",hd,[ud,md,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),_d,e("h3",pd,[fd,gd,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),kd,e("h3",yd,[bd,xd,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[vd,e("li",null,[wd,Ad,Hd,e("a",Pd,[Cd,t(n)]),Fd]),Md,Id,Yd,Rd,e("li",null,[Sd,Ld,Td,e("a",zd,[Dd,t(n)]),Xd]),e("li",null,[jd,e("a",Wd,[Od,t(n)]),Nd]),Bd,e("li",null,[Ed,qd,Ud,e("a",Vd,[Kd,t(n)]),Zd]),Gd,Jd,e("li",null,[Qd,e("a",$d,[ei,t(n)]),oi])]),e("h3",ti,[di,ii,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[ni,ci,e("li",null,[ai,si,li,e("a",ri,[hi,t(n)]),ui])]),e("h3",mi,[_i,pi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),fi,e("h3",gi,[ki,yi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),bi,e("h3",xi,[vi,wi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ai,e("h3",Hi,[Pi,Ci,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Fi,e("h3",Mi,[Ii,Yi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ri,e("h3",Si,[Li,Ti,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),zi,e("h3",Di,[Xi,ji,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Wi,e("h3",Oi,[Ni,Bi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ei,e("h3",qi,[Ui,Vi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ki,e("h3",Zi,[Gi,Ji,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Qi,e("h3",$i,[en,on,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),tn,e("h3",dn,[nn,cn,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),an])}const un=a(r,[["render",sn],["__file","changelog.html.vue"]]);export{un as default}; diff --git a/docs/assets/changelog.html.e02d6157.js b/docs/assets/changelog.html.843158d7.js similarity index 96% rename from docs/assets/changelog.html.e02d6157.js rename to docs/assets/changelog.html.843158d7.js index 05de97997..601939026 100644 --- a/docs/assets/changelog.html.e02d6157.js +++ b/docs/assets/changelog.html.843158d7.js @@ -1 +1 @@ -const l=JSON.parse('{"key":"v-0e6c3476","path":"/zh-cn/about/changelog.html","title":"\u66F4\u65B0\u65E5\u5FD7","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"1.1.7 | 2023.02.01","slug":"_1-1-7-2023-02-01","link":"#_1-1-7-2023-02-01","children":[]},{"level":3,"title":"1.1.6 | 2023.01.21","slug":"_1-1-6-2023-01-21","link":"#_1-1-6-2023-01-21","children":[]},{"level":3,"title":"1.1.5 | 2023.01.13","slug":"_1-1-5-2023-01-13","link":"#_1-1-5-2023-01-13","children":[]},{"level":3,"title":"1.1.4 | 2022.10.04","slug":"_1-1-4-2022-10-04","link":"#_1-1-4-2022-10-04","children":[]},{"level":3,"title":"1.1.3 | 2022.09.30","slug":"_1-1-3-2022-09-30","link":"#_1-1-3-2022-09-30","children":[]},{"level":3,"title":"1.1.2 | 2022.09.30","slug":"_1-1-2-2022-09-30","link":"#_1-1-2-2022-09-30","children":[]},{"level":3,"title":"1.1.1 | 2022.09.28","slug":"_1-1-1-2022-09-28","link":"#_1-1-1-2022-09-28","children":[]},{"level":3,"title":"1.1.0 | 2022.09.28","slug":"_1-1-0-2022-09-28","link":"#_1-1-0-2022-09-28","children":[]},{"level":3,"title":"1.0.92 | 2022.05.31","slug":"_1-0-92-2022-05-31","link":"#_1-0-92-2022-05-31","children":[]},{"level":3,"title":"1.0.91 | 2022.05.29","slug":"_1-0-91-2022-05-29","link":"#_1-0-91-2022-05-29","children":[]},{"level":3,"title":"1.0.90 | 2022.05.27","slug":"_1-0-90-2022-05-27","link":"#_1-0-90-2022-05-27","children":[]},{"level":3,"title":"1.0.89 | 2022.05.26","slug":"_1-0-89-2022-05-26","link":"#_1-0-89-2022-05-26","children":[]},{"level":3,"title":"1.0.88 | 2022.05.25","slug":"_1-0-88-2022-05-25","link":"#_1-0-88-2022-05-25","children":[]},{"level":3,"title":"1.0.87 | 2022.05.10","slug":"_1-0-87-2022-05-10","link":"#_1-0-87-2022-05-10","children":[]},{"level":3,"title":"1.0.86 | 2022.05.06","slug":"_1-0-86-2022-05-06","link":"#_1-0-86-2022-05-06","children":[]},{"level":3,"title":"1.0.85 | 2022.05.04","slug":"_1-0-85-2022-05-04","link":"#_1-0-85-2022-05-04","children":[]},{"level":3,"title":"1.0.83 | 2022.05.04","slug":"_1-0-83-2022-05-04","link":"#_1-0-83-2022-05-04","children":[]},{"level":3,"title":"1.0.82 | 2022.05.04","slug":"_1-0-82-2022-05-04","link":"#_1-0-82-2022-05-04","children":[]},{"level":3,"title":"1.0.81 | 2022.05.04","slug":"_1-0-81-2022-05-04","link":"#_1-0-81-2022-05-04","children":[]},{"level":3,"title":"1.0.80 | 2022.05.01","slug":"_1-0-80-2022-05-01","link":"#_1-0-80-2022-05-01","children":[]},{"level":3,"title":"1.0.78 | 2022.04.18","slug":"_1-0-78-2022-04-18","link":"#_1-0-78-2022-04-18","children":[]},{"level":3,"title":"1.0.77 | 2022.04.15","slug":"_1-0-77-2022-04-15","link":"#_1-0-77-2022-04-15","children":[]},{"level":3,"title":"1.0.75 | 2022.04.13","slug":"_1-0-75-2022-04-13","link":"#_1-0-75-2022-04-13","children":[]},{"level":3,"title":"1.0.73 | 2022.04.10","slug":"_1-0-73-2022-04-10","link":"#_1-0-73-2022-04-10","children":[]},{"level":3,"title":"1.0.72 | 2022.04.09","slug":"_1-0-72-2022-04-09","link":"#_1-0-72-2022-04-09","children":[]},{"level":3,"title":"1.0.71 | 2022.04.04","slug":"_1-0-71-2022-04-04","link":"#_1-0-71-2022-04-04","children":[]},{"level":3,"title":"1.0.70 | 2022.04.04","slug":"_1-0-70-2022-04-04","link":"#_1-0-70-2022-04-04","children":[]},{"level":3,"title":"1.0.69 | 2022.03.30","slug":"_1-0-69-2022-03-30","link":"#_1-0-69-2022-03-30","children":[]},{"level":3,"title":"1.0.68 | 2022.03.29","slug":"_1-0-68-2022-03-29","link":"#_1-0-68-2022-03-29","children":[]},{"level":3,"title":"1.0.67 | 2022.03.27","slug":"_1-0-67-2022-03-27","link":"#_1-0-67-2022-03-27","children":[]},{"level":3,"title":"1.0.66 | 2022.03.25","slug":"_1-0-66-2022-03-25","link":"#_1-0-66-2022-03-25","children":[]},{"level":3,"title":"1.0.65 | 2022.03.25","slug":"_1-0-65-2022-03-25","link":"#_1-0-65-2022-03-25","children":[]},{"level":3,"title":"1.0.6 | 2022.03.20","slug":"_1-0-6-2022-03-20","link":"#_1-0-6-2022-03-20","children":[]},{"level":3,"title":"1.0.55 | 2022.03.18","slug":"_1-0-55-2022-03-18","link":"#_1-0-55-2022-03-18","children":[]},{"level":3,"title":"1.0.5 | 2022.03.18","slug":"_1-0-5-2022-03-18","link":"#_1-0-5-2022-03-18","children":[]},{"level":3,"title":"1.0.4 | 2022.03.06","slug":"_1-0-4-2022-03-06","link":"#_1-0-4-2022-03-06","children":[]},{"level":3,"title":"1.0.3 | 2022.03.02","slug":"_1-0-3-2022-03-02","link":"#_1-0-3-2022-03-02","children":[]},{"level":3,"title":"1.0.2 | 2022.02.18","slug":"_1-0-2-2022-02-18","link":"#_1-0-2-2022-02-18","children":[]},{"level":3,"title":"1.0.1 | 2022.02.15","slug":"_1-0-1-2022-02-15","link":"#_1-0-1-2022-02-15","children":[]},{"level":3,"title":"1.0 | 2022.02.14","slug":"_1-0-2022-02-14","link":"#_1-0-2022-02-14","children":[]}],"git":{"updatedTime":1675192275000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":11}]},"filePathRelative":"zh-cn/about/changelog.md"}');export{l as data}; +const l=JSON.parse('{"key":"v-0e6c3476","path":"/zh-cn/about/changelog.html","title":"\u66F4\u65B0\u65E5\u5FD7","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"1.1.8 | 2023.02.01","slug":"_1-1-8-2023-02-01","link":"#_1-1-8-2023-02-01","children":[]},{"level":3,"title":"1.1.6 | 2023.01.21","slug":"_1-1-6-2023-01-21","link":"#_1-1-6-2023-01-21","children":[]},{"level":3,"title":"1.1.5 | 2023.01.13","slug":"_1-1-5-2023-01-13","link":"#_1-1-5-2023-01-13","children":[]},{"level":3,"title":"1.1.4 | 2022.10.04","slug":"_1-1-4-2022-10-04","link":"#_1-1-4-2022-10-04","children":[]},{"level":3,"title":"1.1.3 | 2022.09.30","slug":"_1-1-3-2022-09-30","link":"#_1-1-3-2022-09-30","children":[]},{"level":3,"title":"1.1.2 | 2022.09.30","slug":"_1-1-2-2022-09-30","link":"#_1-1-2-2022-09-30","children":[]},{"level":3,"title":"1.1.1 | 2022.09.28","slug":"_1-1-1-2022-09-28","link":"#_1-1-1-2022-09-28","children":[]},{"level":3,"title":"1.1.0 | 2022.09.28","slug":"_1-1-0-2022-09-28","link":"#_1-1-0-2022-09-28","children":[]},{"level":3,"title":"1.0.92 | 2022.05.31","slug":"_1-0-92-2022-05-31","link":"#_1-0-92-2022-05-31","children":[]},{"level":3,"title":"1.0.91 | 2022.05.29","slug":"_1-0-91-2022-05-29","link":"#_1-0-91-2022-05-29","children":[]},{"level":3,"title":"1.0.90 | 2022.05.27","slug":"_1-0-90-2022-05-27","link":"#_1-0-90-2022-05-27","children":[]},{"level":3,"title":"1.0.89 | 2022.05.26","slug":"_1-0-89-2022-05-26","link":"#_1-0-89-2022-05-26","children":[]},{"level":3,"title":"1.0.88 | 2022.05.25","slug":"_1-0-88-2022-05-25","link":"#_1-0-88-2022-05-25","children":[]},{"level":3,"title":"1.0.87 | 2022.05.10","slug":"_1-0-87-2022-05-10","link":"#_1-0-87-2022-05-10","children":[]},{"level":3,"title":"1.0.86 | 2022.05.06","slug":"_1-0-86-2022-05-06","link":"#_1-0-86-2022-05-06","children":[]},{"level":3,"title":"1.0.85 | 2022.05.04","slug":"_1-0-85-2022-05-04","link":"#_1-0-85-2022-05-04","children":[]},{"level":3,"title":"1.0.83 | 2022.05.04","slug":"_1-0-83-2022-05-04","link":"#_1-0-83-2022-05-04","children":[]},{"level":3,"title":"1.0.82 | 2022.05.04","slug":"_1-0-82-2022-05-04","link":"#_1-0-82-2022-05-04","children":[]},{"level":3,"title":"1.0.81 | 2022.05.04","slug":"_1-0-81-2022-05-04","link":"#_1-0-81-2022-05-04","children":[]},{"level":3,"title":"1.0.80 | 2022.05.01","slug":"_1-0-80-2022-05-01","link":"#_1-0-80-2022-05-01","children":[]},{"level":3,"title":"1.0.78 | 2022.04.18","slug":"_1-0-78-2022-04-18","link":"#_1-0-78-2022-04-18","children":[]},{"level":3,"title":"1.0.77 | 2022.04.15","slug":"_1-0-77-2022-04-15","link":"#_1-0-77-2022-04-15","children":[]},{"level":3,"title":"1.0.75 | 2022.04.13","slug":"_1-0-75-2022-04-13","link":"#_1-0-75-2022-04-13","children":[]},{"level":3,"title":"1.0.73 | 2022.04.10","slug":"_1-0-73-2022-04-10","link":"#_1-0-73-2022-04-10","children":[]},{"level":3,"title":"1.0.72 | 2022.04.09","slug":"_1-0-72-2022-04-09","link":"#_1-0-72-2022-04-09","children":[]},{"level":3,"title":"1.0.71 | 2022.04.04","slug":"_1-0-71-2022-04-04","link":"#_1-0-71-2022-04-04","children":[]},{"level":3,"title":"1.0.70 | 2022.04.04","slug":"_1-0-70-2022-04-04","link":"#_1-0-70-2022-04-04","children":[]},{"level":3,"title":"1.0.69 | 2022.03.30","slug":"_1-0-69-2022-03-30","link":"#_1-0-69-2022-03-30","children":[]},{"level":3,"title":"1.0.68 | 2022.03.29","slug":"_1-0-68-2022-03-29","link":"#_1-0-68-2022-03-29","children":[]},{"level":3,"title":"1.0.67 | 2022.03.27","slug":"_1-0-67-2022-03-27","link":"#_1-0-67-2022-03-27","children":[]},{"level":3,"title":"1.0.66 | 2022.03.25","slug":"_1-0-66-2022-03-25","link":"#_1-0-66-2022-03-25","children":[]},{"level":3,"title":"1.0.65 | 2022.03.25","slug":"_1-0-65-2022-03-25","link":"#_1-0-65-2022-03-25","children":[]},{"level":3,"title":"1.0.6 | 2022.03.20","slug":"_1-0-6-2022-03-20","link":"#_1-0-6-2022-03-20","children":[]},{"level":3,"title":"1.0.55 | 2022.03.18","slug":"_1-0-55-2022-03-18","link":"#_1-0-55-2022-03-18","children":[]},{"level":3,"title":"1.0.5 | 2022.03.18","slug":"_1-0-5-2022-03-18","link":"#_1-0-5-2022-03-18","children":[]},{"level":3,"title":"1.0.4 | 2022.03.06","slug":"_1-0-4-2022-03-06","link":"#_1-0-4-2022-03-06","children":[]},{"level":3,"title":"1.0.3 | 2022.03.02","slug":"_1-0-3-2022-03-02","link":"#_1-0-3-2022-03-02","children":[]},{"level":3,"title":"1.0.2 | 2022.02.18","slug":"_1-0-2-2022-02-18","link":"#_1-0-2-2022-02-18","children":[]},{"level":3,"title":"1.0.1 | 2022.02.15","slug":"_1-0-1-2022-02-15","link":"#_1-0-1-2022-02-15","children":[]},{"level":3,"title":"1.0 | 2022.02.14","slug":"_1-0-2022-02-14","link":"#_1-0-2022-02-14","children":[]}],"git":{"updatedTime":1675195255000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":12}]},"filePathRelative":"zh-cn/about/changelog.md"}');export{l as data}; diff --git a/docs/assets/changelog.html.bfd0982c.js b/docs/assets/changelog.html.b4f9ea78.js similarity index 93% rename from docs/assets/changelog.html.bfd0982c.js rename to docs/assets/changelog.html.b4f9ea78.js index 8d0115359..e1a2e0a3f 100644 --- a/docs/assets/changelog.html.bfd0982c.js +++ b/docs/assets/changelog.html.b4f9ea78.js @@ -1 +1 @@ -const l=JSON.parse('{"key":"v-3f851d14","path":"/en/about/changelog.html","title":"Changelog","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"1.1.7 | 2023.02.01","slug":"_1-1-7-2023-02-01","link":"#_1-1-7-2023-02-01","children":[]},{"level":3,"title":"1.1.6 | 2023.01.21","slug":"_1-1-6-2023-01-21","link":"#_1-1-6-2023-01-21","children":[]},{"level":3,"title":"1.1.5 | 2023.01.13","slug":"_1-1-5-2023-01-13","link":"#_1-1-5-2023-01-13","children":[]},{"level":3,"title":"1.1.4 | 2022.10.04","slug":"_1-1-4-2022-10-04","link":"#_1-1-4-2022-10-04","children":[]},{"level":3,"title":"1.1.3 | 2022.09.30","slug":"_1-1-3-2022-09-30","link":"#_1-1-3-2022-09-30","children":[]},{"level":3,"title":"1.1.2 | 2022.09.30","slug":"_1-1-2-2022-09-30","link":"#_1-1-2-2022-09-30","children":[]},{"level":3,"title":"1.1.1 | 2022.09.28","slug":"_1-1-1-2022-09-28","link":"#_1-1-1-2022-09-28","children":[]},{"level":3,"title":"1.1.0 | 2022.09.28","slug":"_1-1-0-2022-09-28","link":"#_1-1-0-2022-09-28","children":[]},{"level":3,"title":"1.0.92 | 2022.05.31","slug":"_1-0-92-2022-05-31","link":"#_1-0-92-2022-05-31","children":[]},{"level":3,"title":"1.0.91 | 2022.05.29","slug":"_1-0-91-2022-05-29","link":"#_1-0-91-2022-05-29","children":[]},{"level":3,"title":"1.0.90 | 2022.05.27","slug":"_1-0-90-2022-05-27","link":"#_1-0-90-2022-05-27","children":[]},{"level":3,"title":"1.0.89 | 2022.05.26","slug":"_1-0-89-2022-05-26","link":"#_1-0-89-2022-05-26","children":[]},{"level":3,"title":"1.0.88 | 2022.05.25","slug":"_1-0-88-2022-05-25","link":"#_1-0-88-2022-05-25","children":[]},{"level":3,"title":"1.0.87 | 2022.05.10","slug":"_1-0-87-2022-05-10","link":"#_1-0-87-2022-05-10","children":[]},{"level":3,"title":"1.0.86 | 2022.05.06","slug":"_1-0-86-2022-05-06","link":"#_1-0-86-2022-05-06","children":[]},{"level":3,"title":"1.0.85 | 2022.05.04","slug":"_1-0-85-2022-05-04","link":"#_1-0-85-2022-05-04","children":[]},{"level":3,"title":"1.0.83 | 2022.05.04","slug":"_1-0-83-2022-05-04","link":"#_1-0-83-2022-05-04","children":[]},{"level":3,"title":"1.0.82 | 2022.05.04","slug":"_1-0-82-2022-05-04","link":"#_1-0-82-2022-05-04","children":[]},{"level":3,"title":"1.0.81 | 2022.05.04","slug":"_1-0-81-2022-05-04","link":"#_1-0-81-2022-05-04","children":[]},{"level":3,"title":"1.0.80 | 2022.05.01","slug":"_1-0-80-2022-05-01","link":"#_1-0-80-2022-05-01","children":[]},{"level":3,"title":"1.0.78 | 2022.04.18","slug":"_1-0-78-2022-04-18","link":"#_1-0-78-2022-04-18","children":[]},{"level":3,"title":"1.0.77 | 2022.04.15","slug":"_1-0-77-2022-04-15","link":"#_1-0-77-2022-04-15","children":[]},{"level":3,"title":"1.0.75 | 2022.04.13","slug":"_1-0-75-2022-04-13","link":"#_1-0-75-2022-04-13","children":[]},{"level":3,"title":"1.0.73 | 2022.04.10","slug":"_1-0-73-2022-04-10","link":"#_1-0-73-2022-04-10","children":[]},{"level":3,"title":"1.0.72 | 2022.04.09","slug":"_1-0-72-2022-04-09","link":"#_1-0-72-2022-04-09","children":[]},{"level":3,"title":"1.0.71 | 2022.04.04","slug":"_1-0-71-2022-04-04","link":"#_1-0-71-2022-04-04","children":[]},{"level":3,"title":"1.0.70 | 2022.04.04","slug":"_1-0-70-2022-04-04","link":"#_1-0-70-2022-04-04","children":[]},{"level":3,"title":"1.0.69 | 2022.03.30","slug":"_1-0-69-2022-03-30","link":"#_1-0-69-2022-03-30","children":[]},{"level":3,"title":"1.0.68 | 2022.03.29","slug":"_1-0-68-2022-03-29","link":"#_1-0-68-2022-03-29","children":[]},{"level":3,"title":"1.0.67 | 2022.03.27","slug":"_1-0-67-2022-03-27","link":"#_1-0-67-2022-03-27","children":[]},{"level":3,"title":"1.0.66 | 2022.03.25","slug":"_1-0-66-2022-03-25","link":"#_1-0-66-2022-03-25","children":[]},{"level":3,"title":"1.0.65 | 2022.03.25","slug":"_1-0-65-2022-03-25","link":"#_1-0-65-2022-03-25","children":[]},{"level":3,"title":"1.0.6 | 2022.03.20","slug":"_1-0-6-2022-03-20","link":"#_1-0-6-2022-03-20","children":[]},{"level":3,"title":"1.0.55 | 2022.03.18","slug":"_1-0-55-2022-03-18","link":"#_1-0-55-2022-03-18","children":[]},{"level":3,"title":"1.0.5 | 2022.03.18","slug":"_1-0-5-2022-03-18","link":"#_1-0-5-2022-03-18","children":[]},{"level":3,"title":"1.0.4 | 2022.03.06","slug":"_1-0-4-2022-03-06","link":"#_1-0-4-2022-03-06","children":[]},{"level":3,"title":"1.0.3 | 2022.03.02","slug":"_1-0-3-2022-03-02","link":"#_1-0-3-2022-03-02","children":[]},{"level":3,"title":"1.0.2 | 2022.02.18","slug":"_1-0-2-2022-02-18","link":"#_1-0-2-2022-02-18","children":[]},{"level":3,"title":"1.0.1 | 2022.02.15","slug":"_1-0-1-2022-02-15","link":"#_1-0-1-2022-02-15","children":[]},{"level":3,"title":"1.0 | 2022.02.14","slug":"_1-0-2022-02-14","link":"#_1-0-2022-02-14","children":[]}],"git":{"updatedTime":1675192275000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":9}]},"filePathRelative":"en/about/changelog.md"}');export{l as data}; +const l=JSON.parse('{"key":"v-3f851d14","path":"/en/about/changelog.html","title":"Changelog","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"1.1.8 | 2023.02.01","slug":"_1-1-8-2023-02-01","link":"#_1-1-8-2023-02-01","children":[]},{"level":3,"title":"1.1.6 | 2023.01.21","slug":"_1-1-6-2023-01-21","link":"#_1-1-6-2023-01-21","children":[]},{"level":3,"title":"1.1.5 | 2023.01.13","slug":"_1-1-5-2023-01-13","link":"#_1-1-5-2023-01-13","children":[]},{"level":3,"title":"1.1.4 | 2022.10.04","slug":"_1-1-4-2022-10-04","link":"#_1-1-4-2022-10-04","children":[]},{"level":3,"title":"1.1.3 | 2022.09.30","slug":"_1-1-3-2022-09-30","link":"#_1-1-3-2022-09-30","children":[]},{"level":3,"title":"1.1.2 | 2022.09.30","slug":"_1-1-2-2022-09-30","link":"#_1-1-2-2022-09-30","children":[]},{"level":3,"title":"1.1.1 | 2022.09.28","slug":"_1-1-1-2022-09-28","link":"#_1-1-1-2022-09-28","children":[]},{"level":3,"title":"1.1.0 | 2022.09.28","slug":"_1-1-0-2022-09-28","link":"#_1-1-0-2022-09-28","children":[]},{"level":3,"title":"1.0.92 | 2022.05.31","slug":"_1-0-92-2022-05-31","link":"#_1-0-92-2022-05-31","children":[]},{"level":3,"title":"1.0.91 | 2022.05.29","slug":"_1-0-91-2022-05-29","link":"#_1-0-91-2022-05-29","children":[]},{"level":3,"title":"1.0.90 | 2022.05.27","slug":"_1-0-90-2022-05-27","link":"#_1-0-90-2022-05-27","children":[]},{"level":3,"title":"1.0.89 | 2022.05.26","slug":"_1-0-89-2022-05-26","link":"#_1-0-89-2022-05-26","children":[]},{"level":3,"title":"1.0.88 | 2022.05.25","slug":"_1-0-88-2022-05-25","link":"#_1-0-88-2022-05-25","children":[]},{"level":3,"title":"1.0.87 | 2022.05.10","slug":"_1-0-87-2022-05-10","link":"#_1-0-87-2022-05-10","children":[]},{"level":3,"title":"1.0.86 | 2022.05.06","slug":"_1-0-86-2022-05-06","link":"#_1-0-86-2022-05-06","children":[]},{"level":3,"title":"1.0.85 | 2022.05.04","slug":"_1-0-85-2022-05-04","link":"#_1-0-85-2022-05-04","children":[]},{"level":3,"title":"1.0.83 | 2022.05.04","slug":"_1-0-83-2022-05-04","link":"#_1-0-83-2022-05-04","children":[]},{"level":3,"title":"1.0.82 | 2022.05.04","slug":"_1-0-82-2022-05-04","link":"#_1-0-82-2022-05-04","children":[]},{"level":3,"title":"1.0.81 | 2022.05.04","slug":"_1-0-81-2022-05-04","link":"#_1-0-81-2022-05-04","children":[]},{"level":3,"title":"1.0.80 | 2022.05.01","slug":"_1-0-80-2022-05-01","link":"#_1-0-80-2022-05-01","children":[]},{"level":3,"title":"1.0.78 | 2022.04.18","slug":"_1-0-78-2022-04-18","link":"#_1-0-78-2022-04-18","children":[]},{"level":3,"title":"1.0.77 | 2022.04.15","slug":"_1-0-77-2022-04-15","link":"#_1-0-77-2022-04-15","children":[]},{"level":3,"title":"1.0.75 | 2022.04.13","slug":"_1-0-75-2022-04-13","link":"#_1-0-75-2022-04-13","children":[]},{"level":3,"title":"1.0.73 | 2022.04.10","slug":"_1-0-73-2022-04-10","link":"#_1-0-73-2022-04-10","children":[]},{"level":3,"title":"1.0.72 | 2022.04.09","slug":"_1-0-72-2022-04-09","link":"#_1-0-72-2022-04-09","children":[]},{"level":3,"title":"1.0.71 | 2022.04.04","slug":"_1-0-71-2022-04-04","link":"#_1-0-71-2022-04-04","children":[]},{"level":3,"title":"1.0.70 | 2022.04.04","slug":"_1-0-70-2022-04-04","link":"#_1-0-70-2022-04-04","children":[]},{"level":3,"title":"1.0.69 | 2022.03.30","slug":"_1-0-69-2022-03-30","link":"#_1-0-69-2022-03-30","children":[]},{"level":3,"title":"1.0.68 | 2022.03.29","slug":"_1-0-68-2022-03-29","link":"#_1-0-68-2022-03-29","children":[]},{"level":3,"title":"1.0.67 | 2022.03.27","slug":"_1-0-67-2022-03-27","link":"#_1-0-67-2022-03-27","children":[]},{"level":3,"title":"1.0.66 | 2022.03.25","slug":"_1-0-66-2022-03-25","link":"#_1-0-66-2022-03-25","children":[]},{"level":3,"title":"1.0.65 | 2022.03.25","slug":"_1-0-65-2022-03-25","link":"#_1-0-65-2022-03-25","children":[]},{"level":3,"title":"1.0.6 | 2022.03.20","slug":"_1-0-6-2022-03-20","link":"#_1-0-6-2022-03-20","children":[]},{"level":3,"title":"1.0.55 | 2022.03.18","slug":"_1-0-55-2022-03-18","link":"#_1-0-55-2022-03-18","children":[]},{"level":3,"title":"1.0.5 | 2022.03.18","slug":"_1-0-5-2022-03-18","link":"#_1-0-5-2022-03-18","children":[]},{"level":3,"title":"1.0.4 | 2022.03.06","slug":"_1-0-4-2022-03-06","link":"#_1-0-4-2022-03-06","children":[]},{"level":3,"title":"1.0.3 | 2022.03.02","slug":"_1-0-3-2022-03-02","link":"#_1-0-3-2022-03-02","children":[]},{"level":3,"title":"1.0.2 | 2022.02.18","slug":"_1-0-2-2022-02-18","link":"#_1-0-2-2022-02-18","children":[]},{"level":3,"title":"1.0.1 | 2022.02.15","slug":"_1-0-1-2022-02-15","link":"#_1-0-1-2022-02-15","children":[]},{"level":3,"title":"1.0 | 2022.02.14","slug":"_1-0-2022-02-14","link":"#_1-0-2022-02-14","children":[]}],"git":{"updatedTime":1675195255000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":10}]},"filePathRelative":"en/about/changelog.md"}');export{l as data}; diff --git a/docs/assets/changelog.html.f11f8f7b.js b/docs/assets/changelog.html.f11f8f7b.js deleted file mode 100644 index 2f8ed8fe0..000000000 --- a/docs/assets/changelog.html.f11f8f7b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,r as t,o as n,c as a,b as e,d,e as o,a as i}from"./app.09f06ad9.js";const r={},_=e("h1",{id:"\u66F4\u65B0\u65E5\u5FD7",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u66F4\u65B0\u65E5\u5FD7","aria-hidden":"true"},"#"),o(" \u66F4\u65B0\u65E5\u5FD7")],-1),h=e("blockquote",null,[e("p",null,[o("\u8FD9\u91CC\u8BB0\u5F55\u4E86 "),e("code",null,"YukiHookAPI"),o(" \u7684\u7248\u672C\u66F4\u65B0\u5386\u53F2\u3002")])],-1),u=e("div",{class:"custom-container danger"},[e("p",{class:"custom-container-title"},"\u7279\u522B\u6CE8\u610F"),e("p",null,"\u6211\u4EEC\u53EA\u4F1A\u5BF9\u6700\u65B0\u7684 API \u7248\u672C\u8FDB\u884C\u7EF4\u62A4\uFF0C\u82E5\u4F60\u6B63\u5728\u4F7F\u7528\u8FC7\u65F6\u7684 API \u7248\u672C\u5219\u4EE3\u8868\u4F60\u81EA\u613F\u653E\u5F03\u4E00\u5207\u7EF4\u62A4\u7684\u53EF\u80FD\u6027\u3002")],-1),k={id:"_1-1-7-2023-02-01",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#_1-1-7-2023-02-01","aria-hidden":"true"},"#",-1),g=o(" 1.1.7 | 2023.02.01 \u2002"),m=o("\u4FEE\u590D\u5E95\u5C42 Hook \u65B9\u6CD5\u5728\u56DE\u8C03\u65F6\u4FEE\u6539 "),f=e("code",null,"result",-1),H=o(" \u7B49\u53C2\u6570\u65F6\u65F6\u4E0D\u80FD\u540C\u6B65\u66F4\u65B0\u4FEE\u6539\u540E\u7684\u72B6\u6001\u95EE\u9898\uFF0C\u611F\u8C22 "),P={href:"https://github.com/elvizlai",target:"_blank",rel:"noopener noreferrer"},b=o("Yongzheng Lai"),y=o(" \u7684 "),x={href:"https://github.com/fankes/YukiHookAPI/issues/23",target:"_blank",rel:"noopener noreferrer"},C=o("Issue"),A=i("
  • \u79FB\u52A8 YukiHookAPI \u81EA\u52A8\u751F\u6210\u7684\u5165\u53E3\u7C7B\u540D\u79F0\u6587\u4EF6 assets/yukihookapi_init \u5230 resources/META-INF/yukihookapi_init
  • \u5141\u8BB8\u5728\u4EC5\u6253\u5370\u5F02\u5E38\u5806\u6808\u65F6 msg \u53C2\u6570\u4E3A\u7A7A\u5E76\u53EF\u4EE5\u4E0D\u8BBE\u7F6E msg \u53C2\u6570\uFF0C\u7559\u7A7A msg \u53C2\u6570\u7684\u65E5\u5FD7\u9664\u975E\u5F02\u5E38\u5806\u6808\u4E0D\u4E3A\u7A7A\u5426\u5219\u5C06\u4E0D\u4F1A\u88AB\u8BB0\u5F55
  • \u4FEE\u590D Hook \u56DE\u8C03\u65B9\u6CD5\u4F53\u5185\u53D1\u751F\u7684\u5F02\u5E38\u6253\u5370\u7684\u65E5\u5FD7\u65E0\u5177\u4F53\u65B9\u6CD5\u4FE1\u606F\u7684 BUG
  • HookParam \u65B0\u589E instanceOrNull \u53D8\u91CF\u4E0E\u65B9\u6CD5\uFF0C\u53EF\u4EE5\u5728\u4E0D\u786E\u5B9A Hook \u5B9E\u4F8B\u662F\u5426\u4E3A\u7A7A\u7684\u524D\u63D0\u4E0B\u4F7F\u7528\u4EE5\u9632\u6B62 Hook \u5B9E\u4F8B\u4E3A\u7A7A\u629B\u51FA\u5F02\u5E38
  • \u4FEE\u590D Xposed \u6A21\u5757\u88C5\u8F7D\u65F6\u53EF\u80FD\u51FA\u73B0\u7684\u4E00\u4E9B\u8FDB\u7A0B\u51B2\u7A81\u95EE\u9898
  • \u89E3\u8026\u5408\u6240\u6709 Member \u67E5\u627E\u529F\u80FD\u4E2D\u7684 Hooker \u5230 MemberBaseFinder.MemberHookerManager
  • \u4FEE\u6539\u4E86 YukiMemberHookCreator \u4E2D\u7684 by \u6761\u4EF6\u7528\u6CD5\uFF0C\u73B0\u5728\u53EF\u4EE5\u91CD\u590D\u4F7F\u7528 by \u65B9\u6CD5\u8BBE\u7F6E\u591A\u4E2A\u6761\u4EF6
  • \u79FB\u9664\u4E86 Android type \u4E2D\u7684\u9519\u8BEF Class \u5BF9\u8C61\u58F0\u660E
  • PackageParam.AppLifecycle \u4E2D\u7684 registerReceiver \u65B9\u6CD5\u65B0\u589E\u76F4\u63A5\u4F7F\u7528 IntentFilter \u521B\u5EFA\u7CFB\u7EDF\u5E7F\u64AD\u76D1\u542C\u7684\u529F\u80FD
  • \u4FEE\u590D\u5728 PackageParam.AppLifecycle \u4E2D\u53EF\u80FD\u5B58\u5728\u591A\u6B21\u6CE8\u518C\u751F\u547D\u5468\u671F\u7684\u95EE\u9898
  • ",10),v={id:"_1-1-6-2023-01-21",tabindex:"-1"},Y=e("a",{class:"header-anchor",href:"#_1-1-6-2023-01-21","aria-hidden":"true"},"#",-1),M=o(" 1.1.6 | 2023.01.21 \u2002"),I=i("
    • \u4FEE\u590D Xposed \u6A21\u5757\u88C5\u8F7D\u65F6\u53EF\u80FD\u5B58\u5728\u540C\u4E00\u4E2A\u8FDB\u7A0B\u591A\u4E2A\u5305\u540D\u7684\u60C5\u51B5\u5BFC\u81F4 PackageParam \u4FDD\u6301\u5355\u4F8B\u540E ClassLoader \u4E0D\u7B26\u7684\u4E25\u91CD\u95EE\u9898
    • \u65B0\u589E\u540C\u4E00\u4E2A\u8FDB\u7A0B\u591A\u4E2A\u5305\u540D\u7684\u60C5\u51B5\u4E0B\u672A\u533A\u5206\u5305\u540D\u65F6\uFF0C\u505C\u6B62\u88C5\u8F7D\u5355\u4F8B\u5316\u7684\u5B50 Hooker \u5E76\u6253\u5370\u8B66\u544A\u4FE1\u606F
    • \u4FEE\u590D HookParam.callOriginal\u3001HookParam.invokeOriginal \u7B49\u65B9\u6CD5\u8C03\u7528\u539F\u59CB\u65B9\u6CD5\u65F6\u53C2\u6570\u4E2A\u6570\u4E0D\u6B63\u786E\u7684\u95EE\u9898
    • \u4FEE\u6539 MethodFinder\u3001ConstructorFinder\u3001ReflectionFactory \u4E2D\u53CD\u5C04\u8C03\u7528\u7684\u65B9\u6CD5\u53C2\u6570\u540D param \u4E3A args
    • \u65B0\u589E Xposed \u6A21\u5757\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u4E2D\u5224\u65AD\u5165\u53E3\u7C7B\u6784\u9020\u65B9\u6CD5\u53C2\u6570\u529F\u80FD\uFF0C\u5165\u53E3\u7C7B\u9700\u8981\u4FDD\u8BC1\u5176\u4E0D\u5B58\u5728\u4EFB\u4F55\u6784\u9020\u65B9\u6CD5\u53C2\u6570
    ",1),R={id:"_1-1-5-2023-01-13",tabindex:"-1"},S=e("a",{class:"header-anchor",href:"#_1-1-5-2023-01-13","aria-hidden":"true"},"#",-1),L=o(" 1.1.5 | 2023.01.13 \u2002"),X=i('
    • \u89C4\u8303\u5E76\u4F18\u5316\u6574\u4F53\u4EE3\u7801\u98CE\u683C
    • \u5BF9\u90E8\u5206\u5185\u90E8\u8C03\u7528\u7684 API \u8FDB\u884C\u4E86\u79C1\u6709\u5316\u5904\u7406
    • \u5E95\u5C42 API \u63A5\u53E3\u6574\u4F53\u89E3\u8026\u5408\uFF0C\u4E3A\u517C\u5BB9\u66F4\u591A Hook Framework \u505A\u51C6\u5907
    • \u5C06\u90E8\u5206\u96C6\u6210\u4E8E API \u4E2D\u7684\u529F\u80FD\u79FB\u52A8\u5230 ksp-xposed \u4F9D\u8D56 (\u89E3\u8026\u5408)\uFF0C\u5355\u72EC\u5F15\u5165 api \u4F9D\u8D56\u5C06\u4E0D\u518D\u5305\u542B\u7B2C\u4E09\u65B9\u5E93\u7B49\u529F\u80FD\u7684\u5F15\u7528
    • \u6587\u6863 \u5FEB\u901F\u5F00\u59CB \u9875\u9762\u52A0\u5165 YukiHookAPI.Configs.isDebug \u4F55\u65F6\u9700\u8981\u5173\u95ED\u7684\u8BF4\u660E
    • \u89C4\u8303\u7C7B\u578B\u5B9A\u4E49\u4E2D\u7684 Java \u539F\u59CB\u7C7B\u578B (Primitive Type) \u5E76\u540C\u6B65\u66F4\u65B0\u5230\u6587\u6863
    • Java type \u65B0\u589E NumberClass \u7C7B\u578B
    • \u6539\u8FDB\u4E86 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u7684\u8BC6\u522B\u80FD\u529B
    • \u63A5\u7BA1\u4E86 Xposed \u6A21\u5757\u88C5\u8F7D\u540E\u7684\u5168\u90E8\u5F02\u5E38\uFF0C\u82E5\u53D1\u751F\u5F02\u5E38\u5C06\u4F1A\u81EA\u52A8\u62E6\u622A\u5E76\u6253\u5370\u9519\u8BEF\u65E5\u5FD7
    • \u4FEE\u6539\u7C7B\u578B\u5B9A\u4E49\u4E2D\u8F83\u4F4E Android \u7CFB\u7EDF\u7248\u672C (Android 5.0) \u4E2D\u4E0D\u5B58\u5728\u7684 Class \u4E3A\u7A7A\u5B89\u5168\u7C7B\u578B
    • \u9002\u914D\u5E76\u652F\u6301\u539F\u751F Xposed\uFF0C\u6700\u4F4E\u63A8\u8350\u7248\u672C\u4E3A Android 7.0
    • Hook \u5165\u53E3\u7C7B\u65B0\u589E\u652F\u6301\u58F0\u660E\u4E3A object \u7C7B\u578B (\u5355\u4F8B)
    • \u4FEE\u590D Android 8 \u4EE5\u4E0B\u7CFB\u7EDF\u4E0D\u652F\u6301 Executable \u7C7B\u578B\u5BFC\u81F4 Hook \u5931\u6548\u7684\u95EE\u9898
    • \u4FEE\u590D Android 9 \u4EE5\u4E0B\u7CFB\u7EDF\u5728\u4F7F\u7528 Activity \u4EE3\u7406\u529F\u80FD\u65F6\u62A5\u9519\u95EE\u9898\u5E76\u9650\u5236\u6B64\u529F\u80FD\u6700\u4F4E\u652F\u6301\u7248\u672C\u4E3A Android 7.0
    • \u65B0\u589E\u7981\u6B62\u8D44\u6E90\u6CE8\u5165\u4E0E Activity \u4EE3\u7406\u529F\u80FD\u6CE8\u5165\u5F53\u524D\u6A21\u5757\u81EA\u8EAB\u5B9E\u4F8B\u8FDB\u7A0B\uFF0C\u9632\u6B62\u53D1\u751F\u95EE\u9898
    • \u4FEE\u590D\u4E00\u4E2A Hook \u8FC7\u7A0B\u4E2D\u65B9\u6CD5\u8FD4\u56DE\u503C\u7684\u5BF9\u8C61\u662F\u76EE\u6807\u7684\u7EE7\u627F\u7C7B\u548C\u63A5\u53E3\u65F6\u88AB\u8BC6\u522B\u4E3A\u8FD4\u56DE\u503C\u4E0D\u7B26\u7684\u4E25\u91CD\u9519\u8BEF
    • \u4FEE\u590D\u5728\u5F53\u524D Hook \u7684\u5B9E\u4F8B\u5BF9\u8C61\u662F\u9759\u6001\u7684\u60C5\u51B5\u4E0B\u8C03\u7528 HookParam.callOriginal\u3001HookParam.invokeOriginal \u51FA\u73B0\u5BF9\u8C61\u4E3A\u7A7A\u95EE\u9898
    • \u4F18\u5316\u5BF9\u592A\u6781\u6FC0\u6D3B\u65B9\u6CD5\u76F8\u5173\u5224\u65AD\u529F\u80FD\u4EE5\u53CA\u540C\u6B65\u66F4\u65B0\u6587\u6863\u76F8\u5173\u8BF4\u660E
    • \u4F5C\u5E9F\u4E86 YukiHookAPI.Status.executorName\u3001YukiHookAPI.Status.executorVersion\uFF0C\u8BF7\u8F6C\u79FB\u5230 YukiHookAPI.Status.Executor
    • \u9002\u914D\u4E86\u4E00\u4E9B\u7B2C\u4E09\u65B9 Hook Framework \u7684 YukiHookAPI.Status.Executor.name \u540D\u79F0\u663E\u793A\u529F\u80FD
    • \u65B0\u589E Class.extends\u3001Class.implements \u7B49\u65B9\u6CD5\uFF0C\u53EF\u66F4\u52A0\u65B9\u4FBF\u5730\u5224\u65AD\u5F53\u524D Class \u7684\u7EE7\u627F\u4E0E\u63A5\u53E3\u5173\u7CFB
    • \u65B0\u589E Class.toClass\u3001Class.toClassOrNull \u7B49\u76F8\u5173\u65B9\u6CD5\u7684\u540C\u540D\u6CDB\u578B\u65B9\u6CD5\uFF0C\u53EF\u4F7F\u7528\u6CDB\u578B\u6765\u7EA6\u675F\u5DF2\u77E5 Class \u7684\u5B9E\u4F8B\u5BF9\u8C61\u7C7B\u578B
    • \u4FEE\u6539 classOf<T> \u65B9\u6CD5\u7684\u8FD4\u56DE\u503C\u4E3A\u6CDB\u578B T\uFF0C\u4EE5\u7EA6\u675F\u5DF2\u77E5 Class \u7684\u5B9E\u4F8B\u5BF9\u8C61\u7C7B\u578B
    • \u65B0\u589E Class \u76F8\u5173\u6269\u5C55\u65B9\u6CD5\u7684 initialize \u53C2\u6570\uFF0C\u53EF\u63A7\u5236\u5728\u5F97\u5230 Class \u5BF9\u8C61\u65F6\u662F\u5426\u540C\u65F6\u521D\u59CB\u5316\u5176\u9759\u6001\u65B9\u6CD5\u5757
    • \u53D8\u91CF\u3001\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u67E5\u627E\u529F\u80FD\u4E2D\u65B0\u589E param { ... }\u3001type { ... } \u7B49\u7528\u6CD5\uFF0C\u53EF\u5BF9\u67E5\u627E\u7684\u5BF9\u8C61\u589E\u52A0\u66F4\u52A0\u5177\u4F53\u7684\u6761\u4EF6\u5224\u65AD
    • PackageParam \u7684 loadApp \u65B9\u6CD5\u65B0\u589E isExcludeSelf \u53C2\u6570\uFF0C\u53EF\u7528\u4E8E\u6392\u9664 Hook \u76F8\u5173\u529F\u80FD\u6CE8\u5165\u6A21\u5757\u81EA\u8EAB\u5B9E\u4F8B\u8FDB\u7A0B
    • PackageParam \u7684 onAppLifecycle \u65B9\u6CD5\u65B0\u589E isOnFailureThrowToApp \u53C2\u6570\uFF0C\u53EF\u5C06\u751F\u547D\u5468\u671F\u65B9\u6CD5\u4F53\u5185\u53D1\u751F\u7684\u5F02\u5E38\u76F4\u63A5\u629B\u7ED9\u5BBF\u4E3B
    • \u4FEE\u6539 PackageParam \u4E2D\u7684 appClassLoader \u4E3A\u53EF\u4FEE\u6539\u53D8\u91CF\uFF0C\u53EF\u5728 Hook \u8FC7\u7A0B\u4E2D\u52A8\u6001\u8BBE\u7F6E\u5BBF\u4E3B\u4F7F\u7528\u7684 ClassLoader
    • HookParam \u4E2D\u65B0\u589E dataExtra \u529F\u80FD\uFF0C\u53EF\u7528\u4E8E\u4E34\u65F6\u5B58\u50A8 Hook \u65B9\u6CD5\u4F53\u4E2D\u7684\u6570\u636E
    • \u4F5C\u5E9F YukiHookModulePrefs \u4E2D\u7684 isRunInNewXShareMode\u3001isXSharePrefsReadable\uFF0C\u7EDF\u4E00\u5408\u5E76\u5230 isPreferencesAvailable
    • Class.allFields\u3001Class.allMethods \u7B49\u76F8\u5173\u65B9\u6CD5\u65B0\u589E isAccessible \u53C2\u6570\uFF0C\u53EF\u63A7\u5236\u6210\u5458\u5BF9\u8C61\u4F55\u65F6\u53EF\u88AB\u8BBE\u7F6E\u4E3A\u53EF\u8BBF\u95EE\u7C7B\u578B
    • \u4FEE\u590D YukiHookDataChannel \u5B58\u5728\u591A\u4E2A\u5BBF\u4E3B\u65F6\u5728\u4E00\u4E2A Activity \u4E2D\u63A5\u6536\u76F8\u540C\u952E\u503C\u6570\u636E\u65F6\u4EC5\u4F1A\u56DE\u8C03\u6700\u540E\u4E00\u4E2A\u65B9\u6CD5\u4F53\u7684\u95EE\u9898
    • YukiHookDataChannel \u7684 wait \u7B49\u76F8\u5173\u65B9\u6CD5\u4E2D\u65B0\u589E priority \u53C2\u6570\uFF0C\u53EF\u4F20\u5165 ChannelPriority \u6765\u81EA\u5B9A\u4E49\u56DE\u8C03\u6570\u636E\u7ED3\u679C\u7684\u6761\u4EF6
    • YukiHookDataChannel \u65B0\u589E\u53D1\u9001\u6570\u636E\u65F6\u81EA\u52A8\u4F7F\u7528 ChannelDataWrapper \u7C7B\u578B\u5305\u88C5\u529F\u80FD\uFF0C\u63D0\u5347\u4F7F\u7528\u4F53\u9A8C\u5E76\u589E\u5F3A\u6570\u636E\u4FDD\u62A4
    • YukiHookDataChannel \u65B0\u589E\u9650\u5236\u4E00\u6B21\u6027\u53D1\u9001\u6570\u636E\u7684\u6700\u5927\u5B57\u8282\u5927\u5C0F\u529F\u80FD\uFF0C\u9632\u6B62\u6570\u636E\u8FC7\u5927\u9020\u6210 APP \u5D29\u6E83
    • YukiHookDataChannel \u65B0\u589E\u53D1\u9001\u6570\u636E\u8FC7\u5927\u65F6\u81EA\u52A8\u5206\u6BB5\u53D1\u9001\u529F\u80FD\uFF0C\u4EC5\u652F\u6301 List\u3001Map\u3001Set\u3001String \u7C7B\u578B
    • YukiHookLogger \u65B0\u589E contents \u65B9\u6CD5\u4E0E saveToFile \u7684 data \u53C2\u6570\uFF0C\u53EF\u4F20\u5165\u81EA\u5B9A\u4E49\u7684\u8C03\u8BD5\u65E5\u5FD7\u6570\u636E\u8FDB\u884C\u683C\u5F0F\u5316\u6216\u4FDD\u5B58\u5230\u6587\u4EF6
    • \u4FEE\u590D YukiHookLogger \u5904\u7406\u540E\u7684\u8C03\u8BD5\u65E5\u5FD7\u6570\u636E\u5305\u540D\u53EF\u80FD\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E0D\u6B63\u786E\u7684\u95EE\u9898
    • \u4FEE\u590D Xposed \u6A21\u5757\u88C5\u8F7D\u8D44\u6E90\u94A9\u5B50 (Resources Hook) \u4E8B\u4EF6\u65F6\u5728\u90E8\u5206\u7CFB\u7EDF\u4E0A (\u90E8\u5206\u7CFB\u7EDF APP \u4E2D) \u5305\u540D\u53EF\u80FD\u4E0D\u6B63\u786E\u7684\u95EE\u9898
    ',1),F={id:"_1-1-4-2022-10-04",tabindex:"-1"},D=e("a",{class:"header-anchor",href:"#_1-1-4-2022-10-04","aria-hidden":"true"},"#",-1),B=o(" 1.1.4 | 2022.10.04 \u2002"),U=i("
    • \u4FEE\u590D YukiHookDataChannel \u53EF\u80FD\u4E0D\u80FD\u54CD\u5E94\u7CFB\u7EDF\u6846\u67B6\u4E2D\u54CD\u5E94\u5E7F\u64AD\u4E8B\u4EF6\u7684\u95EE\u9898\uFF0C\u5728 Android 13 \u4E2D\u590D\u73B0
    • \u4FEE\u590D YukiHookDataChannel \u957F\u8FBE\u591A\u4E2A\u7248\u672C\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u65E0\u6CD5\u4E0E\u6A21\u5757\u901A\u8BAF\u7684\u95EE\u9898
    • YukiHookDataChannel \u4E2D\u65B0\u589E obtainLoggerInMemoryData \u65B9\u6CD5\uFF0C\u53EF\u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E4B\u95F4\u5171\u4EAB\u8C03\u8BD5\u65E5\u5FD7\u6570\u636E
    • \u4FEE\u6539 YukiHookLogger.inMemoryData \u7684\u7C7B\u578B\u4E3A ArrayList \u5E76\u4FEE\u6539 YukiLoggerData \u4E3A data class
    • \u4FEE\u590D YukiLoggerData \u5728\u6A21\u5757\u4E2D\u5305\u540D\u4E3A\u7A7A\u6253\u5370\u7A7A\u767D\u7684\u95EE\u9898
    • PackageParam \u4E2D\u65B0\u589E loadApp\u3001loadZygote\u3001loadSystem\u3001withProcess \u7684\u540C\u540D\u591A\u53C2\u6570\u65B9\u6CD5
    • \u4FEE\u590D\u4E86\u4E00\u4E9B\u53EF\u80FD\u5B58\u5728\u7684 BUG
    ",1),W={id:"_1-1-3-2022-09-30",tabindex:"-1"},w=e("a",{class:"header-anchor",href:"#_1-1-3-2022-09-30","aria-hidden":"true"},"#",-1),T=o(" 1.1.3 | 2022.09.30 \u2002"),G=e("ul",null,[e("li",null,"\u4FEE\u590D\u4E00\u4E2A\u65E0\u6CD5\u81EA\u5B9A\u4E49 Hook \u5165\u53E3\u7C7B\u540D\u7684\u81F4\u547D\u9519\u8BEF"),e("li",null,[o("\u6DFB\u52A0 "),e("code",null,"LoggerFactory"),o(" \u4E2D\u7684\u90E8\u5206\u4EE3\u7801\u6CE8\u91CA\u6587\u6848\u5E76\u66F4\u65B0\u7279\u8272\u529F\u80FD\u6587\u6863")])],-1),N={id:"_1-1-2-2022-09-30",tabindex:"-1"},E=e("a",{class:"header-anchor",href:"#_1-1-2-2022-09-30","aria-hidden":"true"},"#",-1),O=o(" 1.1.2 | 2022.09.30 \u2002"),z=i('
    • \u6587\u6863 \u57FA\u7840\u77E5\u8BC6 \u9875\u9762\u65B0\u589E English \u7248\u672C\u53CB\u60C5\u94FE\u63A5
    • \u4FEE\u590D YukiBaseHooker \u6CE8\u91CA\u4E2D\u7684 English \u6587\u6863\u94FE\u63A5\u9519\u8BEF\u95EE\u9898
    • \u4FEE\u590D ModuleClassLoader \u4E2D\u7684 ClassCastException \u95EE\u9898
    • \u4FEE\u6B63\u5E76\u89C4\u8303\u90E8\u5206\u4EE3\u7801\u6CE8\u91CA
    • \u65B0\u589E ModuleClassLoader \u6392\u9664\u5217\u8868\u529F\u80FD\uFF0C\u53EF\u4F7F\u7528 excludeHostClasses \u548C excludeModuleClasses \u65B9\u6CD5\u6765\u81EA\u5B9A\u4E49\u6392\u9664\u5217\u8868
    • \u65B0\u589E YukiLoggerData \u5B9E\u65F6\u65E5\u5FD7\u6570\u636E\u7C7B\uFF0C\u53EF\u5B9E\u65F6\u901A\u8FC7 YukiHookLogger.inMemoryData \u83B7\u53D6\u65E5\u5FD7\u6570\u7EC4
    • \u65B0\u589E ClassLoader.listOfClasses \u65B9\u6CD5\uFF0C\u53EF\u76F4\u63A5\u83B7\u53D6\u5F53\u524D Dex \u4E2D\u7684\u5168\u90E8 Class
    ',1),j={id:"_1-1-1-2022-09-28",tabindex:"-1"},V=e("a",{class:"header-anchor",href:"#_1-1-1-2022-09-28","aria-hidden":"true"},"#",-1),Z=o(" 1.1.1 | 2022.09.28 \u2002"),K=e("ul",null,[e("li",null,[o("\u4FEE\u590D\u4E86\u6587\u6863 "),e("a",{href:"../guide/knowledge"},"\u57FA\u7840\u77E5\u8BC6"),o(" \u9875\u9762\u53CB\u60C5\u94FE\u63A5\u9519\u8BEF\u7684\u95EE\u9898")]),e("li",null,[o("\u4FEE\u590D\u4E86\u6587\u6863 "),e("code",null,"favicon"),o(" \u4E0D\u663E\u793A\u7684\u95EE\u9898")]),e("li",null,[o("\u4FEE\u590D "),e("code",null,"DexClassFinder"),o(" \u67E5\u627E\u6761\u4EF6\u4E2D\u7684 BUG")])],-1),J={id:"_1-1-0-2022-09-28",tabindex:"-1"},q=e("a",{class:"header-anchor",href:"#_1-1-0-2022-09-28","aria-hidden":"true"},"#",-1),Q=o(" 1.1.0 | 2022.09.28 \u2002"),$=e("li",null,[o("\u8FD9\u662F\u4E00\u6B21\u5927\u7248\u672C\u66F4\u65B0\uFF0C\u6709\u5173\u66F4\u65B0\u65E5\u5FD7\u4E2D\u63D0\u5230\u7684\u53D8\u5316\u53CA\u7528\u6CD5\u8BF7\u53C2\u8003 "),e("a",{href:"../api/home"},"API \u6587\u6863"),o(" \u4EE5\u53CA "),e("a",{href:"../api/special-features/reflection"},"\u7279\u8272\u529F\u80FD")],-1),ee=o("\u66F4\u6362\u5E2E\u52A9\u6587\u6863\u6846\u67B6\u5230 "),oe={href:"https://v2.vuepress.vuejs.org",target:"_blank",rel:"noopener noreferrer"},de=o("VuePress"),ce=i('
  • \u7EDF\u4E00\u5E76\u89C4\u8303\u6587\u6863\u4E2D\u7684\u672F\u8BED\u540D\u8BCD\uFF0C\u4F8B\u5982\u201C\u67E5\u8BE2\u201D\u4E00\u5F8B\u66F4\u6539\u4E3A\u4E86\u201C\u67E5\u627E\u201D\uFF0CXposedHelper \u62FC\u5199\u9519\u8BEF\u4FEE\u6539\u4E3A\u4E86 XposedHelpers
  • \u6587\u6863 \u57FA\u7840\u77E5\u8BC6 \u9875\u9762\u52A0\u5165\u53CB\u60C5\u94FE\u63A5\uFF0C\u4EC5\u9650\u7B80\u4F53\u4E2D\u6587
  • \u5C06 Hook App Demo \u7684 Class \u4E0E Method \u8F6C\u4E3A Java \u4EE5\u63D0\u4F9B\u66F4\u597D\u7684\u6F14\u793A\u6548\u679C
  • \u4FEE\u6B63\u4E86 Hook Module Demo \u4E2D\u7684\u4EE3\u7801\u6CE8\u91CA\u547D\u540D
  • \u91CD\u6784\u4E86\u5927\u91CF\u5E95\u5C42 Hook \u903B\u8F91\u53CA Xposed API \u7684\u5BF9\u63A5\u65B9\u5F0F
  • \u79FB\u9664\u4E86 HookParamWrapper\uFF0C\u73B0\u5DF2\u5C06\u5176\u76F4\u63A5\u4E0E YukiBridgeFactory \u5BF9\u63A5
  • \u79FB\u52A8\u90E8\u5206 YukiHookBridge \u4E2D\u7684\u65B9\u6CD5\u5230 AppParasitics
  • \u79FB\u9664\u4E86 HookParam.args \u4E0E\u5E95\u5C42\u7684\u76F4\u63A5\u5BF9\u63A5\u65B9\u6CD5 setArgs\uFF0C\u76F4\u63A5\u83B7\u53D6\u5E76\u8BBE\u7F6E\u5F53\u524D\u6570\u7EC4\u7684\u5BF9\u8C61
  • \u4F18\u5316\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\uFF0C\u5C06\u5F15\u7528\u7684 jar \u5408\u5E76\u5230 stub \u9879\u76EE
  • ',9),ie=o("\u4FEE\u590D\u591A\u9879\u76EE\u6253\u5305\u65F6\u6A21\u5757\u5305\u540D\u65E0\u6CD5\u6B63\u786E\u5339\u914D\u7684\u95EE\u9898\u4EE5\u53CA\u4FEE\u6539\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u7684\u6A21\u5757\u5305\u540D\u5339\u914D\u903B\u8F91\uFF0C\u611F\u8C22 "),le={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},te=o("5ec1cff"),se=o(" \u7684\u53CD\u9988\u53CA\u63D0\u4F9B\u7684\u89E3\u51B3\u65B9\u6848"),ne=i("
  • \u5BF9 API \u79C1\u6709\u5DE5\u5177\u7C7B\u7684\u65B9\u6CD5\u8FDB\u884C\u4E86 internal \u95ED\u5305\u5904\u7406\uFF0C\u907F\u514D\u6C61\u67D3\u9876\u7EA7\u547D\u540D\u7A7A\u95F4
  • \u4FEE\u6B63\u4E86\u6240\u6709\u53CD\u5C04\u548C Hook \u7C7B\u7684 Creater \u547D\u540D\u5230 Creator
  • \u65B0\u589E YukiHookAPI.Status.compiledTimestamp \u529F\u80FD\uFF0C\u53EF\u4EE5\u5728\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u65F6\u83B7\u53D6\u7F16\u8BD1\u5B8C\u6210\u7684\u65F6\u95F4\u6233
  • \u65B0\u589E YukiHookAPI.Status.isXposedEnvironment \u529F\u80FD\uFF0C\u53EF\u4EE5\u5224\u65AD\u5F53\u524D\u4E3A (Xposed) \u5BBF\u4E3B\u73AF\u5883\u8FD8\u662F\u6A21\u5757\u73AF\u5883
  • \u8C03\u8BD5\u65E5\u5FD7\u529F\u80FD\u8FDB\u884C\u4E86\u5927\u6539\u7248\uFF0C\u73B0\u5DF2\u5C06 YukiHookAPI.Configs.debugTag \u7B49\u529F\u80FD\u5408\u5E76\u5230 YukiHookLogger.Configs \u4E2D
  • \u8C03\u8BD5\u65E5\u5FD7\u65B0\u589E\u53EF\u6307\u5B9A\u6253\u5370\u4F7F\u7528\u7684\u65B9\u6CD5\u4E3A XposedBridge.log \u6216 Logd
  • \u8C03\u8BD5\u65E5\u5FD7\u4E2D\u9ED8\u8BA4\u52A0\u5165\u5F53\u524D\u5BBF\u4E3B\u7684\u5305\u540D\u4EE5\u53CA\u5F53\u524D\u7528\u6237 ID\uFF0C\u4EE5\u4F9B\u8C03\u8BD5\uFF0C\u4F60\u53EF\u4EE5\u5728 debugLog \u914D\u7F6E\u4E2D\u81EA\u884C\u66F4\u6539
  • \u65B0\u589E generic \u529F\u80FD\uFF0C\u53EF\u5BF9\u6CDB\u578B\u8FDB\u884C\u53CD\u5C04\u548C\u8C03\u7528\uFF0C\u4F60\u53EF\u4EE5\u5728 Class \u6216 CurrentClass \u4E2D\u4F7F\u7528\u5B83
  • \u4F5C\u5E9F buildOfAny \u65B9\u6CD5\uFF0C\u73B0\u5728\u8BF7\u76F4\u63A5\u4F7F\u7528 buildOf \u65B9\u6CD5 (\u4E0D\u5E26\u6CDB\u578B) \u6765\u4F7F\u7528\u6784\u9020\u65B9\u6CD5\u521B\u5EFA\u65B0\u5BF9\u8C61\u5E76\u5F97\u5230\u7ED3\u679C Any
  • \u4FEE\u590D hasExtends \u4F7F\u7528\u8FC7\u7A0B\u53D1\u751F\u7A7A\u6307\u9488\u5F02\u5E38\u7684\u95EE\u9898
  • CurrentClass \u65B0\u589E\u975E lambda \u65B9\u5F0F\u7684\u8C03\u7528\u65B9\u6CD5
  • CurrentClass \u65B0\u589E name \u4E0E simpleName \u529F\u80FD
  • \u5B8C\u5168\u91CD\u5199 ReflectionTool \u7684\u6838\u5FC3\u65B9\u6CD5\uFF0C\u5C06\u4E0D\u540C\u7684\u67E5\u627E\u6761\u4EF6\u8FDB\u884C\u4E86\u6574\u7406\u5206\u7C7B
  • \u4FEE\u590D ReflectionTool \u4E2D\u53EF\u80FD\u7684\u76F4\u63A5\u8C03\u7528 declared \u83B7\u53D6\u7684 Member \u629B\u51FA\u5F02\u5E38\u7684\u95EE\u9898
  • \u4FEE\u590D ReflectionTool \u4E2D UndefinedType \u672A\u5728 Method \u4E0E Constructor \u6761\u4EF6\u4E2D\u6B63\u786E\u5224\u65AD\u7684\u95EE\u9898
  • \u65B0\u589E\u53CD\u5C04\u67E5\u627E\u7ED3\u679C\u53D1\u751F\u5F02\u5E38\u65F6\u7684\u53CB\u597D\u63D0\u793A\u65B9\u5F0F\uFF0C\u53EF\u5177\u4F53\u5B9A\u4F4D\u5230\u6307\u5B9A\u6761\u4EF6\u627E\u4E0D\u5230 Member \u7684\u95EE\u9898
  • \u53CD\u5C04\u67E5\u627E Method\u3001Constructor \u4E2D\u65B0\u589E VagueType \u6761\u4EF6\uFF0C\u53EF\u4F7F\u7528\u5728 param \u6761\u4EF6\u4E2D\u7528\u4E8E\u5FFD\u7565\u4F60\u4E0D\u60F3\u586B\u5199\u7684\u53C2\u6570
  • \u53CD\u5C04\u67E5\u627E Method\u3001Constructor \u4E2D\u65B0\u589E paramCount { ... } \u6761\u4EF6\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u76F4\u63A5\u62FF\u5230\u5176\u4E2D\u7684 it \u6765\u81EA\u5B9A\u4E49\u4F60\u7684\u5224\u65AD\u6761\u4EF6
  • FieldFinder \u7ED3\u679C\u4E2D\u65B0\u589E current \u65B9\u6CD5\uFF0C\u53EF\u76F4\u63A5\u5BF9\u7ED3\u679C\u5B9E\u4F8B\u521B\u5EFA\u8C03\u7528\u7A7A\u95F4
  • \u4FEE\u6539\u4E86\u53CD\u5C04\u67E5\u627E\u529F\u80FD\u4E2D\u7684 modifiers \u6761\u4EF6\u4EE5\u53CA name \u6761\u4EF6\uFF0C\u73B0\u5728\u4F60\u9700\u8981\u5BF9\u6B64\u65B9\u6CD5\u4F53\u7ED3\u5C3E\u8FD4\u56DE\u4E00\u4E2A Boolean \u4EE5\u4F7F\u6761\u4EF6\u6210\u7ACB
  • ",20),ae=e("code",null,"ModifierRules",-1),re=o(" \u4E2D\u7684 "),_e=e("code",null,"as*",-1),he=o(" \u529F\u80FD\u6539\u540D\u4E3A "),ue=e("code",null,"is*",-1),ke=o("\uFF0C\u611F\u8C22 "),pe={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},ge=o("Kitsune"),me=o(" \u7684\u5EFA\u8BAE"),fe=i("
  • FieldFinder \u4E2D\u65B0\u589E RemedyPlan \u529F\u80FD
  • \u65B0\u589E Dex \u4E2D\u7684 Class \u6A21\u7CCA\u67E5\u627E\u529F\u80FD (Beta)\uFF0C\u4F60\u73B0\u5728\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 searchClass \u529F\u80FD\u6765\u4F7F\u7528\u6307\u5B9A\u6761\u4EF6\u6A21\u7CCA\u67E5\u627E Class
  • ",2),He=o("\u65B0\u589E\u53CD\u5C04\u67E5\u627E\u4E2D\u7684\u591A\u91CD\u67E5\u627E\u529F\u80FD\uFF0C\u53EF\u4F7F\u7528\u76F8\u5BF9\u67E5\u627E\u6761\u4EF6\u540C\u65F6\u83B7\u53D6\u591A\u4E2A\u67E5\u627E\u7ED3\u679C\uFF0C\u611F\u8C22 "),Pe=e("strong",null,"AA",-1),be=o(" \u4EE5\u53CA "),ye={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},xe=o("Kitsune"),Ce=o(" \u7684\u5EFA\u8BAE"),Ae=o("\u4FEE\u590D "),ve=e("code",null,"appClassLoader",-1),Ye=o(" \u83B7\u53D6\u5230\u7684\u5BF9\u8C61\u5728\u67D0\u4E9B\u7CFB\u7EDF\u4E2D\u7684\u7CFB\u7EDF\u5E94\u7528\u4E2D\u4E0D\u6B63\u786E\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),Me={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Ie=o("Luckyzyx"),Re=o(" \u7684\u53CD\u9988"),Se=e("li",null,[o("\u4FEE\u6539\u4E86 "),e("code",null,"XposedBridge.invokeOriginalMethod"),o(" \u7684\u8C03\u7528\u65B9\u5F0F\u5E76\u5728 "),e("code",null,"MethodFinder.Result.Instance"),o(" \u4E2D\u589E\u52A0 "),e("code",null,"original"),o(" \u529F\u80FD")],-1),Le=o("\u4FEE\u590D "),Xe=e("code",null,"YukiHookModulePrefs",-1),Fe=o(" \u4E2D "),De=e("code",null,"getStringSet",-1),Be=o(" \u65B9\u6CD5\u53D6\u503C\u9519\u8BEF\u7684\u95EE\u9898\u5E76\u4F18\u5316\u4EE3\u7801\u98CE\u683C\uFF0C\u611F\u8C22 "),Ue={href:"https://github.com/Teddy-Zhu",target:"_blank",rel:"noopener noreferrer"},We=o("Teddy_Zhu"),we=o(" \u7684 "),Te={href:"https://github.com/fankes/YukiHookAPI/pull/19",target:"_blank",rel:"noopener noreferrer"},Ge=o("PR"),Ne=e("li",null,[o("\u4FEE\u6539 "),e("code",null,"YukiHookModulePrefs"),o("\uFF0C\u62E6\u622A "),e("code",null,"XSharePreference"),o(" \u53EF\u80FD\u4E0D\u5B58\u5728\u7684\u5F02\u5E38")],-1),Ee=e("li",null,[o("\u4FEE\u590D "),e("code",null,"YukiHookDataChannel"),o(" \u5728\u67D0\u4E9B\u7B2C\u4E09\u65B9 ROM \u7CFB\u7EDF\u6846\u67B6\u4E2D\u65E0\u6CD5\u6CE8\u518C\u6210\u529F\u7684\u95EE\u9898")],-1),Oe=e("li",null,[o("\u5B89\u5168\u5316 "),e("code",null,"YukiHookDataChannel"),o("\uFF0C\u73B0\u5728\u5B83\u53EA\u80FD\u5728\u6765\u81EA\u6307\u5B9A\u5305\u540D\u7684\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E4B\u95F4\u901A\u4FE1")],-1),ze=o("\u65B0\u589E\u81EA\u52A8 Hook "),je=e("code",null,"SharedPreferences",-1),Ve=o(" \u4EE5\u4FEE\u590D\u90E8\u5206\u7CFB\u7EDF\u4E2D\u6587\u4EF6\u6743\u9650\u4E0D\u662F "),Ze=e("code",null,"0664",-1),Ke=o(" \u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),Je={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},qe=o("5ec1cff"),Qe=o(" \u7684\u53CD\u9988\u53CA\u63D0\u4F9B\u7684\u5B9E\u73B0\u4EE3\u7801"),$e=i("
  • \u65B0\u589E YukiHookAPI.Configs.isEnableHookSharedPreferences \u529F\u80FD\uFF0C\u9ED8\u8BA4\u5173\u95ED\uFF0C\u82E5 SharedPreferences \u7684\u6743\u9650\u9519\u8BEF\u53EF\u8FDB\u884C\u542F\u7528
  • \u4FEE\u590D\u67E5\u627E Constructor \u65F6\u65E0\u53C2\u6784\u9020\u65B9\u6CD5\u5728\u4E0D\u586B\u5199\u67E5\u627E\u6761\u4EF6\u65F6\u65E0\u6CD5\u627E\u5230\u7684 BUG\uFF0C\u611F\u8C22 B5 KAKA \u7684\u53CD\u9988
  • \u5206\u79BB\u4F4D\u4E8E injectMember \u4E2D method\u3001constructor \u7684 Result \u5B9E\u4F8B\u5230 Process
  • \u5728 Hook \u8FC7\u7A0B\u4E2D\u65B0\u589E useDangerousOperation \u65B9\u6CD5\uFF0C\u672A\u8FDB\u884C\u58F0\u660E\u65F6\u5728 Hook \u5371\u9669\u5217\u8868\u4E2D\u7684\u529F\u80FD\u540E\u4F1A\u81EA\u52A8\u505C\u6B62 Hook \u5E76\u6253\u5370\u9519\u8BEF
  • \u65B0\u589E\u6A21\u5757\u8D44\u6E90\u6CE8\u5165\u4E0E Activity \u4EE3\u7406\u529F\u80FD\uFF0C\u4F60\u53EF\u4EE5\u8C03\u7528 injectModuleAppResources \u53CA registerModuleAppActivities \u6765\u4F7F\u7528
  • \u65B0\u589E ModuleContextThemeWrapper \u529F\u80FD\uFF0C\u4F60\u53EF\u4EE5\u8C03\u7528 applyModuleTheme \u5728\u4EFB\u610F Activity \u4E2D\u521B\u5EFA\u6A21\u5757\u7684 Context
  • \u65B0\u589E ClassLoader.onLoadClass \u529F\u80FD\uFF0C\u53EF\u7528\u4E8E\u76D1\u542C ClassLoader \u7684 loadClass \u65B9\u6CD5\u88AB\u8C03\u7528\u7684\u4E8B\u4EF6
  • \u4F5C\u5E9F\u4E86 classOf \u4E0E clazz \u6269\u5C55\u65B9\u6CD5\uFF0C\u65B0\u589E toClass \u4EE5\u53CA toClassOrNull \u7528\u6CD5\uFF0C\u8BF7\u73B0\u5728\u8F6C\u79FB\u5230\u65B0\u7684\u65B9\u6CD5
  • VariousClass \u65B0\u589E getOrNull \u65B9\u6CD5\uFF0C\u53EF\u5728\u5339\u914D\u4E0D\u5230 Class \u7684\u65F6\u5019\u4E0D\u629B\u51FA\u5F02\u5E38\u800C\u662F\u8FD4\u56DE null
  • PackageParam.hook \u4E2D\u79FB\u9664\u4E86 isUseAppClassLoader \u53C2\u6570\uFF0C\u4FEE\u6539\u4E3A isForceUseAbsolute \u5E76\u81EA\u52A8\u5339\u914D\u76EE\u6807 Class
  • PackageParam \u65B0\u589E systemContext \u529F\u80FD\uFF0C\u4F60\u53EF\u4EE5\u5728\u4EFB\u610F\u65F6\u95F4\u8C03\u7528\u6B64\u529F\u80FD\u83B7\u53D6\u4E00\u4E2A\u6301\u4E45\u5316\u7684 Context
  • \u4E0D\u518D\u5BF9\u5916\u5F00\u653E HookClass \u4E2D\u7684\u4EFB\u4F55\u65B9\u6CD5
  • HookParam \u4E2D\u65B0\u589E throwToApp \u529F\u80FD\uFF0C\u53EF\u5C06\u5F02\u5E38\u76F4\u63A5\u629B\u7ED9\u5BBF\u4E3B
  • Hook \u56DE\u8C03\u4E2D\u65B0\u589E onFailureThrowToApp \u529F\u80FD\uFF0C\u53EF\u5728\u53D1\u751F\u5F02\u5E38\u65F6\u76F4\u63A5\u629B\u7ED9\u5BBF\u4E3B
  • \u4FEE\u6539\u4E86\u8C03\u8BD5\u65E5\u5FD7\u7684\u6253\u5370\u903B\u8F91\uFF0C\u53CD\u5C04\u67E5\u627E\u529F\u80FD\u4E2D\u7684\u8017\u65F6\u8BB0\u5F55\u4EC5\u4F1A\u5728 Hook \u8FC7\u7A0B\u4E2D\u8FDB\u884C\u6253\u5370
  • Hook \u8FC7\u7A0B\u4E2D\u65B0\u589E\u89E3\u9664 Hook \u529F\u80FD\uFF0C\u53EF\u4F7F\u7528 remove \u53CA removeSelf \u65B9\u6CD5\u89E3\u9664 Hook
  • \u4FEE\u590D\u5728 ReplaceHook \u5931\u8D25\u7684\u65F6\u5019\u5BFC\u81F4\u5BBF\u4E3B\u629B\u51FA\u5F02\u5E38\u7684\u95EE\u9898\uFF0C\u73B0\u4FEE\u6539\u4E3A\u8C03\u7528\u539F\u59CB\u65B9\u6CD5\u4FDD\u8BC1\u5BBF\u4E3B\u529F\u80FD\u6B63\u5E38\u8FD0\u884C
  • \u65B0\u589E Hook \u8FC7\u7A0B\u4E2D\u5BF9\u65B9\u6CD5\u8FD4\u56DE\u503C\u7684\u68C0\u67E5\u529F\u80FD\uFF0C\u5728\u8FD4\u56DE\u503C\u4E0D\u5339\u914D\u7684\u60C5\u51B5\u4E0B\u4F1A\u6839\u636E\u60C5\u666F\u81EA\u52A8\u629B\u51FA\u5F02\u5E38\u6216\u6253\u5370\u9519\u8BEF
  • ",18),eo=o("Resources Hook \u4E2D\u65B0\u589E "),oo=e("code",null,"array",-1),co=o(" \u7C7B\u578B\uFF0C\u611F\u8C22 "),io={href:"https://github.com/GSWXXN",target:"_blank",rel:"noopener noreferrer"},lo=o("GSWXXN"),to=o(" \u7684 "),so={href:"https://github.com/fankes/YukiHookAPI/pull/12",target:"_blank",rel:"noopener noreferrer"},no=o("PR"),ao=e("li",null,[o("\u79FB\u52A8 "),e("code",null,"me.weishu.reflection"),o(" \u5230 "),e("code",null,"thirdparty"),o(" \u9632\u6B62\u540C\u65F6\u5F15\u5165\u7684\u540C\u540D\u4F9D\u8D56\u51B2\u7A81")],-1),ro=e("li",null,"\u79FB\u9664 Hook \u65B9\u6CD5\u4F53\u4E3A\u7A7A\u65F6\u629B\u51FA\u7684\u5F02\u5E38\uFF0C\u4FEE\u6539\u4E3A\u6253\u5370\u8B66\u544A\u65E5\u5FD7",-1),_o=e("li",null,[o("\u4FEE\u6539 "),e("code",null,"AppLifecycle"),o(" \u7684\u5F02\u5E38\u5904\u7406\u903B\u8F91\uFF0C\u5F53\u5176\u53D1\u751F\u5F02\u5E38\u65F6\u76F4\u63A5\u629B\u7ED9\u5BBF\u4E3B")],-1),ho=e("li",null,"\u66F4\u65B0 Demo \u7684 API \u7248\u672C\u5230 33",-1),uo={id:"_1-0-92-2022-05-31",tabindex:"-1"},ko=e("a",{class:"header-anchor",href:"#_1-0-92-2022-05-31","aria-hidden":"true"},"#",-1),po=o(" 1.0.92 | 2022.05.31 \u2002"),go=i("
    • \u4FEE\u6B63\u4E86\u5927\u91CF\u65B9\u6CD5\u4E2D callback \u7684\u547D\u540D\u65B9\u6CD5
    • \u66F4\u6362\u65B9\u6848\u518D\u6B21\u4FEE\u590D YukiHookDataChannel \u5728\u4F4E\u4E8E Android 12 \u7684\u8BBE\u5907\u4E0A\u4E0D\u80FD\u56DE\u8C03\u5F53\u524D Activity \u5E7F\u64AD\u7684\u95EE\u9898
    • InjectYukiHookWithXposed \u6CE8\u89E3\u65B0\u589E isUsingResourcesHook \u529F\u80FD\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u9009\u62E9\u6027\u5173\u95ED\u81EA\u52A8\u751F\u6210 IXposedHookInitPackageResources \u7684\u4F9D\u8D56\u63A5\u53E3\u4E86
    ",1),mo={id:"_1-0-91-2022-05-29",tabindex:"-1"},fo=e("a",{class:"header-anchor",href:"#_1-0-91-2022-05-29","aria-hidden":"true"},"#",-1),Ho=o(" 1.0.91 | 2022.05.29 \u2002"),Po=o("\u4FEE\u590D\u90E8\u5206\u8BBE\u5907\u7684\u5B9A\u5236\u7CFB\u7EDF\u5728 LSPosed \u73AF\u5883\u4E0B\u5F00\u673A\u542F\u52A8\u83B7\u53D6\u7684 "),bo=e("code",null,"ClassLoader",-1),yo=o(" \u9519\u8BEF\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),xo={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Co=o("Luckyzyx"),Ao=o(" \u7684\u53CD\u9988"),vo=i("
  • \u4FEE\u590D YukiHookDataChannel \u5728 ZUI \u4EE5\u53CA\u4F4E\u4E8E Android 12 \u7684\u7CFB\u7EDF\u4E0A\u4E0D\u80FD\u56DE\u8C03\u5F53\u524D Activity \u5E7F\u64AD\u7684\u95EE\u9898
  • \u6574\u5408 YukiHookModuleStatus \u529F\u80FD\u5230 YukiHookAPI.Status\uFF0C\u91CD\u5199\u4E86\u5927\u91CF\u65B9\u6CD5\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E2D\u53CC\u5411\u5224\u65AD\u6A21\u5757\u6FC0\u6D3B\u7B49\u72B6\u6001\u4FE1\u606F
  • ",2),Yo={id:"_1-0-90-2022-05-27",tabindex:"-1"},Mo=e("a",{class:"header-anchor",href:"#_1-0-90-2022-05-27","aria-hidden":"true"},"#",-1),Io=o(" 1.0.90 | 2022.05.27 \u2002"),Ro=i("
    • \u4FEE\u590D YukiHookDataChannel \u5728\u6A21\u5757\u8BBE\u7F6E\u76D1\u542C\u56DE\u8C03\u65F6\u95EA\u9000\u7684\u95EE\u9898
    • \u4FEE\u590D YukiHookDataChannel \u5728\u975E\u5F53\u524D Activity \u60C5\u51B5\u4E0B\u4F9D\u7136\u4F1A\u56DE\u8C03\u7684\u95EE\u9898
    • \u79FB\u9664 YukiHookDataChannel \u56DE\u8C03\u4E8B\u4EF6\u7684\u9ED8\u8BA4\u503C\uFF0C\u6CA1\u6709\u5373\u4E0D\u56DE\u8C03
    • \u79FB\u9664 YukiHookModulePrefs \u5728 XShare \u4E0D\u53EF\u8BFB\u7684\u60C5\u51B5\u4E0B\u6253\u5370\u7684\u8B66\u544A
    • \u65B0\u589E YukiHookModulePrefs \u4E2D\u7684 isXSharePrefsReadable \u65B9\u6CD5\uFF0C\u53EF\u5224\u65AD\u5F53\u524D\u7684 XShare \u662F\u5426\u53EF\u7528
    ",1),So={id:"_1-0-89-2022-05-26",tabindex:"-1"},Lo=e("a",{class:"header-anchor",href:"#_1-0-89-2022-05-26","aria-hidden":"true"},"#",-1),Xo=o(" 1.0.89 | 2022.05.26 \u2002"),Fo=i("
    • \u4FEE\u590D YukiHookDataChannel \u4E0D\u80FD\u91CD\u590D\u8BBE\u7F6E\u76D1\u542C\u7684\u95EE\u9898\uFF0C\u5E76\u52A0\u5165\u5728\u6A21\u5757\u4E0D\u540C Activity \u4E2D\u91CD\u590D\u54CD\u5E94\u548C\u81EA\u52A8\u8DDF\u968F Activity \u9500\u6BC1\u76D1\u542C\u529F\u80FD
    • \u65B0\u589E YukiHookDataChannel \u91CD\u590D\u76D1\u542C\u7528\u4F8B\u8BF4\u660E\u6587\u6863
    • \u52A0\u5165 onAlreadyHooked \u65B9\u6CD5\uFF0C\u53EF\u5224\u65AD\u5F53\u524D\u65B9\u6CD5\u662F\u5426\u88AB\u91CD\u590D Hook
    • \u4FEE\u6539\u90E8\u5206\u91CD\u590D\u6DFB\u52A0 HashMap \u7684\u903B\u8F91\uFF0C\u79FB\u9664 putIfAbsent \u65B9\u6CD5\uFF0C\u5141\u8BB8\u8986\u76D6\u6DFB\u52A0
    • \u4FEE\u590D\u4E86\u51E0\u5904\u53EF\u80FD\u7684 BUG
    ",1),Do={id:"_1-0-88-2022-05-25",tabindex:"-1"},Bo=e("a",{class:"header-anchor",href:"#_1-0-88-2022-05-25","aria-hidden":"true"},"#",-1),Uo=o(" 1.0.88 | 2022.05.25 \u2002"),Wo=i("
    • \u5BF9 Xposed API \u5B8C\u5168\u89E3\u8026\u5408
    • \u589E\u52A0\u4E86 type \u4E2D\u7684 android \u7C7B\u578B
    • \u5C06 YukiHookModuleStatus \u4ECE\u81EA\u52A8\u751F\u6210\u4EE3\u7801\u4E2D\u5206\u79BB\uFF0C\u5E76\u52A0\u5165 isEnableHookModuleStatus \u7684\u5F00\u5173\uFF0C\u7531\u4F60\u51B3\u5B9A\u662F\u5426\u542F\u7528
    • \u5BF9 API \u5927\u91CF\u7C7B\u7684\u6784\u9020\u65B9\u6CD5\u8FDB\u884C\u4E86 internal \u95ED\u5305\u5904\u7406
    • \u5C06 YukiHookModulePrefs \u8BBE\u7F6E\u4E3A\u5355\u4F8B\u8FD0\u884C\uFF0C\u9632\u6B62\u91CD\u590D\u521B\u5EFA\u6D6A\u8D39\u7CFB\u7EDF\u8D44\u6E90
    • \u4FEE\u590D\u81EA 1.0.80 \u7248\u672C\u540E\u65E0\u6CD5\u5D4C\u5957 Hook \u7684 BUG\uFF0C\u5E76\u4F18\u5316\u5D4C\u5957 Hook \u76F8\u5173\u529F\u80FD
    • \u4FEE\u6539 Hooker \u5B58\u50A8\u65B9\u6848\u7531 HashSet \u5230 HashMap\uFF0C\u9632\u6B62\u91CD\u590D\u6DFB\u52A0 Hooker \u7684\u95EE\u9898
    • \u4FEE\u6539 Hook \u6838\u5FC3\u5B9E\u73B0\u65B9\u6CD5\uFF0C\u52A0\u5165\u67E5\u91CD\uFF0C\u907F\u514D\u91CD\u590D Hook \u591A\u6B21\u56DE\u8C03 HookParam \u65B9\u6CD5
    • MethodFinder \u4E0E FieldFinder \u52A0\u5165\u67E5\u627E\u6A21\u7CCA\u65B9\u6CD5\u3001\u53D8\u91CF\u540D\u79F0\u529F\u80FD\uFF0C\u53EF\u8C03\u7528 name { ... } \u6765\u8BBE\u7F6E\u67E5\u627E\u6761\u4EF6\uFF0C\u652F\u6301\u6B63\u5219
    • \u4F18\u5316\u5E76\u4FEE\u6539 appContext \u7684\u83B7\u53D6\u65B9\u5F0F\uFF0C\u964D\u4F4E\u4F1A\u53D6\u5230\u7A7A\u7684\u95EE\u9898\u7684\u53EF\u80FD\u6027
    • \u4FEE\u6539\u81EA\u52A8\u751F\u6210\u7684\u4EE3\u7801\u4E2D logger \u7684\u6253\u5370 TAG \u9ED8\u8BA4\u4E3A\u4F60\u81EA\u5B9A\u4E49\u7684\u540D\u79F0\uFF0C\u65B9\u4FBF\u8FDB\u884C\u8C03\u8BD5
    • \u4F18\u5316 YukiHookBridge \u7684 Hooker \u5B9E\u73B0\u65B9\u5F0F\uFF0C\u63D0\u5347 Hook \u6027\u80FD
    • PackageParam \u589E\u52A0 onAppLifecycle \u65B9\u6CD5\uFF0C\u53EF\u539F\u751F\u76D1\u542C\u5BBF\u4E3B\u7684\u751F\u547D\u5468\u671F\u4EE5\u53CA\u5B9E\u73B0\u6CE8\u518C\u7CFB\u7EDF\u5E7F\u64AD\u529F\u80FD
    • \u65B0\u589E YukiHookDataChannel \u529F\u80FD\uFF0C\u53EF\u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4FDD\u6301\u5B58\u6D3B\u7684\u60C5\u51B5\u4E0B\u4F7F\u7528\u7CFB\u7EDF\u65E0\u5E8F\u5E7F\u64AD\u8FDB\u884C\u901A\u8BAF
    • YukiHookDataChannel \u589E\u52A0 checkingVersionEquals \u65B9\u6CD5\uFF0C\u53EF\u901A\u8FC7\u76D1\u542C\u6765\u9A8C\u8BC1\u6A21\u5757\u66F4\u65B0\u540E\u5BBF\u4E3B\u5E76\u672A\u66F4\u65B0\u7248\u672C\u4E0D\u5339\u914D\u95EE\u9898
    • demo-module \u7684\u793A\u4F8B\u4EE3\u7801\u4E2D\u65B0\u589E Java \u7248\u672C\u7684\u793A\u4F8B\uFF0C\u4EC5\u4F9B\u53C2\u8003
    ",1),wo={id:"_1-0-87-2022-05-10",tabindex:"-1"},To=e("a",{class:"header-anchor",href:"#_1-0-87-2022-05-10","aria-hidden":"true"},"#",-1),Go=o(" 1.0.87 | 2022.05.10 \u2002"),No=e("ul",null,[e("li",null,[o("\u65B0\u589E "),e("code",null,"refreshModuleAppResources"),o(" \u529F\u80FD\uFF0C\u4EE5\u9002\u914D\u8BED\u8A00\u533A\u57DF\u3001\u5B57\u4F53\u5927\u5C0F\u3001\u5206\u8FA8\u7387\u6539\u53D8\u7B49\u60C5\u51B5\u4E0B\u7684 Resources \u5237\u65B0")]),e("li",null,[o("\u65B0\u589E "),e("code",null,"isEnableModuleAppResourcesCache"),o(" \u529F\u80FD\uFF0C\u53EF\u81EA\u884C\u8BBE\u7F6E\u662F\u5426\u81EA\u52A8\u7F13\u5B58\u5F53\u524D\u6A21\u5757\u7684 Resources")])],-1),Eo={id:"_1-0-86-2022-05-06",tabindex:"-1"},Oo=e("a",{class:"header-anchor",href:"#_1-0-86-2022-05-06","aria-hidden":"true"},"#",-1),zo=o(" 1.0.86 | 2022.05.06 \u2002"),jo=e("ul",null,[e("li",null,[o("\u4FEE\u590D\u4E0D\u652F\u6301 Resources Hook(\u8D44\u6E90\u94A9\u5B50) \u7684\u60C5\u51B5\u4E0B\u5728 "),e("code",null,"initZygote"),o(" \u65F6\u6301\u7EED\u62A5\u9519\u7684\u95EE\u9898\uFF0C\u590D\u73B0\u5728 "),e("strong",null,"ZUI"),o("/"),e("strong",null,"LSPosed CI(1.8.3-6550)")]),e("li",null,"\u4F18\u5316\u5E76\u5BF9 Resources Hook \u8FDB\u884C\u5F02\u5E38\u5904\u7406\uFF0C\u53EA\u6709\u88AB\u4F7F\u7528\u540E\u4E0D\u652F\u6301\u624D\u4F1A\u6253\u5370\u9519\u8BEF\u548C\u8B66\u544A")],-1),Vo={id:"_1-0-85-2022-05-04",tabindex:"-1"},Zo=e("a",{class:"header-anchor",href:"#_1-0-85-2022-05-04","aria-hidden":"true"},"#",-1),Ko=o(" 1.0.85 | 2022.05.04 \u2002"),Jo=i("
    • \u4FEE\u590D\u65E0\u6CD5 Hook \u7CFB\u7EDF\u6846\u67B6\u7684\u4E25\u91CD\u95EE\u9898\uFF0C\u4ECE 1.0.80 \u5F00\u59CB\u51FA\u73B0
    • \u8C03\u8BD5\u65E5\u5FD7\u4E2D\u65B0\u589E\u533A\u5206 initZygote \u88C5\u8F7D\u7684\u5305\u540D\u4E3A android-zygote\uFF0CpackageName \u4FDD\u6301 android \u4E0D\u53D8
    ",1),qo={id:"_1-0-83-2022-05-04",tabindex:"-1"},Qo=e("a",{class:"header-anchor",href:"#_1-0-83-2022-05-04","aria-hidden":"true"},"#",-1),$o=o(" 1.0.83 | 2022.05.04 \u2002"),ed=e("ul",null,[e("li",null,[o("\u4FEE\u590D "),e("code",null,"YukiHookModuleStatus"),o(" \u5728 "),e("code",null,"loadSystem"),o(" \u540E\u5927\u91CF\u62A5\u9519\u7684\u95EE\u9898")]),e("li",null,[o("\u65B0\u589E "),e("code",null,"type"),o(" \u4E2D\u7684 "),e("code",null,"android"),o(" \u7C7B\u578B")]),e("li",null,"\u66F4\u65B0\u5E2E\u52A9\u6587\u6863\u7684\u793A\u4F8B\u8BF4\u660E")],-1),od={id:"_1-0-82-2022-05-04",tabindex:"-1"},dd=e("a",{class:"header-anchor",href:"#_1-0-82-2022-05-04","aria-hidden":"true"},"#",-1),cd=o(" 1.0.82 | 2022.05.04 \u2002"),id=e("ul",null,[e("li",null,[o("\u4FEE\u590D\u4E86\u4E00\u5904\u6982\u5FF5\u6DF7\u6DC6\u9519\u8BEF\uFF0C\u533A\u5206 "),e("code",null,"initZygote"),o(" \u4E0E\u7CFB\u7EDF\u6846\u67B6\u7684\u5173\u7CFB\uFF0C\u4E4B\u524D\u7684\u6CE8\u91CA\u548C\u6587\u6863\u6709\u95EE\u9898\uFF0C\u975E\u5E38\u62B1\u6B49")]),e("li",null,[e("code",null,"PackageParam"),o(" \u65B0\u589E "),e("code",null,"loadSystem"),o(" \u65B9\u6CD5\uFF0C\u4E0D\u9700\u8981\u518D\u5199 "),e("code",null,'loadApp(name = "android")'),o(" \u5373\u53EF Hook \u7CFB\u7EDF\u6846\u67B6")])],-1),ld={id:"_1-0-81-2022-05-04",tabindex:"-1"},td=e("a",{class:"header-anchor",href:"#_1-0-81-2022-05-04","aria-hidden":"true"},"#",-1),sd=o(" 1.0.81 | 2022.05.04 \u2002"),nd=e("ul",null,[e("li",null,[o("\u4FEE\u590D\u4F7F\u7528 "),e("code",null,"by"),o(" \u65B9\u6CD5\u8BBE\u7F6E\u6761\u4EF6\u540E Hook \u65B9\u6CD5\u4F53\u5185\u67E5\u627E\u4E0D\u5230\u7684\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u4F9D\u7136\u8F93\u51FA\u9519\u8BEF\u65E5\u5FD7\u7684\u95EE\u9898")]),e("li",null,"\u5728\u6267\u884C Hook \u8FC7\u7A0B\u4E2D\u52A0\u5165\u5168\u5C40\u65E5\u5FD7\u663E\u793A\u5F53\u524D Hook APP \u7684\u5305\u540D\uFF0C\u5E76\u4FEE\u590D\u4E00\u5904\u9519\u8BEF\u65E5\u5FD7\u6253\u5370\u6837\u5F0F\u7684\u95EE\u9898")],-1),ad={id:"_1-0-80-2022-05-01",tabindex:"-1"},rd=e("a",{class:"header-anchor",href:"#_1-0-80-2022-05-01","aria-hidden":"true"},"#",-1),_d=o(" 1.0.80 | 2022.05.01 \u2002"),hd=i("
  • InjectYukiHookWithXposed \u6CE8\u89E3\u65B0\u589E entryClassName \u529F\u80FD\uFF0C\u53EF\u81EA\u5B9A\u4E49\u751F\u6210\u7684 xposed_init \u5165\u53E3\u7C7B\u540D
  • YukiHookXposedInitProxy \u66F4\u540D\u4E3A IYukiHookXposedInit\uFF0C\u539F\u63A5\u53E3\u540D\u79F0\u5DF2\u4F5C\u5E9F\uFF0C\u5C06\u5728\u540E\u7EED\u7248\u672C\u4E2D\u76F4\u63A5\u88AB\u5220\u9664
  • \u65B0\u589E initZygote \u4E0E Resources Hook \u529F\u80FD\uFF0C\u652F\u6301 Hook Layout
  • \u65B0\u589E onXposedEvent \u65B9\u6CD5\uFF0C\u53EF\u76D1\u542C\u539F\u751F Xposed API \u7684\u5168\u90E8\u4E8B\u4EF6
  • \u5BF9 Hook \u529F\u80FD\u7684 lambda \u8FDB\u884C inline \u5904\u7406\uFF0C\u907F\u514D\u751F\u6210\u8FC7\u788E\u7684\u533F\u540D\u7C7B\uFF0C\u63D0\u5347\u7F16\u8BD1\u540E\u7684\u8FD0\u884C\u6027\u80FD
  • \u4FEE\u590D PrefsData \u7F16\u8BD1\u540E\u7684\u65B9\u6CD5\u4F53\u590D\u5236\u8FC7\u5927\u7684\u95EE\u9898
  • \u589E\u52A0 XSharePreference \u53EF\u8BFB\u6027\u6D4B\u8BD5\uFF0C\u5931\u8D25\u540E\u4F1A\u81EA\u52A8\u6253\u5370\u8B66\u544A\u65E5\u5FD7
  • PackageParam \u65B0\u589E appResources\u3001moduleAppResources\u3001moduleAppFilePath \u529F\u80FD
  • PackageParam \u7684 loadApp \u65B0\u589E\u4E0D\u5199 name \u529F\u80FD\uFF0C\u9ED8\u8BA4\u7B5B\u9009\u5168\u90E8 APP
  • PackageParam \u65B0\u589E loadZygote \u65B9\u6CD5\uFF0C\u53EF\u76F4\u63A5 Hook \u7CFB\u7EDF\u6846\u67B6
  • PackageParam \u65B0\u589E resources().hook \u529F\u80FD
  • \u4F18\u5316\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u3001\u53D8\u91CF\u67E5\u627E\u529F\u80FD\uFF0C\u627E\u4E0D\u5230\u7684\u9519\u8BEF\u65E5\u5FD7\u5C06\u4F18\u5148\u663E\u793A\u5DF2\u8BBE\u7F6E\u7684\u67E5\u627E\u6761\u4EF6
  • \u589E\u52A0 hasExtends \u6269\u5C55\u65B9\u6CD5\uFF0C\u53EF\u5224\u65AD\u5F53\u524D Class \u662F\u5426\u6709\u7EE7\u627F\u5173\u7CFB
  • \u589E\u52A0 isSupportResourcesHook \u529F\u80FD\uFF0C\u5224\u65AD\u5F53\u524D\u662F\u5426\u652F\u6301\u8D44\u6E90\u94A9\u5B50(Resources Hook)
  • current \u529F\u80FD\u65B0\u589E superClass \u65B9\u6CD5\u8C03\u7528\u7236\u7C7B
  • \u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u3001\u53D8\u91CF\u65B0\u589E superClass \u67E5\u627E\u6761\u4EF6\uFF0C\u53EF\u7EE7\u7EED\u5728\u7236\u7C7B\u4E2D\u67E5\u627E
  • YukiHookAPI \u5927\u91CF\u65B9\u6CD5\u4E0E Xposed API \u89E3\u8026\u5408
  • \u65B0\u589E Xposed API \u7684\u539F\u751F Hook \u4F18\u5148\u7EA7\u529F\u80FD
  • \u4FEE\u590D isFirstApplication \u53EF\u80FD\u5224\u65AD\u4E0D\u51C6\u786E\u7684\u95EE\u9898
  • \u5C4F\u853D MIUI \u7CFB\u7EDF\u4E0A MiuiCatcherPatch \u91CD\u590D\u8C03\u7528 Hook \u5165\u53E3\u65B9\u6CD5\u7684\u95EE\u9898
  • \u4F18\u5316 Hook \u5165\u53E3\u8C03\u7528\u65B9\u6CD5\uFF0C\u907F\u514D\u56E0\u4E3A Hook Framework \u95EE\u9898\u5BFC\u81F4\u591A\u6B21\u8C03\u7528
  • ",21),ud=o("\u4FEE\u590D Hook "),kd=e("code",null,"ClassLoader",-1),pd=o(" \u5BFC\u81F4 Hook \u5361\u6B7B\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),gd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},md=o("WankkoRee"),fd=o(" \u7684\u53CD\u9988"),Hd=e("li",null,[o("\u63D0\u5347 "),e("code",null,"XC_Callback"),o(" \u63A5\u53E3\u5BF9\u63A5\u540E\u7684\u6027\u80FD")],-1),Pd=e("li",null,[o("Java "),e("code",null,"type"),o(" \u65B0\u589E "),e("code",null,"ClassLoader"),o(" \u7C7B\u578B")],-1),bd=e("li",null,"\u4F18\u5316 API \u5E2E\u52A9\u6587\u6863\uFF0C\u4FEE\u590D\u53EF\u80FD\u6301\u7EED\u7F13\u5B58\u9875\u9762\u7684\u95EE\u9898",-1),yd={id:"_1-0-78-2022-04-18",tabindex:"-1"},xd=e("a",{class:"header-anchor",href:"#_1-0-78-2022-04-18","aria-hidden":"true"},"#",-1),Cd=o(" 1.0.78 | 2022.04.18 \u2002"),Ad=i("
  • YukiHookModulePrefs \u65B0\u589E isRunInNewXShareMode \u65B9\u6CD5\uFF0C\u53EF\u7528\u4E8E\u5224\u65AD\u6A21\u5757\u5F53\u524D\u662F\u5426\u5904\u4E8E New XSharePreference \u6A21\u5F0F
  • \u4FEE\u590D YukiHookModulePrefs \u5728 New XSharePreference \u6A21\u5F0F\u4E0B\u5DE5\u4F5C\u7684\u90E8\u5206\u95EE\u9898
  • \u65B0\u589E ModulePreferenceFragment\uFF0C\u73B0\u5728\uFF0C\u4F60\u53EF\u4EE5\u5B8C\u5168\u66FF\u6362\u6389 PreferenceFragmentCompat \u5E76\u5F00\u59CB\u4F7F\u7528\u65B0\u7684\u529F\u80FD
  • ",3),vd=o("\u9002\u914D "),Yd=e("code",null,"PreferenceFragmentCompat",-1),Md=o(" \u7684 Sp \u6570\u636E\u5B58\u50A8\u89E3\u51B3\u65B9\u6848\uFF0C\u611F\u8C22 "),Id={href:"https://github.com/mahoshojoHCG",target:"_blank",rel:"noopener noreferrer"},Rd=o("mahoshojoHCG"),Sd=o(" \u7684\u53CD\u9988"),Ld=e("li",null,[o("\u66F4\u65B0\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u4EE5\u53CA "),e("code",null,"Kotlin"),o(" \u4F9D\u8D56\u5230\u6700\u65B0\u7248\u672C")],-1),Xd=e("li",null,"\u4FEE\u6B63\u90E8\u5206\u6587\u6863\u548C\u4EE3\u7801\u6CE8\u91CA\u4E2D\u7684\u9519\u8BEF",-1),Fd={id:"_1-0-77-2022-04-15",tabindex:"-1"},Dd=e("a",{class:"header-anchor",href:"#_1-0-77-2022-04-15","aria-hidden":"true"},"#",-1),Bd=o(" 1.0.77 | 2022.04.15 \u2002"),Ud=e("code",null,"YukiHookModulePrefs",-1),Wd=o(" \u65B0\u589E "),wd=e("code",null,"clear",-1),Td=o(" \u65B9\u6CD5\uFF0C\u611F\u8C22 "),Gd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Nd=o("WankkoRee"),Ed=o(" \u7684\u5EFA\u8BAE"),Od=i("
  • YukiHookModulePrefs \u65B0\u589E getStringSet\u3001putStringSet\u3001all \u65B9\u6CD5
  • HookParam \u7684 args \u589E\u52A0 any \u65B9\u6CD5
  • \u65B0\u589E ModuleApplication\uFF0C\u53EF\u5728\u6A21\u5757\u4E2D\u7EE7\u627F\u6B64\u7C7B\u5B9E\u73B0\u66F4\u591A\u529F\u80FD
  • \u5BF9\u63A5\u5168\u90E8\u7684 findClass \u529F\u80FD\u5230 Xposed API\uFF0C\u5728\u975E\u5BBF\u4E3B\u73AF\u5883\u7EE7\u7EED\u4F7F\u7528\u539F\u751F ClassLoader
  • \u4FEE\u590D\u4E86\u4E00\u4E9B\u53EF\u80FD\u5B58\u5728\u7684 BUG
  • ",5),zd={id:"_1-0-75-2022-04-13",tabindex:"-1"},jd=e("a",{class:"header-anchor",href:"#_1-0-75-2022-04-13","aria-hidden":"true"},"#",-1),Vd=o(" 1.0.75 | 2022.04.13 \u2002"),Zd=o("\u66F4\u6B63\u4E86\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u7684\u903B\u8F91\u8BC6\u522B\u90E8\u5206\uFF0C\u611F\u8C22 "),Kd={href:"https://github.com/ApeaSuperz",target:"_blank",rel:"noopener noreferrer"},Jd=o("ApeaSuperz"),qd=o(" \u7684\u8D21\u732E"),Qd=i("
  • \u4FEE\u6B63\u4E00\u5904\u6587\u6863\u6CE8\u91CA\u7684\u5F15\u7528\u672A\u66F4\u6539\u7684\u95EE\u9898
  • HookParam \u4E2D\u5220\u9664\u4E86 firstArgs \u4E0E lastArgs \u65B9\u6CD5\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u4F7F\u7528 args().first() \u4E0E args().last() \u6765\u53D6\u4EE3\u5B83
  • HookParam \u4E2D\u5220\u9664\u4E86 args() \u4E2D\u7684\u9ED8\u8BA4\u53C2\u6570 index = 0\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u4F7F\u7528 args().first() \u6216 args(index = 0) \u6765\u53D6\u4EE3\u5B83
  • HookParam \u4E2D result \u529F\u80FD\u589E\u52A0\u4E86\u6CDB\u578B\u5339\u914D\uFF0C\u73B0\u5728\u4F60\u53EF\u4EE5\u4F7F\u7528 result<T> \u6765\u5339\u914D\u4F60\u7684\u76EE\u6807\u65B9\u6CD5\u5DF2\u77E5\u8FD4\u56DE\u503C\u7C7B\u578B\u4E86
  • \u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u67E5\u627E\u529F\u80FD\u65B0\u589E emptyParam \u6761\u4EF6\uFF0C\u5E76\u5B8C\u5584\u4E86\u6587\u6863\u76F8\u5173\u9700\u8981\u6CE8\u610F\u7684\u67E5\u627E\u6761\u4EF6\u8BEF\u533A
  • \u589E\u52A0\u4E86 type \u4E2D\u7684 android \u7C7B\u578B
  • ",6),$d=e("h3",{id:"_1-0-73-2022-04-10",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_1-0-73-2022-04-10","aria-hidden":"true"},"#"),o(" 1.0.73 | 2022.04.10")],-1),ec=o("\u4FEE\u6B63\u51E0\u5904\u6587\u6863\u7684\u4E2D\u6587\u7FFB\u8BD1\u9519\u8BEF\uFF0C\u611F\u8C22 "),oc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},dc=o("WankkoRee"),cc=o(" \u7684\u8D21\u732E"),ic=o("\u4FEE\u590D\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B "),lc=e("code",null,"XC_LoadPackage.LoadPackageParam",-1),tc=o(" \u5185\u5BB9\u4E3A\u7A7A\u629B\u51FA\u5F02\u5E38\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),sc={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},nc=o("Luckyzyx"),ac=o(" \u7684\u53CD\u9988"),rc=e("li",null,"\u4FEE\u590D\u4E00\u4E9B\u5DF2\u77E5\u7684 BUG\uFF0C\u63D0\u5347 Hook \u7A33\u5B9A\u6027",-1),_c={id:"_1-0-72-2022-04-09",tabindex:"-1"},hc=e("a",{class:"header-anchor",href:"#_1-0-72-2022-04-09","aria-hidden":"true"},"#",-1),uc=o(" 1.0.72 | 2022.04.09 \u2002"),kc=e("ul",null,[e("li",null,"\u66F4\u65B0 API \u6587\u6863\u5230\u65B0\u7684\u5730\u5740"),e("li",null,[e("code",null,"PackageParam"),o(" \u4E2D\u52A0\u5165 "),e("code",null,"appContext"),o(" \u529F\u80FD")]),e("li",null,"\u4FEE\u590D\u4E00\u4E9B\u5DF2\u77E5\u7684 BUG\uFF0C\u63D0\u5347 Hook \u7A33\u5B9A\u6027")],-1),pc={id:"_1-0-71-2022-04-04",tabindex:"-1"},gc=e("a",{class:"header-anchor",href:"#_1-0-71-2022-04-04","aria-hidden":"true"},"#",-1),mc=o(" 1.0.71 | 2022.04.04 \u2002"),fc=e("ul",null,[e("li",null,"\u4FEE\u590D VariousClass \u65E0\u6CD5\u5339\u914D\u65F6\u4F1A\u505C\u6B62 Hook \u629B\u51FA\u5F02\u5E38\u7684\u4E25\u91CD\u95EE\u9898")],-1),Hc={id:"_1-0-70-2022-04-04",tabindex:"-1"},Pc=e("a",{class:"header-anchor",href:"#_1-0-70-2022-04-04","aria-hidden":"true"},"#",-1),bc=o(" 1.0.70 | 2022.04.04 \u2002"),yc=e("li",null,[o("\u4FEE\u590D "),e("code",null,"instanceClass"),o(" \u5728\u9759\u6001\u5B9E\u4F8B\u4E2D\u8C03\u7528\u540E\u62A5\u9519\u95EE\u9898")],-1),xc=o("\u5728 Hook \u8FC7\u7A0B\u4E2D\u52A0\u5165 "),Cc=e("code",null,"isUseAppClassLoader",-1),Ac=o(" \u529F\u80FD\uFF0C\u611F\u8C22 "),vc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Yc=o("WankkoRee"),Mc=o(" \u7684\u53CD\u9988"),Ic=e("li",null,[o("\u52A0\u5165 "),e("code",null,"withProcess"),o(" \u529F\u80FD\uFF0C\u53EF\u6839\u636E APP \u5F53\u524D\u6307\u5B9A\u8FDB\u7A0B\u8FDB\u884C Hook")],-1),Rc=e("li",null,"\u4FEE\u590D\u67E5\u627E\u65B9\u6CD5\u3001\u6784\u9020\u7C7B\u548C\u53D8\u91CF\u7684\u4E25\u91CD\u903B\u8F91\u9519\u8BEF\u95EE\u9898",-1),Sc=e("li",null,"\u4FEE\u590D Hook \u76EE\u6807\u7C7B\u4E0D\u5B58\u5728\u7684\u65F6\u5019\u65E0\u6CD5\u5FFD\u7565\u5F02\u5E38\u8F93\u51FA\u7684\u95EE\u9898",-1),Lc=e("li",null,"\u4FEE\u590D\u90E8\u5206\u60C5\u51B5\u4E0B APP \u542F\u52A8\u65B9\u6CD5\u88C5\u8F7D\u8FC7\u5FEB\u5BFC\u81F4 Hook \u4E0D\u80FD\u751F\u6548\u7684\u95EE\u9898",-1),Xc=o("\u4FEE\u590D "),Fc=e("code",null,"allMethods",-1),Dc=o(" \u672A Hook \u5230\u65B9\u6CD5\u65F6\u4E0D\u4F1A\u629B\u51FA\u5F02\u5E38\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),Bc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Uc=o("WankkoRee"),Wc=o(" \u7684\u53CD\u9988"),wc=o("\u52A0\u5165 Hook \u72B6\u6001\u76D1\u542C\u529F\u80FD\uFF0C\u611F\u8C22 "),Tc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Gc=o("WankkoRee"),Nc=o(" \u7684\u5EFA\u8BAE"),Ec=e("li",null,"\u4FEE\u6539 Xposed \u5165\u53E3\u6CE8\u5165\u7C7B\u7684\u65B9\u5F0F\uFF0C\u91CD\u65B0\u58F0\u660E API \u7684\u5B9A\u4E49\u57DF",-1),Oc=o("\u52A0\u5165\u6DF7\u6DC6\u7684\u65B9\u6CD5\u4EE5\u53CA\u53D8\u91CF\u7684\u67E5\u627E\u529F\u80FD\uFF0C\u53EF\u4F7F\u7528\u4E0D\u540C\u7C7B\u578B\u7B5B\u9009 "),zc=e("code",null,"index",-1),jc=o(" \u5B9A\u4F4D\u6307\u5B9A\u7684\u65B9\u6CD5\u548C\u53D8\u91CF\uFF0C\u611F\u8C22 "),Vc={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Zc=o("WankkoRee"),Kc=o(" \u63D0\u4F9B\u7684\u601D\u8DEF"),Jc=e("li",null,[o("\u67E5\u627E\u65B9\u6CD5\u3001\u53D8\u91CF\u65F6\u5141\u8BB8\u4F20\u5165\u591A\u79CD\u7C7B\u578B\uFF0C\u4F8B\u5982 "),e("code",null,"String"),o(" \u58F0\u660E\u7684\u7C7B\u540D\u548C "),e("code",null,"VariousClass")],-1),qc=e("li",null,[o("\u52A0\u5165\u5168\u65B0\u7684 "),e("code",null,"current"),o(" \u529F\u80FD\uFF0C\u53EF\u5BF9\u4EFB\u610F\u7684\u7C7B\u6784\u5EFA\u4E00\u4E2A\u53CD\u5C04\u65B9\u6CD5\u64CD\u4F5C\u7A7A\u95F4\uFF0C\u65B9\u4FBF\u5730\u8C03\u7528\u548C\u4FEE\u6539\u5176\u4E2D\u7684\u65B9\u6CD5\u548C\u53D8\u91CF")],-1),Qc=o("\u4FEE\u590D\u4E86 Hook \u8FC7\u7A0B\u4E2D\u7684\u5927\u91CF BUG\uFF0C\u611F\u8C22 "),$c={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},ei=o("WankkoRee"),oi=o(" \u5BF9\u6B64\u9879\u76EE\u6240\u505A\u51FA\u7684\u8D21\u732E"),di={id:"_1-0-69-2022-03-30",tabindex:"-1"},ci=e("a",{class:"header-anchor",href:"#_1-0-69-2022-03-30","aria-hidden":"true"},"#",-1),ii=o(" 1.0.69 | 2022.03.30 \u2002"),li=e("li",null,"\u6DFB\u52A0\u5E76\u6539\u8FDB\u4E00\u4E9B\u65B9\u6CD5\u529F\u80FD\u7684\u6CE8\u91CA",-1),ti=e("li",null,"\u589E\u52A0 Demo \u4E2D\u7684\u66F4\u591A\u793A\u4F8B Hook \u5185\u5BB9",-1),si=o("\u4FEE\u590D\u5728\u4E00\u4E2A Hook \u5B9E\u4F8B\u4E2D\uFF0C"),ni=e("code",null,"allMethods",-1),ai=o(" \u591A\u6B21\u4F7F\u7528\u65F6\u53EA\u6709\u6700\u540E\u4E00\u4E2A\u751F\u6548\u7684\u95EE\u9898\uFF0C\u611F\u8C22 "),ri={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},_i=o("WankkoRee"),hi=o(" \u7684\u53CD\u9988"),ui={id:"_1-0-68-2022-03-29",tabindex:"-1"},ki=e("a",{class:"header-anchor",href:"#_1-0-68-2022-03-29","aria-hidden":"true"},"#",-1),pi=o(" 1.0.68 | 2022.03.29 \u2002"),gi=i("
    • \u589E\u52A0 Demo \u4E2D\u7684\u65B0\u7528\u4F8B\u548C LSPosed \u4F5C\u7528\u57DF
    • \u589E\u52A0 Member \u67E5\u627E\u7F13\u5B58\u548C\u67E5\u627E\u7F13\u5B58\u914D\u7F6E\u5F00\u5173
    • \u79FB\u9664\u548C\u4FEE\u6539 MethodFinder\u3001FieldFinder \u4EE5\u53CA HookParam \u76F8\u5173\u65B9\u6CD5\u7684\u8C03\u7528
    • \u589E\u52A0\u66F4\u591A Finder \u4E2D\u7684 cast \u7C7B\u578B\u5E76\u652F\u6301 cast \u4E3A\u6570\u7EC4
    • \u6574\u4F53\u7684\u6027\u80FD\u548C\u7A33\u5B9A\u6027\u63D0\u5347
    • \u4FEE\u590D\u4E0A\u4E00\u4E2A\u7248\u672C\u53EF\u80FD\u5B58\u5728\u7684 BUG
    ",1),mi={id:"_1-0-67-2022-03-27",tabindex:"-1"},fi=e("a",{class:"header-anchor",href:"#_1-0-67-2022-03-27","aria-hidden":"true"},"#",-1),Hi=o(" 1.0.67 | 2022.03.27 \u2002"),Pi=i("
    • \u589E\u52A0\u4E09\u4E2A Finder \u4E2D\u7684 modifiers \u529F\u80FD\uFF0C\u53EF\u7B5B\u9009 static\u3001native\u3001public\u3001abstract \u7B49\u8BF8\u591A\u63CF\u8FF0\u7C7B\u578B
    • \u589E\u52A0\u65B9\u6CD5\u548C\u6784\u9020\u65B9\u6CD5\u67E5\u627E\u65F6\u53EF\u6A21\u7CCA\u65B9\u6CD5\u53C2\u6570\u7C7B\u578B\u4E3A\u6307\u5B9A\u4E2A\u6570\u8FDB\u884C\u67E5\u627E
    • \u589E\u52A0 Member \u7684 hasModifiers \u6269\u5C55\u529F\u80FD
    • \u589E\u52A0 MethodFinder \u548C ConstructorFinder \u4E2D\u7684 give \u65B9\u6CD5\uFF0C\u53EF\u83B7\u5F97\u539F\u59CB\u7C7B\u578B
    • \u589E\u52A0 YukiHookModulePrefs \u4E2D\u7684 PrefsData \u6A21\u677F\u529F\u80FD
    • \u5F7B\u5E95\u5BF9\u65B9\u6CD5\u3001\u6784\u9020\u65B9\u6CD5\u53CA\u53D8\u91CF\u7684\u67E5\u627E\u65B9\u6848\u8FDB\u884C\u91CD\u6784
    • \u4F18\u5316\u4EE3\u7801\u6CE8\u91CA\uFF0C\u4FEE\u590D\u4E86\u53EF\u80FD\u4EA7\u751F\u7684 BUG
    ",1),bi={id:"_1-0-66-2022-03-25",tabindex:"-1"},yi=e("a",{class:"header-anchor",href:"#_1-0-66-2022-03-25","aria-hidden":"true"},"#",-1),xi=o(" 1.0.66 | 2022.03.25 \u2002"),Ci=e("ul",null,[e("li",null,[o("\u4FEE\u590D "),e("code",null,"MethodFinder"),o(" \u4E2D\u7684\u4E00\u4E2A\u4E25\u91CD\u95EE\u9898")]),e("li",null,[o("\u589E\u52A0 "),e("code",null,"hookParam"),o(" \u4E2D\u7684 "),e("code",null,"args"),o(" \u8C03\u7528\u65B9\u6CD5")]),e("li",null,"\u4FEE\u590D\u5176\u5B83\u53EF\u80FD\u5B58\u5728\u7684\u95EE\u9898\u4EE5\u53CA\u4FEE\u590D\u90E8\u5206\u7C7B\u7684\u6CE8\u91CA\u95EE\u9898")],-1),Ai={id:"_1-0-65-2022-03-25",tabindex:"-1"},vi=e("a",{class:"header-anchor",href:"#_1-0-65-2022-03-25","aria-hidden":"true"},"#",-1),Yi=o(" 1.0.65 | 2022.03.25 \u2002"),Mi=i("
    • \u91CD\u65B0\u53D1\u5E03\u7248\u672C\u4FEE\u590D Maven \u4ED3\u5E93\u56E0\u4E3A\u7F13\u5B58\u95EE\u9898\u65B0\u7248\u672C\u4E0D\u6B63\u786E\u7684\u60C5\u51B5
    • \u589E\u52A0 MethodFinder \u4E0E FieldFinder \u65B0\u7684\u8FD4\u56DE\u503C\u8C03\u7528\u65B9\u6CD5
    • \u4FEE\u590D\u53EF\u80FD\u5B58\u5728\u7684\u95EE\u9898\uFF0C\u5E76\u4FEE\u590D\u592A\u6781\u4F7F\u7528\u8FC7\u7A0B\u4E2D\u53EF\u80FD\u5B58\u5728\u7684\u95EE\u9898
    • \u4FEE\u590D\u81EA\u52A8\u751F\u6210 Xposed \u5165\u53E3\u7C7B\u53EF\u80FD\u53D1\u751F\u7684\u95EE\u9898
    • \u589E\u52A0\u4E86 type \u4E2D\u7684 android \u7C7B\u578B\u4EE5\u53CA java \u7C7B\u578B
    ",1),Ii={id:"_1-0-6-2022-03-20",tabindex:"-1"},Ri=e("a",{class:"header-anchor",href:"#_1-0-6-2022-03-20","aria-hidden":"true"},"#",-1),Si=o(" 1.0.6 | 2022.03.20 \u2002"),Li=i("
    • \u4FEE\u590D YukiHookModulePrefs \u5728\u4F7F\u7528\u4E00\u6B21 direct \u5FFD\u7565\u7F13\u5B58\u540E\u6BCF\u6B21\u90FD\u5FFD\u7565\u7684 BUG
    • \u589E\u52A0\u65B0\u7684 API\uFF0C\u4F5C\u5E9F\u4E86 isActive \u5224\u65AD\u6A21\u5757\u6FC0\u6D3B\u7684\u4F20\u7EDF\u7528\u6CD5
    • \u4FEE\u590D\u975E Xposed \u73AF\u5883\u4F7F\u7528 API \u65F6\u6253\u5370\u8C03\u8BD5\u65E5\u5FD7\u7684\u95EE\u9898
    • \u4FEE\u590D\u67E5\u627E Field \u65F6\u7684\u65E5\u5FD7\u8F93\u51FA\u95EE\u9898\u548C\u672A\u62E6\u622A\u7684\u5F02\u5E38\u95EE\u9898
    • \u89E3\u8026\u5408 ReflectionUtils \u4E2D\u7684 Xposed API
    • \u589E\u52A0 YukiHookModuleStatus \u65B9\u6CD5\u540D\u79F0\u7684\u6DF7\u6DC6\uFF0C\u4EE5\u7CBE\u7B80\u6A21\u5757\u751F\u6210\u7684\u4F53\u79EF
    • \u88C5\u8F7D\u6A21\u5757\u81EA\u8EAB Hook \u65F6\u5C06\u4E0D\u518D\u6253\u5370\u6B22\u8FCE\u4FE1\u606F
    • \u4FEE\u590D\u4E0A\u4E00\u4E2A\u7248\u672C\u4ECD\u7136\u5B58\u5728\u7684\u67D0\u4E9B BUG
    ",1),Xi={id:"_1-0-55-2022-03-18",tabindex:"-1"},Fi=e("a",{class:"header-anchor",href:"#_1-0-55-2022-03-18","aria-hidden":"true"},"#",-1),Di=o(" 1.0.55 | 2022.03.18 \u2002"),Bi=e("ul",null,[e("li",null,"\u4FEE\u6B63\u4E00\u5904\u6CE8\u91CA\u9519\u8BEF"),e("li",null,"\u4E34\u65F6\u4FEE\u590D\u4E00\u4E2A BUG"),e("li",null,[o("\u589E\u52A0\u4E86 "),e("code",null,"type"),o(" \u4E2D\u7684\u5927\u91CF "),e("code",null,"android"),o(" \u7C7B\u578B\u4EE5\u53CA\u5C11\u91CF "),e("code",null,"java"),o(" \u7C7B\u578B")]),e("li",null,"\u4FEE\u590D\u65B0\u7248\u4E0E\u65E7\u7248 Kotlin APIs \u7684\u517C\u5BB9\u6027\u95EE\u9898")],-1),Ui={id:"_1-0-5-2022-03-18",tabindex:"-1"},Wi=e("a",{class:"header-anchor",href:"#_1-0-5-2022-03-18","aria-hidden":"true"},"#",-1),wi=o(" 1.0.5 | 2022.03.18 \u2002"),Ti=i("
    • \u4FEE\u590D\u65E7\u7248\u672C LSPosed \u6846\u67B6\u60C5\u51B5\u4E0B\u6B22\u8FCE\u4FE1\u606F\u591A\u6B21\u6253\u5370\u7684\u95EE\u9898
    • \u6DFB\u52A0 onInit \u65B9\u6CD5\u6765\u914D\u7F6E YukiHookAPI
    • \u65B0\u589E executorName \u548C executorVersion \u6765\u83B7\u53D6\u5F53\u524D Hook Framework \u7684\u540D\u79F0\u548C\u7248\u672C\u53F7
    • \u65B0\u589E by \u65B9\u6CD5\u6765\u8BBE\u7F6E Hook \u7684\u65F6\u673A\u548C\u6761\u4EF6
    • YukiHookModulePrefs \u65B0\u589E\u53EF\u63A7\u5236\u7684\u952E\u503C\u7F13\u5B58\uFF0C\u53EF\u5728\u5BBF\u4E3B\u8FD0\u884C\u65F6\u6A21\u5757\u52A8\u6001\u66F4\u65B0\u6570\u636E
    • \u4FEE\u590D\u4E86\u4E00\u4E9B\u53EF\u80FD\u5B58\u5728\u7684 BUG
    ",1),Gi={id:"_1-0-4-2022-03-06",tabindex:"-1"},Ni=e("a",{class:"header-anchor",href:"#_1-0-4-2022-03-06","aria-hidden":"true"},"#",-1),Ei=o(" 1.0.4 | 2022.03.06 \u2002"),Oi=i("
    • \u4FEE\u590D LSPosed \u5728\u6700\u65B0\u7248\u672C\u4E2D\u542F\u7528\u201C\u53EA\u6709\u6A21\u5757classloader\u53EF\u4EE5\u4F7F\u7528Xposed API\u201D\u9009\u9879\u540E\u627E\u4E0D\u5230 XposedBridge \u7684\u95EE\u9898
    • \u6DFB\u52A0 YukiHookAPI \u7684\u5E38\u91CF\u7248\u672C\u540D\u79F0\u548C\u7248\u672C\u53F7
    • \u65B0\u589E hasField \u65B9\u6CD5\u4EE5\u53CA isAllowPrintingLogs \u914D\u7F6E\u53C2\u6570
    • \u65B0\u589E isDebug \u5F00\u542F\u7684\u60C5\u51B5\u4E0B API \u5C06\u81EA\u52A8\u6253\u5370\u6B22\u8FCE\u4FE1\u606F\u6D4B\u8BD5\u6A21\u5757\u662F\u5426\u751F\u6548
    ",1),zi={id:"_1-0-3-2022-03-02",tabindex:"-1"},ji=e("a",{class:"header-anchor",href:"#_1-0-3-2022-03-02","aria-hidden":"true"},"#",-1),Vi=o(" 1.0.3 | 2022.03.02 \u2002"),Zi=i("
    • \u4FEE\u590D\u4E00\u4E2A\u6F5C\u5728\u6027\u7684\u5F02\u5E38\u672A\u62E6\u622A BUG
    • \u589E\u52A0 ignoredError \u529F\u80FD
    • \u589E\u52A0\u4E86 type \u4E2D\u7684 android \u7C7B\u578B
    • \u589E\u52A0\u76D1\u542C hook \u540E\u7684 ClassNotFound \u529F\u80FD
    ",1),Ki={id:"_1-0-2-2022-02-18",tabindex:"-1"},Ji=e("a",{class:"header-anchor",href:"#_1-0-2-2022-02-18","aria-hidden":"true"},"#",-1),qi=o(" 1.0.2 | 2022.02.18 \u2002"),Qi=e("ul",null,[e("li",null,"\u4FEE\u590D Windows \u4E0B\u65E0\u6CD5\u627E\u5230\u9879\u76EE\u8DEF\u5F84\u7684\u95EE\u9898"),e("li",null,[o("\u79FB\u9664\u90E8\u5206\u53CD\u5C04 API\uFF0C\u5408\u5E76\u81F3 "),e("code",null,"BaseFinder"),o(" \u8FDB\u884C\u6574\u5408")]),e("li",null,"\u589E\u52A0\u76F4\u63A5\u4F7F\u7528\u5B57\u7B26\u4E32\u521B\u5EFA Hook \u7684\u65B9\u6CD5")],-1),$i={id:"_1-0-1-2022-02-15",tabindex:"-1"},el=e("a",{class:"header-anchor",href:"#_1-0-1-2022-02-15","aria-hidden":"true"},"#",-1),ol=o(" 1.0.1 | 2022.02.15 \u2002"),dl=i("
    • RemedyPlan \u589E\u52A0 onFind \u529F\u80FD
    • \u6574\u5408\u5E76\u4FEE\u6539\u4E86\u90E8\u5206\u53CD\u5C04 API \u4EE3\u7801
    • \u589E\u52A0\u4E86 type \u4E2D\u7684 java \u7C7B\u578B
    • \u4FEE\u590D\u5FFD\u7565\u9519\u8BEF\u5728\u63A7\u5236\u53F0\u4ECD\u7136\u8F93\u51FA\u7684\u95EE\u9898
    ",1),cl={id:"_1-0-2022-02-14",tabindex:"-1"},il=e("a",{class:"header-anchor",href:"#_1-0-2022-02-14","aria-hidden":"true"},"#",-1),ll=o(" 1.0 | 2022.02.14 \u2002"),tl=e("ul",null,[e("li",null,"\u9996\u4E2A\u7248\u672C\u63D0\u4EA4\u81F3 Maven")],-1);function sl(nl,al){const c=t("Badge"),l=t("ExternalLinkIcon");return n(),a("div",null,[_,h,u,e("h3",k,[p,g,d(c,{type:"tip",text:"\u6700\u65B0",vertical:"middle"})]),e("ul",null,[e("li",null,[m,f,H,e("a",P,[b,d(l)]),y,e("a",x,[C,d(l)])]),A]),e("h3",v,[Y,M,d(c,{type:"warning",text:"\u8FC7\u65E7",vertical:"middle"})]),I,e("h3",R,[S,L,d(c,{type:"warning",text:"\u8FC7\u65E7",vertical:"middle"})]),X,e("h3",F,[D,B,d(c,{type:"warning",text:"\u8FC7\u65E7",vertical:"middle"})]),U,e("h3",W,[w,T,d(c,{type:"warning",text:"\u8FC7\u65E7",vertical:"middle"})]),G,e("h3",N,[E,O,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),z,e("h3",j,[V,Z,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),K,e("h3",J,[q,Q,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[$,e("li",null,[ee,e("a",oe,[de,d(l)])]),ce,e("li",null,[ie,e("a",le,[te,d(l)]),se]),ne,e("li",null,[ae,re,_e,he,ue,ke,e("a",pe,[ge,d(l)]),me]),fe,e("li",null,[He,Pe,be,e("a",ye,[xe,d(l)]),Ce]),e("li",null,[Ae,ve,Ye,e("a",Me,[Ie,d(l)]),Re]),Se,e("li",null,[Le,Xe,Fe,De,Be,e("a",Ue,[We,d(l)]),we,e("a",Te,[Ge,d(l)])]),Ne,Ee,Oe,e("li",null,[ze,je,Ve,Ze,Ke,e("a",Je,[qe,d(l)]),Qe]),$e,e("li",null,[eo,oo,co,e("a",io,[lo,d(l)]),to,e("a",so,[no,d(l)])]),ao,ro,_o,ho]),e("h3",uo,[ko,po,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),go,e("h3",mo,[fo,Ho,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[e("li",null,[Po,bo,yo,e("a",xo,[Co,d(l)]),Ao]),vo]),e("h3",Yo,[Mo,Io,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Ro,e("h3",So,[Lo,Xo,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Fo,e("h3",Do,[Bo,Uo,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Wo,e("h3",wo,[To,Go,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),No,e("h3",Eo,[Oo,zo,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),jo,e("h3",Vo,[Zo,Ko,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Jo,e("h3",qo,[Qo,$o,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),ed,e("h3",od,[dd,cd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),id,e("h3",ld,[td,sd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),nd,e("h3",ad,[rd,_d,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[hd,e("li",null,[ud,kd,pd,e("a",gd,[md,d(l)]),fd]),Hd,Pd,bd]),e("h3",yd,[xd,Cd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[Ad,e("li",null,[vd,Yd,Md,e("a",Id,[Rd,d(l)]),Sd]),Ld,Xd]),e("h3",Fd,[Dd,Bd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[e("li",null,[Ud,Wd,wd,Td,e("a",Gd,[Nd,d(l)]),Ed]),Od]),e("h3",zd,[jd,Vd,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[e("li",null,[Zd,e("a",Kd,[Jd,d(l)]),qd]),Qd]),$d,e("ul",null,[e("li",null,[ec,e("a",oc,[dc,d(l)]),cc]),e("li",null,[ic,lc,tc,e("a",sc,[nc,d(l)]),ac]),rc]),e("h3",_c,[hc,uc,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),kc,e("h3",pc,[gc,mc,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),fc,e("h3",Hc,[Pc,bc,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[yc,e("li",null,[xc,Cc,Ac,e("a",vc,[Yc,d(l)]),Mc]),Ic,Rc,Sc,Lc,e("li",null,[Xc,Fc,Dc,e("a",Bc,[Uc,d(l)]),Wc]),e("li",null,[wc,e("a",Tc,[Gc,d(l)]),Nc]),Ec,e("li",null,[Oc,zc,jc,e("a",Vc,[Zc,d(l)]),Kc]),Jc,qc,e("li",null,[Qc,e("a",$c,[ei,d(l)]),oi])]),e("h3",di,[ci,ii,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),e("ul",null,[li,ti,e("li",null,[si,ni,ai,e("a",ri,[_i,d(l)]),hi])]),e("h3",ui,[ki,pi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),gi,e("h3",mi,[fi,Hi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Pi,e("h3",bi,[yi,xi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Ci,e("h3",Ai,[vi,Yi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Mi,e("h3",Ii,[Ri,Si,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Li,e("h3",Xi,[Fi,Di,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Bi,e("h3",Ui,[Wi,wi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Ti,e("h3",Gi,[Ni,Ei,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Oi,e("h3",zi,[ji,Vi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Zi,e("h3",Ki,[Ji,qi,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),Qi,e("h3",$i,[el,ol,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),dl,e("h3",cl,[il,ll,d(c,{type:"danger",text:"\u8FC7\u671F",vertical:"middle"})]),tl])}const _l=s(r,[["render",sl],["__file","changelog.html.vue"]]);export{_l as default}; diff --git a/docs/assets/contacts.html.c224665e.js b/docs/assets/contacts.html.40847d5f.js similarity index 91% rename from docs/assets/contacts.html.c224665e.js rename to docs/assets/contacts.html.40847d5f.js index 28363babb..e38cee131 100644 --- a/docs/assets/contacts.html.c224665e.js +++ b/docs/assets/contacts.html.40847d5f.js @@ -1 +1 @@ -import{_ as s,r,o as c,c as a,b as e,d as n,e as o}from"./app.09f06ad9.js";const _={},l=e("h1",{id:"\u8054\u7CFB\u6211\u4EEC",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u8054\u7CFB\u6211\u4EEC","aria-hidden":"true"},"#"),o(" \u8054\u7CFB\u6211\u4EEC")],-1),d=e("blockquote",null,[e("p",null,"\u5982\u5728\u4F7F\u7528\u4E2D\u6709\u4EFB\u4F55\u95EE\u9898\uFF0C\u6216\u6709\u4EFB\u4F55\u5EFA\u8BBE\u6027\u7684\u5EFA\u8BAE\uFF0C\u90FD\u53EF\u4EE5\u8054\u7CFB\u6211\u4EEC\u3002")],-1),h=o("\u52A0\u5165\u6211\u4EEC "),i={href:"https://t.me/YukiHookAPI",target:"_blank",rel:"noopener noreferrer"},u=o("\u70B9\u51FB\u52A0\u5165 Telegram \u7FA4\u7EC4"),p=o("\u5728 "),f=e("strong",null,"\u9177\u5B89",-1),k=o(" \u627E\u5230\u6211 "),m={href:"http://www.coolapk.com/u/876977",target:"_blank",rel:"noopener noreferrer"},x=o("@\u661F\u591C\u4E0D\u835F"),b=e("h2",{id:"\u52A9\u529B\u7EF4\u62A4",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u52A9\u529B\u7EF4\u62A4","aria-hidden":"true"},"#"),o(" \u52A9\u529B\u7EF4\u62A4")],-1),g=e("p",null,[o("\u611F\u8C22\u60A8\u9009\u62E9\u5E76\u4F7F\u7528 "),e("code",null,"YukiHookAPI"),o("\uFF0C\u5982\u6709\u4EE3\u7801\u76F8\u5173\u7684\u5EFA\u8BAE\u548C\u8BF7\u6C42\uFF0C\u53EF\u5728 Github \u63D0\u4EA4 Pull Request\u3002")],-1);function I(v,w){const t=r("ExternalLinkIcon");return c(),a("div",null,[l,d,e("p",null,[h,e("a",i,[u,n(t)])]),e("p",null,[p,f,k,e("a",m,[x,n(t)])]),b,g])}const E=s(_,[["render",I],["__file","contacts.html.vue"]]);export{E as default}; +import{_ as s,r,o as c,c as a,b as e,d as n,e as o}from"./app.0312b331.js";const _={},l=e("h1",{id:"\u8054\u7CFB\u6211\u4EEC",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u8054\u7CFB\u6211\u4EEC","aria-hidden":"true"},"#"),o(" \u8054\u7CFB\u6211\u4EEC")],-1),d=e("blockquote",null,[e("p",null,"\u5982\u5728\u4F7F\u7528\u4E2D\u6709\u4EFB\u4F55\u95EE\u9898\uFF0C\u6216\u6709\u4EFB\u4F55\u5EFA\u8BBE\u6027\u7684\u5EFA\u8BAE\uFF0C\u90FD\u53EF\u4EE5\u8054\u7CFB\u6211\u4EEC\u3002")],-1),h=o("\u52A0\u5165\u6211\u4EEC "),i={href:"https://t.me/YukiHookAPI",target:"_blank",rel:"noopener noreferrer"},u=o("\u70B9\u51FB\u52A0\u5165 Telegram \u7FA4\u7EC4"),p=o("\u5728 "),f=e("strong",null,"\u9177\u5B89",-1),k=o(" \u627E\u5230\u6211 "),m={href:"http://www.coolapk.com/u/876977",target:"_blank",rel:"noopener noreferrer"},x=o("@\u661F\u591C\u4E0D\u835F"),b=e("h2",{id:"\u52A9\u529B\u7EF4\u62A4",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u52A9\u529B\u7EF4\u62A4","aria-hidden":"true"},"#"),o(" \u52A9\u529B\u7EF4\u62A4")],-1),g=e("p",null,[o("\u611F\u8C22\u60A8\u9009\u62E9\u5E76\u4F7F\u7528 "),e("code",null,"YukiHookAPI"),o("\uFF0C\u5982\u6709\u4EE3\u7801\u76F8\u5173\u7684\u5EFA\u8BAE\u548C\u8BF7\u6C42\uFF0C\u53EF\u5728 Github \u63D0\u4EA4 Pull Request\u3002")],-1);function I(v,w){const t=r("ExternalLinkIcon");return c(),a("div",null,[l,d,e("p",null,[h,e("a",i,[u,n(t)])]),e("p",null,[p,f,k,e("a",m,[x,n(t)])]),b,g])}const E=s(_,[["render",I],["__file","contacts.html.vue"]]);export{E as default}; diff --git a/docs/assets/contacts.html.ef4a8f43.js b/docs/assets/contacts.html.899aae08.js similarity index 94% rename from docs/assets/contacts.html.ef4a8f43.js rename to docs/assets/contacts.html.899aae08.js index 974ec0f7a..9e6856042 100644 --- a/docs/assets/contacts.html.ef4a8f43.js +++ b/docs/assets/contacts.html.899aae08.js @@ -1 +1 @@ -import{_ as s,r as a,o as c,c as r,b as e,d as o,e as t}from"./app.09f06ad9.js";const i={},l=e("h1",{id:"contact-us",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#contact-us","aria-hidden":"true"},"#"),t(" Contact Us")],-1),_=e("blockquote",null,[e("p",null,"If you have any questions in use, or have any constructive suggestions, you can contact us.")],-1),h=t("Join us "),u={href:"https://t.me/YukiHookAPI",target:"_blank",rel:"noopener noreferrer"},d=t("Click to join Telegram group"),p=t("Find me on "),f=e("strong",null,"Twitter",-1),k=t(),m={href:"https://twitter.com/fankesyooni",target:"_blank",rel:"noopener noreferrer"},g=t("@fankesyooni"),y=e("h2",{id:"help-with-maintenance",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#help-with-maintenance","aria-hidden":"true"},"#"),t(" Help with Maintenance")],-1),b=e("p",null,[t("Thank you for choosing and using "),e("code",null,"YukiHookAPI"),t(".")],-1),x=e("p",null,"If you have code-related suggestions and requests, you can submit a Pull Request on Github.",-1);function v(I,w){const n=a("ExternalLinkIcon");return c(),r("div",null,[l,_,e("p",null,[h,e("a",u,[d,o(n)])]),e("p",null,[p,f,k,e("a",m,[g,o(n)])]),y,b,x])}const T=s(i,[["render",v],["__file","contacts.html.vue"]]);export{T as default}; +import{_ as s,r as a,o as c,c as r,b as e,d as o,e as t}from"./app.0312b331.js";const i={},l=e("h1",{id:"contact-us",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#contact-us","aria-hidden":"true"},"#"),t(" Contact Us")],-1),_=e("blockquote",null,[e("p",null,"If you have any questions in use, or have any constructive suggestions, you can contact us.")],-1),h=t("Join us "),u={href:"https://t.me/YukiHookAPI",target:"_blank",rel:"noopener noreferrer"},d=t("Click to join Telegram group"),p=t("Find me on "),f=e("strong",null,"Twitter",-1),k=t(),m={href:"https://twitter.com/fankesyooni",target:"_blank",rel:"noopener noreferrer"},g=t("@fankesyooni"),y=e("h2",{id:"help-with-maintenance",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#help-with-maintenance","aria-hidden":"true"},"#"),t(" Help with Maintenance")],-1),b=e("p",null,[t("Thank you for choosing and using "),e("code",null,"YukiHookAPI"),t(".")],-1),x=e("p",null,"If you have code-related suggestions and requests, you can submit a Pull Request on Github.",-1);function v(I,w){const n=a("ExternalLinkIcon");return c(),r("div",null,[l,_,e("p",null,[h,e("a",u,[d,o(n)])]),e("p",null,[p,f,k,e("a",m,[g,o(n)])]),y,b,x])}const T=s(i,[["render",v],["__file","contacts.html.vue"]]);export{T as default}; diff --git a/docs/assets/example.html.dd79c152.js b/docs/assets/example.html.91ea9bcb.js similarity index 99% rename from docs/assets/example.html.dd79c152.js rename to docs/assets/example.html.91ea9bcb.js index e1c1cb72d..9b564736f 100644 --- a/docs/assets/example.html.dd79c152.js +++ b/docs/assets/example.html.91ea9bcb.js @@ -1,4 +1,4 @@ -import{_ as o,r as p,o as i,c,b as s,d as a,a as l,e as n}from"./app.09f06ad9.js";const t={},r=l(`

    Usage Example

    Here is an introduction to the basic working method of YukiHookAPI and a list of simple Hook examples and common functions.

    Structure Diagram

    The structure below describes the basic working and principle of YukiHookAPI.

    Host Environment
    +import{_ as o,r as p,o as i,c,b as s,d as a,a as l,e as n}from"./app.0312b331.js";const t={},r=l(`

    Usage Example

    Here is an introduction to the basic working method of YukiHookAPI and a list of simple Hook examples and common functions.

    Structure Diagram

    The structure below describes the basic working and principle of YukiHookAPI.

    Host Environment
     \u2514\u2500\u2500 YukiMemberHookCreator
         \u2514\u2500\u2500 Class
             \u2514\u2500\u2500 MemberHookCreator
    diff --git a/docs/assets/example.html.2694e111.js b/docs/assets/example.html.924a858d.js
    similarity index 99%
    rename from docs/assets/example.html.2694e111.js
    rename to docs/assets/example.html.924a858d.js
    index 703c80fac..4fd7f066a 100644
    --- a/docs/assets/example.html.2694e111.js
    +++ b/docs/assets/example.html.924a858d.js
    @@ -1,4 +1,4 @@
    -import{_ as o,r as p,o as c,c as i,b as s,d as e,a as l,e as n}from"./app.09f06ad9.js";const r={},t=l(`

    \u7528\u6CD5\u793A\u4F8B

    \u8FD9\u91CC\u4ECB\u7ECD\u4E86 YukiHookAPI \u7684\u57FA\u672C\u5DE5\u4F5C\u65B9\u5F0F\u4EE5\u53CA\u5217\u4E3E\u4E86\u7B80\u5355\u7684 Hook \u4F8B\u5B50\u548C\u5E38\u7528\u529F\u80FD\u3002

    \u7ED3\u6784\u56FE\u89E3

    \u4E0B\u65B9\u7684\u7ED3\u6784\u63CF\u8FF0\u4E86 YukiHookAPI \u7684\u57FA\u672C\u5DE5\u4F5C\u65B9\u5F0F\u548C\u539F\u7406\u3002

    Host Environment
    +import{_ as o,r as p,o as c,c as i,b as s,d as e,a as l,e as n}from"./app.0312b331.js";const r={},t=l(`

    \u7528\u6CD5\u793A\u4F8B

    \u8FD9\u91CC\u4ECB\u7ECD\u4E86 YukiHookAPI \u7684\u57FA\u672C\u5DE5\u4F5C\u65B9\u5F0F\u4EE5\u53CA\u5217\u4E3E\u4E86\u7B80\u5355\u7684 Hook \u4F8B\u5B50\u548C\u5E38\u7528\u529F\u80FD\u3002

    \u7ED3\u6784\u56FE\u89E3

    \u4E0B\u65B9\u7684\u7ED3\u6784\u63CF\u8FF0\u4E86 YukiHookAPI \u7684\u57FA\u672C\u5DE5\u4F5C\u65B9\u5F0F\u548C\u539F\u7406\u3002

    Host Environment
     \u2514\u2500\u2500 YukiMemberHookCreator
         \u2514\u2500\u2500 Class
             \u2514\u2500\u2500 MemberHookCreator
    diff --git a/docs/assets/future.html.1f877ef8.js b/docs/assets/future.html.251947eb.js
    similarity index 98%
    rename from docs/assets/future.html.1f877ef8.js
    rename to docs/assets/future.html.251947eb.js
    index 286af6aa0..b5f238066 100644
    --- a/docs/assets/future.html.1f877ef8.js
    +++ b/docs/assets/future.html.251947eb.js
    @@ -1 +1 @@
    -import{_ as a,r as n,o as s,c as i,b as o,d,a as t,e}from"./app.09f06ad9.js";const c={},u=t('

    Looking for Future

    The future is bright and uncertain, let us look forward to the future development space of YukiHookAPI.

    Unresolved Issues

    Here are the unresolved issues with YukiHookAPI.

    YukiHookModulePrefs

    Currently only supports LSPosed perfectly, other Xposed Framework need to downgrade the module target api.

    TaiChi may not be supported at all, and TaiChi needs a lower target api to adapt on high-version systems.

    Some Xposed Module developers currently choose the Hook target app self's SharedPreferences storage solution to solve the module settings sharing problem.

    In the later period, the permissions of the Android system will become more and more strict, and selinux is a big problem currently facing, which needs to be discussed and studied.

    Future Plans

    Features that YukiHookAPI may add later are included here.

    Lite Version Supported for Standalone Use

    If you like the Reflection API of YukiHookAPI, but your project may not need related Hook functions.

    Well here is some good news for you:

    ',14),l=e("The core Reflection API of "),h=o("code",null,"YukiHookAPI",-1),p=e(" has been decoupled into "),f={href:"https://github.com/fankes/YukiReflection",target:"_blank",rel:"noopener noreferrer"},m=e("YukiReflection"),k=e(" project, which can now be used in any Android project."),b=t('

    To be Discussed

    At present, the API only supports binding to xposed_init through the automatic builder.

    If you don't like the automatic builder, you must implement the module loading entry yourself.

    In the future, the Lite version with only API functions will be launched according to the number of people required.

    You can submit issues with us.

    We have provided the Xposed native API listening interface, you can find or view the implementation method of the Demo here.

    Support for More Hook Framework

    As an API, currently only docking XposedBridge as a compatibility layer still has certain limitations.

    Most inline hook do not have a Java compatibility layer, and the Java compatibility layer adaptation of native hook may be considered later.

    ',5);function y(_,g){const r=n("ExternalLinkIcon");return s(),i("div",null,[u,o("p",null,[l,h,p,o("a",f,[m,d(r)]),k]),b])}const I=a(c,[["render",y],["__file","future.html.vue"]]);export{I as default}; +import{_ as a,r as n,o as s,c as i,b as o,d,a as t,e}from"./app.0312b331.js";const c={},u=t('

    Looking for Future

    The future is bright and uncertain, let us look forward to the future development space of YukiHookAPI.

    Unresolved Issues

    Here are the unresolved issues with YukiHookAPI.

    YukiHookModulePrefs

    Currently only supports LSPosed perfectly, other Xposed Framework need to downgrade the module target api.

    TaiChi may not be supported at all, and TaiChi needs a lower target api to adapt on high-version systems.

    Some Xposed Module developers currently choose the Hook target app self's SharedPreferences storage solution to solve the module settings sharing problem.

    In the later period, the permissions of the Android system will become more and more strict, and selinux is a big problem currently facing, which needs to be discussed and studied.

    Future Plans

    Features that YukiHookAPI may add later are included here.

    Lite Version Supported for Standalone Use

    If you like the Reflection API of YukiHookAPI, but your project may not need related Hook functions.

    Well here is some good news for you:

    ',14),l=e("The core Reflection API of "),h=o("code",null,"YukiHookAPI",-1),p=e(" has been decoupled into "),f={href:"https://github.com/fankes/YukiReflection",target:"_blank",rel:"noopener noreferrer"},m=e("YukiReflection"),k=e(" project, which can now be used in any Android project."),b=t('

    To be Discussed

    At present, the API only supports binding to xposed_init through the automatic builder.

    If you don't like the automatic builder, you must implement the module loading entry yourself.

    In the future, the Lite version with only API functions will be launched according to the number of people required.

    You can submit issues with us.

    We have provided the Xposed native API listening interface, you can find or view the implementation method of the Demo here.

    Support for More Hook Framework

    As an API, currently only docking XposedBridge as a compatibility layer still has certain limitations.

    Most inline hook do not have a Java compatibility layer, and the Java compatibility layer adaptation of native hook may be considered later.

    ',5);function y(_,g){const r=n("ExternalLinkIcon");return s(),i("div",null,[u,o("p",null,[l,h,p,o("a",f,[m,d(r)]),k]),b])}const I=a(c,[["render",y],["__file","future.html.vue"]]);export{I as default}; diff --git a/docs/assets/future.html.a7a84403.js b/docs/assets/future.html.908e3916.js similarity index 98% rename from docs/assets/future.html.a7a84403.js rename to docs/assets/future.html.908e3916.js index db441c53d..c5a24d2a8 100644 --- a/docs/assets/future.html.a7a84403.js +++ b/docs/assets/future.html.908e3916.js @@ -1 +1 @@ -import{_ as t,r as c,o as r,c as i,b as e,d as n,a,e as o}from"./app.09f06ad9.js";const s={},h=a('

    \u5C55\u671B\u672A\u6765

    \u672A\u6765\u662F\u7F8E\u597D\u7684\uFF0C\u4E5F\u662F\u4E0D\u786E\u5B9A\u7684\uFF0C\u8BA9\u6211\u4EEC\u5171\u540C\u671F\u5F85 YukiHookAPI \u5728\u672A\u6765\u7684\u53D1\u5C55\u7A7A\u95F4\u3002

    \u672A\u89E3\u51B3\u7684\u95EE\u9898

    \u8FD9\u91CC\u6536\u5F55\u4E86 YukiHookAPI \u5C1A\u672A\u89E3\u51B3\u7684\u95EE\u9898\u3002

    YukiHookModulePrefs

    \u76EE\u524D\u4EC5\u9650\u5B8C\u7F8E\u652F\u6301 LSPosed\uFF0C\u5176\u5B83 Xposed \u6846\u67B6\u9700\u8981\u964D\u7EA7\u6A21\u5757 API\u3002

    \u53EF\u80FD\u5B8C\u5168\u4E0D\u652F\u6301\u592A\u6781\uFF0C\u592A\u6781\u5728\u9AD8\u7248\u672C\u7CFB\u7EDF\u4E0A\u9700\u8981\u66F4\u4F4E\u7684 API \u624D\u80FD\u9002\u914D\u3002

    \u90E8\u5206 Xposed \u6A21\u5757\u5F00\u53D1\u8005\u76EE\u524D\u9009\u62E9 Hook \u76EE\u6807 APP \u5185\u7F6E Sp \u5B58\u50A8\u65B9\u6848\u89E3\u51B3\u6A21\u5757\u8BBE\u7F6E\u5171\u4EAB\u95EE\u9898\u3002

    \u540E\u671F Android \u7CFB\u7EDF\u7684\u6743\u9650\u5C06\u8D8A\u6765\u8D8A\u4E25\u683C\uFF0Cselinux \u5C31\u662F\u76EE\u524D\u9762\u4E34\u7684\u4E00\u4E2A\u5927\u95EE\u9898\uFF0C\u6709\u5F85\u8BA8\u8BBA\u548C\u7814\u7A76\u3002

    \u672A\u6765\u7684\u8BA1\u5212

    \u8FD9\u91CC\u6536\u5F55\u4E86 YukiHookAPI \u53EF\u80FD\u4F1A\u5728\u540E\u671F\u6DFB\u52A0\u7684\u529F\u80FD\u3002

    \u652F\u6301\u72EC\u7ACB\u4F7F\u7528\u7684 Lite \u7248\u672C

    \u5982\u679C\u4F60\u559C\u6B22 YukiHookAPI \u7684\u53CD\u5C04 API\uFF0C\u4F46\u4F60\u7684\u9879\u76EE\u53EF\u80FD\u5E76\u4E0D\u9700\u8981\u76F8\u5173 Hook \u529F\u80FD\u3002

    \u90A3\u4E48\u8FD9\u91CC\u6709\u4E00\u4E2A\u597D\u6D88\u606F\u8981\u544A\u8BC9\u4F60\uFF1A

    ',14),p=e("code",null,"YukiHookAPI",-1),l=o(" \u7684\u6838\u5FC3\u53CD\u5C04 API \u5DF2\u88AB\u89E3\u8026\u5408\u4E3A "),u={href:"https://github.com/fankes/YukiReflection",target:"_blank",rel:"noopener noreferrer"},k=o("YukiReflection"),_=o(" \u9879\u76EE\uFF0C\u5B83\u73B0\u5728\u80FD\u5728\u4EFB\u4F55 Android \u9879\u76EE\u4E2D\u4F7F\u7528\u3002"),f=a('

    \u5F85\u8BA8\u8BBA

    \u76EE\u524D API \u53EA\u652F\u6301\u901A\u8FC7\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u7ED1\u5B9A\u5230 xposed_init\uFF0C\u82E5\u60A8\u4E0D\u559C\u6B22\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\uFF0C\u4E00\u5B9A\u8981\u81EA\u5DF1\u5B9E\u73B0\u6A21\u5757\u88C5\u8F7D\u5165\u53E3\uFF0C\u672A\u6765\u4F1A\u6309\u7167\u9700\u6C42\u4EBA\u6570\u63A8\u51FA\u4EC5\u6709 API \u529F\u80FD\u7684 Lite \u7248\u672C\uFF0C\u4F60\u53EF\u5411\u6211\u4EEC\u63D0\u51FA issues\u3002

    API \u5DF2\u7ECF\u63D0\u4F9B\u4E86 Xposed \u539F\u751F API \u76D1\u542C\u63A5\u53E3\uFF0C\u4F60\u53EF\u4EE5 \u5728\u8FD9\u91CC \u627E\u5230\u6216\u67E5\u770B Demo \u7684\u5B9E\u73B0\u65B9\u6CD5\u3002

    \u652F\u6301\u66F4\u591A Hook Framework

    \u4F5C\u4E3A API \u6765\u8BB2\uFF0C\u76EE\u524D\u4EC5\u4EC5\u5BF9\u63A5 XposedBridge \u4F5C\u4E3A\u517C\u5BB9\u5C42\uFF0C\u8FD8\u662F\u6709\u4E00\u5B9A\u7684\u5C40\u9650\u6027\u3002

    \u5927\u90E8\u5206 inline hook \u6CA1\u6709 Java \u517C\u5BB9\u5C42\uFF0C\u540E\u671F\u53EF\u80FD\u4F1A\u8003\u8651 native hook \u7684 Java \u517C\u5BB9\u5C42\u9002\u914D\u3002

    ',5);function A(P,m){const d=c("ExternalLinkIcon");return r(),i("div",null,[h,e("p",null,[p,l,e("a",u,[k,n(d)]),_]),f])}const I=t(s,[["render",A],["__file","future.html.vue"]]);export{I as default}; +import{_ as t,r as c,o as r,c as i,b as e,d as n,a,e as o}from"./app.0312b331.js";const s={},h=a('

    \u5C55\u671B\u672A\u6765

    \u672A\u6765\u662F\u7F8E\u597D\u7684\uFF0C\u4E5F\u662F\u4E0D\u786E\u5B9A\u7684\uFF0C\u8BA9\u6211\u4EEC\u5171\u540C\u671F\u5F85 YukiHookAPI \u5728\u672A\u6765\u7684\u53D1\u5C55\u7A7A\u95F4\u3002

    \u672A\u89E3\u51B3\u7684\u95EE\u9898

    \u8FD9\u91CC\u6536\u5F55\u4E86 YukiHookAPI \u5C1A\u672A\u89E3\u51B3\u7684\u95EE\u9898\u3002

    YukiHookModulePrefs

    \u76EE\u524D\u4EC5\u9650\u5B8C\u7F8E\u652F\u6301 LSPosed\uFF0C\u5176\u5B83 Xposed \u6846\u67B6\u9700\u8981\u964D\u7EA7\u6A21\u5757 API\u3002

    \u53EF\u80FD\u5B8C\u5168\u4E0D\u652F\u6301\u592A\u6781\uFF0C\u592A\u6781\u5728\u9AD8\u7248\u672C\u7CFB\u7EDF\u4E0A\u9700\u8981\u66F4\u4F4E\u7684 API \u624D\u80FD\u9002\u914D\u3002

    \u90E8\u5206 Xposed \u6A21\u5757\u5F00\u53D1\u8005\u76EE\u524D\u9009\u62E9 Hook \u76EE\u6807 APP \u5185\u7F6E Sp \u5B58\u50A8\u65B9\u6848\u89E3\u51B3\u6A21\u5757\u8BBE\u7F6E\u5171\u4EAB\u95EE\u9898\u3002

    \u540E\u671F Android \u7CFB\u7EDF\u7684\u6743\u9650\u5C06\u8D8A\u6765\u8D8A\u4E25\u683C\uFF0Cselinux \u5C31\u662F\u76EE\u524D\u9762\u4E34\u7684\u4E00\u4E2A\u5927\u95EE\u9898\uFF0C\u6709\u5F85\u8BA8\u8BBA\u548C\u7814\u7A76\u3002

    \u672A\u6765\u7684\u8BA1\u5212

    \u8FD9\u91CC\u6536\u5F55\u4E86 YukiHookAPI \u53EF\u80FD\u4F1A\u5728\u540E\u671F\u6DFB\u52A0\u7684\u529F\u80FD\u3002

    \u652F\u6301\u72EC\u7ACB\u4F7F\u7528\u7684 Lite \u7248\u672C

    \u5982\u679C\u4F60\u559C\u6B22 YukiHookAPI \u7684\u53CD\u5C04 API\uFF0C\u4F46\u4F60\u7684\u9879\u76EE\u53EF\u80FD\u5E76\u4E0D\u9700\u8981\u76F8\u5173 Hook \u529F\u80FD\u3002

    \u90A3\u4E48\u8FD9\u91CC\u6709\u4E00\u4E2A\u597D\u6D88\u606F\u8981\u544A\u8BC9\u4F60\uFF1A

    ',14),p=e("code",null,"YukiHookAPI",-1),l=o(" \u7684\u6838\u5FC3\u53CD\u5C04 API \u5DF2\u88AB\u89E3\u8026\u5408\u4E3A "),u={href:"https://github.com/fankes/YukiReflection",target:"_blank",rel:"noopener noreferrer"},k=o("YukiReflection"),_=o(" \u9879\u76EE\uFF0C\u5B83\u73B0\u5728\u80FD\u5728\u4EFB\u4F55 Android \u9879\u76EE\u4E2D\u4F7F\u7528\u3002"),f=a('

    \u5F85\u8BA8\u8BBA

    \u76EE\u524D API \u53EA\u652F\u6301\u901A\u8FC7\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u7ED1\u5B9A\u5230 xposed_init\uFF0C\u82E5\u60A8\u4E0D\u559C\u6B22\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\uFF0C\u4E00\u5B9A\u8981\u81EA\u5DF1\u5B9E\u73B0\u6A21\u5757\u88C5\u8F7D\u5165\u53E3\uFF0C\u672A\u6765\u4F1A\u6309\u7167\u9700\u6C42\u4EBA\u6570\u63A8\u51FA\u4EC5\u6709 API \u529F\u80FD\u7684 Lite \u7248\u672C\uFF0C\u4F60\u53EF\u5411\u6211\u4EEC\u63D0\u51FA issues\u3002

    API \u5DF2\u7ECF\u63D0\u4F9B\u4E86 Xposed \u539F\u751F API \u76D1\u542C\u63A5\u53E3\uFF0C\u4F60\u53EF\u4EE5 \u5728\u8FD9\u91CC \u627E\u5230\u6216\u67E5\u770B Demo \u7684\u5B9E\u73B0\u65B9\u6CD5\u3002

    \u652F\u6301\u66F4\u591A Hook Framework

    \u4F5C\u4E3A API \u6765\u8BB2\uFF0C\u76EE\u524D\u4EC5\u4EC5\u5BF9\u63A5 XposedBridge \u4F5C\u4E3A\u517C\u5BB9\u5C42\uFF0C\u8FD8\u662F\u6709\u4E00\u5B9A\u7684\u5C40\u9650\u6027\u3002

    \u5927\u90E8\u5206 inline hook \u6CA1\u6709 Java \u517C\u5BB9\u5C42\uFF0C\u540E\u671F\u53EF\u80FD\u4F1A\u8003\u8651 native hook \u7684 Java \u517C\u5BB9\u5C42\u9002\u914D\u3002

    ',5);function A(P,m){const d=c("ExternalLinkIcon");return r(),i("div",null,[h,e("p",null,[p,l,e("a",u,[k,n(d)]),_]),f])}const I=t(s,[["render",A],["__file","future.html.vue"]]);export{I as default}; diff --git a/docs/assets/home.html.39aa07e1.js b/docs/assets/home.html.1a804f17.js similarity index 99% rename from docs/assets/home.html.39aa07e1.js rename to docs/assets/home.html.1a804f17.js index 00cdc7094..81f63b2bf 100644 --- a/docs/assets/home.html.39aa07e1.js +++ b/docs/assets/home.html.1a804f17.js @@ -1,4 +1,4 @@ -import{_ as i,r as o,o as p,c as d,b as s,d as e,w as a,e as l,a as r}from"./app.09f06ad9.js";const A={},y=s("h1",{id:"\u4ECB\u7ECD",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u4ECB\u7ECD","aria-hidden":"true"},"#"),l(" \u4ECB\u7ECD")],-1),u=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),l(" \u662F\u4E00\u4E2A\u96C6\u6210\u5316\u7684 Hook API \u6846\u67B6\uFF0C\u672C\u8EAB\u4E0D\u63D0\u4F9B\u4EFB\u4F55 Hook \u529F\u80FD\uFF0C\u9700\u8981 Xposed \u76F8\u5173\u57FA\u7840 API \u7684\u652F\u6301\u3002")])],-1),D=s("h2",{id:"\u80CC\u666F",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u80CC\u666F","aria-hidden":"true"},"#"),l(" \u80CC\u666F")],-1),m=s("p",null,[l("\u8FD9\u662F\u4E00\u4E2A\u4F7F\u7528 "),s("code",null,"Kotlin"),l(" \u57FA\u4E8E Xposed API \u91CD\u65B0\u6784\u5EFA\u7684\u9AD8\u6548 Hook API\uFF0C\u540C\u65F6\u4E3A Xposed \u6A21\u5757\u7684\u5F00\u53D1\u6253\u9020\u4E86\u4E30\u5BCC\u7684\u529F\u80FD\u6269\u5C55\u3002")],-1),C=l("\u540D\u79F0\u53D6\u81EA "),h={href:"https://www.bilibili.com/bangumi/play/ss5016",target:"_blank",rel:"noopener noreferrer"},B=l("\u300A\u3082\u3082\u304F\u308A\u300B\u5973\u4E3B \u6817\u539F \u96EA(Yuki)"),_=l("\u3002"),b=l("\u524D\u8EAB\u4E3A "),v={href:"https://github.com/fankes/TMore",target:"_blank",rel:"noopener noreferrer"},F=l("\u5F00\u53D1\u5B66\u4E60\u9879\u76EE"),k=l(" \u4E2D\u4F7F\u7528\u7684 Innocent Xposed API\uFF0C\u73B0\u5728\u91CD\u65B0\u547D\u540D\u5E76\u5F00\u6E90\u3002"),f=r('

    \u7528\u9014

    YukiHookAPI \u5B8C\u5168\u91C7\u7528 Kotlin lambda \u8BED\u6CD5\u6784\u5EFA\u3002

    \u629B\u5F03\u539F\u59CB\u4E0D\u592A\u53CB\u597D\u7684 XposedHelpers\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u5B83\u6765\u8F7B\u677E\u521B\u5EFA Xposed \u6A21\u5757\u4EE5\u53CA\u8F7B\u677E\u5B9E\u73B0\u81EA\u5B9A\u4E49 Hook API\u3002

    \u8BED\u8A00\u8981\u6C42

    \u8BF7\u4F7F\u7528 Kotlin\uFF0C\u6846\u67B6\u90E8\u5206\u4EE3\u7801\u6784\u6210\u540C\u6837\u517C\u5BB9 Java \u4F46\u57FA\u7840 Hook \u573A\u666F\u7684\u5B9E\u73B0\u53EF\u80FD\u5B8C\u5168\u65E0\u6CD5\u4F7F\u7528\u3002

    \u6587\u6863\u5168\u90E8\u7684 Demo \u793A\u4F8B\u4EE3\u7801\u90FD\u5C06\u4F7F\u7528 Kotlin \u8FDB\u884C\u63CF\u8FF0\uFF0C\u5982\u679C\u4F60\u5B8C\u5168\u4E0D\u4F1A\u4F7F\u7528 Kotlin \u90A3\u4F60\u5C06\u6709\u53EF\u80FD\u65E0\u6CD5\u4F7F\u7528 YukiHookAPI\u3002

    ',6),g=l("\u90E8\u5206 Java Demo \u4EE3\u7801\u53EF\u5728 "),H={href:"https://github.com/fankes/YukiHookAPI/tree/master/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/java",target:"_blank",rel:"noopener noreferrer"},P=l("\u8FD9\u91CC"),I=l(" \u627E\u5230\uFF0C\u4F46\u4E0D\u63A8\u8350\u4F7F\u7528\u3002"),X=r('

    \u7075\u611F\u6765\u6E90

    \u4EE5\u524D\uFF0C\u6211\u4EEC\u5728\u6784\u5EFA Xposed \u6A21\u5757\u7684\u65F6\u5019\uFF0C\u9996\u5148\u9700\u8981\u5728 assets \u4E0B\u521B\u5EFA xposed_init \u6587\u4EF6\u3002

    \u7136\u540E\uFF0C\u5C06\u81EA\u5DF1\u7684\u5165\u53E3\u7C7B\u540D\u624B\u52A8\u586B\u5165\u6587\u4EF6\u4E2D\uFF0C\u4F7F\u7528 XposedHelpers \u53BB\u5B9E\u73B0\u6211\u4EEC\u7684 Hook \u903B\u8F91\u3002

    \u81EA Kotlin \u4F5C\u4E3A Android \u4E3B\u8981\u5F00\u53D1\u8BED\u8A00\u4EE5\u6765\uFF0C\u8FD9\u5957 API \u7528\u8D77\u6765\u786E\u5B9E\u5DF2\u7ECF\u4E0D\u662F\u5F88\u4F18\u96C5\u4E86\u3002

    \u6709\u6CA1\u6709\u4EC0\u4E48 \u597D\u7528\u3001\u8F7B\u91CF\u3001\u4F18\u96C5 \u7684\u89E3\u51B3\u529E\u6CD5\u5462\uFF1F

    \u672C\u7740\u8FD9\u6837\u7684\u60F3\u6CD5\uFF0CYukiHookAPI \u8BDE\u751F\u4E86\u3002

    \u73B0\u5728\uFF0C\u6211\u4EEC\u53EA\u9700\u8981\u7F16\u5199\u5C11\u91CF\u7684\u4EE3\u7801\uFF0C\u4E00\u5207\u65F6\u95F4\u5F00\u9500\u548C\u82B1\u8D39\u4EA4\u7ED9\u81EA\u52A8\u5316\u5904\u7406\u3002

    \u501F\u52A9 Kotlin \u4F18\u96C5\u7684 lambda \u5199\u6CD5\u4EE5\u53CA YukiHookAPI\uFF0C\u53EF\u4EE5\u8BA9\u4F60\u7684 Hook \u903B\u8F91\u66F4\u52A0\u7F8E\u89C2\u6E05\u6670\u3002

    \u793A\u4F8B\u5982\u4E0B

    ',9),Y=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"@InjectYukiHookWithXposed")]),l(` +import{_ as i,r as o,o as p,c as d,b as s,d as e,w as a,e as l,a as r}from"./app.0312b331.js";const A={},y=s("h1",{id:"\u4ECB\u7ECD",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u4ECB\u7ECD","aria-hidden":"true"},"#"),l(" \u4ECB\u7ECD")],-1),u=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),l(" \u662F\u4E00\u4E2A\u96C6\u6210\u5316\u7684 Hook API \u6846\u67B6\uFF0C\u672C\u8EAB\u4E0D\u63D0\u4F9B\u4EFB\u4F55 Hook \u529F\u80FD\uFF0C\u9700\u8981 Xposed \u76F8\u5173\u57FA\u7840 API \u7684\u652F\u6301\u3002")])],-1),D=s("h2",{id:"\u80CC\u666F",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u80CC\u666F","aria-hidden":"true"},"#"),l(" \u80CC\u666F")],-1),m=s("p",null,[l("\u8FD9\u662F\u4E00\u4E2A\u4F7F\u7528 "),s("code",null,"Kotlin"),l(" \u57FA\u4E8E Xposed API \u91CD\u65B0\u6784\u5EFA\u7684\u9AD8\u6548 Hook API\uFF0C\u540C\u65F6\u4E3A Xposed \u6A21\u5757\u7684\u5F00\u53D1\u6253\u9020\u4E86\u4E30\u5BCC\u7684\u529F\u80FD\u6269\u5C55\u3002")],-1),C=l("\u540D\u79F0\u53D6\u81EA "),h={href:"https://www.bilibili.com/bangumi/play/ss5016",target:"_blank",rel:"noopener noreferrer"},B=l("\u300A\u3082\u3082\u304F\u308A\u300B\u5973\u4E3B \u6817\u539F \u96EA(Yuki)"),_=l("\u3002"),b=l("\u524D\u8EAB\u4E3A "),v={href:"https://github.com/fankes/TMore",target:"_blank",rel:"noopener noreferrer"},F=l("\u5F00\u53D1\u5B66\u4E60\u9879\u76EE"),k=l(" \u4E2D\u4F7F\u7528\u7684 Innocent Xposed API\uFF0C\u73B0\u5728\u91CD\u65B0\u547D\u540D\u5E76\u5F00\u6E90\u3002"),f=r('

    \u7528\u9014

    YukiHookAPI \u5B8C\u5168\u91C7\u7528 Kotlin lambda \u8BED\u6CD5\u6784\u5EFA\u3002

    \u629B\u5F03\u539F\u59CB\u4E0D\u592A\u53CB\u597D\u7684 XposedHelpers\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u5B83\u6765\u8F7B\u677E\u521B\u5EFA Xposed \u6A21\u5757\u4EE5\u53CA\u8F7B\u677E\u5B9E\u73B0\u81EA\u5B9A\u4E49 Hook API\u3002

    \u8BED\u8A00\u8981\u6C42

    \u8BF7\u4F7F\u7528 Kotlin\uFF0C\u6846\u67B6\u90E8\u5206\u4EE3\u7801\u6784\u6210\u540C\u6837\u517C\u5BB9 Java \u4F46\u57FA\u7840 Hook \u573A\u666F\u7684\u5B9E\u73B0\u53EF\u80FD\u5B8C\u5168\u65E0\u6CD5\u4F7F\u7528\u3002

    \u6587\u6863\u5168\u90E8\u7684 Demo \u793A\u4F8B\u4EE3\u7801\u90FD\u5C06\u4F7F\u7528 Kotlin \u8FDB\u884C\u63CF\u8FF0\uFF0C\u5982\u679C\u4F60\u5B8C\u5168\u4E0D\u4F1A\u4F7F\u7528 Kotlin \u90A3\u4F60\u5C06\u6709\u53EF\u80FD\u65E0\u6CD5\u4F7F\u7528 YukiHookAPI\u3002

    ',6),g=l("\u90E8\u5206 Java Demo \u4EE3\u7801\u53EF\u5728 "),H={href:"https://github.com/fankes/YukiHookAPI/tree/master/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/java",target:"_blank",rel:"noopener noreferrer"},P=l("\u8FD9\u91CC"),I=l(" \u627E\u5230\uFF0C\u4F46\u4E0D\u63A8\u8350\u4F7F\u7528\u3002"),X=r('

    \u7075\u611F\u6765\u6E90

    \u4EE5\u524D\uFF0C\u6211\u4EEC\u5728\u6784\u5EFA Xposed \u6A21\u5757\u7684\u65F6\u5019\uFF0C\u9996\u5148\u9700\u8981\u5728 assets \u4E0B\u521B\u5EFA xposed_init \u6587\u4EF6\u3002

    \u7136\u540E\uFF0C\u5C06\u81EA\u5DF1\u7684\u5165\u53E3\u7C7B\u540D\u624B\u52A8\u586B\u5165\u6587\u4EF6\u4E2D\uFF0C\u4F7F\u7528 XposedHelpers \u53BB\u5B9E\u73B0\u6211\u4EEC\u7684 Hook \u903B\u8F91\u3002

    \u81EA Kotlin \u4F5C\u4E3A Android \u4E3B\u8981\u5F00\u53D1\u8BED\u8A00\u4EE5\u6765\uFF0C\u8FD9\u5957 API \u7528\u8D77\u6765\u786E\u5B9E\u5DF2\u7ECF\u4E0D\u662F\u5F88\u4F18\u96C5\u4E86\u3002

    \u6709\u6CA1\u6709\u4EC0\u4E48 \u597D\u7528\u3001\u8F7B\u91CF\u3001\u4F18\u96C5 \u7684\u89E3\u51B3\u529E\u6CD5\u5462\uFF1F

    \u672C\u7740\u8FD9\u6837\u7684\u60F3\u6CD5\uFF0CYukiHookAPI \u8BDE\u751F\u4E86\u3002

    \u73B0\u5728\uFF0C\u6211\u4EEC\u53EA\u9700\u8981\u7F16\u5199\u5C11\u91CF\u7684\u4EE3\u7801\uFF0C\u4E00\u5207\u65F6\u95F4\u5F00\u9500\u548C\u82B1\u8D39\u4EA4\u7ED9\u81EA\u52A8\u5316\u5904\u7406\u3002

    \u501F\u52A9 Kotlin \u4F18\u96C5\u7684 lambda \u5199\u6CD5\u4EE5\u53CA YukiHookAPI\uFF0C\u53EF\u4EE5\u8BA9\u4F60\u7684 Hook \u903B\u8F91\u66F4\u52A0\u7F8E\u89C2\u6E05\u6670\u3002

    \u793A\u4F8B\u5982\u4E0B

    ',9),Y=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"@InjectYukiHookWithXposed")]),l(` `),s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"object"),s("span",{style:{color:"#ADBAC7"}}," HookEntry "),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"IYukiHookXposedInit"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(` `),s("span",{class:"line"}),l(` `),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"onHook"),s("span",{style:{color:"#ADBAC7"}},"() "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," encase {")]),l(` diff --git a/docs/assets/home.html.e7e8e599.js b/docs/assets/home.html.25bf27a6.js similarity index 98% rename from docs/assets/home.html.e7e8e599.js rename to docs/assets/home.html.25bf27a6.js index 0e4cb4761..b9058510a 100644 --- a/docs/assets/home.html.e7e8e599.js +++ b/docs/assets/home.html.25bf27a6.js @@ -1 +1 @@ -import{_ as e,o,c as i,a as d}from"./app.09f06ad9.js";const c={},t=d('

    \u6587\u6863\u4ECB\u7ECD

    \u8FD9\u91CC\u7684\u6587\u6863\u5C06\u540C\u6B65\u6700\u65B0 API \u7248\u672C\u7684\u76F8\u5173\u7528\u6CD5\uFF0C\u8BF7\u4FDD\u6301 YukiHookAPI \u4E3A\u6700\u65B0\u7248\u672C\u4EE5\u4F7F\u7528\u6700\u65B0\u7248\u672C\u7684\u529F\u80FD\u3002

    \u529F\u80FD\u63CF\u8FF0\u8BF4\u660E

    \u529F\u80FD\u63CF\u8FF0\u4E3B\u8981\u4ECB\u7ECD\u5F53\u524D API \u7684\u76F8\u5173\u7528\u6CD5\u548C\u7528\u9014\u3002

    \u529F\u80FD\u793A\u4F8B\u8BF4\u660E

    \u529F\u80FD\u793A\u4F8B\u4E3B\u8981\u5C55\u793A\u4E86\u5F53\u524D API \u7684\u57FA\u672C\u7528\u6CD5\u793A\u4F8B\uFF0C\u53EF\u4F9B\u53C2\u8003\u3002

    \u53D8\u66F4\u8BB0\u5F55\u8BF4\u660E

    \u9996\u4E2A\u7248\u672C\u7684\u529F\u80FD\u5C06\u6807\u8BB0\u4E3A v<version> \u6DFB\u52A0\uFF1B

    \u540E\u671F\u65B0\u589E\u52A0\u7684\u529F\u80FD\u5C06\u6807\u8BB0\u4E3A v<version> \u65B0\u589E\uFF1B

    \u540E\u671F\u4FEE\u6539\u7684\u529F\u80FD\u5C06\u88AB\u8FFD\u52A0\u4E3A v<version> \u4FEE\u6539\uFF1B

    \u540E\u671F\u88AB\u4F5C\u5E9F\u7684\u529F\u80FD\u5C06\u6807\u8BB0\u4E3A v<version> \u4F5C\u5E9F \u5E76\u4F1A\u6807\u6CE8\u5220\u9664\u7EBF\uFF1B

    \u540E\u671F\u88AB\u5220\u9664\u7684\u529F\u80FD\u5C06\u6807\u8BB0\u4E3A v<version> \u79FB\u9664 \u5E76\u4F1A\u6807\u6CE8\u5220\u9664\u7EBF\u3002

    \u76F8\u5173\u7B26\u53F7\u8BF4\u660E

    • kt \xA0Kotlin Static File

    • annotation \xA0\u6CE8\u89E3

    • interface \xA0\u63A5\u53E3

    • object \xA0\u7C7B (\u5355\u4F8B)

    • class \xA0\u7C7B

    • field \xA0\u53D8\u91CF\u6216 get\u3001set \u65B9\u6CD5\u6216\u53EA\u8BFB\u7684 get \u65B9\u6CD5

    • method \xA0\u65B9\u6CD5

    • enum \xA0Enum \u5E38\u91CF

    • ext-field \xA0\u6269\u5C55\u7684\u53D8\u91CF (\u5168\u5C40)

    • ext-method \xA0\u6269\u5C55\u7684\u65B9\u6CD5 (\u5168\u5C40)

    • i-ext-field \xA0\u6269\u5C55\u7684\u53D8\u91CF (\u8C03\u7528\u57DF\u9650\u5236)

    • i-ext-method \xA0\u6269\u5C55\u7684\u65B9\u6CD5 (\u8C03\u7528\u57DF\u9650\u5236)

    ',14),a=[t];function l(p,r){return o(),i("div",null,a)}const n=e(c,[["render",l],["__file","home.html.vue"]]);export{n as default}; +import{_ as e,o,c as i,a as d}from"./app.0312b331.js";const c={},t=d('

    \u6587\u6863\u4ECB\u7ECD

    \u8FD9\u91CC\u7684\u6587\u6863\u5C06\u540C\u6B65\u6700\u65B0 API \u7248\u672C\u7684\u76F8\u5173\u7528\u6CD5\uFF0C\u8BF7\u4FDD\u6301 YukiHookAPI \u4E3A\u6700\u65B0\u7248\u672C\u4EE5\u4F7F\u7528\u6700\u65B0\u7248\u672C\u7684\u529F\u80FD\u3002

    \u529F\u80FD\u63CF\u8FF0\u8BF4\u660E

    \u529F\u80FD\u63CF\u8FF0\u4E3B\u8981\u4ECB\u7ECD\u5F53\u524D API \u7684\u76F8\u5173\u7528\u6CD5\u548C\u7528\u9014\u3002

    \u529F\u80FD\u793A\u4F8B\u8BF4\u660E

    \u529F\u80FD\u793A\u4F8B\u4E3B\u8981\u5C55\u793A\u4E86\u5F53\u524D API \u7684\u57FA\u672C\u7528\u6CD5\u793A\u4F8B\uFF0C\u53EF\u4F9B\u53C2\u8003\u3002

    \u53D8\u66F4\u8BB0\u5F55\u8BF4\u660E

    \u9996\u4E2A\u7248\u672C\u7684\u529F\u80FD\u5C06\u6807\u8BB0\u4E3A v<version> \u6DFB\u52A0\uFF1B

    \u540E\u671F\u65B0\u589E\u52A0\u7684\u529F\u80FD\u5C06\u6807\u8BB0\u4E3A v<version> \u65B0\u589E\uFF1B

    \u540E\u671F\u4FEE\u6539\u7684\u529F\u80FD\u5C06\u88AB\u8FFD\u52A0\u4E3A v<version> \u4FEE\u6539\uFF1B

    \u540E\u671F\u88AB\u4F5C\u5E9F\u7684\u529F\u80FD\u5C06\u6807\u8BB0\u4E3A v<version> \u4F5C\u5E9F \u5E76\u4F1A\u6807\u6CE8\u5220\u9664\u7EBF\uFF1B

    \u540E\u671F\u88AB\u5220\u9664\u7684\u529F\u80FD\u5C06\u6807\u8BB0\u4E3A v<version> \u79FB\u9664 \u5E76\u4F1A\u6807\u6CE8\u5220\u9664\u7EBF\u3002

    \u76F8\u5173\u7B26\u53F7\u8BF4\u660E

    • kt \xA0Kotlin Static File

    • annotation \xA0\u6CE8\u89E3

    • interface \xA0\u63A5\u53E3

    • object \xA0\u7C7B (\u5355\u4F8B)

    • class \xA0\u7C7B

    • field \xA0\u53D8\u91CF\u6216 get\u3001set \u65B9\u6CD5\u6216\u53EA\u8BFB\u7684 get \u65B9\u6CD5

    • method \xA0\u65B9\u6CD5

    • enum \xA0Enum \u5E38\u91CF

    • ext-field \xA0\u6269\u5C55\u7684\u53D8\u91CF (\u5168\u5C40)

    • ext-method \xA0\u6269\u5C55\u7684\u65B9\u6CD5 (\u5168\u5C40)

    • i-ext-field \xA0\u6269\u5C55\u7684\u53D8\u91CF (\u8C03\u7528\u57DF\u9650\u5236)

    • i-ext-method \xA0\u6269\u5C55\u7684\u65B9\u6CD5 (\u8C03\u7528\u57DF\u9650\u5236)

    ',14),a=[t];function l(p,r){return o(),i("div",null,a)}const n=e(c,[["render",l],["__file","home.html.vue"]]);export{n as default}; diff --git a/docs/assets/home.html.93980587.js b/docs/assets/home.html.7d61ac66.js similarity index 97% rename from docs/assets/home.html.93980587.js rename to docs/assets/home.html.7d61ac66.js index 6bbe64859..2cde13584 100644 --- a/docs/assets/home.html.93980587.js +++ b/docs/assets/home.html.7d61ac66.js @@ -1 +1 @@ -import{_ as e,o,c as t,a as i}from"./app.09f06ad9.js";const n={},d=i('

    Document Introduce

    The document here will synchronize the relevant usage of the latest API version, please keep YukiHookAPI as the latest version to use the latest version of the function.

    Function Description

    The function description mainly introduces the related usage and purpose of the current API.

    Function Example Description

    The function examples mainly show the basic usage examples of the current API for reference.

    Change Record Description

    The function of the first version will be marked as v<version> first;

    New function added later will be marked as v<version> added;

    Later modified function will be appended as v<version> modified;

    Later deprecated function will be marked as v<version> deprecated and strikethrough;

    Later removed function will be marked as v<version> removed and strikethrough.

    • kt \xA0Kotlin Static File

    • annotation \xA0Annotation Class

    • interface \xA0Interface Class

    • object \xA0Class (Singleton)

    • class \xA0Class

    • field \xA0Field or get / set method or read-only get method

    • method \xA0Method

    • enum \xA0Enum constant

    • ext-field \xA0Extension field (global)

    • ext-method \xA0Extension method (global)

    • i-ext-field \xA0Extension field (internal)

    • i-ext-method \xA0Extension method (internal)

    ',14),a=[d];function c(r,l){return o(),t("div",null,a)}const p=e(n,[["render",c],["__file","home.html.vue"]]);export{p as default}; +import{_ as e,o,c as t,a as i}from"./app.0312b331.js";const n={},d=i('

    Document Introduce

    The document here will synchronize the relevant usage of the latest API version, please keep YukiHookAPI as the latest version to use the latest version of the function.

    Function Description

    The function description mainly introduces the related usage and purpose of the current API.

    Function Example Description

    The function examples mainly show the basic usage examples of the current API for reference.

    Change Record Description

    The function of the first version will be marked as v<version> first;

    New function added later will be marked as v<version> added;

    Later modified function will be appended as v<version> modified;

    Later deprecated function will be marked as v<version> deprecated and strikethrough;

    Later removed function will be marked as v<version> removed and strikethrough.

    • kt \xA0Kotlin Static File

    • annotation \xA0Annotation Class

    • interface \xA0Interface Class

    • object \xA0Class (Singleton)

    • class \xA0Class

    • field \xA0Field or get / set method or read-only get method

    • method \xA0Method

    • enum \xA0Enum constant

    • ext-field \xA0Extension field (global)

    • ext-method \xA0Extension method (global)

    • i-ext-field \xA0Extension field (internal)

    • i-ext-method \xA0Extension method (internal)

    ',14),a=[d];function c(r,l){return o(),t("div",null,a)}const p=e(n,[["render",c],["__file","home.html.vue"]]);export{p as default}; diff --git a/docs/assets/home.html.e3bb4f6f.js b/docs/assets/home.html.ac409ba5.js similarity index 99% rename from docs/assets/home.html.e3bb4f6f.js rename to docs/assets/home.html.ac409ba5.js index 5f869be26..fa7f399f4 100644 --- a/docs/assets/home.html.e3bb4f6f.js +++ b/docs/assets/home.html.ac409ba5.js @@ -1,4 +1,4 @@ -import{_ as i,r as o,o as p,c as d,b as s,d as l,w as a,e,a as r}from"./app.09f06ad9.js";const A={},u=s("h1",{id:"introduce",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#introduce","aria-hidden":"true"},"#"),e(" Introduce")],-1),y=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),e(" is an integrated Hook API Framework, which does not provide any Hook functions, and needs the support of Xposed related basic APIs.")])],-1),m=s("h2",{id:"background",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#background","aria-hidden":"true"},"#"),e(" Background")],-1),h=s("p",null,[e("This is an efficient Hook API rebuilt based on the Xposed API using "),s("code",null,"Kotlin"),e(", and creates rich function extensions for the development of Xposed Modules.")],-1),D=e("The name is taken from "),C={href:"https://www.bilibili.com/bangumi/play/ss5016",target:"_blank",rel:"noopener noreferrer"},B=e('"\u3082\u3082\u304F\u308A" heroine Yuki Kurihara'),b=e("."),_=e("Formerly the Innocent Xposed API used in "),v={href:"https://github.com/fankes/TMore",target:"_blank",rel:"noopener noreferrer"},F=e("Development Learning Project"),k=e(", now renamed and open sourced."),f=r('

    Usage

    YukiHookAPI is built entirely with Kotlin lambda syntax.

    Abandoning the original less friendly XposedHelpers, you can use it to easily create Xposed Modules and easily implement custom Hook API.

    Language Requirement

    Please use Kotlin, the framework part of the code composition is also compatible with Java but the implementation of the basic Hook scene may not work at all.

    All demo code in this document will be described using Kotlin, if you don't know how to use Kotlin then you may not be able to use YukiHookAPI.

    ',6),g=e("Part of the Java Demo code can be found "),H={href:"https://github.com/fankes/YukiHookAPI/tree/master/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/java",target:"_blank",rel:"noopener noreferrer"},P=e("here"),w=e(", but not recommended."),I=r('

    Source of Inspiration

    Previously, when we built an Xposed Module, we first needed to create an xposed_init file under assets.

    Then, manually fill in your own entry class name into the file and use XposedHelpers to implement our Hook logic.

    Since Kotlin is the main Android development language, this API is really not very elegant to use.

    Is there any easy to use, light, elegant solution?

    With this idea, YukiHookAPI was born.

    Now, we only need to write a small amount of code, and all the time and expense are handed over to automation.

    With Kotlin's elegant lambda writing and YukiHookAPI, you can make your Hook logic more beautiful and clear.

    The following example

    ',9),X=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"@InjectYukiHookWithXposed")]),e(` +import{_ as i,r as o,o as p,c as d,b as s,d as l,w as a,e,a as r}from"./app.0312b331.js";const A={},u=s("h1",{id:"introduce",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#introduce","aria-hidden":"true"},"#"),e(" Introduce")],-1),y=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),e(" is an integrated Hook API Framework, which does not provide any Hook functions, and needs the support of Xposed related basic APIs.")])],-1),m=s("h2",{id:"background",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#background","aria-hidden":"true"},"#"),e(" Background")],-1),h=s("p",null,[e("This is an efficient Hook API rebuilt based on the Xposed API using "),s("code",null,"Kotlin"),e(", and creates rich function extensions for the development of Xposed Modules.")],-1),D=e("The name is taken from "),C={href:"https://www.bilibili.com/bangumi/play/ss5016",target:"_blank",rel:"noopener noreferrer"},B=e('"\u3082\u3082\u304F\u308A" heroine Yuki Kurihara'),b=e("."),_=e("Formerly the Innocent Xposed API used in "),v={href:"https://github.com/fankes/TMore",target:"_blank",rel:"noopener noreferrer"},F=e("Development Learning Project"),k=e(", now renamed and open sourced."),f=r('

    Usage

    YukiHookAPI is built entirely with Kotlin lambda syntax.

    Abandoning the original less friendly XposedHelpers, you can use it to easily create Xposed Modules and easily implement custom Hook API.

    Language Requirement

    Please use Kotlin, the framework part of the code composition is also compatible with Java but the implementation of the basic Hook scene may not work at all.

    All demo code in this document will be described using Kotlin, if you don't know how to use Kotlin then you may not be able to use YukiHookAPI.

    ',6),g=e("Part of the Java Demo code can be found "),H={href:"https://github.com/fankes/YukiHookAPI/tree/master/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/java",target:"_blank",rel:"noopener noreferrer"},P=e("here"),w=e(", but not recommended."),I=r('

    Source of Inspiration

    Previously, when we built an Xposed Module, we first needed to create an xposed_init file under assets.

    Then, manually fill in your own entry class name into the file and use XposedHelpers to implement our Hook logic.

    Since Kotlin is the main Android development language, this API is really not very elegant to use.

    Is there any easy to use, light, elegant solution?

    With this idea, YukiHookAPI was born.

    Now, we only need to write a small amount of code, and all the time and expense are handed over to automation.

    With Kotlin's elegant lambda writing and YukiHookAPI, you can make your Hook logic more beautiful and clear.

    The following example

    ',9),X=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"@InjectYukiHookWithXposed")]),e(` `),s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"object"),s("span",{style:{color:"#ADBAC7"}}," HookEntry "),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"IYukiHookXposedInit"),s("span",{style:{color:"#ADBAC7"}}," {")]),e(` `),s("span",{class:"line"}),e(` `),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"onHook"),s("span",{style:{color:"#ADBAC7"}},"() "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," encase {")]),e(` diff --git a/docs/assets/host-inject.html.8e10055d.js b/docs/assets/host-inject.html.5909c2c8.js similarity index 99% rename from docs/assets/host-inject.html.8e10055d.js rename to docs/assets/host-inject.html.5909c2c8.js index 51c9f0069..34ef9f13f 100644 --- a/docs/assets/host-inject.html.8e10055d.js +++ b/docs/assets/host-inject.html.5909c2c8.js @@ -1,4 +1,4 @@ -import{_ as l,r as o,o as p,c as t,b as s,d as i,a as n,e}from"./app.09f06ad9.js";const c={},r=n(`

    Host Resource Injection Extension

    This is an extension that injects Module App's Resources, Activity components, and Context topics into the Host App.

    Before using the following functions, in order to prevent Resource Id from conflicting with each other, you need to modify the Resource Id in the build.gradle of the current Xposed Module project.

    • Kotlin Gradle DSL
    android {
    +import{_ as l,r as o,o as p,c as t,b as s,d as i,a as n,e}from"./app.0312b331.js";const c={},r=n(`

    Host Resource Injection Extension

    This is an extension that injects Module App's Resources, Activity components, and Context topics into the Host App.

    Before using the following functions, in order to prevent Resource Id from conflicting with each other, you need to modify the Resource Id in the build.gradle of the current Xposed Module project.

    • Kotlin Gradle DSL
    android {
         androidResources.additionalParameters("--allow-reserved-package-id", "--package-id", "0x64")
     }
     
    • Groovy
    android {
    diff --git a/docs/assets/host-inject.html.8563253f.js b/docs/assets/host-inject.html.78a8fae4.js
    similarity index 99%
    rename from docs/assets/host-inject.html.8563253f.js
    rename to docs/assets/host-inject.html.78a8fae4.js
    index c0c7309a0..6a53abbc2 100644
    --- a/docs/assets/host-inject.html.8563253f.js
    +++ b/docs/assets/host-inject.html.78a8fae4.js
    @@ -1,4 +1,4 @@
    -import{_ as e,r as o,o as p,c,b as s,d as i,a,e as n}from"./app.09f06ad9.js";const t={},r=a(`

    \u5BBF\u4E3B\u8D44\u6E90\u6CE8\u5165\u6269\u5C55

    \u8FD9\u662F\u4E00\u4E2A\u5C06\u6A21\u5757\u8D44\u6E90\u3001Activity \u7EC4\u4EF6\u4EE5\u53CA Context \u4E3B\u9898\u6CE8\u5165\u5230\u5BBF\u4E3B\u7684\u6269\u5C55\u529F\u80FD\u3002

    \u5728\u4F7F\u7528\u4EE5\u4E0B\u529F\u80FD\u4E4B\u524D\uFF0C\u4E3A\u9632\u6B62\u8D44\u6E90 ID \u4E92\u76F8\u51B2\u7A81\uFF0C\u4F60\u9700\u8981\u5728\u5F53\u524D Xposed \u6A21\u5757\u9879\u76EE\u7684 build.gradle \u4E2D\u4FEE\u6539\u8D44\u6E90 ID\u3002

    • Kotlin Gradle DSL
    android {
    +import{_ as e,r as o,o as p,c,b as s,d as i,a,e as n}from"./app.0312b331.js";const t={},r=a(`

    \u5BBF\u4E3B\u8D44\u6E90\u6CE8\u5165\u6269\u5C55

    \u8FD9\u662F\u4E00\u4E2A\u5C06\u6A21\u5757\u8D44\u6E90\u3001Activity \u7EC4\u4EF6\u4EE5\u53CA Context \u4E3B\u9898\u6CE8\u5165\u5230\u5BBF\u4E3B\u7684\u6269\u5C55\u529F\u80FD\u3002

    \u5728\u4F7F\u7528\u4EE5\u4E0B\u529F\u80FD\u4E4B\u524D\uFF0C\u4E3A\u9632\u6B62\u8D44\u6E90 ID \u4E92\u76F8\u51B2\u7A81\uFF0C\u4F60\u9700\u8981\u5728\u5F53\u524D Xposed \u6A21\u5757\u9879\u76EE\u7684 build.gradle \u4E2D\u4FEE\u6539\u8D44\u6E90 ID\u3002

    • Kotlin Gradle DSL
    android {
         androidResources.additionalParameters("--allow-reserved-package-id", "--package-id", "0x64")
     }
     
    • Groovy
    android {
    diff --git a/docs/assets/host-lifecycle.html.a332af0c.js b/docs/assets/host-lifecycle.html.1731207d.js
    similarity index 99%
    rename from docs/assets/host-lifecycle.html.a332af0c.js
    rename to docs/assets/host-lifecycle.html.1731207d.js
    index 6a5121fcc..b51e6e5ac 100644
    --- a/docs/assets/host-lifecycle.html.a332af0c.js
    +++ b/docs/assets/host-lifecycle.html.1731207d.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as e,a}from"./app.09f06ad9.js";const l={},p=a(`

    Host Lifecycle Extension

    This is an extension of the lifecycle of an automatic hooking Host App.

    Listener Lifecycle

    Implement the listening function by automating the lifecycle method of the Host App.

    We need to listen to the startup and lifecycle methods of the Host App's Application, just use the following methods.

    The following example

    loadApp(name = "com.example.demo") {
    +import{_ as s,o as n,c as e,a}from"./app.0312b331.js";const l={},p=a(`

    Host Lifecycle Extension

    This is an extension of the lifecycle of an automatic hooking Host App.

    Listener Lifecycle

    Implement the listening function by automating the lifecycle method of the Host App.

    We need to listen to the startup and lifecycle methods of the Host App's Application, just use the following methods.

    The following example

    loadApp(name = "com.example.demo") {
         // Register lifecycle listeners
         // Optional parameter:
         // You can set isOnFailureThrowToApp = false
    diff --git a/docs/assets/host-lifecycle.html.d2ba9262.js b/docs/assets/host-lifecycle.html.fd350138.js
    similarity index 99%
    rename from docs/assets/host-lifecycle.html.d2ba9262.js
    rename to docs/assets/host-lifecycle.html.fd350138.js
    index b5dfa9d09..ba6a624f7 100644
    --- a/docs/assets/host-lifecycle.html.d2ba9262.js
    +++ b/docs/assets/host-lifecycle.html.fd350138.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as a,a as l}from"./app.09f06ad9.js";const e={},p=l(`

    \u5BBF\u4E3B\u751F\u547D\u5468\u671F\u6269\u5C55

    \u8FD9\u662F\u4E00\u4E2A\u81EA\u52A8 Hook \u5BBF\u4E3B APP \u751F\u547D\u5468\u671F\u7684\u6269\u5C55\u529F\u80FD\u3002

    \u76D1\u542C\u751F\u547D\u5468\u671F

    \u901A\u8FC7\u81EA\u52A8\u5316 Hook \u5BBF\u4E3B APP \u7684\u751F\u547D\u5468\u671F\u65B9\u6CD5\uFF0C\u6765\u5B9E\u73B0\u76D1\u542C\u529F\u80FD\u3002

    \u6211\u4EEC\u9700\u8981\u76D1\u542C\u5BBF\u4E3B Application \u7684\u542F\u52A8\u548C\u751F\u547D\u5468\u671F\u65B9\u6CD5\uFF0C\u53EA\u9700\u8981\u4F7F\u7528\u4EE5\u4E0B\u65B9\u5F0F\u5B9E\u73B0\u3002

    \u793A\u4F8B\u5982\u4E0B

    loadApp(name = "com.example.demo") {
    +import{_ as s,o as n,c as a,a as l}from"./app.0312b331.js";const e={},p=l(`

    \u5BBF\u4E3B\u751F\u547D\u5468\u671F\u6269\u5C55

    \u8FD9\u662F\u4E00\u4E2A\u81EA\u52A8 Hook \u5BBF\u4E3B APP \u751F\u547D\u5468\u671F\u7684\u6269\u5C55\u529F\u80FD\u3002

    \u76D1\u542C\u751F\u547D\u5468\u671F

    \u901A\u8FC7\u81EA\u52A8\u5316 Hook \u5BBF\u4E3B APP \u7684\u751F\u547D\u5468\u671F\u65B9\u6CD5\uFF0C\u6765\u5B9E\u73B0\u76D1\u542C\u529F\u80FD\u3002

    \u6211\u4EEC\u9700\u8981\u76D1\u542C\u5BBF\u4E3B Application \u7684\u542F\u52A8\u548C\u751F\u547D\u5468\u671F\u65B9\u6CD5\uFF0C\u53EA\u9700\u8981\u4F7F\u7528\u4EE5\u4E0B\u65B9\u5F0F\u5B9E\u73B0\u3002

    \u793A\u4F8B\u5982\u4E0B

    loadApp(name = "com.example.demo") {
         // \u6CE8\u518C\u751F\u547D\u5468\u671F\u76D1\u542C
         // \u53EF\u9009\u53C2\u6570\uFF1A\u4F60\u53EF\u4EE5\u8BBE\u7F6E isOnFailureThrowToApp = false \u4F7F\u5F97\u5176\u4E2D\u7684\u5F02\u5E38\u4E0D\u4F1A\u629B\u51FA\u7ED9\u5BBF\u4E3B\u9632\u6B62\u5BBF\u4E3B\u5D29\u6E83\uFF0C\u9ED8\u8BA4\u4E3A true
         onAppLifecycle(isOnFailureThrowToApp = true) {
    diff --git a/docs/assets/index.html.b28f768e.js b/docs/assets/index.html.31e07320.js
    similarity index 63%
    rename from docs/assets/index.html.b28f768e.js
    rename to docs/assets/index.html.31e07320.js
    index 964fcb402..574001fe0 100644
    --- a/docs/assets/index.html.b28f768e.js
    +++ b/docs/assets/index.html.31e07320.js
    @@ -1 +1 @@
    -import{_ as e,o as c,c as t}from"./app.09f06ad9.js";const n={};function _(o,r){return c(),t("div")}const a=e(n,[["render",_],["__file","index.html.vue"]]);export{a as default};
    +import{_ as e,o as c,c as t}from"./app.0312b331.js";const n={};function _(o,r){return c(),t("div")}const a=e(n,[["render",_],["__file","index.html.vue"]]);export{a as default};
    diff --git a/docs/assets/index.html.98418e92.js b/docs/assets/index.html.41946e9a.js
    similarity index 98%
    rename from docs/assets/index.html.98418e92.js
    rename to docs/assets/index.html.41946e9a.js
    index 5b2bbd073..f095f798c 100644
    --- a/docs/assets/index.html.98418e92.js
    +++ b/docs/assets/index.html.41946e9a.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as a,a as l}from"./app.09f06ad9.js";const e={},p=l(`

    \u6240\u6709 Hook \u6D41\u7A0B\u4E00\u6B65\u5230\u4F4D\uFF0C\u62D2\u7EDD\u7E41\u7410

    loadApp(name = "com.android.browser") {
    +import{_ as s,o as n,c as a,a as l}from"./app.0312b331.js";const e={},p=l(`

    \u6240\u6709 Hook \u6D41\u7A0B\u4E00\u6B65\u5230\u4F4D\uFF0C\u62D2\u7EDD\u7E41\u7410

    loadApp(name = "com.android.browser") {
         ActivityClass.hook {
             injectMember {
                 method {
    diff --git a/docs/assets/index.html.876b855e.js b/docs/assets/index.html.f0f27bc4.js
    similarity index 98%
    rename from docs/assets/index.html.876b855e.js
    rename to docs/assets/index.html.f0f27bc4.js
    index 40411a4f3..f3d2de2ba 100644
    --- a/docs/assets/index.html.876b855e.js
    +++ b/docs/assets/index.html.f0f27bc4.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as a,a as l}from"./app.09f06ad9.js";const e={},p=l(`

    All Hook process in one step, everything is simplified

    loadApp(name = "com.android.browser") {
    +import{_ as s,o as n,c as a,a as l}from"./app.0312b331.js";const e={},p=l(`

    All Hook process in one step, everything is simplified

    loadApp(name = "com.android.browser") {
         ActivityClass.hook {
             injectMember {
                 method {
    diff --git a/docs/assets/knowledge.html.78cc3cfd.js b/docs/assets/knowledge.html.7ecd85e3.js
    similarity index 99%
    rename from docs/assets/knowledge.html.78cc3cfd.js
    rename to docs/assets/knowledge.html.7ecd85e3.js
    index 550f10614..be0d5146c 100644
    --- a/docs/assets/knowledge.html.78cc3cfd.js
    +++ b/docs/assets/knowledge.html.7ecd85e3.js
    @@ -1,4 +1,4 @@
    -import{_ as a,r,o as i,c as d,b as e,d as s,a as n,e as o}from"./app.09f06ad9.js";const l={},p=n(`

    Basic Knowledge

    Here is a collection of Xposed-related introductions and the key points of knowledge that need to be grasped before start.

    Anyone who already knows can skip it.

    The basic knowledge content not necessarily completely accurate, please read it according to your own opinion.

    If you find any errors in this page, please correct it and help us improve.

    Here's an introduction to Xposed and how Hooks work.

    What is Xposed

    Xposed Framework is a set of open source framework services that run in Android high-privilege mode. It can affect program operation (modify the system) without modifying the APK file. Based on it, many Powerful modules that operate simultaneously without conflicting functions.

    The above content is copied from Baidu Encyclopedia.

    What can Xposed do

    The structure below describes the basic workings and principles of Xposed.

    Xposed Framework
    +import{_ as a,r,o as i,c as d,b as e,d as s,a as n,e as o}from"./app.0312b331.js";const l={},p=n(`

    Basic Knowledge

    Here is a collection of Xposed-related introductions and the key points of knowledge that need to be grasped before start.

    Anyone who already knows can skip it.

    The basic knowledge content not necessarily completely accurate, please read it according to your own opinion.

    If you find any errors in this page, please correct it and help us improve.

    Here's an introduction to Xposed and how Hooks work.

    What is Xposed

    Xposed Framework is a set of open source framework services that run in Android high-privilege mode. It can affect program operation (modify the system) without modifying the APK file. Based on it, many Powerful modules that operate simultaneously without conflicting functions.

    The above content is copied from Baidu Encyclopedia.

    What can Xposed do

    The structure below describes the basic workings and principles of Xposed.

    Xposed Framework
     \u2514\u2500\u2500 App's Environment
         \u2514\u2500\u2500 Hooker (Hooked)
             ...
    diff --git a/docs/assets/knowledge.html.cdb6866f.js b/docs/assets/knowledge.html.f3904542.js
    similarity index 98%
    rename from docs/assets/knowledge.html.cdb6866f.js
    rename to docs/assets/knowledge.html.f3904542.js
    index 3e2b16322..1a640381f 100644
    --- a/docs/assets/knowledge.html.cdb6866f.js
    +++ b/docs/assets/knowledge.html.f3904542.js
    @@ -1,4 +1,4 @@
    -import{_ as t,r,o as p,c as d,b as o,d as n,a,e}from"./app.09f06ad9.js";const l={},c=a(`

    \u57FA\u7840\u77E5\u8BC6

    \u8FD9\u91CC\u6536\u96C6\u4E86 Xposed \u76F8\u5173\u7684\u4ECB\u7ECD\u4EE5\u53CA\u5F00\u542F\u524D\u9700\u8981\u638C\u63E1\u7684\u77E5\u8BC6\u8981\u70B9\uFF0C\u5DF2\u7ECF\u4E86\u89E3\u7684\u540C\u5B66\u53EF\u4EE5\u7565\u8FC7\u3002

    \u57FA\u7840\u77E5\u8BC6\u5185\u5BB9\u5E76\u4E0D\u4E00\u5B9A\u5B8C\u5168\u51C6\u786E\uFF0C\u8BF7\u6839\u636E\u81EA\u5DF1\u7684\u89C1\u89E3\u914C\u60C5\u9605\u8BFB\uFF0C\u82E5\u53D1\u73B0\u5185\u5BB9\u6709\u9519\u8BEF\u6B22\u8FCE\u6307\u6B63\u5E76\u5E2E\u52A9\u6211\u4EEC\u5B8C\u5584\u548C\u6539\u8FDB\u3002

    \u76F8\u5173\u4ECB\u7ECD

    \u8FD9\u91CC\u4ECB\u7ECD\u4E86 Xposed \u4EE5\u53CA Hook \u7684\u5DE5\u4F5C\u539F\u7406\u3002

    Xposed \u662F\u4EC0\u4E48

    Xposed \u6846\u67B6 (Xposed Framework) \u662F\u4E00\u5957\u5F00\u6E90\u7684\u3001\u5728 Android \u9AD8\u6743\u9650\u6A21\u5F0F\u4E0B\u8FD0\u884C\u7684\u6846\u67B6\u670D\u52A1\uFF0C\u53EF\u4EE5\u5728\u4E0D\u4FEE\u6539 APK \u6587\u4EF6\u7684\u60C5\u51B5\u4E0B\u5F71\u54CD\u7A0B\u5E8F\u8FD0\u884C\uFF08\u4FEE\u6539\u7CFB\u7EDF\uFF09\u7684\u6846\u67B6\u670D\u52A1\uFF0C\u57FA\u4E8E\u5B83\u53EF\u4EE5\u5236\u4F5C\u51FA\u8BB8\u591A\u529F\u80FD\u5F3A\u5927\u7684\u6A21\u5757\uFF0C\u4E14\u5728\u529F\u80FD\u4E0D\u51B2\u7A81\u7684\u60C5\u51B5\u4E0B\u540C\u65F6\u8FD0\u4F5C\u3002

    \u4E0A\u8FF0\u5185\u5BB9\u590D\u5236\u81EA\u767E\u5EA6\u767E\u79D1\u3002

    Xposed \u80FD\u505A\u4EC0\u4E48

    \u4E0B\u65B9\u7684\u7ED3\u6784\u63CF\u8FF0\u4E86 Xposed \u7684\u57FA\u672C\u5DE5\u4F5C\u65B9\u5F0F\u548C\u539F\u7406\u3002

    Xposed Framework
    +import{_ as t,r,o as p,c as d,b as o,d as n,a,e}from"./app.0312b331.js";const l={},c=a(`

    \u57FA\u7840\u77E5\u8BC6

    \u8FD9\u91CC\u6536\u96C6\u4E86 Xposed \u76F8\u5173\u7684\u4ECB\u7ECD\u4EE5\u53CA\u5F00\u542F\u524D\u9700\u8981\u638C\u63E1\u7684\u77E5\u8BC6\u8981\u70B9\uFF0C\u5DF2\u7ECF\u4E86\u89E3\u7684\u540C\u5B66\u53EF\u4EE5\u7565\u8FC7\u3002

    \u57FA\u7840\u77E5\u8BC6\u5185\u5BB9\u5E76\u4E0D\u4E00\u5B9A\u5B8C\u5168\u51C6\u786E\uFF0C\u8BF7\u6839\u636E\u81EA\u5DF1\u7684\u89C1\u89E3\u914C\u60C5\u9605\u8BFB\uFF0C\u82E5\u53D1\u73B0\u5185\u5BB9\u6709\u9519\u8BEF\u6B22\u8FCE\u6307\u6B63\u5E76\u5E2E\u52A9\u6211\u4EEC\u5B8C\u5584\u548C\u6539\u8FDB\u3002

    \u76F8\u5173\u4ECB\u7ECD

    \u8FD9\u91CC\u4ECB\u7ECD\u4E86 Xposed \u4EE5\u53CA Hook \u7684\u5DE5\u4F5C\u539F\u7406\u3002

    Xposed \u662F\u4EC0\u4E48

    Xposed \u6846\u67B6 (Xposed Framework) \u662F\u4E00\u5957\u5F00\u6E90\u7684\u3001\u5728 Android \u9AD8\u6743\u9650\u6A21\u5F0F\u4E0B\u8FD0\u884C\u7684\u6846\u67B6\u670D\u52A1\uFF0C\u53EF\u4EE5\u5728\u4E0D\u4FEE\u6539 APK \u6587\u4EF6\u7684\u60C5\u51B5\u4E0B\u5F71\u54CD\u7A0B\u5E8F\u8FD0\u884C\uFF08\u4FEE\u6539\u7CFB\u7EDF\uFF09\u7684\u6846\u67B6\u670D\u52A1\uFF0C\u57FA\u4E8E\u5B83\u53EF\u4EE5\u5236\u4F5C\u51FA\u8BB8\u591A\u529F\u80FD\u5F3A\u5927\u7684\u6A21\u5757\uFF0C\u4E14\u5728\u529F\u80FD\u4E0D\u51B2\u7A81\u7684\u60C5\u51B5\u4E0B\u540C\u65F6\u8FD0\u4F5C\u3002

    \u4E0A\u8FF0\u5185\u5BB9\u590D\u5236\u81EA\u767E\u5EA6\u767E\u79D1\u3002

    Xposed \u80FD\u505A\u4EC0\u4E48

    \u4E0B\u65B9\u7684\u7ED3\u6784\u63CF\u8FF0\u4E86 Xposed \u7684\u57FA\u672C\u5DE5\u4F5C\u65B9\u5F0F\u548C\u539F\u7406\u3002

    Xposed Framework
     \u2514\u2500\u2500 App's Environment
         \u2514\u2500\u2500 Hooker (Hooked)
             ...
    diff --git a/docs/assets/logger.html.4bf11e16.js b/docs/assets/logger.html.cf3e4152.js
    similarity index 99%
    rename from docs/assets/logger.html.4bf11e16.js
    rename to docs/assets/logger.html.cf3e4152.js
    index 9f3dd6678..c6b62afb0 100644
    --- a/docs/assets/logger.html.4bf11e16.js
    +++ b/docs/assets/logger.html.cf3e4152.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as e,c as o,a}from"./app.09f06ad9.js";const n={},l=a(`

    Debug Logs

    Log is the most important part of the debugging process, YukiHookAPI encapsulates a set of stable and efficient debugging log functions for developers.

    Normal Logs

    You can call loggerD, loggerI, loggerW to print normal logs to the console.

    The usage method is as follows.

    The following example

    loggerD(msg = "This is a log")
    +import{_ as s,o as e,c as o,a}from"./app.0312b331.js";const n={},l=a(`

    Debug Logs

    Log is the most important part of the debugging process, YukiHookAPI encapsulates a set of stable and efficient debugging log functions for developers.

    Normal Logs

    You can call loggerD, loggerI, loggerW to print normal logs to the console.

    The usage method is as follows.

    The following example

    loggerD(msg = "This is a log")
     

    At this ponit, YukiHookAPI will call android.util.Log and log function in (Xposed) Host environment to print this log at the same time.

    The default TAG of the log is the value you set in YukiHookLogger.Configs.tag.

    You can also customize this value dynamically, but it is not recommended to modify TAG easily to prevent logs from being filtered.

    The following example

    loggerD(tag = "YukiHookAPI", msg = "This is a log")
     

    The printed result is as shown below.

    The following example

    [YukiHookAPI][D][host package name]--> This is a log
     

    You can also use LoggerType to customize the type of log printing.

    You can choose to use android.util.Log or the log function in the (Xposed) Host environment to print logs.

    The default type is LoggerType.BOTH, which means that both methods are used to print logs.

    For example we only use android.util.Log to print logs.

    The following example

    loggerD(tag = "YukiHookAPI", msg = "This is a log", type = LoggerType.LOGD)
    diff --git a/docs/assets/logger.html.19aa1841.js b/docs/assets/logger.html.e27e78a6.js
    similarity index 99%
    rename from docs/assets/logger.html.19aa1841.js
    rename to docs/assets/logger.html.e27e78a6.js
    index f518b8bc1..aae3eb7ef 100644
    --- a/docs/assets/logger.html.19aa1841.js
    +++ b/docs/assets/logger.html.e27e78a6.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as a,c as o,a as n}from"./app.09f06ad9.js";const e={},l=n(`

    \u8C03\u8BD5\u65E5\u5FD7

    \u65E5\u5FD7\u662F\u8C03\u8BD5\u8FC7\u7A0B\u6700\u91CD\u8981\u7684\u4E00\u73AF\uFF0CYukiHookAPI \u4E3A\u5F00\u53D1\u8005\u5C01\u88C5\u4E86\u4E00\u5957\u7A33\u5B9A\u9AD8\u6548\u7684\u8C03\u8BD5\u65E5\u5FD7\u529F\u80FD\u3002

    \u666E\u901A\u65E5\u5FD7

    \u4F60\u53EF\u4EE5\u8C03\u7528 loggerD\u3001loggerI\u3001loggerW \u6765\u5411\u63A7\u5236\u53F0\u6253\u5370\u666E\u901A\u65E5\u5FD7\u3002

    \u4F7F\u7528\u65B9\u6CD5\u5982\u4E0B\u6240\u793A\u3002

    \u793A\u4F8B\u5982\u4E0B

    loggerD(msg = "This is a log")
    +import{_ as s,o as a,c as o,a as n}from"./app.0312b331.js";const e={},l=n(`

    \u8C03\u8BD5\u65E5\u5FD7

    \u65E5\u5FD7\u662F\u8C03\u8BD5\u8FC7\u7A0B\u6700\u91CD\u8981\u7684\u4E00\u73AF\uFF0CYukiHookAPI \u4E3A\u5F00\u53D1\u8005\u5C01\u88C5\u4E86\u4E00\u5957\u7A33\u5B9A\u9AD8\u6548\u7684\u8C03\u8BD5\u65E5\u5FD7\u529F\u80FD\u3002

    \u666E\u901A\u65E5\u5FD7

    \u4F60\u53EF\u4EE5\u8C03\u7528 loggerD\u3001loggerI\u3001loggerW \u6765\u5411\u63A7\u5236\u53F0\u6253\u5370\u666E\u901A\u65E5\u5FD7\u3002

    \u4F7F\u7528\u65B9\u6CD5\u5982\u4E0B\u6240\u793A\u3002

    \u793A\u4F8B\u5982\u4E0B

    loggerD(msg = "This is a log")
     

    \u6B64\u65F6\uFF0CYukiHookAPI \u4F1A\u8C03\u7528 android.util.Log \u4E0E (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u7684\u65E5\u5FD7\u529F\u80FD\u540C\u65F6\u6253\u5370\u8FD9\u6761\u65E5\u5FD7\u3002

    \u65E5\u5FD7\u9ED8\u8BA4\u7684 TAG \u4E3A\u4F60\u5728 YukiHookLogger.Configs.tag \u4E2D\u8BBE\u7F6E\u7684\u503C\u3002

    \u4F60\u4E5F\u53EF\u4EE5\u52A8\u6001\u81EA\u5B9A\u4E49\u8FD9\u4E2A\u503C\uFF0C\u4F46\u662F\u4E0D\u5EFA\u8BAE\u8F7B\u6613\u4FEE\u6539 TAG \u9632\u6B62\u8FC7\u6EE4\u4E0D\u5230\u65E5\u5FD7\u3002

    \u793A\u4F8B\u5982\u4E0B

    loggerD(tag = "YukiHookAPI", msg = "This is a log")
     

    \u6253\u5370\u7684\u7ED3\u679C\u4E3A\u5982\u4E0B\u6240\u793A\u3002

    \u793A\u4F8B\u5982\u4E0B

    [YukiHookAPI][D][\u5BBF\u4E3B\u5305\u540D]--> This is a log
     

    \u4F60\u8FD8\u53EF\u4EE5\u4F7F\u7528 LoggerType \u81EA\u5B9A\u4E49\u65E5\u5FD7\u6253\u5370\u7684\u7C7B\u578B\uFF0C\u53EF\u9009\u62E9\u4F7F\u7528 android.util.Log \u8FD8\u662F (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u7684\u65E5\u5FD7\u529F\u80FD\u6765\u6253\u5370\u65E5\u5FD7\u3002

    \u9ED8\u8BA4\u7C7B\u578B\u4E3A LoggerType.BOTH\uFF0C\u542B\u4E49\u4E3A\u540C\u65F6\u4F7F\u7528\u8FD9\u4E24\u4E2A\u65B9\u6CD5\u6765\u6253\u5370\u65E5\u5FD7\u3002

    \u6BD4\u5982\u6211\u4EEC\u4EC5\u4F7F\u7528 android.util.Log \u6765\u6253\u5370\u65E5\u5FD7\u3002

    \u793A\u4F8B\u5982\u4E0B

    loggerD(tag = "YukiHookAPI", msg = "This is a log", type = LoggerType.LOGD)
    diff --git a/docs/assets/move-to-new-api.html.1cc5d984.js b/docs/assets/move-to-new-api.html.5f979342.js
    similarity index 99%
    rename from docs/assets/move-to-new-api.html.1cc5d984.js
    rename to docs/assets/move-to-new-api.html.5f979342.js
    index 64367a83a..abe24a2a7 100644
    --- a/docs/assets/move-to-new-api.html.1cc5d984.js
    +++ b/docs/assets/move-to-new-api.html.5f979342.js
    @@ -1,4 +1,4 @@
    -import{_ as t,r as c,o as i,c as p,d as l,w as n,a as r,b as s,e}from"./app.09f06ad9.js";const A={},y=r('

    Migrate from Xposed API

    If you are familiar with Xposed API, you can refer to the same point below to quickly migrate your API to YukiHookAPI.

    Migrate Hook Entry Point

    Migrated from XC_LoadPackage.LoadPackageParam to PackageParam.

    YukiHookAPI implements the lambda method body this usage for PackageParam, and the PackageParam object can be obtained globally in the encase method body.

    The API function differences are compared as follows

    ',6),d=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"onHook"),s("span",{style:{color:"#ADBAC7"}},"() "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," encase {")]),e(` +import{_ as t,r as c,o as i,c as p,d as l,w as n,a as r,b as s,e}from"./app.0312b331.js";const A={},y=r('

    Migrate from Xposed API

    If you are familiar with Xposed API, you can refer to the same point below to quickly migrate your API to YukiHookAPI.

    Migrate Hook Entry Point

    Migrated from XC_LoadPackage.LoadPackageParam to PackageParam.

    YukiHookAPI implements the lambda method body this usage for PackageParam, and the PackageParam object can be obtained globally in the encase method body.

    The API function differences are compared as follows

    ',6),d=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"onHook"),s("span",{style:{color:"#ADBAC7"}},"() "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," encase {")]),e(` `),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the package name of the current Hook")]),e(` `),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," packageName")]),e(` `),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the ApplicationInfo of the current Hook")]),e(` diff --git a/docs/assets/move-to-new-api.html.bf8feb91.js b/docs/assets/move-to-new-api.html.e590bd72.js similarity index 99% rename from docs/assets/move-to-new-api.html.bf8feb91.js rename to docs/assets/move-to-new-api.html.e590bd72.js index c23c2841e..053bcce68 100644 --- a/docs/assets/move-to-new-api.html.bf8feb91.js +++ b/docs/assets/move-to-new-api.html.e590bd72.js @@ -1,4 +1,4 @@ -import{_ as p,r as c,o as i,c as t,d as n,w as e,a as r,b as s,e as l}from"./app.09f06ad9.js";const A={},y=r('

    \u4ECE Xposed API \u8FC1\u79FB

    \u82E5\u4F60\u719F\u6089 Xposed API\uFF0C\u4F60\u53EF\u4EE5\u53C2\u8003\u4E0B\u65B9\u7684\u76F8\u540C\u70B9\u5C06\u81EA\u5DF1\u7684 API \u5FEB\u901F\u8FC1\u79FB\u5230 YukiHookAPI\u3002

    \u8FC1\u79FB Hook \u5165\u53E3\u70B9

    \u4ECE XC_LoadPackage.LoadPackageParam \u8FC1\u79FB\u81F3 PackageParam\u3002

    YukiHookAPI \u5BF9 PackageParam \u5B9E\u73B0\u4E86 lambda \u65B9\u6CD5\u4F53 this \u7528\u6CD5\uFF0C\u5728 encase \u65B9\u6CD5\u4F53\u5185\u5373\u53EF\u5168\u5C40\u5F97\u5230 PackageParam \u5BF9\u8C61\u3002

    API \u529F\u80FD\u5DEE\u5F02\u5BF9\u6BD4\u5982\u4E0B

    ',6),d=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"onHook"),s("span",{style:{color:"#ADBAC7"}},"() "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," encase {")]),l(` +import{_ as p,r as c,o as i,c as t,d as n,w as e,a as r,b as s,e as l}from"./app.0312b331.js";const A={},y=r('

    \u4ECE Xposed API \u8FC1\u79FB

    \u82E5\u4F60\u719F\u6089 Xposed API\uFF0C\u4F60\u53EF\u4EE5\u53C2\u8003\u4E0B\u65B9\u7684\u76F8\u540C\u70B9\u5C06\u81EA\u5DF1\u7684 API \u5FEB\u901F\u8FC1\u79FB\u5230 YukiHookAPI\u3002

    \u8FC1\u79FB Hook \u5165\u53E3\u70B9

    \u4ECE XC_LoadPackage.LoadPackageParam \u8FC1\u79FB\u81F3 PackageParam\u3002

    YukiHookAPI \u5BF9 PackageParam \u5B9E\u73B0\u4E86 lambda \u65B9\u6CD5\u4F53 this \u7528\u6CD5\uFF0C\u5728 encase \u65B9\u6CD5\u4F53\u5185\u5373\u53EF\u5168\u5C40\u5F97\u5230 PackageParam \u5BF9\u8C61\u3002

    API \u529F\u80FD\u5DEE\u5F02\u5BF9\u6BD4\u5982\u4E0B

    ',6),d=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"onHook"),s("span",{style:{color:"#ADBAC7"}},"() "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," encase {")]),l(` `),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// \u5F97\u5230\u5F53\u524D Hook \u7684\u5305\u540D")]),l(` `),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," packageName")]),l(` `),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// \u5F97\u5230\u5F53\u524D Hook \u7684 ApplicationInfo")]),l(` diff --git a/docs/assets/quick-start.html.ad87d8a5.js b/docs/assets/quick-start.html.76b24cc8.js similarity index 99% rename from docs/assets/quick-start.html.ad87d8a5.js rename to docs/assets/quick-start.html.76b24cc8.js index 6fe6d9809..a1d9b7518 100644 --- a/docs/assets/quick-start.html.ad87d8a5.js +++ b/docs/assets/quick-start.html.76b24cc8.js @@ -1,4 +1,4 @@ -import{_ as o,r as l,o as i,c as p,b as n,d as t,a as e,e as s}from"./app.09f06ad9.js";const r={},c=e(`

    Quick Start

    Integrate YukiHookAPI into your project.

    Environment Requirements

    • Windows 7 and above / macOS 10.14 and above / Linux distributions (Arch/Debian)

    • Android Studio 2021.1 and above

    • IntelliJ IDEA 2021.1 and above

    • Kotlin 1.7.0 and above

    • Android Gradle Plugin 7.0 and above

    • Gradle 7.0 and above

    • JVM 11 and above (Since API 1.0.80)

    Automatically Build Project

    YukiHookAPI provides an automated build tool that can help you quickly build an Android standard project template with Xposed Module dependencies, and use the built template to start the next step directly.

    You can click here to check it out.

    Manually Configure Project

    If you don't want to use automated build tools, you can still manually configure project dependencies as follows.

    Create Project

    Use Android Studio or IntelliJ IDEA to create a new Android project and select Kotlin in the Language column to automatically add basic dependencies.

    Integration Dependencies

    Add dependencies to your project build.gradle.

    The following example

    repositories {
    +import{_ as o,r as l,o as i,c as p,b as n,d as t,a as e,e as s}from"./app.0312b331.js";const r={},c=e(`

    Quick Start

    Integrate YukiHookAPI into your project.

    Environment Requirements

    • Windows 7 and above / macOS 10.14 and above / Linux distributions (Arch/Debian)

    • Android Studio 2021.1 and above

    • IntelliJ IDEA 2021.1 and above

    • Kotlin 1.7.0 and above

    • Android Gradle Plugin 7.0 and above

    • Gradle 7.0 and above

    • JVM 11 and above (Since API 1.0.80)

    Automatically Build Project

    YukiHookAPI provides an automated build tool that can help you quickly build an Android standard project template with Xposed Module dependencies, and use the built template to start the next step directly.

    You can click here to check it out.

    Manually Configure Project

    If you don't want to use automated build tools, you can still manually configure project dependencies as follows.

    Create Project

    Use Android Studio or IntelliJ IDEA to create a new Android project and select Kotlin in the Language column to automatically add basic dependencies.

    Integration Dependencies

    Add dependencies to your project build.gradle.

    The following example

    repositories {
         google()
         mavenCentral()
         // \u2757If your Plugin version is too low, be sure to add it as an Xposed Module, other cases are optional
    diff --git a/docs/assets/quick-start.html.8cff3523.js b/docs/assets/quick-start.html.eef1c464.js
    similarity index 99%
    rename from docs/assets/quick-start.html.8cff3523.js
    rename to docs/assets/quick-start.html.eef1c464.js
    index fde5d65fe..bb2feab39 100644
    --- a/docs/assets/quick-start.html.8cff3523.js
    +++ b/docs/assets/quick-start.html.eef1c464.js
    @@ -1,4 +1,4 @@
    -import{_ as l,r as o,o as p,c as i,b as n,d as c,a,e as s}from"./app.09f06ad9.js";const r={},t=a(`

    \u5FEB\u901F\u5F00\u59CB

    \u96C6\u6210 YukiHookAPI \u5230\u4F60\u7684\u9879\u76EE\u4E2D\u3002

    \u73AF\u5883\u8981\u6C42

    • Windows 7 \u53CA\u4EE5\u4E0A/macOS 10.14 \u53CA\u4EE5\u4E0A/Linux \u53D1\u884C\u7248(Arch/Debian)

    • Android Studio 2021.1 \u53CA\u4EE5\u4E0A

    • IntelliJ IDEA 2021.1 \u53CA\u4EE5\u4E0A

    • Kotlin 1.7.0 \u53CA\u4EE5\u4E0A

    • Android Gradle Plugin 7.0 \u53CA\u4EE5\u4E0A

    • Gradle 7.0 \u53CA\u4EE5\u4E0A

    • Jvm 11 \u53CA\u4EE5\u4E0A (Since API 1.0.80)

    \u81EA\u52A8\u6784\u5EFA\u9879\u76EE

    YukiHookAPI \u63D0\u4F9B\u4E86\u4E00\u4E2A\u81EA\u52A8\u5316\u6784\u5EFA\u5DE5\u5177\uFF0C\u5B83\u53EF\u4EE5\u5E2E\u52A9\u4F60\u5FEB\u901F\u6784\u5EFA\u4E00\u4E2A\u62E5\u6709 Xposed \u6A21\u5757\u4F9D\u8D56\u7684 Android \u6807\u51C6\u9879\u76EE\u6A21\u677F\uFF0C\u4F7F\u7528\u6784\u5EFA\u597D\u7684\u6A21\u677F\u5373\u53EF\u76F4\u63A5\u5F00\u59CB\u4E0B\u4E00\u6B65\u5DE5\u4F5C\u3002

    \u4F60\u53EF\u4EE5 \u70B9\u51FB\u8FD9\u91CC \u8FDB\u884C\u67E5\u770B\u3002

    \u624B\u52A8\u914D\u7F6E\u9879\u76EE

    \u82E5\u4F60\u4E0D\u60F3\u4F7F\u7528\u81EA\u52A8\u5316\u6784\u5EFA\u5DE5\u5177\uFF0C\u4F60\u4F9D\u7136\u53EF\u4EE5\u6309\u7167\u4EE5\u4E0B\u65B9\u5F0F\u624B\u52A8\u914D\u7F6E\u9879\u76EE\u4F9D\u8D56\u3002

    \u521B\u5EFA\u9879\u76EE

    \u4F7F\u7528 Android Studio \u6216 IntelliJ IDEA \u521B\u5EFA\u65B0\u7684 Android \u9879\u76EE\uFF0C\u5E76\u5728 Language \u4E00\u680F\u9009\u62E9 Kotlin \u4EE5\u81EA\u52A8\u6DFB\u52A0\u57FA\u7840\u4F9D\u8D56\u3002

    \u96C6\u6210\u4F9D\u8D56

    \u5728\u4F60\u7684\u9879\u76EE build.gradle \u4E2D\u6DFB\u52A0\u4F9D\u8D56\u3002

    \u793A\u4F8B\u5982\u4E0B

    repositories {
    +import{_ as l,r as o,o as p,c as i,b as n,d as c,a,e as s}from"./app.0312b331.js";const r={},t=a(`

    \u5FEB\u901F\u5F00\u59CB

    \u96C6\u6210 YukiHookAPI \u5230\u4F60\u7684\u9879\u76EE\u4E2D\u3002

    \u73AF\u5883\u8981\u6C42

    • Windows 7 \u53CA\u4EE5\u4E0A/macOS 10.14 \u53CA\u4EE5\u4E0A/Linux \u53D1\u884C\u7248(Arch/Debian)

    • Android Studio 2021.1 \u53CA\u4EE5\u4E0A

    • IntelliJ IDEA 2021.1 \u53CA\u4EE5\u4E0A

    • Kotlin 1.7.0 \u53CA\u4EE5\u4E0A

    • Android Gradle Plugin 7.0 \u53CA\u4EE5\u4E0A

    • Gradle 7.0 \u53CA\u4EE5\u4E0A

    • Jvm 11 \u53CA\u4EE5\u4E0A (Since API 1.0.80)

    \u81EA\u52A8\u6784\u5EFA\u9879\u76EE

    YukiHookAPI \u63D0\u4F9B\u4E86\u4E00\u4E2A\u81EA\u52A8\u5316\u6784\u5EFA\u5DE5\u5177\uFF0C\u5B83\u53EF\u4EE5\u5E2E\u52A9\u4F60\u5FEB\u901F\u6784\u5EFA\u4E00\u4E2A\u62E5\u6709 Xposed \u6A21\u5757\u4F9D\u8D56\u7684 Android \u6807\u51C6\u9879\u76EE\u6A21\u677F\uFF0C\u4F7F\u7528\u6784\u5EFA\u597D\u7684\u6A21\u677F\u5373\u53EF\u76F4\u63A5\u5F00\u59CB\u4E0B\u4E00\u6B65\u5DE5\u4F5C\u3002

    \u4F60\u53EF\u4EE5 \u70B9\u51FB\u8FD9\u91CC \u8FDB\u884C\u67E5\u770B\u3002

    \u624B\u52A8\u914D\u7F6E\u9879\u76EE

    \u82E5\u4F60\u4E0D\u60F3\u4F7F\u7528\u81EA\u52A8\u5316\u6784\u5EFA\u5DE5\u5177\uFF0C\u4F60\u4F9D\u7136\u53EF\u4EE5\u6309\u7167\u4EE5\u4E0B\u65B9\u5F0F\u624B\u52A8\u914D\u7F6E\u9879\u76EE\u4F9D\u8D56\u3002

    \u521B\u5EFA\u9879\u76EE

    \u4F7F\u7528 Android Studio \u6216 IntelliJ IDEA \u521B\u5EFA\u65B0\u7684 Android \u9879\u76EE\uFF0C\u5E76\u5728 Language \u4E00\u680F\u9009\u62E9 Kotlin \u4EE5\u81EA\u52A8\u6DFB\u52A0\u57FA\u7840\u4F9D\u8D56\u3002

    \u96C6\u6210\u4F9D\u8D56

    \u5728\u4F60\u7684\u9879\u76EE build.gradle \u4E2D\u6DFB\u52A0\u4F9D\u8D56\u3002

    \u793A\u4F8B\u5982\u4E0B

    repositories {
         google()
         mavenCentral()
         // \u2757\u82E5\u4F60\u7684 Plugin \u7248\u672C\u8FC7\u4F4E\uFF0C\u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u52A1\u5FC5\u6DFB\u52A0\uFF0C\u5176\u5B83\u60C5\u51B5\u53EF\u9009
    diff --git a/docs/assets/r8-proguard.html.95f35867.js b/docs/assets/r8-proguard.html.3439f0c8.js
    similarity index 97%
    rename from docs/assets/r8-proguard.html.95f35867.js
    rename to docs/assets/r8-proguard.html.3439f0c8.js
    index c6006fb91..bd944d57e 100644
    --- a/docs/assets/r8-proguard.html.95f35867.js
    +++ b/docs/assets/r8-proguard.html.3439f0c8.js
    @@ -1,2 +1,2 @@
    -import{_ as e,o,c as r,a}from"./app.09f06ad9.js";const d={},s=a(`

    R8 \u4E0E Proguard \u6DF7\u6DC6

    \u5927\u90E8\u5206\u573A\u666F\u4E0B Xposed \u6A21\u5757\u53EF\u901A\u8FC7\u539F\u751F\u6DF7\u6DC6\u538B\u7F29\u4F53\u79EF\uFF0C\u8FD9\u91CC\u4ECB\u7ECD\u4E86\u6DF7\u6DC6\u7684\u914D\u7F6E\u65B9\u6CD5\u3002

    R8

    \u5982\u679C\u4F60\u4F7F\u7528\u7684\u662F R8\uFF0C\u90A3\u4E48\u4F60\u65E0\u9700\u5BF9 YukiHookAPI \u8FDB\u884C\u4EFB\u4F55\u7279\u6B8A\u914D\u7F6E\u3002

    Proguard

    \u5982\u679C\u4F60\u4ECD\u7136\u5728\u4F7F\u7528 Proguard\uFF0C\u4F60\u9700\u8981\u505A\u4E00\u4E9B\u89C4\u5219\u914D\u7F6E\u3002

    \u7279\u522B\u6CE8\u610F

    Proguard \u89C4\u5219\u5DF2\u88AB\u5F03\u7528\uFF0C\u8BF7\u4E0D\u8981\u518D\u4F7F\u7528\uFF0C\u81EA\u4ECE Android Gradle Plugin 4.2 \u540E\uFF0C\u62E5\u6709 Android Jetpack \u5957\u4EF6\u6700\u65B0\u7248\u672C\u7684\u6DF7\u6DC6\u5904\u7406\u7A0B\u5E8F\u9ED8\u8BA4\u5747\u4E3A R8\uFF0C\u4E0D\u518D\u9700\u8981\u8003\u8651\u6DF7\u6DC6\u7684\u95EE\u9898\u3002

    \u82E5\u8981\u5728\u4EFB\u4F55\u7248\u672C\u4E0B\u542F\u7528 R8\uFF0C\u8BF7\u5728 gradle.properties \u6587\u4EF6\u4E2D\u52A0\u5165\u5982\u4E0B\u89C4\u5219\uFF0CAndroid Gradle Plugin 7.0 \u53CA\u4EE5\u4E0A\u7248\u672C\u65E0\u9700\u4EFB\u4F55\u914D\u7F6E\u3002

    android.enableR8=true
    +import{_ as e,o,c as r,a}from"./app.0312b331.js";const d={},s=a(`

    R8 \u4E0E Proguard \u6DF7\u6DC6

    \u5927\u90E8\u5206\u573A\u666F\u4E0B Xposed \u6A21\u5757\u53EF\u901A\u8FC7\u539F\u751F\u6DF7\u6DC6\u538B\u7F29\u4F53\u79EF\uFF0C\u8FD9\u91CC\u4ECB\u7ECD\u4E86\u6DF7\u6DC6\u7684\u914D\u7F6E\u65B9\u6CD5\u3002

    R8

    \u5982\u679C\u4F60\u4F7F\u7528\u7684\u662F R8\uFF0C\u90A3\u4E48\u4F60\u65E0\u9700\u5BF9 YukiHookAPI \u8FDB\u884C\u4EFB\u4F55\u7279\u6B8A\u914D\u7F6E\u3002

    Proguard

    \u5982\u679C\u4F60\u4ECD\u7136\u5728\u4F7F\u7528 Proguard\uFF0C\u4F60\u9700\u8981\u505A\u4E00\u4E9B\u89C4\u5219\u914D\u7F6E\u3002

    \u7279\u522B\u6CE8\u610F

    Proguard \u89C4\u5219\u5DF2\u88AB\u5F03\u7528\uFF0C\u8BF7\u4E0D\u8981\u518D\u4F7F\u7528\uFF0C\u81EA\u4ECE Android Gradle Plugin 4.2 \u540E\uFF0C\u62E5\u6709 Android Jetpack \u5957\u4EF6\u6700\u65B0\u7248\u672C\u7684\u6DF7\u6DC6\u5904\u7406\u7A0B\u5E8F\u9ED8\u8BA4\u5747\u4E3A R8\uFF0C\u4E0D\u518D\u9700\u8981\u8003\u8651\u6DF7\u6DC6\u7684\u95EE\u9898\u3002

    \u82E5\u8981\u5728\u4EFB\u4F55\u7248\u672C\u4E0B\u542F\u7528 R8\uFF0C\u8BF7\u5728 gradle.properties \u6587\u4EF6\u4E2D\u52A0\u5165\u5982\u4E0B\u89C4\u5219\uFF0CAndroid Gradle Plugin 7.0 \u53CA\u4EE5\u4E0A\u7248\u672C\u65E0\u9700\u4EFB\u4F55\u914D\u7F6E\u3002

    android.enableR8=true
     
    `,9),n=[s];function c(l,t){return o(),r("div",null,n)}const p=e(d,[["render",c],["__file","r8-proguard.html.vue"]]);export{p as default}; diff --git a/docs/assets/r8-proguard.html.3571ac4f.js b/docs/assets/r8-proguard.html.5131f80f.js similarity index 96% rename from docs/assets/r8-proguard.html.3571ac4f.js rename to docs/assets/r8-proguard.html.5131f80f.js index 26f6e423d..05d2775f6 100644 --- a/docs/assets/r8-proguard.html.3571ac4f.js +++ b/docs/assets/r8-proguard.html.5131f80f.js @@ -1,2 +1,2 @@ -import{_ as e,o,c as a,a as r}from"./app.09f06ad9.js";const n={},s=r(`

    R8 & Proguard Obfuscate

    In most scenarios, the Xposed Module can be compressed by native obfuscation.

    Here is the configuration method of obfuscation.

    R8

    If you are using R8 then you don't need any special configuration for YukiHookAPI.

    Proguard

    If you are still using Proguard, you need to do some rule configuration.

    Pay Attention

    Proguard rules have been deprecated, please don't use them anymore.

    Since Android Gradle Plugin 4.2, the obfuscator with the latest version of the Android Jetpack default is R8, and you no longer need to consider obfuscation.

    To enable R8 in any version, please add the following rules to the gradle.properties file, no configuration is required for Android Gradle Plugin 7.0 and above.

    android.enableR8=true
    +import{_ as e,o,c as a,a as r}from"./app.0312b331.js";const n={},s=r(`

    R8 & Proguard Obfuscate

    In most scenarios, the Xposed Module can be compressed by native obfuscation.

    Here is the configuration method of obfuscation.

    R8

    If you are using R8 then you don't need any special configuration for YukiHookAPI.

    Proguard

    If you are still using Proguard, you need to do some rule configuration.

    Pay Attention

    Proguard rules have been deprecated, please don't use them anymore.

    Since Android Gradle Plugin 4.2, the obfuscator with the latest version of the Android Jetpack default is R8, and you no longer need to consider obfuscation.

    To enable R8 in any version, please add the following rules to the gradle.properties file, no configuration is required for Android Gradle Plugin 7.0 and above.

    android.enableR8=true
     
    `,9),t=[s];function d(c,i){return o(),a("div",null,t)}const u=e(n,[["render",d],["__file","r8-proguard.html.vue"]]);export{u as default}; diff --git a/docs/assets/reflection.html.46f93c64.js b/docs/assets/reflection.html.2d61f274.js similarity index 99% rename from docs/assets/reflection.html.46f93c64.js rename to docs/assets/reflection.html.2d61f274.js index 565ff5e8d..d4e106dcc 100644 --- a/docs/assets/reflection.html.46f93c64.js +++ b/docs/assets/reflection.html.2d61f274.js @@ -1,4 +1,4 @@ -import{_ as c,r as a,o as r,c as i,b as s,d as l,e as n,a as e}from"./app.09f06ad9.js";const t={},d=s("h1",{id:"\u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55","aria-hidden":"true"},"#"),n(" \u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55")],-1),A=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),n(" \u4E3A\u5F00\u53D1\u8005\u5C01\u88C5\u4E86\u4E00\u5957\u63A5\u8FD1\u96F6\u53CD\u5C04\u5199\u6CD5\u7684\u53CD\u5C04 API\uFF0C\u5B83\u51E0\u4E4E\u53EF\u4EE5\u5B8C\u5168\u53D6\u4EE3\u539F\u751F Java \u7684\u53CD\u5C04 API \u76F8\u5173\u7528\u6CD5\u3002")])],-1),y=n("\u6B64\u529F\u80FD\u7684\u6838\u5FC3\u90E8\u5206\u5DF2\u88AB\u89E3\u8026\u5408\u4E3A "),u={href:"https://github.com/fankes/YukiReflection",target:"_blank",rel:"noopener noreferrer"},v=n("YukiReflection"),C=n(" \u9879\u76EE\uFF0C\u5B83\u53EF\u4EE5\u72EC\u7ACB\u4F7F\u7528\u4E8E\u4EFB\u4F55 Android \u9879\u76EE\u4E2D\u3002"),D=e(`

    \u73B0\u5728 YukiReflection \u4F5C\u4E3A\u6838\u5FC3\u4F9D\u8D56\u96C6\u6210\u4E8E YukiHookAPI\u3002

    YukiHookAPI \u5728 YukiReflection \u7684\u57FA\u7840\u4E0A\u52A0\u5165\u4E86\u9488\u5BF9 Hook \u529F\u80FD\u7684\u76F8\u5173\u6269\u5C55\uFF0C\u4F7F\u7528 YukiHookAPI \u65E0\u9700\u5F15\u5165\u6B64\u4F9D\u8D56\u3002

    Class \u6269\u5C55

    \u8FD9\u91CC\u662F Class \u5BF9\u8C61\u81EA\u8EAB\u76F8\u5173\u7684\u6269\u5C55\u529F\u80FD\u3002

    \u5BF9\u8C61\u8F6C\u6362

    \u5047\u8BBE\u6211\u4EEC\u8981\u5F97\u5230\u4E00\u4E2A\u4E0D\u80FD\u76F4\u63A5\u8C03\u7528\u7684 Class\uFF0C\u901A\u5E38\u60C5\u51B5\u4E0B\uFF0C\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u6807\u51C6\u7684\u53CD\u5C04 API \u53BB\u67E5\u627E\u8FD9\u4E2A Class\u3002

    \u793A\u4F8B\u5982\u4E0B

    // \u9ED8\u8BA4 ClassLoader \u73AF\u5883\u4E0B\u7684 Class
    +import{_ as c,r as a,o as r,c as i,b as s,d as l,e as n,a as e}from"./app.0312b331.js";const t={},d=s("h1",{id:"\u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55","aria-hidden":"true"},"#"),n(" \u5B57\u8282\u7801\u4E0E\u53CD\u5C04\u6269\u5C55")],-1),A=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),n(" \u4E3A\u5F00\u53D1\u8005\u5C01\u88C5\u4E86\u4E00\u5957\u63A5\u8FD1\u96F6\u53CD\u5C04\u5199\u6CD5\u7684\u53CD\u5C04 API\uFF0C\u5B83\u51E0\u4E4E\u53EF\u4EE5\u5B8C\u5168\u53D6\u4EE3\u539F\u751F Java \u7684\u53CD\u5C04 API \u76F8\u5173\u7528\u6CD5\u3002")])],-1),y=n("\u6B64\u529F\u80FD\u7684\u6838\u5FC3\u90E8\u5206\u5DF2\u88AB\u89E3\u8026\u5408\u4E3A "),u={href:"https://github.com/fankes/YukiReflection",target:"_blank",rel:"noopener noreferrer"},v=n("YukiReflection"),C=n(" \u9879\u76EE\uFF0C\u5B83\u53EF\u4EE5\u72EC\u7ACB\u4F7F\u7528\u4E8E\u4EFB\u4F55 Android \u9879\u76EE\u4E2D\u3002"),D=e(`

    \u73B0\u5728 YukiReflection \u4F5C\u4E3A\u6838\u5FC3\u4F9D\u8D56\u96C6\u6210\u4E8E YukiHookAPI\u3002

    YukiHookAPI \u5728 YukiReflection \u7684\u57FA\u7840\u4E0A\u52A0\u5165\u4E86\u9488\u5BF9 Hook \u529F\u80FD\u7684\u76F8\u5173\u6269\u5C55\uFF0C\u4F7F\u7528 YukiHookAPI \u65E0\u9700\u5F15\u5165\u6B64\u4F9D\u8D56\u3002

    Class \u6269\u5C55

    \u8FD9\u91CC\u662F Class \u5BF9\u8C61\u81EA\u8EAB\u76F8\u5173\u7684\u6269\u5C55\u529F\u80FD\u3002

    \u5BF9\u8C61\u8F6C\u6362

    \u5047\u8BBE\u6211\u4EEC\u8981\u5F97\u5230\u4E00\u4E2A\u4E0D\u80FD\u76F4\u63A5\u8C03\u7528\u7684 Class\uFF0C\u901A\u5E38\u60C5\u51B5\u4E0B\uFF0C\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u6807\u51C6\u7684\u53CD\u5C04 API \u53BB\u67E5\u627E\u8FD9\u4E2A Class\u3002

    \u793A\u4F8B\u5982\u4E0B

    // \u9ED8\u8BA4 ClassLoader \u73AF\u5883\u4E0B\u7684 Class
     var instance = Class.forName("com.demo.Test")
     // \u6307\u5B9A ClassLoader \u73AF\u5883\u4E0B\u7684 Class
     val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
    diff --git a/docs/assets/reflection.html.dbf7b8bc.js b/docs/assets/reflection.html.6a421aa7.js
    similarity index 99%
    rename from docs/assets/reflection.html.dbf7b8bc.js
    rename to docs/assets/reflection.html.6a421aa7.js
    index 92ba2df45..7f22bb04e 100644
    --- a/docs/assets/reflection.html.dbf7b8bc.js
    +++ b/docs/assets/reflection.html.6a421aa7.js
    @@ -1,4 +1,4 @@
    -import{_ as t,r as a,o as c,c as i,b as s,d as e,e as n,a as l}from"./app.09f06ad9.js";const r={},d=s("h1",{id:"reflection-extensions",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#reflection-extensions","aria-hidden":"true"},"#"),n(" Reflection Extensions")],-1),y=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),n(" encapsulates a set of reflection API with near-zero reflection writing for developers, which can almost completely replace the usage of reflection API in Java.")])],-1),A=n("The core part of this functionality has been decoupled into the "),u={href:"https://github.com/fankes/YukiReflection",target:"_blank",rel:"noopener noreferrer"},m=n("YukiReflection"),v=n(" project, which can be used independently in any Android project."),h=l(`

    Now YukiReflection is integrated into YukiHookAPI as a core dependency.

    YukiHookAPI adds related extensions for Hook functions on the basis of YukiReflection, and there is no need to introduce this dependency to use YukiHookAPI.

    Class Extensions

    Here are the extension functions related to the Class object itself.

    Object Conversion

    Suppose we want to get a Class that cannot be called directly.

    Normally, we can use the standard reflection API to find this Class.

    The following example

    // Class in the default ClassLoader environment
    +import{_ as t,r as a,o as c,c as i,b as s,d as e,e as n,a as l}from"./app.0312b331.js";const r={},d=s("h1",{id:"reflection-extensions",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#reflection-extensions","aria-hidden":"true"},"#"),n(" Reflection Extensions")],-1),y=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),n(" encapsulates a set of reflection API with near-zero reflection writing for developers, which can almost completely replace the usage of reflection API in Java.")])],-1),A=n("The core part of this functionality has been decoupled into the "),u={href:"https://github.com/fankes/YukiReflection",target:"_blank",rel:"noopener noreferrer"},m=n("YukiReflection"),v=n(" project, which can be used independently in any Android project."),h=l(`

    Now YukiReflection is integrated into YukiHookAPI as a core dependency.

    YukiHookAPI adds related extensions for Hook functions on the basis of YukiReflection, and there is no need to introduce this dependency to use YukiHookAPI.

    Class Extensions

    Here are the extension functions related to the Class object itself.

    Object Conversion

    Suppose we want to get a Class that cannot be called directly.

    Normally, we can use the standard reflection API to find this Class.

    The following example

    // Class in the default ClassLoader environment
     var instance = Class.forName("com.demo.Test")
     // Specify the Class in the ClassLoader environment
     val customClassLoader: ClassLoader? = ... // Assume this is your ClassLoader
    diff --git a/docs/assets/xposed-channel.html.75bce788.js b/docs/assets/xposed-channel.html.66f480aa.js
    similarity index 99%
    rename from docs/assets/xposed-channel.html.75bce788.js
    rename to docs/assets/xposed-channel.html.66f480aa.js
    index 96c9c013e..29ca0c5b3 100644
    --- a/docs/assets/xposed-channel.html.75bce788.js
    +++ b/docs/assets/xposed-channel.html.66f480aa.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as a,a as l}from"./app.09f06ad9.js";const e={},o=l(`

    Xposed \u6A21\u5757\u4E0E\u5BBF\u4E3B\u901A\u8BAF\u6865

    \u8FD9\u662F\u4E00\u4E2A\u4F7F\u7528\u7CFB\u7EDF\u65E0\u5E8F\u5E7F\u64AD\u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E4B\u95F4\u53D1\u9001\u548C\u63A5\u6536\u6570\u636E\u7684\u89E3\u51B3\u65B9\u6848\u3002

    \u9700\u8981\u6EE1\u8DB3\u7684\u6761\u4EF6

    \u6A21\u5757\u4E0E\u5BBF\u4E3B\u9700\u8981\u4FDD\u6301\u5B58\u6D3B\u72B6\u6001\uFF0C\u5426\u5219\u65E0\u6CD5\u5EFA\u7ACB\u901A\u8BAF\u3002

    \u57FA\u672C\u7528\u6CD5

    \u8FD9\u91CC\u63CF\u8FF0\u4E86 wait \u4E0E put \u65B9\u6CD5\u7684\u57FA\u672C\u4F7F\u7528\u65B9\u6CD5\u3002

    \u901A\u8FC7\u4F7F\u7528 dataChannel \u6765\u5B9E\u73B0\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E4B\u95F4\u7684\u901A\u8BAF\u6865\uFF0C\u539F\u7406\u4E3A\u53D1\u9001\u63A5\u6536\u7CFB\u7EDF\u65E0\u5E8F\u5E7F\u64AD\u3002

    \u6A21\u5757\u793A\u4F8B\u5982\u4E0B

    // \u4ECE\u6307\u5B9A\u5305\u540D\u7684\u5BBF\u4E3B\u83B7\u53D6
    +import{_ as s,o as n,c as a,a as l}from"./app.0312b331.js";const e={},o=l(`

    Xposed \u6A21\u5757\u4E0E\u5BBF\u4E3B\u901A\u8BAF\u6865

    \u8FD9\u662F\u4E00\u4E2A\u4F7F\u7528\u7CFB\u7EDF\u65E0\u5E8F\u5E7F\u64AD\u5728\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E4B\u95F4\u53D1\u9001\u548C\u63A5\u6536\u6570\u636E\u7684\u89E3\u51B3\u65B9\u6848\u3002

    \u9700\u8981\u6EE1\u8DB3\u7684\u6761\u4EF6

    \u6A21\u5757\u4E0E\u5BBF\u4E3B\u9700\u8981\u4FDD\u6301\u5B58\u6D3B\u72B6\u6001\uFF0C\u5426\u5219\u65E0\u6CD5\u5EFA\u7ACB\u901A\u8BAF\u3002

    \u57FA\u672C\u7528\u6CD5

    \u8FD9\u91CC\u63CF\u8FF0\u4E86 wait \u4E0E put \u65B9\u6CD5\u7684\u57FA\u672C\u4F7F\u7528\u65B9\u6CD5\u3002

    \u901A\u8FC7\u4F7F\u7528 dataChannel \u6765\u5B9E\u73B0\u6A21\u5757\u4E0E\u5BBF\u4E3B\u4E4B\u95F4\u7684\u901A\u8BAF\u6865\uFF0C\u539F\u7406\u4E3A\u53D1\u9001\u63A5\u6536\u7CFB\u7EDF\u65E0\u5E8F\u5E7F\u64AD\u3002

    \u6A21\u5757\u793A\u4F8B\u5982\u4E0B

    // \u4ECE\u6307\u5B9A\u5305\u540D\u7684\u5BBF\u4E3B\u83B7\u53D6
     dataChannel(packageName = "com.example.demo").wait<String>(key = "key_from_host") { value ->
         // Your code here.
     }
    diff --git a/docs/assets/xposed-channel.html.35b256cc.js b/docs/assets/xposed-channel.html.b5cbb026.js
    similarity index 99%
    rename from docs/assets/xposed-channel.html.35b256cc.js
    rename to docs/assets/xposed-channel.html.b5cbb026.js
    index 087b57a9c..3988ccc6e 100644
    --- a/docs/assets/xposed-channel.html.35b256cc.js
    +++ b/docs/assets/xposed-channel.html.b5cbb026.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as a,a as e}from"./app.09f06ad9.js";const l={},o=e(`

    Xposed Module and Host Channel

    This is a solution that uses system out-of-order broadcasting to send and receive data between the Module App and the Host App.

    Condition that needs to be met

    The Module App and the Host App need to remain alive, otherwise communication cannot be established.

    Basic Usage

    The basic usage of the wait and put methods is described here.

    By using dataChannel to realize the communication bridge between the Module App and the Host App, the principle is to send and receive system out-of-order broadcasts.

    The Module App example is as follows

    // Get from the Host App of the specified package name
    +import{_ as s,o as n,c as a,a as e}from"./app.0312b331.js";const l={},o=e(`

    Xposed Module and Host Channel

    This is a solution that uses system out-of-order broadcasting to send and receive data between the Module App and the Host App.

    Condition that needs to be met

    The Module App and the Host App need to remain alive, otherwise communication cannot be established.

    Basic Usage

    The basic usage of the wait and put methods is described here.

    By using dataChannel to realize the communication bridge between the Module App and the Host App, the principle is to send and receive system out-of-order broadcasts.

    The Module App example is as follows

    // Get from the Host App of the specified package name
     dataChannel(packageName = "com.example.demo").wait<String>(key = "key_from_host") { value ->
         // Your code here.
     }
    diff --git a/docs/assets/xposed-storage.html.afb25ac0.js b/docs/assets/xposed-storage.html.b1d42889.js
    similarity index 99%
    rename from docs/assets/xposed-storage.html.afb25ac0.js
    rename to docs/assets/xposed-storage.html.b1d42889.js
    index 043c428e0..75d088c25 100644
    --- a/docs/assets/xposed-storage.html.afb25ac0.js
    +++ b/docs/assets/xposed-storage.html.b1d42889.js
    @@ -1,4 +1,4 @@
    -import{_ as e,o as s,c as o,a}from"./app.09f06ad9.js";const n={},t=a(`

    Xposed Module Data Storage

    This is an efficient Module App data storage solution that automatically connects SharedPreferences and XSharedPreferences.

    We need to store the data of the Module App for the Host App to call.

    At this time, we will encounter the data exchange obstacle of the native Sp storage.

    The native Xposed provides us with a XSharedPreferences for reading the Sp data of the Module App.

    Use in Activity

    Loading YukiHookModulePrefs in Activity is described here.

    Usually we can initialize it in Host App like this.

    The following example

    XSharedPreferences(BuildConfig.APPLICATION_ID)
    +import{_ as e,o as s,c as o,a}from"./app.0312b331.js";const n={},t=a(`

    Xposed Module Data Storage

    This is an efficient Module App data storage solution that automatically connects SharedPreferences and XSharedPreferences.

    We need to store the data of the Module App for the Host App to call.

    At this time, we will encounter the data exchange obstacle of the native Sp storage.

    The native Xposed provides us with a XSharedPreferences for reading the Sp data of the Module App.

    Use in Activity

    Loading YukiHookModulePrefs in Activity is described here.

    Usually we can initialize it in Host App like this.

    The following example

    XSharedPreferences(BuildConfig.APPLICATION_ID)
     

    Is there a convenient and quick solution?

    At this point, you can use the extension capability of YukiHookAPI to quickly implement this function.

    When you store data in a Module App, you can use the following methods if you are currently in an Activity.

    The following example

    modulePrefs.putString("test_name", "saved_value")
     

    When you read data in a Host App, you can use the following methods.

    The following example

    val testName = prefs.getString("test_name", "default_value")
     

    You don't need to consider the module package name and a series of complicated permission configurations, everything is handled by YukiHookModulePrefs.

    To achieve localization of storage, you can specify the name of each prefs file.

    This is used in the Activity of the Module App.

    The following example

    // Recommended usage
    diff --git a/docs/assets/xposed-storage.html.8fd40506.js b/docs/assets/xposed-storage.html.db4237d4.js
    similarity index 99%
    rename from docs/assets/xposed-storage.html.8fd40506.js
    rename to docs/assets/xposed-storage.html.db4237d4.js
    index e1b4d3ab9..6bef0dd0a 100644
    --- a/docs/assets/xposed-storage.html.8fd40506.js
    +++ b/docs/assets/xposed-storage.html.db4237d4.js
    @@ -1,4 +1,4 @@
    -import{_ as e,o as s,c as o,a}from"./app.09f06ad9.js";const n={},l=a(`

    Xposed \u6A21\u5757\u6570\u636E\u5B58\u50A8

    \u8FD9\u662F\u4E00\u4E2A\u81EA\u52A8\u5BF9\u63A5 SharedPreferences \u548C XSharedPreferences \u7684\u9AD8\u6548\u6A21\u5757\u6570\u636E\u5B58\u50A8\u89E3\u51B3\u65B9\u6848\u3002

    \u6211\u4EEC\u9700\u8981\u5B58\u50A8\u6A21\u5757\u7684\u6570\u636E\uFF0C\u4EE5\u4F9B\u5BBF\u4E3B\u8C03\u7528\uFF0C\u8FD9\u4E2A\u65F6\u5019\u4F1A\u9047\u5230\u539F\u751F Sp \u5B58\u50A8\u7684\u6570\u636E\u4E92\u901A\u963B\u788D\u3002

    \u539F\u751F\u7684 Xposed \u7ED9\u6211\u4EEC\u63D0\u4F9B\u4E86\u4E00\u4E2A XSharedPreferences \u7528\u4E8E\u8BFB\u53D6\u6A21\u5757\u7684 Sp \u6570\u636E\u3002

    \u5728 Activity \u4E2D\u4F7F\u7528

    \u8FD9\u91CC\u63CF\u8FF0\u4E86\u5728 Activity \u4E2D\u88C5\u8F7D YukiHookModulePrefs \u7684\u573A\u666F\u3002

    \u901A\u5E38\u60C5\u51B5\u4E0B\u6211\u4EEC\u53EF\u4EE5\u8FD9\u6837\u5728 Hook APP (\u5BBF\u4E3B) \u5185\u5BF9\u5176\u8FDB\u884C\u521D\u59CB\u5316\u3002

    \u793A\u4F8B\u5982\u4E0B

    XSharedPreferences(BuildConfig.APPLICATION_ID)
    +import{_ as e,o as s,c as o,a}from"./app.0312b331.js";const n={},l=a(`

    Xposed \u6A21\u5757\u6570\u636E\u5B58\u50A8

    \u8FD9\u662F\u4E00\u4E2A\u81EA\u52A8\u5BF9\u63A5 SharedPreferences \u548C XSharedPreferences \u7684\u9AD8\u6548\u6A21\u5757\u6570\u636E\u5B58\u50A8\u89E3\u51B3\u65B9\u6848\u3002

    \u6211\u4EEC\u9700\u8981\u5B58\u50A8\u6A21\u5757\u7684\u6570\u636E\uFF0C\u4EE5\u4F9B\u5BBF\u4E3B\u8C03\u7528\uFF0C\u8FD9\u4E2A\u65F6\u5019\u4F1A\u9047\u5230\u539F\u751F Sp \u5B58\u50A8\u7684\u6570\u636E\u4E92\u901A\u963B\u788D\u3002

    \u539F\u751F\u7684 Xposed \u7ED9\u6211\u4EEC\u63D0\u4F9B\u4E86\u4E00\u4E2A XSharedPreferences \u7528\u4E8E\u8BFB\u53D6\u6A21\u5757\u7684 Sp \u6570\u636E\u3002

    \u5728 Activity \u4E2D\u4F7F\u7528

    \u8FD9\u91CC\u63CF\u8FF0\u4E86\u5728 Activity \u4E2D\u88C5\u8F7D YukiHookModulePrefs \u7684\u573A\u666F\u3002

    \u901A\u5E38\u60C5\u51B5\u4E0B\u6211\u4EEC\u53EF\u4EE5\u8FD9\u6837\u5728 Hook APP (\u5BBF\u4E3B) \u5185\u5BF9\u5176\u8FDB\u884C\u521D\u59CB\u5316\u3002

    \u793A\u4F8B\u5982\u4E0B

    XSharedPreferences(BuildConfig.APPLICATION_ID)
     

    \u6709\u6CA1\u6709\u65B9\u4FBF\u5FEB\u6377\u7684\u89E3\u51B3\u65B9\u6848\u5462\uFF0C\u6B64\u65F6\u4F60\u5C31\u53EF\u4EE5\u4F7F\u7528 YukiHookAPI \u7684\u6269\u5C55\u80FD\u529B\u5FEB\u901F\u5B9E\u73B0\u8FD9\u4E2A\u529F\u80FD\u3002

    \u5F53\u4F60\u5728\u6A21\u5757\u4E2D\u5B58\u50A8\u6570\u636E\u7684\u65F6\u5019\uFF0C\u82E5\u5F53\u524D\u5904\u4E8E Activity \u5185\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5982\u4E0B\u65B9\u6CD5\u3002

    \u793A\u4F8B\u5982\u4E0B

    modulePrefs.putString("test_name", "saved_value")
     

    \u5F53\u4F60\u5728 Hook APP (\u5BBF\u4E3B) \u4E2D\u8BFB\u53D6\u6570\u636E\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5982\u4E0B\u65B9\u6CD5\u3002

    \u793A\u4F8B\u5982\u4E0B

    val testName = prefs.getString("test_name", "default_value")
     

    \u4F60\u4E0D\u9700\u8981\u8003\u8651\u4F20\u5165\u6A21\u5757\u7684\u5305\u540D\u4EE5\u53CA\u4E00\u7CFB\u5217\u590D\u6742\u7684\u6743\u9650\u914D\u7F6E\uFF0C\u4E00\u5207\u90FD\u4EA4\u7ED9 YukiHookModulePrefs \u6765\u5904\u7406\u3002

    \u82E5\u8981\u5B9E\u73B0\u5B58\u50A8\u7684\u533A\u57DF\u5212\u5206\uFF0C\u4F60\u53EF\u4EE5\u6307\u5B9A\u6BCF\u4E2A prefs \u6587\u4EF6\u7684\u540D\u79F0\u3002

    \u5728\u6A21\u5757\u7684 Activity \u4E2D\u8FD9\u6837\u4F7F\u7528\u3002

    \u793A\u4F8B\u5982\u4E0B

    // \u63A8\u8350\u7528\u6CD5
    diff --git a/docs/assets/xposed-using.html.870b08d5.js b/docs/assets/xposed-using.html.a598f81c.js
    similarity index 99%
    rename from docs/assets/xposed-using.html.870b08d5.js
    rename to docs/assets/xposed-using.html.a598f81c.js
    index 8a14ccd6c..87215340f 100644
    --- a/docs/assets/xposed-using.html.870b08d5.js
    +++ b/docs/assets/xposed-using.html.a598f81c.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as e,c as a,a as o}from"./app.09f06ad9.js";const n={},l=o(`

    Use as Xposed Module Configs

    Here are the related configuration methods used by YukiHookAPI as an Xposed Module.

    Dependency Configs

    As an Xposed Module, YukiHookAPI provides an automatic builder.

    You need to integrate the latest version of the com.highcapable.yukihookapi:ksp-xposed dependency in your build.gradle.

    Custom Automatic Builder

    You can configure how YukiHookAPI will generate the xposed_init entry point.

    InjectYukiHookWithXposed Annotation

    annotation class InjectYukiHookWithXposed(
    +import{_ as s,o as e,c as a,a as o}from"./app.0312b331.js";const n={},l=o(`

    Use as Xposed Module Configs

    Here are the related configuration methods used by YukiHookAPI as an Xposed Module.

    Dependency Configs

    As an Xposed Module, YukiHookAPI provides an automatic builder.

    You need to integrate the latest version of the com.highcapable.yukihookapi:ksp-xposed dependency in your build.gradle.

    Custom Automatic Builder

    You can configure how YukiHookAPI will generate the xposed_init entry point.

    InjectYukiHookWithXposed Annotation

    annotation class InjectYukiHookWithXposed(
         val sourcePath: String,
         val modulePackageName: String,
         val entryClassName: String,
    diff --git a/docs/assets/xposed-using.html.033542e7.js b/docs/assets/xposed-using.html.fc0bf539.js
    similarity index 99%
    rename from docs/assets/xposed-using.html.033542e7.js
    rename to docs/assets/xposed-using.html.fc0bf539.js
    index f97e25a42..55310f3a2 100644
    --- a/docs/assets/xposed-using.html.033542e7.js
    +++ b/docs/assets/xposed-using.html.fc0bf539.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as n,c as o,a}from"./app.09f06ad9.js";const e={},l=a(`

    \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E

    \u8FD9\u91CC\u4ECB\u7ECD\u4E86 YukiHookAPI \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E\u65B9\u6CD5\u3002

    \u4F9D\u8D56\u914D\u7F6E

    \u4F5C\u4E3A Xposed \u6A21\u5757\uFF0CYukiHookAPI \u63D0\u4F9B\u4E86\u4E00\u4E2A\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u3002

    \u4F60\u9700\u8981\u5728\u4F60\u7684 build.gradle \u4E2D\u96C6\u6210 com.highcapable.yukihookapi:ksp-xposed \u4F9D\u8D56\u7684\u6700\u65B0\u7248\u672C\u3002

    \u81EA\u5B9A\u4E49\u5904\u7406\u7A0B\u5E8F

    \u4F60\u53EF\u4EE5\u5BF9 YukiHookAPI \u5C06\u5982\u4F55\u751F\u6210 xposed_init \u5165\u53E3\u8FDB\u884C\u76F8\u5173\u914D\u7F6E\u3002

    InjectYukiHookWithXposed \u6CE8\u89E3

    annotation class InjectYukiHookWithXposed(
    +import{_ as s,o as n,c as o,a}from"./app.0312b331.js";const e={},l=a(`

    \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E

    \u8FD9\u91CC\u4ECB\u7ECD\u4E86 YukiHookAPI \u4F5C\u4E3A Xposed \u6A21\u5757\u4F7F\u7528\u7684\u76F8\u5173\u914D\u7F6E\u65B9\u6CD5\u3002

    \u4F9D\u8D56\u914D\u7F6E

    \u4F5C\u4E3A Xposed \u6A21\u5757\uFF0CYukiHookAPI \u63D0\u4F9B\u4E86\u4E00\u4E2A\u81EA\u52A8\u5904\u7406\u7A0B\u5E8F\u3002

    \u4F60\u9700\u8981\u5728\u4F60\u7684 build.gradle \u4E2D\u96C6\u6210 com.highcapable.yukihookapi:ksp-xposed \u4F9D\u8D56\u7684\u6700\u65B0\u7248\u672C\u3002

    \u81EA\u5B9A\u4E49\u5904\u7406\u7A0B\u5E8F

    \u4F60\u53EF\u4EE5\u5BF9 YukiHookAPI \u5C06\u5982\u4F55\u751F\u6210 xposed_init \u5165\u53E3\u8FDB\u884C\u76F8\u5173\u914D\u7F6E\u3002

    InjectYukiHookWithXposed \u6CE8\u89E3

    annotation class InjectYukiHookWithXposed(
         val sourcePath: String,
         val modulePackageName: String,
         val entryClassName: String,
    diff --git a/docs/assets/yukihookapi-projectbuilder.html.5e108278.js b/docs/assets/yukihookapi-projectbuilder.html.456eae84.js
    similarity index 98%
    rename from docs/assets/yukihookapi-projectbuilder.html.5e108278.js
    rename to docs/assets/yukihookapi-projectbuilder.html.456eae84.js
    index ebf731355..63a3ece1b 100644
    --- a/docs/assets/yukihookapi-projectbuilder.html.5e108278.js
    +++ b/docs/assets/yukihookapi-projectbuilder.html.456eae84.js
    @@ -1 +1 @@
    -import{_ as n,r as i,o as c,c as s,b as t,d as a,a as r,e}from"./app.09f06ad9.js";const l="/YukiHookAPI/images/yukihookapi-projectbuilder-en.png",d={},u=r('

    YukiHookAPI Project Builder

    This is an automatic building tool for Xposed Modules using YukiHookAPI as the core.

    Implementing automated search relies on quickly building an Android project template that includes a Xposed Module environment.

    Get Project

    This project is open source and free, and will be maintained continuously according to your usage.

    The original version may have imperfections or bugs. We welcome to your feedback.

    ',6),h=e("Project Address "),p={href:"https://github.com/fankes/YukiHookAPI-ProjectBuilder",target:"_blank",rel:"noopener noreferrer"},g=e("YukiHookAPI-ProjectBuilder"),f=e("\u3002"),m=e("If you want to download directly, you can "),k={href:"https://github.com/fankes/YukiHookAPI-ProjectBuilder/releases",target:"_blank",rel:"noopener noreferrer"},_=e("click here"),b=e(" to go to the Release address."),y=r('

    Usage

    Here contains the basic usage and function explanation.

    Basic Usage

    • The software use process requires your device connected to the Internet.

    • After starting the software, simply configure the project you want to create, click the button in the lower right corner or select Project > Run Build from the menu bar to start the task.

    • After waiting for the automatic dependency search to complete, you can configure the project dependencies. It is recommended to use the latest dependencies to ensure the stability of the project, and the build tools only support the latest dependencies.

    • Select the folder where you need to create the project. After starting, the project will be created in the location you selected, and wait for the whole process to complete and the project will be created.

    Config Template

    Config template is an extension function, you can select menu bar Project > Config Template > New Template.

    And then, you can create a template with the current config, and you can re-create it from Saved Template next time Load the template to restore the current config.

    Multilingual Support

    The software language follows the current system, and you can manually select the software interface language in the Language column of the menu bar.

    ',9);function j(w,x){const o=i("ExternalLinkIcon");return c(),s("div",null,[u,t("p",null,[h,t("a",p,[g,a(o)]),f]),t("p",null,[m,t("a",k,[_,a(o)]),b]),y])}const A=n(d,[["render",j],["__file","yukihookapi-projectbuilder.html.vue"]]);export{A as default}; +import{_ as n,r as i,o as c,c as s,b as t,d as a,a as r,e}from"./app.0312b331.js";const l="/YukiHookAPI/images/yukihookapi-projectbuilder-en.png",d={},u=r('

    YukiHookAPI Project Builder

    This is an automatic building tool for Xposed Modules using YukiHookAPI as the core.

    Implementing automated search relies on quickly building an Android project template that includes a Xposed Module environment.

    Get Project

    This project is open source and free, and will be maintained continuously according to your usage.

    The original version may have imperfections or bugs. We welcome to your feedback.

    ',6),h=e("Project Address "),p={href:"https://github.com/fankes/YukiHookAPI-ProjectBuilder",target:"_blank",rel:"noopener noreferrer"},g=e("YukiHookAPI-ProjectBuilder"),f=e("\u3002"),m=e("If you want to download directly, you can "),k={href:"https://github.com/fankes/YukiHookAPI-ProjectBuilder/releases",target:"_blank",rel:"noopener noreferrer"},_=e("click here"),b=e(" to go to the Release address."),y=r('

    Usage

    Here contains the basic usage and function explanation.

    Basic Usage

    • The software use process requires your device connected to the Internet.

    • After starting the software, simply configure the project you want to create, click the button in the lower right corner or select Project > Run Build from the menu bar to start the task.

    • After waiting for the automatic dependency search to complete, you can configure the project dependencies. It is recommended to use the latest dependencies to ensure the stability of the project, and the build tools only support the latest dependencies.

    • Select the folder where you need to create the project. After starting, the project will be created in the location you selected, and wait for the whole process to complete and the project will be created.

    Config Template

    Config template is an extension function, you can select menu bar Project > Config Template > New Template.

    And then, you can create a template with the current config, and you can re-create it from Saved Template next time Load the template to restore the current config.

    Multilingual Support

    The software language follows the current system, and you can manually select the software interface language in the Language column of the menu bar.

    ',9);function j(w,x){const o=i("ExternalLinkIcon");return c(),s("div",null,[u,t("p",null,[h,t("a",p,[g,a(o)]),f]),t("p",null,[m,t("a",k,[_,a(o)]),b]),y])}const A=n(d,[["render",j],["__file","yukihookapi-projectbuilder.html.vue"]]);export{A as default}; diff --git a/docs/assets/yukihookapi-projectbuilder.html.acc4ed20.js b/docs/assets/yukihookapi-projectbuilder.html.e6c2ebba.js similarity index 98% rename from docs/assets/yukihookapi-projectbuilder.html.acc4ed20.js rename to docs/assets/yukihookapi-projectbuilder.html.e6c2ebba.js index 8a45a27eb..b11fa3aa1 100644 --- a/docs/assets/yukihookapi-projectbuilder.html.acc4ed20.js +++ b/docs/assets/yukihookapi-projectbuilder.html.e6c2ebba.js @@ -1 +1 @@ -import{_ as i,r as n,o as s,c as d,b as o,d as r,a,e}from"./app.09f06ad9.js";const h="/YukiHookAPI/images/yukihookapi-projectbuilder-zh-cn.png",c={},l=a('

    YukiHookAPI \u6784\u5EFA\u5DE5\u5177

    \u8FD9\u662F\u4E00\u4E2A\u4F7F\u7528 YukiHookAPI \u4F5C\u4E3A\u6838\u5FC3\u7684 Xposed \u6A21\u5757\u81EA\u52A8\u6784\u5EFA\u5DE5\u5177\u3002

    \u5B9E\u73B0\u81EA\u52A8\u5316\u641C\u7D22\u4F9D\u8D56\u5FEB\u901F\u642D\u5EFA\u4E00\u4E2A\u5305\u542B Xposed \u6A21\u5757\u73AF\u5883\u7684 Android \u9879\u76EE\u6A21\u677F\u3002

    \u83B7\u53D6\u9879\u76EE

    \u672C\u9879\u76EE\u5B8C\u5168\u5F00\u6E90\u514D\u8D39\uFF0C\u4E14\u4F1A\u6839\u636E\u5927\u5BB6\u7684\u4F7F\u7528\u60C5\u51B5\u6301\u7EED\u7EF4\u62A4\uFF0C\u521D\u4EE3\u7248\u672C\u53EF\u80FD\u5B58\u5728\u4E0D\u5B8C\u5584\u6216 BUG\uFF0C\u6B22\u8FCE\u53CD\u9988\u3002

    ',5),p=e("\u9879\u76EE\u5730\u5740 "),u={href:"https://github.com/fankes/YukiHookAPI-ProjectBuilder",target:"_blank",rel:"noopener noreferrer"},_=e("YukiHookAPI-ProjectBuilder"),k=e("\u3002"),g=e("\u82E5\u4F60\u60F3\u76F4\u63A5\u4E0B\u8F7D\u53EF\u4EE5 "),f={href:"https://github.com/fankes/YukiHookAPI-ProjectBuilder/releases",target:"_blank",rel:"noopener noreferrer"},b=e("\u70B9\u51FB\u8FD9\u91CC"),m=e(" \u524D\u5F80 Release \u53D1\u5E03\u5730\u5740\u3002"),x=a('

    \u4F7F\u7528\u65B9\u6CD5

    \u8FD9\u91CC\u5305\u542B\u4E86\u57FA\u672C\u7684\u4F7F\u7528\u65B9\u6CD5\u548C\u529F\u80FD\u8BB2\u89E3\u3002

    \u57FA\u672C\u7528\u6CD5

    • \u8F6F\u4EF6\u4F7F\u7528\u8FC7\u7A0B\u9700\u8981\u5F53\u524D\u8BBE\u5907\u5DF2\u8FDE\u63A5\u4E92\u8054\u7F51\uFF0C\u82E5\u9879\u76EE\u4F9D\u8D56\u65E0\u6CD5\u641C\u7D22\u8BF7\u5C1D\u8BD5 \u79D1\u5B66\u4E0A\u7F51 \u3002

    • \u542F\u52A8\u8F6F\u4EF6\u540E\uFF0C\u5BF9\u4F60\u671F\u671B\u521B\u5EFA\u7684\u9879\u76EE\u8FDB\u884C\u7B80\u5355\u914D\u7F6E\uFF0C\u70B9\u51FB\u53F3\u4E0B\u89D2\u7684 \u6309\u94AE \u6216\u83DC\u5355\u680F\u9009\u62E9 \u9879\u76EE > \u5F00\u59CB\u521B\u5EFA \u5373\u53EF\u5F00\u59CB\u4EFB\u52A1\u3002

    • \u7B49\u5F85\u4F9D\u8D56\u81EA\u52A8\u641C\u7D22\u5B8C\u6210\u540E\uFF0C\u4F60\u53EF\u4EE5\u5BF9\u9879\u76EE\u4F9D\u8D56\u8FDB\u884C\u914D\u7F6E\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u6700\u65B0\u4F9D\u8D56\u4FDD\u8BC1\u9879\u76EE\u7684\u7A33\u5B9A\u6027\uFF0C\u6784\u5EFA\u5DE5\u5177\u4E5F\u4EC5\u5BF9\u6700\u65B0\u4F9D\u8D56\u8FDB\u884C\u652F\u6301\u3002

    • \u9009\u62E9\u4F60\u9700\u8981\u521B\u5EFA\u9879\u76EE\u7684\u76EE\u5F55\uFF0C\u5F00\u59CB\u540E\u9879\u76EE\u4F1A\u5728\u4F60\u9009\u62E9\u7684\u4F4D\u7F6E\u4E2D\u521B\u5EFA\uFF0C\u5E76\u7B49\u5F85\u6574\u4E2A\u8FC7\u7A0B\u5B8C\u6210\uFF0C\u9879\u76EE\u5C31\u521B\u5EFA\u597D\u4E86\u3002

    \u914D\u7F6E\u6A21\u677F

    \u914D\u7F6E\u6A21\u677F\u662F\u4E00\u4E2A\u6269\u5C55\u529F\u80FD\uFF0C\u4F60\u53EF\u4EE5\u9009\u62E9\u83DC\u5355\u680F \u9879\u76EE > \u914D\u7F6E\u6A21\u677F > \u65B0\u5EFA\u6A21\u677F\uFF0C\u5373\u53EF\u4F7F\u7528\u5F53\u524D\u586B\u5199\u7684\u914D\u7F6E\u521B\u5EFA\u4E00\u4EFD\u6A21\u677F\uFF0C\u4E0B\u6B21\u53EF\u4EE5\u4ECE \u5DF2\u4FDD\u5B58\u7684\u6A21\u677F \u4E2D\u91CD\u65B0\u8F7D\u5165\u6A21\u677F\uFF0C\u5373\u53EF\u8FD8\u539F\u5F53\u524D\u914D\u7F6E\u3002

    \u591A\u8BED\u8A00\u652F\u6301

    \u8F6F\u4EF6\u8BED\u8A00\u8DDF\u968F\u5F53\u524D\u7CFB\u7EDF\uFF0C\u4F60\u53EF\u4EE5\u5728\u83DC\u5355\u680F \u8BED\u8A00 (Language) \u4E00\u680F\u624B\u52A8\u9009\u62E9\u8F6F\u4EF6\u7684\u754C\u9762\u8BED\u8A00\u3002

    ',8);function P(I,A){const t=n("ExternalLinkIcon");return s(),d("div",null,[l,o("p",null,[p,o("a",u,[_,r(t)]),k]),o("p",null,[g,o("a",f,[b,r(t)]),m]),x])}const j=i(c,[["render",P],["__file","yukihookapi-projectbuilder.html.vue"]]);export{j as default}; +import{_ as i,r as n,o as s,c as d,b as o,d as r,a,e}from"./app.0312b331.js";const h="/YukiHookAPI/images/yukihookapi-projectbuilder-zh-cn.png",c={},l=a('

    YukiHookAPI \u6784\u5EFA\u5DE5\u5177

    \u8FD9\u662F\u4E00\u4E2A\u4F7F\u7528 YukiHookAPI \u4F5C\u4E3A\u6838\u5FC3\u7684 Xposed \u6A21\u5757\u81EA\u52A8\u6784\u5EFA\u5DE5\u5177\u3002

    \u5B9E\u73B0\u81EA\u52A8\u5316\u641C\u7D22\u4F9D\u8D56\u5FEB\u901F\u642D\u5EFA\u4E00\u4E2A\u5305\u542B Xposed \u6A21\u5757\u73AF\u5883\u7684 Android \u9879\u76EE\u6A21\u677F\u3002

    \u83B7\u53D6\u9879\u76EE

    \u672C\u9879\u76EE\u5B8C\u5168\u5F00\u6E90\u514D\u8D39\uFF0C\u4E14\u4F1A\u6839\u636E\u5927\u5BB6\u7684\u4F7F\u7528\u60C5\u51B5\u6301\u7EED\u7EF4\u62A4\uFF0C\u521D\u4EE3\u7248\u672C\u53EF\u80FD\u5B58\u5728\u4E0D\u5B8C\u5584\u6216 BUG\uFF0C\u6B22\u8FCE\u53CD\u9988\u3002

    ',5),p=e("\u9879\u76EE\u5730\u5740 "),u={href:"https://github.com/fankes/YukiHookAPI-ProjectBuilder",target:"_blank",rel:"noopener noreferrer"},_=e("YukiHookAPI-ProjectBuilder"),k=e("\u3002"),g=e("\u82E5\u4F60\u60F3\u76F4\u63A5\u4E0B\u8F7D\u53EF\u4EE5 "),f={href:"https://github.com/fankes/YukiHookAPI-ProjectBuilder/releases",target:"_blank",rel:"noopener noreferrer"},b=e("\u70B9\u51FB\u8FD9\u91CC"),m=e(" \u524D\u5F80 Release \u53D1\u5E03\u5730\u5740\u3002"),x=a('

    \u4F7F\u7528\u65B9\u6CD5

    \u8FD9\u91CC\u5305\u542B\u4E86\u57FA\u672C\u7684\u4F7F\u7528\u65B9\u6CD5\u548C\u529F\u80FD\u8BB2\u89E3\u3002

    \u57FA\u672C\u7528\u6CD5

    • \u8F6F\u4EF6\u4F7F\u7528\u8FC7\u7A0B\u9700\u8981\u5F53\u524D\u8BBE\u5907\u5DF2\u8FDE\u63A5\u4E92\u8054\u7F51\uFF0C\u82E5\u9879\u76EE\u4F9D\u8D56\u65E0\u6CD5\u641C\u7D22\u8BF7\u5C1D\u8BD5 \u79D1\u5B66\u4E0A\u7F51 \u3002

    • \u542F\u52A8\u8F6F\u4EF6\u540E\uFF0C\u5BF9\u4F60\u671F\u671B\u521B\u5EFA\u7684\u9879\u76EE\u8FDB\u884C\u7B80\u5355\u914D\u7F6E\uFF0C\u70B9\u51FB\u53F3\u4E0B\u89D2\u7684 \u6309\u94AE \u6216\u83DC\u5355\u680F\u9009\u62E9 \u9879\u76EE > \u5F00\u59CB\u521B\u5EFA \u5373\u53EF\u5F00\u59CB\u4EFB\u52A1\u3002

    • \u7B49\u5F85\u4F9D\u8D56\u81EA\u52A8\u641C\u7D22\u5B8C\u6210\u540E\uFF0C\u4F60\u53EF\u4EE5\u5BF9\u9879\u76EE\u4F9D\u8D56\u8FDB\u884C\u914D\u7F6E\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u6700\u65B0\u4F9D\u8D56\u4FDD\u8BC1\u9879\u76EE\u7684\u7A33\u5B9A\u6027\uFF0C\u6784\u5EFA\u5DE5\u5177\u4E5F\u4EC5\u5BF9\u6700\u65B0\u4F9D\u8D56\u8FDB\u884C\u652F\u6301\u3002

    • \u9009\u62E9\u4F60\u9700\u8981\u521B\u5EFA\u9879\u76EE\u7684\u76EE\u5F55\uFF0C\u5F00\u59CB\u540E\u9879\u76EE\u4F1A\u5728\u4F60\u9009\u62E9\u7684\u4F4D\u7F6E\u4E2D\u521B\u5EFA\uFF0C\u5E76\u7B49\u5F85\u6574\u4E2A\u8FC7\u7A0B\u5B8C\u6210\uFF0C\u9879\u76EE\u5C31\u521B\u5EFA\u597D\u4E86\u3002

    \u914D\u7F6E\u6A21\u677F

    \u914D\u7F6E\u6A21\u677F\u662F\u4E00\u4E2A\u6269\u5C55\u529F\u80FD\uFF0C\u4F60\u53EF\u4EE5\u9009\u62E9\u83DC\u5355\u680F \u9879\u76EE > \u914D\u7F6E\u6A21\u677F > \u65B0\u5EFA\u6A21\u677F\uFF0C\u5373\u53EF\u4F7F\u7528\u5F53\u524D\u586B\u5199\u7684\u914D\u7F6E\u521B\u5EFA\u4E00\u4EFD\u6A21\u677F\uFF0C\u4E0B\u6B21\u53EF\u4EE5\u4ECE \u5DF2\u4FDD\u5B58\u7684\u6A21\u677F \u4E2D\u91CD\u65B0\u8F7D\u5165\u6A21\u677F\uFF0C\u5373\u53EF\u8FD8\u539F\u5F53\u524D\u914D\u7F6E\u3002

    \u591A\u8BED\u8A00\u652F\u6301

    \u8F6F\u4EF6\u8BED\u8A00\u8DDF\u968F\u5F53\u524D\u7CFB\u7EDF\uFF0C\u4F60\u53EF\u4EE5\u5728\u83DC\u5355\u680F \u8BED\u8A00 (Language) \u4E00\u680F\u624B\u52A8\u9009\u62E9\u8F6F\u4EF6\u7684\u754C\u9762\u8BED\u8A00\u3002

    ',8);function P(I,A){const t=n("ExternalLinkIcon");return s(),d("div",null,[l,o("p",null,[p,o("a",u,[_,r(t)]),k]),o("p",null,[g,o("a",f,[b,r(t)]),m]),x])}const j=i(c,[["render",P],["__file","yukihookapi-projectbuilder.html.vue"]]);export{j as default}; diff --git a/docs/en/about/about.html b/docs/en/about/about.html index 4195bb578..e54253065 100644 --- a/docs/en/about/about.html +++ b/docs/en/about/about.html @@ -23,7 +23,7 @@ } About this Document | Yuki Hook API - + @@ -49,6 +49,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    Copyright © 2019-2023 HighCapable

    - + diff --git a/docs/en/about/changelog.html b/docs/en/about/changelog.html index f6ce41230..604afcfa3 100644 --- a/docs/en/about/changelog.html +++ b/docs/en/about/changelog.html @@ -23,11 +23,11 @@ } Changelog | Yuki Hook API - + -

    Changelog

    The version update history of YukiHookAPI is recorded here.

    Pay Attention

    We will only maintain the latest API version, if you are using an outdate API version, you voluntarily renounce any possibility of maintenance.

    Notice

    To avoid translation time consumption, Changelog will use Google Translation from Chinese to English, please refer to the original text for actual reference.

    Time zone of version release date: UTC+8

    1.1.7 | 2023.02.01  latest

    • Fixed the problem that the underlying Hook method cannot update the modified state synchronously when modifying parameters such as result during callback, thanks to the Issueopen in new window of Yongzheng Laiopen in new window
    • Move the entry class name file automatically generated by YukiHookAPI from assets/yukihookapi_init to resources/META-INF/yukihookapi_init
    • When only printing the exception stack, the msg parameter is allowed to be empty and the msg parameter can not be set, and the log with the msg parameter left blank will not be logged unless the exception stack is not empty
    • Fixed the bug that the log printed by the exception that occurs in the body of the Hook callback method has no specific method information
    • HookParam adds instanceOrNull variable and method, which can be used on the premise that the Hook instance is not sure whether it is empty to prevent the Hook instance from being empty and throw an exception
    • Fixed some process conflicts that may occur when Xposed modules are loaded
    • Decoupled all hookers in Member lookup functionality to MemberBaseFinder.MemberHookerManager
    • Modified the usage of by condition in YukiMemberHookCreator, now you can reuse by method to set multiple conditions
    • Removed wrong Class object declaration in Android type
    • The registerReceiver method in PackageParam.AppLifecycle adds the function of directly using IntentFilter to create a system broadcast listener
    • Fixed the problem that there may be multiple registration lifecycles in PackageParam.AppLifecycle

    1.1.6 | 2023.01.21  stale

    • Fixed the serious problem that ClassLoader does not match after PackageParam keeps a single instance when there may be multiple package names in the same process when Xposed Module is loaded
    • When the package name is not distinguished when there are multiple package names in the same process, stop loading the singleton child Hooker and print a warning message
    • Fixed the problem that the number of parameters is incorrect when methods such as HookParam.callOriginal, HookParam.invokeOriginal call the original method
    • Modify the method parameter name param of reflection calls in MethodFinder, ConstructorFinder, ReflectionFactory to args
    • Added the function of judging the parameters of the entry class constructor in the automatic processing program of the Xposed Module, the entry class needs to ensure that it does not have any constructor parameters

    1.1.5 | 2023.01.13  stale

    • Standardize and optimize the overall code style
    • Privatized some APIs called internally
    • The underlying API interface is decoupled as a whole to prepare for compatibility with more Hook Frameworks
    • Move some of the functions integrated in the API to ksp-xposed dependencies (decoupling), and the separate introduction of api dependencies will no longer contain references to functions such as third-party libraries
    • Documentation Quick Start page added instructions on when YukiHookAPI.Configs.isDebug needs to be closed
    • Standardize Java Primitive Types in type definitions and sync update to docs
    • Java type adds NumberClass type
    • Improved (Xposed) Host environment recognition
    • Take over all exceptions after loading the Xposed Module, if an exception occurs, it will automatically intercept and print the error log
    • Modify the Class that does not exist in the lower Android system version (Android 5.0) in the type definition to be an empty safe type
    • Adapt and support native Xposed, the minimum recommended version is Android 7.0
    • Added support for Hook entry class declared as object type (singleton)
    • Fixed the problem that the system below Android 8 does not support the Executable type, causing the Hook to fail
    • Fixed the problem of reporting an error when using the Activity proxy function for systems below Android 9 and limit the minimum supported version of this function to Android 7.0
    • Added the prohibition of resource injection and Activity proxy function injection into the current module's own instance process to prevent problems
    • Fixed a serious error that the return value of a method in the Hook process is not consistent with the target's inherited class and interface.
    • Fixed the problem that the object is empty when calling HookParam.callOriginal and HookParam.invokeOriginal when the current Hook instance object is static
    • Optimize the function of judging the Tai Chi activation method and update the relevant instructions of the document synchronously
    • Obsolete YukiHookAPI.Status.executorName, YukiHookAPI.Status.executorVersion, please move to YukiHookAPI.Status.Executor
    • Adapted the YukiHookAPI.Status.Executor.name name display function of some third-party Hook Frameworks
    • Added Class.extends, Class.implements and other methods, which can more conveniently judge the inheritance and interface relationship of the current Class
    • Added generic methods of the same name as Class.toClass, Class.toClassOrNull and other related methods, you can use generics to constrain the instance object type of known Class
    • Modify the return value of the classOf<T> method to the generic type T to constrain the instance object type of the known Class
    • Added initialize parameter of Class related extension method, which can control whether to initialize its static method block at the same time when getting Class object
    • Added param { ... }, type { ... } and other usages in the variable, method, and construction method search functions, which can add more specific conditional judgments to the searched objects
    • The loadApp method of PackageParam adds the isExcludeSelf parameter, which can be used to exclude Hook-related functions from injecting into the module's own instance process
    • The onAppLifecycle method of PackageParam adds the isOnFailureThrowToApp parameter, which can directly throw the exception that occurs in the lifecycle method body to the host
    • Modify appClassLoader in PackageParam to be a modifiable variable, which can dynamically set the ClassLoader used by the host in the Hook process
    • Added dataExtra function in HookParam, which can be used to temporarily store the data in the Hook method body
    • Obsolete isRunInNewXShareMode, isXSharePrefsReadable in YukiHookModulePrefs, merged into isPreferencesAvailable
    • Class.allFields, Class.allMethods and other related methods add the isAccessible parameter, which can control when the member object can be set as an accessible type
    • Fixed the problem that only the last method body will be called back when receiving the same key-value data in an Activity when there are multiple hosts in YukiHookDataChannel
    • Added priority parameter in wait and other related methods of YukiHookDataChannel, you can pass in ChannelPriority to customize the conditions for callback data results
    • YukiHookDataChannel adds the function of automatically using ChannelDataWrapper type wrapper when sending data, which improves the user experience and enhances data protection
    • YukiHookDataChannel has added the function of limiting the maximum byte size of data sent at one time to prevent the app from crashing due to excessive data
    • YukiHookDataChannel has added the function of automatically segmenting when the sent data is too large, only supports List, Map, Set, String types
    • YukiHookLogger adds the contents method and the data parameter of saveToFile, which can be passed in custom debug log data for formatting or saving to a file
    • Fixed the problem that the debug log data package name processed by YukiHookLogger may be incorrect in the (Xposed) Host environment
    • Fixed the problem that the package name may be incorrect on some systems (in some system apps) when the Xposed Module loads the Resource Hook event

    1.1.4 | 2022.10.04  stale

    • Fixed the issue that YukiHookDataChannel may not respond to broadcast events in the system framework, reproduced in A13
    • Fixed the issue that YukiHookDataChannel could not communicate with Module App in Host App for multiple versions
    • Added obtainLoggerInMemoryData method in YukiHookDataChannel to share debug log data between module and host
    • Modify the type of YukiHookLogger.inMemoryData to ArrayList and change YukiLoggerData to data class
    • Fixed YukiLoggerData printing blank when the package name is empty in the module
    • Added loadApp, loadZygote, loadSystem, withProcess multi-parameter methods of the same name in PackageParam
    • Fixed some possible bugs

    1.1.3 | 2022.09.30  stale

    • Fixed a fatal bug where the Hook entry class name could not be customized
    • Added some code notes in LoggerFactory and updated special features documentation

    1.1.2 | 2022.09.30  outdate

    • Documentation Basic Knowledge page add a friend link to the English version
    • Fixed YukiBaseHooker comments in English code note link errors
    • Fixed ClassCastException in ModuleClassLoader
    • Fixed and standardize some code notes
    • Added ModuleClassLoader exclusion list function, you can use excludeHostClasses and excludeModuleClasses methods to customize the exclusion list
    • Added YukiLoggerData real-time log data class, you can get the log array in real time through YukiHookLogger.inMemoryData
    • Added ClassLoader.listOfClasses method, which can directly get all Class in the current Dex

    1.1.1 | 2022.09.28  outdate

    • Fixed the problem of wrong document friend links in Basic Knowledge page
    • Fixed document favicon not showing up
    • Fixed bug in DexClassFinder search conditions

    1.1.0 | 2022.09.28  outdate

    • This is a major version update, please refer to API Document and Special Features for the changes and usage mentioned in the changelog
    • Change the help documentation framework to VuePressopen in new window
    • Unify and standardize the terms and nouns in the document, for example, "query" is always changed to "find", XposedHelper is misspelled and changed to XposedHelpers
    • Documentation Basic Knowledge page to add friend links, Simplified Chinese only
    • Convert Class and Method of Hook App Demo to Java to provide better demo effect
    • Fixed code comment naming in Hook Module Demo
    • Refactored a lot of low-level Hook logic and the docking method of Xposed API
    • Removed HookParamWrapper, it now interfaces directly with YukiBridgeFactory
    • Moved methods in section YukiHookBridge to AppParasitics
    • Removed HookParam.args and the underlying direct connection method setArgs, directly get and set the object of the current array
    • Optimized automatic handler to merge referenced jar into stub project
    • Fixed the problem that the module package name cannot be correctly matched when multi-project packaging, and modify the module package name matching logic of the automatic handler, thanks to 5ec1cffopen in new window for the feedback and solutions provided
    • Internal closure processing for the methods of API private tool classes to avoid polluting the top-level namespace
    • Fixed Creater naming to Creator for all reflection and Hook classes
    • Added YukiHookAPI.Status.compiledTimestamp function, which can get the compilation completion timestamp when used as an Xposed module
    • Added YukiHookAPI.Status.isXposedEnvironment function, which can determine whether the current (Xposed) host environment or module environment is
    • The debug logging function has been overhauled, and functions such as YukiHookAPI.Configs.debugTag have been merged into YukiHookLogger.Configs
    • The debug log can be added to specify the printing method as XposedBridge.log or Logd
    • The package name of the current host and the current user ID are added to the debug log by default for debugging, you can change it yourself in the debugLog configuration
    • Added generic function to reflect and call generics, you can use it in Class or CurrentClass
    • obsolete the buildOfAny method, now use the buildOf method directly (without generics) to use the constructor to create a new object and get the result Any
    • Fixed the issue of null pointer exception when using hasExtends
    • CurrentClass added non-lambda method of calling
    • CurrentClass adds name and simpleName functions
    • Completely rewrite the core method of ReflectionTool, sorting and classifying different search conditions
    • Fixed the problem that Member obtained by directly calling declared in ReflectionTool throws an exception
    • Fixed UndefinedType in ReflectionTool is not correctly judged in Method and Constructor conditions
    • Added a friendly prompt method when the reflection search result is abnormal, which can specifically locate the problem that Member cannot be found under specified conditions
    • Added VagueType condition in Method and Constructor for reflection search, which can be used in param condition to ignore parameters you don't want to fill in
    • Added paramCount { ... } condition in Method and Constructor of reflection search, now you can directly get it in it to customize your judgment condition
    • The current method is added to the FieldFinder result, which can directly create a call space for the result instance
    • Modified the modifiers condition and name condition in the reflection lookup function, now you need to return a Boolean at the end of the method body to make the condition true
    • as* function in ModifierRules renamed to is*, thanks to Kitsuneopen in new window suggestion
    • Added RemedyPlan feature in FieldFinder
    • Added Class fuzzy search function (Beta) in Dex, you can now directly use searchClass function to fuzzy search Class with specified conditions
    • Added multiple search function in reflection search, you can use relative search conditions to obtain multiple search results at the same time, thanks to AA and Kitsuneopen in new window for suggestions
    • Fixed the problem that the object obtained by appClassLoader is incorrect in system applications in some systems, thanks to Luckyzyxopen in new window for the feedback
    • Modified the calling method of XposedBridge.invokeOriginalMethod and added original function in MethodFinder.Result.Instance
    • Fixed the problem of wrong value of getStringSet method in YukiHookModulePrefs and optimize the code style, thanks to Teddy_Zhuopen in new window PRopen in new window
    • Modify YukiHookModulePrefs to intercept exceptions that may not exist in XSharePreference
    • Fixed the problem that YukiHookDataChannel could not be successfully registered in some third-party ROM system frameworks
    • Secured YukiHookDataChannel, now it can only communicate between modules from the specified package name and the host
    • Added automatic hook SharedPreferences to fix the problem that file permissions are not 0664 in some systems, thanks to 5ec1cffopen in new window for the feedback and implementation code provided
    • Added YukiHookAPI.Configs.isEnableHookSharedPreferences function, which is disabled by default and can be enabled if the permission of SharedPreferences is incorrect
    • Fixed the bug that the no-parameter construction method cannot be found when searching for Constructor without filling in the search conditions, thanks B5 KAKA for the feedback
    • Detach Result instances located in method, constructor in injectMember to Process
    • Added the useDangerousOperation method in the Hook process, which will automatically stop the Hook and print an error after the function in the Hook Dangerous List is not declared
    • Added module resource injection and Activity proxy functions, you can call injectModuleAppResources and registerModuleAppActivities to use
    • Added ModuleContextThemeWrapper function, you can call applyModuleTheme to create the Context of a module in any Activity
    • Added ClassLoader.onLoadClass function, which can be used to listen for events when the loadClass method of ClassLoader is called
    • obsolete classOf and clazz extension methods, add toClass and toClassOrNull usage, please move to the new method now
    • VariousClass adds a getOrNull method, which can return null instead of throwing an exception when it can't match Class
    • Removed isUseAppClassLoader parameter in PackageParam.hook, changed it to isForceUseAbsolute and automatically matched the target Class
    • PackageParam adds systemContext function, you can call this function at any time to get a persistent Context
    • no longer expose any methods in HookClass
    • Added throwToApp function in HookParam, which can throw exceptions directly to the host
    • The onFailureThrowToApp function is added to the Hook callback, which can be directly thrown to the host when an exception occurs
    • Modified the printing logic of the debug log, the time-consuming records in the reflection search function will only be printed during the Hook process
    • Added the function of removing Hook in the Hook process, you can use the remove and removeSelf methods to remove the hook
    • Fixed the issue that caused the host to throw an exception when ReplaceHook failed, and now it is modified to call the original method to ensure the normal operation of the host function
    • Added the function of checking the return value of the method in the Hook process. If the return value does not match, it will automatically throw an exception or print an error according to the situation
    • Added array type to Resources Hook, thanks to PRopen in new window of GSWXXNopen in new window
    • Moved me.weishu.reflection to thirdparty to prevent conflicting dependencies of the same name introduced at the same time
    • Remove the exception thrown when the Hook method body is empty, and modify it to print the warning log
    • Modify the exception handling logic of AppLifecycle and throw it directly to the host when an exception occurs
    • Updated Demo API version to 33

    1.0.92 | 2022.05.31  outdate

    • Fixed the naming method of callback in a large number of methods
    • Changed the solution to fix the problem that YukiHookDataChannel cannot call back the current Activity broadcast on devices lower than Android 12
    • The InjectYukiHookWithXposed annotation adds the isUsingResourcesHook function, now you can selectively disable the dependency interface that automatically generates IXposedHookInitPackageResources

    1.0.91 | 2022.05.29  outdate

    • Fixed the ClassLoader error when the customized system of some devices is booted in the LSPosed environment, thanks to Luckyzyxopen in new window for the feedback
    • Fixed YukiHookDataChannel not being able to call back the current Activity broadcast on ZUI and systems below Android 12
    • Integrate the YukiHookModuleStatus function into YukiHookAPI.Status, rewrite a lot of methods, now you can judge the status information such as module activation in the module and the host in both directions

    1.0.90 | 2022.05.27  outdate

    • Fixed YukiHookDataChannel crashing when the module sets the listener callback
    • Fixed YukiHookDataChannel still calling back when not in current Activity
    • Remove the default value of YukiHookDataChannel callback event, no callback
    • Removed YukiHookModulePrefs warning printed if XShare is unreadable
    • Added the isXSharePrefsReadable method in YukiHookModulePrefs to determine whether the current XShare is available

    1.0.89 | 2022.05.26  outdate

    • Fixed the problem that YukiHookDataChannel cannot be repeatedly set to monitor, and added the function of repeating response in different Activity modules and automatically following Activity to destroy the monitor function
    • Added YukiHookDataChannel repeated listening use case description document
    • Add the onAlreadyHooked method to determine whether the current method is repeated Hook
    • Modify part of the logic of repeatedly adding HashMap, remove the putIfAbsent method, allow to override the addition
    • Fixed several possible bugs

    1.0.88 | 2022.05.25  outdate

    • Fully decoupled from Xposed API
    • Added android type in type
    • Separate YukiHookModuleStatus from auto-generated code and add isEnableHookModuleStatus switch, it is up to you to enable or not
    • Internal closure processing for the constructors of a large number of classes in the API
    • Set YukiHookModulePrefs to run as a singleton to prevent repeated creation and waste of system resources
    • Fixed the bug that Hook cannot be nested since version 1.0.80, and optimize the related functions of nested Hook
    • Modify the Hooker storage scheme from HashSet to HashMap to prevent the problem of repeatedly adding Hookers
    • Modify the core implementation method of Hook, add duplicate checking to avoid repeating the Hook multiple callbacks to the HookParam method
    • MethodFinder and FieldFinder add the function of finding fuzzy methods and variable names, you can call name { ... } to set search conditions, and support regular expressions
    • Optimize and modify the way to get appContext to reduce the possibility of getting empty
    • Modify the print TAG of logger in the automatically generated code to default to your custom name, which is convenient for debugging
    • Optimize the Hooker implementation of YukiHookBridge to improve Hook performance
    • PackageParam adds the onAppLifecycle method, which can natively monitor the life cycle of the host and implement the registration system broadcast function
    • Added YukiHookDataChannel function to communicate using system out-of-order broadcast while the module and the host remain alive
    • YukiHookDataChannel adds the checkingVersionEquals method, which can be monitored to verify that the host has not updated the version mismatch problem after the module is updated
    • Added Java version example in the example code of demo-module for reference only

    1.0.87 | 2022.05.10  outdate

    • Added refreshModuleAppResources function to adapt Resources refresh when the language region, font size, resolution changes, etc.
    • Added isEnableModuleAppResourcesCache function, you can set whether to automatically cache the resources of the current module

    1.0.86 | 2022.05.06  outdate

    • Fixed the problem of continuous error reporting during initZygote when Resources Hook is not supported, reproduced in ZUI/LSPosed CI(1.8.3-6550)
    • Optimize and handle exceptions for Resources Hook, only print errors and warnings if they are used and not supported

    1.0.85 | 2022.05.04  outdate

    • Fixed a serious problem of not being able to hook the system framework, since 1.0.80
    • Added in the debug log to distinguish the package name loaded by initZygote as android-zygote, packageName keeps android unchanged

    1.0.83 | 2022.05.04  outdate

    • Fixed YukiHookModuleStatus reporting a lot of errors after loadSystem
    • Added android type in type
    • Updated example descriptions in help documentation

    1.0.82 | 2022.05.04  outdate

    • Fixed a concept confusion error, distinguishing the relationship between initZygote and the system framework, there are problems with the previous comments and documentation, I am very sorry
    • PackageParam adds loadSystem method, no need to write loadApp(name = "android") to hook the system framework

    1.0.81 | 2022.05.04  outdate

    • Fixed the problem that the method and constructor that cannot be found in the Hook method body still output the error log after setting the condition using the by method
    • Added a global log to display the package name of the current Hook APP during the execution of the Hook, and fixed a problem with the printing style of the error log

    1.0.80 | 2022.05.01  outdate

    • The InjectYukiHookWithXposed annotation adds the entryClassName function, which can customize the generated xposed_init entry class name
    • YukiHookXposedInitProxy renamed to IYukiHookXposedInit, the original interface name has been invalidated and will be deleted directly in subsequent versions
    • Added initZygote and Resources Hook functions to support Hook Layout
    • Added onXposedEvent method to listen to all events of native Xposed API
    • Perform inline processing on the lambda of the Hook function to avoid generating excessively broken anonymous classes and improve the running performance after compilation
    • Fixed PrefsData compiled method body copy is too large
    • Added XSharePreference readability test, which will automatically print a warning log if it fails
    • PackageParam adds appResources, moduleAppResources, moduleAppFilePath functions
    • loadApp of PackageParam adds the function of not writing name, and all APPs are filtered by default
    • PackageParam adds the loadZygote method, which can directly hook the system framework
    • PackageParam added resources().hook function
    • Optimization method, construction method, variable search function, the error log that cannot be found will display the set query conditions first
    • Added hasExtends extension method to determine whether the current Class has an inheritance relationship
    • Added isSupportResourcesHook function to determine whether resource hooks are currently supported (Resources Hook)
    • current function adds superClass method to call superclass
    • New superClass query conditions for search methods, construction methods and variables, you can continue to search in the parent class
    • YukiHookAPI lots of methods are decoupled from Xposed API
    • Added native Hook priority function of Xposed API
    • Fixed the problem that isFirstApplication may be inaccurate
    • Block the problem that MiuiCatcherPatch repeatedly calls the Hook entry method on the MIUI system
    • Optimize Hook entry calling method to avoid multiple calls due to Hook Framework issues
    • Fixed the problem that Hook ClassLoader causes Hook to freeze, thanks to WankkoReeopen in new window for the feedback
    • Improve the performance after the XC_Callback interface is connected
    • Java type added ClassLoader type
    • Optimize the API help documentation, fix the problem that the page may be continuously cached

    1.0.78 | 2022.04.18  outdate

    • YukiHookModulePrefs adds isRunInNewXShareMode method, which can be used to determine whether the module is currently in New XSharePreference mode
    • Fixed YukiHookModulePrefs working in New XSharePreference mode
    • Added ModulePreferenceFragment, now you can completely replace PreferenceFragmentCompat and start using the new functionality
    • Adapt the Sp data storage solution of PreferenceFragmentCompat, thanks to mahoshojoHCGopen in new window for feedback
    • Update autohandlers and Kotlin dependencies to the latest version
    • Fixed some bugs in documentation and code comments

    1.0.77 | 2022.04.15  outdate

    • YukiHookModulePrefs added clear method, thanks to WankkoReeopen in new window for the suggestion
    • YukiHookModulePrefs added getStringSet, putStringSet, all methods
    • Added any method to args of HookParam
    • Added ModuleApplication, which can be inherited in modules to achieve more functions
    • Connect all findClass functions to the Xposed API, and continue to use native ClassLoader in non-hosted environments
    • Fixed some possible bugs

    1.0.75 | 2022.04.13  outdate

    • Corrected the logic recognition part of the automatic handler, thanks to ApeaSuperzopen in new window contribution
    • Fixed an issue where the reference to a doc comment was not changed
    • firstArgs and lastArgs methods have been removed from HookParam, now you can use args().first() and args().last() instead of it
    • Removed default parameter index = 0 in args() in HookParam, now you can use args().first() or args(index = 0) to replace it
    • The result function in HookParam adds generic matching, now you can use result<T> to match the known return value type of your target method
    • The emptyParam condition is added to the method and constructor query function, and the misunderstanding of the query condition that needs to be paid attention to in the document has been improved
    • Added android type in type

    1.0.73 | 2022.04.10  outdate

    • Fixed some Chinese translation errors in documents, thanks to WankkoReeopen in new window for their contributions
    • Fixed the problem that XC_LoadPackage.LoadPackageParam throws an exception when the content is empty in some cases, thanks to Luckyzyxopen in new window for the feedback
    • Fixed some known bugs and improve Hook stability

    1.0.72 | 2022.04.09  outdate

    • Update API documentation to new address
    • Add appContext function to PackageParam
    • Fixed some known bugs and improve Hook stability

    1.0.71 | 2022.04.04  outdate

    • Fixed a serious issue that would stop the Hook from throwing an exception when VariousClass could not be matched

    1.0.70 | 2022.04.04  outdate

    • Fixed instanceClass reporting an error after being called in a static instance
    • Add isUseAppClassLoader function in Hook process, thanks to WankkoReeopen in new window for feedback
    • Added the withProcess function, which can be hooked according to the currently specified process of the APP
    • Fixed critical logic errors in lookup methods, constructor classes and variables
    • Fixed the problem that the abnormal output cannot be ignored when the Hook target class does not exist
    • Fixed the problem that the Hook could not take effect due to the fast loading of the APP startup method in some cases
    • Fixed allMethods not throwing an exception when it is not hooked to a method, thanks to WankkoReeopen in new window for the feedback
    • Added Hook status monitoring function, thanks to WankkoReeopen in new window for the suggestion
    • Modify the way the Xposed entry is injected into the class, and redefine the definition domain of the API
    • Added obfuscated method and variable lookup function, you can use different types of filter index to locate the specified method and variable, thanks to WankkoReeopen in new window for the ideas provided
    • When looking for methods and variables, multiple types are allowed, such as the class name declared by String and VariousClass
    • Add a new current function, which can build a reflection method operation space for any class, and easily call and modify the methods and variables in it
    • Fixed a lot of bugs in the hook process, thanks to WankkoReeopen in new window for contributing to this project

    1.0.69 | 2022.03.30  outdate

    • Added and improved annotations for some method functions
    • Added more example Hook content in Demo
    • Fixed the issue that only the last one takes effect when allMethods is used multiple times in a Hook instance, thanks to WankkoReeopen in new window for the feedback

    1.0.68 | 2022.03.29  outdate

    • Added new use case and LSPosed scope in Demo
    • Added Member lookup cache and lookup cache configuration switches
    • Removed and modified MethodFinder, FieldFinder and HookParam related method calls
    • Add more cast types in Finder and support cast as array
    • Overall performance and stability improvements
    • Fixed bugs that may exist in the previous version

    1.0.67 | 2022.03.27  outdate

    • Added three modifiers functions in Finder, which can filter static, native, public, abstract and many other description types
    • When searching for methods and constructors, the method parameter type can be blurred to a specified number for searching
    • Added hasModifiers extension for Member
    • Added give method in MethodFinder and ConstructorFinder to get primitive types
    • Added PrefsData template function in YukiHookModulePrefs
    • Completely refactored method, constructor and variable lookup scheme
    • Optimized code comments and fixed possible bugs

    1.0.66 | 2022.03.25  outdate

    • Fixed a serious bug in MethodFinder
    • Added args call method in hookParam
    • Fixed other possible problems and fix some class annotation problems

    1.0.65 | 2022.03.25  outdate

    • Republished version to fix the incorrect new version of the Maven repository due to cache issues
    • Added MethodFinder and FieldFinder new return value calling methods
    • Fixed possible problems and fix possible problems during the use of Tai Chi
    • Fixed possible problems with auto-generated Xposed entry classes
    • Added android type and java type in type

    1.0.6 | 2022.03.20  outdate

    • Fixed YukiHookModulePrefs being ignored every time after using direct once to ignore cache
    • Added new API, abolished the traditional usage of isActive to judge module activation
    • Fixed the issue of printing debug logs when using the API in a non-Xposed environment
    • Fixed log output issue and unintercepted exception issue when looking for Field
    • Decoupling Xposed API in ReflectionUtils
    • Added YukiHookModuleStatus method name confusion to reduce the size of module generation
    • The welcome message will no longer be printed when loading the module's own Hook
    • Fixed some bugs that still exist in the previous version

    1.0.55 | 2022.03.18  outdate

    • Fixed an annotation error
    • Temporarily fix a bug
    • Added a large number of android types in type and a small number of java types
    • Fixed compatibility issues between new and old Kotlin APIs

    1.0.5 | 2022.03.18  outdate

    • Fixed the problem that the welcome message was printed multiple times in the case of the old version of the LSPosed framework
    • Added onInit method to configure YukiHookAPI
    • Added executorName and executorVersion to get the name and version number of the current hook framework
    • Added by method to set the timing and condition of Hook
    • YukiHookModulePrefs adds a controllable key-value cache, which can dynamically update data when the host is running
    • Fixed some possible bugs

    1.0.4 | 2022.03.06  outdate

    • Fixed LSPosed cannot find XposedBridge after enabling "Only module classloader can use Xposed API" option in latest version
    • Added constant version name and version number for YukiHookAPI
    • Added hasField method and isAllowPrintingLogs configuration parameter
    • Added isDebug to enable the API to automatically print the welcome message to test whether the module is valid

    1.0.3 | 2022.03.02  outdate

    • Fixed a potential exception not intercepted BUG
    • Added ignoredError function
    • Added android type in type
    • Added ClassNotFound function after listening to hook

    1.0.2 | 2022.02.18  outdate

    • Fixed the problem that the project path cannot be found under Windows
    • Remove part of reflection API, merge into BaseFinder for integration
    • Add a method to create Hook directly using string

    1.0.1 | 2022.02.15  outdate

    • RemedyPlan adds onFind function
    • Integrate and modify some reflection API code
    • Added java type in type
    • Fixed the issue that ignored errors still output in the console

    1.0 | 2022.02.14  outdate

    • The first version is submitted to Maven
    - +

    Changelog

    The version update history of YukiHookAPI is recorded here.

    Pay Attention

    We will only maintain the latest API version, if you are using an outdate API version, you voluntarily renounce any possibility of maintenance.

    Notice

    To avoid translation time consumption, Changelog will use Google Translation from Chinese to English, please refer to the original text for actual reference.

    Time zone of version release date: UTC+8

    1.1.8 | 2023.02.01  latest

    • Fixed the problem that the underlying Hook method cannot update the modified state synchronously when modifying parameters such as result during callback, thanks to the Issueopen in new window of Yongzheng Laiopen in new window
    • Move the entry class name file automatically generated by YukiHookAPI from assets/yukihookapi_init to resources/META-INF/yukihookapi_init
    • When only printing the exception stack, the msg parameter is allowed to be empty and the msg parameter can not be set, and the log with the msg parameter left blank will not be logged unless the exception stack is not empty
    • Fixed the bug that the log printed by the exception that occurs in the body of the Hook callback method has no specific method information
    • HookParam adds instanceOrNull variable and method, which can be used on the premise that the Hook instance is not sure whether it is empty to prevent the Hook instance from being empty and throw an exception
    • Decoupled all hookers in Member lookup functionality to MemberBaseFinder.MemberHookerManager
    • Modified the usage of by condition in YukiMemberHookCreator, now you can reuse by method to set multiple conditions
    • Removed wrong Class object declaration in Android type
    • The registerReceiver method in PackageParam.AppLifecycle adds the function of directly using IntentFilter to create a system broadcast listener
    • Fixed the problem that there may be multiple registration lifecycles in PackageParam.AppLifecycle
    • Revert: The 1.1.7 version has been withdrawn due to a serious problem, please update to this version directly (the update log is the same as version 1.1.7)

    1.1.6 | 2023.01.21  stale

    • Fixed the serious problem that ClassLoader does not match after PackageParam keeps a single instance when there may be multiple package names in the same process when Xposed Module is loaded
    • When the package name is not distinguished when there are multiple package names in the same process, stop loading the singleton child Hooker and print a warning message
    • Fixed the problem that the number of parameters is incorrect when methods such as HookParam.callOriginal, HookParam.invokeOriginal call the original method
    • Modify the method parameter name param of reflection calls in MethodFinder, ConstructorFinder, ReflectionFactory to args
    • Added the function of judging the parameters of the entry class constructor in the automatic processing program of the Xposed Module, the entry class needs to ensure that it does not have any constructor parameters

    1.1.5 | 2023.01.13  stale

    • Standardize and optimize the overall code style
    • Privatized some APIs called internally
    • The underlying API interface is decoupled as a whole to prepare for compatibility with more Hook Frameworks
    • Move some of the functions integrated in the API to ksp-xposed dependencies (decoupling), and the separate introduction of api dependencies will no longer contain references to functions such as third-party libraries
    • Documentation Quick Start page added instructions on when YukiHookAPI.Configs.isDebug needs to be closed
    • Standardize Java Primitive Types in type definitions and sync update to docs
    • Java type adds NumberClass type
    • Improved (Xposed) Host environment recognition
    • Take over all exceptions after loading the Xposed Module, if an exception occurs, it will automatically intercept and print the error log
    • Modify the Class that does not exist in the lower Android system version (Android 5.0) in the type definition to be an empty safe type
    • Adapt and support native Xposed, the minimum recommended version is Android 7.0
    • Added support for Hook entry class declared as object type (singleton)
    • Fixed the problem that the system below Android 8 does not support the Executable type, causing the Hook to fail
    • Fixed the problem of reporting an error when using the Activity proxy function for systems below Android 9 and limit the minimum supported version of this function to Android 7.0
    • Added the prohibition of resource injection and Activity proxy function injection into the current module's own instance process to prevent problems
    • Fixed a serious error that the return value of a method in the Hook process is not consistent with the target's inherited class and interface.
    • Fixed the problem that the object is empty when calling HookParam.callOriginal and HookParam.invokeOriginal when the current Hook instance object is static
    • Optimize the function of judging the Tai Chi activation method and update the relevant instructions of the document synchronously
    • Obsolete YukiHookAPI.Status.executorName, YukiHookAPI.Status.executorVersion, please move to YukiHookAPI.Status.Executor
    • Adapted the YukiHookAPI.Status.Executor.name name display function of some third-party Hook Frameworks
    • Added Class.extends, Class.implements and other methods, which can more conveniently judge the inheritance and interface relationship of the current Class
    • Added generic methods of the same name as Class.toClass, Class.toClassOrNull and other related methods, you can use generics to constrain the instance object type of known Class
    • Modify the return value of the classOf<T> method to the generic type T to constrain the instance object type of the known Class
    • Added initialize parameter of Class related extension method, which can control whether to initialize its static method block at the same time when getting Class object
    • Added param { ... }, type { ... } and other usages in the variable, method, and construction method search functions, which can add more specific conditional judgments to the searched objects
    • The loadApp method of PackageParam adds the isExcludeSelf parameter, which can be used to exclude Hook-related functions from injecting into the module's own instance process
    • The onAppLifecycle method of PackageParam adds the isOnFailureThrowToApp parameter, which can directly throw the exception that occurs in the lifecycle method body to the host
    • Modify appClassLoader in PackageParam to be a modifiable variable, which can dynamically set the ClassLoader used by the host in the Hook process
    • Added dataExtra function in HookParam, which can be used to temporarily store the data in the Hook method body
    • Obsolete isRunInNewXShareMode, isXSharePrefsReadable in YukiHookModulePrefs, merged into isPreferencesAvailable
    • Class.allFields, Class.allMethods and other related methods add the isAccessible parameter, which can control when the member object can be set as an accessible type
    • Fixed the problem that only the last method body will be called back when receiving the same key-value data in an Activity when there are multiple hosts in YukiHookDataChannel
    • Added priority parameter in wait and other related methods of YukiHookDataChannel, you can pass in ChannelPriority to customize the conditions for callback data results
    • YukiHookDataChannel adds the function of automatically using ChannelDataWrapper type wrapper when sending data, which improves the user experience and enhances data protection
    • YukiHookDataChannel has added the function of limiting the maximum byte size of data sent at one time to prevent the app from crashing due to excessive data
    • YukiHookDataChannel has added the function of automatically segmenting when the sent data is too large, only supports List, Map, Set, String types
    • YukiHookLogger adds the contents method and the data parameter of saveToFile, which can be passed in custom debug log data for formatting or saving to a file
    • Fixed the problem that the debug log data package name processed by YukiHookLogger may be incorrect in the (Xposed) Host environment
    • Fixed the problem that the package name may be incorrect on some systems (in some system apps) when the Xposed Module loads the Resource Hook event

    1.1.4 | 2022.10.04  stale

    • Fixed the issue that YukiHookDataChannel may not respond to broadcast events in the system framework, reproduced in A13
    • Fixed the issue that YukiHookDataChannel could not communicate with Module App in Host App for multiple versions
    • Added obtainLoggerInMemoryData method in YukiHookDataChannel to share debug log data between module and host
    • Modify the type of YukiHookLogger.inMemoryData to ArrayList and change YukiLoggerData to data class
    • Fixed YukiLoggerData printing blank when the package name is empty in the module
    • Added loadApp, loadZygote, loadSystem, withProcess multi-parameter methods of the same name in PackageParam
    • Fixed some possible bugs

    1.1.3 | 2022.09.30  stale

    • Fixed a fatal bug where the Hook entry class name could not be customized
    • Added some code notes in LoggerFactory and updated special features documentation

    1.1.2 | 2022.09.30  outdate

    • Documentation Basic Knowledge page add a friend link to the English version
    • Fixed YukiBaseHooker comments in English code note link errors
    • Fixed ClassCastException in ModuleClassLoader
    • Fixed and standardize some code notes
    • Added ModuleClassLoader exclusion list function, you can use excludeHostClasses and excludeModuleClasses methods to customize the exclusion list
    • Added YukiLoggerData real-time log data class, you can get the log array in real time through YukiHookLogger.inMemoryData
    • Added ClassLoader.listOfClasses method, which can directly get all Class in the current Dex

    1.1.1 | 2022.09.28  outdate

    • Fixed the problem of wrong document friend links in Basic Knowledge page
    • Fixed document favicon not showing up
    • Fixed bug in DexClassFinder search conditions

    1.1.0 | 2022.09.28  outdate

    • This is a major version update, please refer to API Document and Special Features for the changes and usage mentioned in the changelog
    • Change the help documentation framework to VuePressopen in new window
    • Unify and standardize the terms and nouns in the document, for example, "query" is always changed to "find", XposedHelper is misspelled and changed to XposedHelpers
    • Documentation Basic Knowledge page to add friend links, Simplified Chinese only
    • Convert Class and Method of Hook App Demo to Java to provide better demo effect
    • Fixed code comment naming in Hook Module Demo
    • Refactored a lot of low-level Hook logic and the docking method of Xposed API
    • Removed HookParamWrapper, it now interfaces directly with YukiBridgeFactory
    • Moved methods in section YukiHookBridge to AppParasitics
    • Removed HookParam.args and the underlying direct connection method setArgs, directly get and set the object of the current array
    • Optimized automatic handler to merge referenced jar into stub project
    • Fixed the problem that the module package name cannot be correctly matched when multi-project packaging, and modify the module package name matching logic of the automatic handler, thanks to 5ec1cffopen in new window for the feedback and solutions provided
    • Internal closure processing for the methods of API private tool classes to avoid polluting the top-level namespace
    • Fixed Creater naming to Creator for all reflection and Hook classes
    • Added YukiHookAPI.Status.compiledTimestamp function, which can get the compilation completion timestamp when used as an Xposed module
    • Added YukiHookAPI.Status.isXposedEnvironment function, which can determine whether the current (Xposed) host environment or module environment is
    • The debug logging function has been overhauled, and functions such as YukiHookAPI.Configs.debugTag have been merged into YukiHookLogger.Configs
    • The debug log can be added to specify the printing method as XposedBridge.log or Logd
    • The package name of the current host and the current user ID are added to the debug log by default for debugging, you can change it yourself in the debugLog configuration
    • Added generic function to reflect and call generics, you can use it in Class or CurrentClass
    • obsolete the buildOfAny method, now use the buildOf method directly (without generics) to use the constructor to create a new object and get the result Any
    • Fixed the issue of null pointer exception when using hasExtends
    • CurrentClass added non-lambda method of calling
    • CurrentClass adds name and simpleName functions
    • Completely rewrite the core method of ReflectionTool, sorting and classifying different search conditions
    • Fixed the problem that Member obtained by directly calling declared in ReflectionTool throws an exception
    • Fixed UndefinedType in ReflectionTool is not correctly judged in Method and Constructor conditions
    • Added a friendly prompt method when the reflection search result is abnormal, which can specifically locate the problem that Member cannot be found under specified conditions
    • Added VagueType condition in Method and Constructor for reflection search, which can be used in param condition to ignore parameters you don't want to fill in
    • Added paramCount { ... } condition in Method and Constructor of reflection search, now you can directly get it in it to customize your judgment condition
    • The current method is added to the FieldFinder result, which can directly create a call space for the result instance
    • Modified the modifiers condition and name condition in the reflection lookup function, now you need to return a Boolean at the end of the method body to make the condition true
    • as* function in ModifierRules renamed to is*, thanks to Kitsuneopen in new window suggestion
    • Added RemedyPlan feature in FieldFinder
    • Added Class fuzzy search function (Beta) in Dex, you can now directly use searchClass function to fuzzy search Class with specified conditions
    • Added multiple search function in reflection search, you can use relative search conditions to obtain multiple search results at the same time, thanks to AA and Kitsuneopen in new window for suggestions
    • Fixed the problem that the object obtained by appClassLoader is incorrect in system applications in some systems, thanks to Luckyzyxopen in new window for the feedback
    • Modified the calling method of XposedBridge.invokeOriginalMethod and added original function in MethodFinder.Result.Instance
    • Fixed the problem of wrong value of getStringSet method in YukiHookModulePrefs and optimize the code style, thanks to Teddy_Zhuopen in new window PRopen in new window
    • Modify YukiHookModulePrefs to intercept exceptions that may not exist in XSharePreference
    • Fixed the problem that YukiHookDataChannel could not be successfully registered in some third-party ROM system frameworks
    • Secured YukiHookDataChannel, now it can only communicate between modules from the specified package name and the host
    • Added automatic hook SharedPreferences to fix the problem that file permissions are not 0664 in some systems, thanks to 5ec1cffopen in new window for the feedback and implementation code provided
    • Added YukiHookAPI.Configs.isEnableHookSharedPreferences function, which is disabled by default and can be enabled if the permission of SharedPreferences is incorrect
    • Fixed the bug that the no-parameter construction method cannot be found when searching for Constructor without filling in the search conditions, thanks B5 KAKA for the feedback
    • Detach Result instances located in method, constructor in injectMember to Process
    • Added the useDangerousOperation method in the Hook process, which will automatically stop the Hook and print an error after the function in the Hook Dangerous List is not declared
    • Added module resource injection and Activity proxy functions, you can call injectModuleAppResources and registerModuleAppActivities to use
    • Added ModuleContextThemeWrapper function, you can call applyModuleTheme to create the Context of a module in any Activity
    • Added ClassLoader.onLoadClass function, which can be used to listen for events when the loadClass method of ClassLoader is called
    • obsolete classOf and clazz extension methods, add toClass and toClassOrNull usage, please move to the new method now
    • VariousClass adds a getOrNull method, which can return null instead of throwing an exception when it can't match Class
    • Removed isUseAppClassLoader parameter in PackageParam.hook, changed it to isForceUseAbsolute and automatically matched the target Class
    • PackageParam adds systemContext function, you can call this function at any time to get a persistent Context
    • no longer expose any methods in HookClass
    • Added throwToApp function in HookParam, which can throw exceptions directly to the host
    • The onFailureThrowToApp function is added to the Hook callback, which can be directly thrown to the host when an exception occurs
    • Modified the printing logic of the debug log, the time-consuming records in the reflection search function will only be printed during the Hook process
    • Added the function of removing Hook in the Hook process, you can use the remove and removeSelf methods to remove the hook
    • Fixed the issue that caused the host to throw an exception when ReplaceHook failed, and now it is modified to call the original method to ensure the normal operation of the host function
    • Added the function of checking the return value of the method in the Hook process. If the return value does not match, it will automatically throw an exception or print an error according to the situation
    • Added array type to Resources Hook, thanks to PRopen in new window of GSWXXNopen in new window
    • Moved me.weishu.reflection to thirdparty to prevent conflicting dependencies of the same name introduced at the same time
    • Remove the exception thrown when the Hook method body is empty, and modify it to print the warning log
    • Modify the exception handling logic of AppLifecycle and throw it directly to the host when an exception occurs
    • Updated Demo API version to 33

    1.0.92 | 2022.05.31  outdate

    • Fixed the naming method of callback in a large number of methods
    • Changed the solution to fix the problem that YukiHookDataChannel cannot call back the current Activity broadcast on devices lower than Android 12
    • The InjectYukiHookWithXposed annotation adds the isUsingResourcesHook function, now you can selectively disable the dependency interface that automatically generates IXposedHookInitPackageResources

    1.0.91 | 2022.05.29  outdate

    • Fixed the ClassLoader error when the customized system of some devices is booted in the LSPosed environment, thanks to Luckyzyxopen in new window for the feedback
    • Fixed YukiHookDataChannel not being able to call back the current Activity broadcast on ZUI and systems below Android 12
    • Integrate the YukiHookModuleStatus function into YukiHookAPI.Status, rewrite a lot of methods, now you can judge the status information such as module activation in the module and the host in both directions

    1.0.90 | 2022.05.27  outdate

    • Fixed YukiHookDataChannel crashing when the module sets the listener callback
    • Fixed YukiHookDataChannel still calling back when not in current Activity
    • Remove the default value of YukiHookDataChannel callback event, no callback
    • Removed YukiHookModulePrefs warning printed if XShare is unreadable
    • Added the isXSharePrefsReadable method in YukiHookModulePrefs to determine whether the current XShare is available

    1.0.89 | 2022.05.26  outdate

    • Fixed the problem that YukiHookDataChannel cannot be repeatedly set to monitor, and added the function of repeating response in different Activity modules and automatically following Activity to destroy the monitor function
    • Added YukiHookDataChannel repeated listening use case description document
    • Add the onAlreadyHooked method to determine whether the current method is repeated Hook
    • Modify part of the logic of repeatedly adding HashMap, remove the putIfAbsent method, allow to override the addition
    • Fixed several possible bugs

    1.0.88 | 2022.05.25  outdate

    • Fully decoupled from Xposed API
    • Added android type in type
    • Separate YukiHookModuleStatus from auto-generated code and add isEnableHookModuleStatus switch, it is up to you to enable or not
    • Internal closure processing for the constructors of a large number of classes in the API
    • Set YukiHookModulePrefs to run as a singleton to prevent repeated creation and waste of system resources
    • Fixed the bug that Hook cannot be nested since version 1.0.80, and optimize the related functions of nested Hook
    • Modify the Hooker storage scheme from HashSet to HashMap to prevent the problem of repeatedly adding Hookers
    • Modify the core implementation method of Hook, add duplicate checking to avoid repeating the Hook multiple callbacks to the HookParam method
    • MethodFinder and FieldFinder add the function of finding fuzzy methods and variable names, you can call name { ... } to set search conditions, and support regular expressions
    • Optimize and modify the way to get appContext to reduce the possibility of getting empty
    • Modify the print TAG of logger in the automatically generated code to default to your custom name, which is convenient for debugging
    • Optimize the Hooker implementation of YukiHookBridge to improve Hook performance
    • PackageParam adds the onAppLifecycle method, which can natively monitor the life cycle of the host and implement the registration system broadcast function
    • Added YukiHookDataChannel function to communicate using system out-of-order broadcast while the module and the host remain alive
    • YukiHookDataChannel adds the checkingVersionEquals method, which can be monitored to verify that the host has not updated the version mismatch problem after the module is updated
    • Added Java version example in the example code of demo-module for reference only

    1.0.87 | 2022.05.10  outdate

    • Added refreshModuleAppResources function to adapt Resources refresh when the language region, font size, resolution changes, etc.
    • Added isEnableModuleAppResourcesCache function, you can set whether to automatically cache the resources of the current module

    1.0.86 | 2022.05.06  outdate

    • Fixed the problem of continuous error reporting during initZygote when Resources Hook is not supported, reproduced in ZUI/LSPosed CI(1.8.3-6550)
    • Optimize and handle exceptions for Resources Hook, only print errors and warnings if they are used and not supported

    1.0.85 | 2022.05.04  outdate

    • Fixed a serious problem of not being able to hook the system framework, since 1.0.80
    • Added in the debug log to distinguish the package name loaded by initZygote as android-zygote, packageName keeps android unchanged

    1.0.83 | 2022.05.04  outdate

    • Fixed YukiHookModuleStatus reporting a lot of errors after loadSystem
    • Added android type in type
    • Updated example descriptions in help documentation

    1.0.82 | 2022.05.04  outdate

    • Fixed a concept confusion error, distinguishing the relationship between initZygote and the system framework, there are problems with the previous comments and documentation, I am very sorry
    • PackageParam adds loadSystem method, no need to write loadApp(name = "android") to hook the system framework

    1.0.81 | 2022.05.04  outdate

    • Fixed the problem that the method and constructor that cannot be found in the Hook method body still output the error log after setting the condition using the by method
    • Added a global log to display the package name of the current Hook APP during the execution of the Hook, and fixed a problem with the printing style of the error log

    1.0.80 | 2022.05.01  outdate

    • The InjectYukiHookWithXposed annotation adds the entryClassName function, which can customize the generated xposed_init entry class name
    • YukiHookXposedInitProxy renamed to IYukiHookXposedInit, the original interface name has been invalidated and will be deleted directly in subsequent versions
    • Added initZygote and Resources Hook functions to support Hook Layout
    • Added onXposedEvent method to listen to all events of native Xposed API
    • Perform inline processing on the lambda of the Hook function to avoid generating excessively broken anonymous classes and improve the running performance after compilation
    • Fixed PrefsData compiled method body copy is too large
    • Added XSharePreference readability test, which will automatically print a warning log if it fails
    • PackageParam adds appResources, moduleAppResources, moduleAppFilePath functions
    • loadApp of PackageParam adds the function of not writing name, and all APPs are filtered by default
    • PackageParam adds the loadZygote method, which can directly hook the system framework
    • PackageParam added resources().hook function
    • Optimization method, construction method, variable search function, the error log that cannot be found will display the set query conditions first
    • Added hasExtends extension method to determine whether the current Class has an inheritance relationship
    • Added isSupportResourcesHook function to determine whether resource hooks are currently supported (Resources Hook)
    • current function adds superClass method to call superclass
    • New superClass query conditions for search methods, construction methods and variables, you can continue to search in the parent class
    • YukiHookAPI lots of methods are decoupled from Xposed API
    • Added native Hook priority function of Xposed API
    • Fixed the problem that isFirstApplication may be inaccurate
    • Block the problem that MiuiCatcherPatch repeatedly calls the Hook entry method on the MIUI system
    • Optimize Hook entry calling method to avoid multiple calls due to Hook Framework issues
    • Fixed the problem that Hook ClassLoader causes Hook to freeze, thanks to WankkoReeopen in new window for the feedback
    • Improve the performance after the XC_Callback interface is connected
    • Java type added ClassLoader type
    • Optimize the API help documentation, fix the problem that the page may be continuously cached

    1.0.78 | 2022.04.18  outdate

    • YukiHookModulePrefs adds isRunInNewXShareMode method, which can be used to determine whether the module is currently in New XSharePreference mode
    • Fixed YukiHookModulePrefs working in New XSharePreference mode
    • Added ModulePreferenceFragment, now you can completely replace PreferenceFragmentCompat and start using the new functionality
    • Adapt the Sp data storage solution of PreferenceFragmentCompat, thanks to mahoshojoHCGopen in new window for feedback
    • Update autohandlers and Kotlin dependencies to the latest version
    • Fixed some bugs in documentation and code comments

    1.0.77 | 2022.04.15  outdate

    • YukiHookModulePrefs added clear method, thanks to WankkoReeopen in new window for the suggestion
    • YukiHookModulePrefs added getStringSet, putStringSet, all methods
    • Added any method to args of HookParam
    • Added ModuleApplication, which can be inherited in modules to achieve more functions
    • Connect all findClass functions to the Xposed API, and continue to use native ClassLoader in non-hosted environments
    • Fixed some possible bugs

    1.0.75 | 2022.04.13  outdate

    • Corrected the logic recognition part of the automatic handler, thanks to ApeaSuperzopen in new window contribution
    • Fixed an issue where the reference to a doc comment was not changed
    • firstArgs and lastArgs methods have been removed from HookParam, now you can use args().first() and args().last() instead of it
    • Removed default parameter index = 0 in args() in HookParam, now you can use args().first() or args(index = 0) to replace it
    • The result function in HookParam adds generic matching, now you can use result<T> to match the known return value type of your target method
    • The emptyParam condition is added to the method and constructor query function, and the misunderstanding of the query condition that needs to be paid attention to in the document has been improved
    • Added android type in type

    1.0.73 | 2022.04.10  outdate

    • Fixed some Chinese translation errors in documents, thanks to WankkoReeopen in new window for their contributions
    • Fixed the problem that XC_LoadPackage.LoadPackageParam throws an exception when the content is empty in some cases, thanks to Luckyzyxopen in new window for the feedback
    • Fixed some known bugs and improve Hook stability

    1.0.72 | 2022.04.09  outdate

    • Update API documentation to new address
    • Add appContext function to PackageParam
    • Fixed some known bugs and improve Hook stability

    1.0.71 | 2022.04.04  outdate

    • Fixed a serious issue that would stop the Hook from throwing an exception when VariousClass could not be matched

    1.0.70 | 2022.04.04  outdate

    • Fixed instanceClass reporting an error after being called in a static instance
    • Add isUseAppClassLoader function in Hook process, thanks to WankkoReeopen in new window for feedback
    • Added the withProcess function, which can be hooked according to the currently specified process of the APP
    • Fixed critical logic errors in lookup methods, constructor classes and variables
    • Fixed the problem that the abnormal output cannot be ignored when the Hook target class does not exist
    • Fixed the problem that the Hook could not take effect due to the fast loading of the APP startup method in some cases
    • Fixed allMethods not throwing an exception when it is not hooked to a method, thanks to WankkoReeopen in new window for the feedback
    • Added Hook status monitoring function, thanks to WankkoReeopen in new window for the suggestion
    • Modify the way the Xposed entry is injected into the class, and redefine the definition domain of the API
    • Added obfuscated method and variable lookup function, you can use different types of filter index to locate the specified method and variable, thanks to WankkoReeopen in new window for the ideas provided
    • When looking for methods and variables, multiple types are allowed, such as the class name declared by String and VariousClass
    • Add a new current function, which can build a reflection method operation space for any class, and easily call and modify the methods and variables in it
    • Fixed a lot of bugs in the hook process, thanks to WankkoReeopen in new window for contributing to this project

    1.0.69 | 2022.03.30  outdate

    • Added and improved annotations for some method functions
    • Added more example Hook content in Demo
    • Fixed the issue that only the last one takes effect when allMethods is used multiple times in a Hook instance, thanks to WankkoReeopen in new window for the feedback

    1.0.68 | 2022.03.29  outdate

    • Added new use case and LSPosed scope in Demo
    • Added Member lookup cache and lookup cache configuration switches
    • Removed and modified MethodFinder, FieldFinder and HookParam related method calls
    • Add more cast types in Finder and support cast as array
    • Overall performance and stability improvements
    • Fixed bugs that may exist in the previous version

    1.0.67 | 2022.03.27  outdate

    • Added three modifiers functions in Finder, which can filter static, native, public, abstract and many other description types
    • When searching for methods and constructors, the method parameter type can be blurred to a specified number for searching
    • Added hasModifiers extension for Member
    • Added give method in MethodFinder and ConstructorFinder to get primitive types
    • Added PrefsData template function in YukiHookModulePrefs
    • Completely refactored method, constructor and variable lookup scheme
    • Optimized code comments and fixed possible bugs

    1.0.66 | 2022.03.25  outdate

    • Fixed a serious bug in MethodFinder
    • Added args call method in hookParam
    • Fixed other possible problems and fix some class annotation problems

    1.0.65 | 2022.03.25  outdate

    • Republished version to fix the incorrect new version of the Maven repository due to cache issues
    • Added MethodFinder and FieldFinder new return value calling methods
    • Fixed possible problems and fix possible problems during the use of Tai Chi
    • Fixed possible problems with auto-generated Xposed entry classes
    • Added android type and java type in type

    1.0.6 | 2022.03.20  outdate

    • Fixed YukiHookModulePrefs being ignored every time after using direct once to ignore cache
    • Added new API, abolished the traditional usage of isActive to judge module activation
    • Fixed the issue of printing debug logs when using the API in a non-Xposed environment
    • Fixed log output issue and unintercepted exception issue when looking for Field
    • Decoupling Xposed API in ReflectionUtils
    • Added YukiHookModuleStatus method name confusion to reduce the size of module generation
    • The welcome message will no longer be printed when loading the module's own Hook
    • Fixed some bugs that still exist in the previous version

    1.0.55 | 2022.03.18  outdate

    • Fixed an annotation error
    • Temporarily fix a bug
    • Added a large number of android types in type and a small number of java types
    • Fixed compatibility issues between new and old Kotlin APIs

    1.0.5 | 2022.03.18  outdate

    • Fixed the problem that the welcome message was printed multiple times in the case of the old version of the LSPosed framework
    • Added onInit method to configure YukiHookAPI
    • Added executorName and executorVersion to get the name and version number of the current hook framework
    • Added by method to set the timing and condition of Hook
    • YukiHookModulePrefs adds a controllable key-value cache, which can dynamically update data when the host is running
    • Fixed some possible bugs

    1.0.4 | 2022.03.06  outdate

    • Fixed LSPosed cannot find XposedBridge after enabling "Only module classloader can use Xposed API" option in latest version
    • Added constant version name and version number for YukiHookAPI
    • Added hasField method and isAllowPrintingLogs configuration parameter
    • Added isDebug to enable the API to automatically print the welcome message to test whether the module is valid

    1.0.3 | 2022.03.02  outdate

    • Fixed a potential exception not intercepted BUG
    • Added ignoredError function
    • Added android type in type
    • Added ClassNotFound function after listening to hook

    1.0.2 | 2022.02.18  outdate

    • Fixed the problem that the project path cannot be found under Windows
    • Remove part of reflection API, merge into BaseFinder for integration
    • Add a method to create Hook directly using string

    1.0.1 | 2022.02.15  outdate

    • RemedyPlan adds onFind function
    • Integrate and modify some reflection API code
    • Added java type in type
    • Fixed the issue that ignored errors still output in the console

    1.0 | 2022.02.14  outdate

    • The first version is submitted to Maven
    + diff --git a/docs/en/about/contacts.html b/docs/en/about/contacts.html index 4f350a830..3e39984f3 100644 --- a/docs/en/about/contacts.html +++ b/docs/en/about/contacts.html @@ -23,11 +23,11 @@ } Contact Us | Yuki Hook API - +

    Contact Us

    If you have any questions in use, or have any constructive suggestions, you can contact us.

    Join us Click to join Telegram groupopen in new window

    Find me on Twitter @fankesyooniopen in new window

    Help with Maintenance

    Thank you for choosing and using YukiHookAPI.

    If you have code-related suggestions and requests, you can submit a Pull Request on Github.

    - + diff --git a/docs/en/about/future.html b/docs/en/about/future.html index 370c39312..788f15458 100644 --- a/docs/en/about/future.html +++ b/docs/en/about/future.html @@ -23,11 +23,11 @@ } Looking for Future | Yuki Hook API - +

    Looking for Future

    The future is bright and uncertain, let us look forward to the future development space of YukiHookAPI.

    Unresolved Issues

    Here are the unresolved issues with YukiHookAPI.

    YukiHookModulePrefs

    Currently only supports LSPosed perfectly, other Xposed Framework need to downgrade the module target api.

    TaiChi may not be supported at all, and TaiChi needs a lower target api to adapt on high-version systems.

    Some Xposed Module developers currently choose the Hook target app self's SharedPreferences storage solution to solve the module settings sharing problem.

    In the later period, the permissions of the Android system will become more and more strict, and selinux is a big problem currently facing, which needs to be discussed and studied.

    Future Plans

    Features that YukiHookAPI may add later are included here.

    Lite Version Supported for Standalone Use

    If you like the Reflection API of YukiHookAPI, but your project may not need related Hook functions.

    Well here is some good news for you:

    The core Reflection API of YukiHookAPI has been decoupled into YukiReflectionopen in new window project, which can now be used in any Android project.

    To be Discussed

    At present, the API only supports binding to xposed_init through the automatic builder.

    If you don't like the automatic builder, you must implement the module loading entry yourself.

    In the future, the Lite version with only API functions will be launched according to the number of people required.

    You can submit issues with us.

    We have provided the Xposed native API listening interface, you can find or view the implementation method of the Demo here.

    Support for More Hook Framework

    As an API, currently only docking XposedBridge as a compatibility layer still has certain limitations.

    Most inline hook do not have a Java compatibility layer, and the Java compatibility layer adaptation of native hook may be considered later.

    - + diff --git a/docs/en/api/home.html b/docs/en/api/home.html index b3f1262d6..bcd548ab9 100644 --- a/docs/en/api/home.html +++ b/docs/en/api/home.html @@ -23,11 +23,11 @@ } Document Introduce | Yuki Hook API - +

    Document Introduce

    The document here will synchronize the relevant usage of the latest API version, please keep YukiHookAPI as the latest version to use the latest version of the function.

    Function Description

    The function description mainly introduces the related usage and purpose of the current API.

    Function Example Description

    The function examples mainly show the basic usage examples of the current API for reference.

    Change Record Description

    The function of the first version will be marked as v<version> first;

    New function added later will be marked as v<version> added;

    Later modified function will be appended as v<version> modified;

    Later deprecated function will be marked as v<version> deprecated and strikethrough;

    Later removed function will be marked as v<version> removed and strikethrough.

    • kt  Kotlin Static File

    • annotation  Annotation Class

    • interface  Interface Class

    • object  Class (Singleton)

    • class  Class

    • field  Field or get / set method or read-only get method

    • method  Method

    • enum  Enum constant

    • ext-field  Extension field (global)

    • ext-method  Extension method (global)

    • i-ext-field  Extension field (internal)

    • i-ext-method  Extension method (internal)

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.html b/docs/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.html index 3118c02df..43afeed59 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/YukiHookAPI.html @@ -23,7 +23,7 @@ } YukiHookAPI - object | Yuki Hook API - + @@ -128,6 +128,6 @@
    fun encase(baseContext: Context?, initiate: PackageParam.() -> Unit)
     
    fun encase(baseContext: Context?, vararg hooker: YukiBaseHooker)
     

    Change Records

    v1.0 first

    Function Illustrate

    装载 Hook 入口的核心方法。

    Function Example

    详情请参考

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html b/docs/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html index 6729eec43..74e2c195b 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html @@ -23,7 +23,7 @@ } InjectYukiHookWithXposed - annotation | Yuki Hook API - + @@ -34,6 +34,6 @@ val isUsingResourcesHook: Boolean )

    Change Records

    v1.0 first

    v1.0.80 modified

    新增 entryClassName 参数

    v1.0.92 modified

    新增 isUsingResourcesHook 参数

    Function Illustrate

    标识 YukiHookAPI 注入 Xposed 入口的类注解。

    Function Example

    详情请参考 InjectYukiHookWithXposed Annotation

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html index b618aec9d..e6fd21dc3 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html @@ -23,7 +23,7 @@ } CurrentClass - class | Yuki Hook API - + @@ -43,6 +43,6 @@

    Change Records

    v1.1.0 added

    Function Illustrate

    获得当前实例父类中的泛型父类。

    如果当前实例不存在泛型将返回 null

    field - method

    inline fun field(initiate: FieldConditions): FieldFinder.Result.Instance
     

    Change Records

    v1.0.80 added

    Function Illustrate

    调用父类实例中的变量。

    method - method

    inline fun method(initiate: MethodConditions): MethodFinder.Result.Instance
     

    Change Records

    v1.0.80 added

    Function Illustrate

    调用父类实例中的方法。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html index df1212b4c..df54d39bb 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html @@ -23,7 +23,7 @@ } GenericClass - class | Yuki Hook API - + @@ -31,6 +31,6 @@

    Change Records

    v1.1.0 added

    Function Illustrate

    当前 Class 的泛型父类操作对象。

    argument - method

    fun argument(index: Int): Class<*>
     
    inline fun <reified T> argument(index: Int): Class<T>
     

    Change Records

    v1.1.0 added

    v1.1.5 modified

    新增泛型返回值 Class<T> 方法

    Function Illustrate

    获得泛型参数数组下标的 Class 实例。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html index 6139e2cd5..e9a452931 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html @@ -23,12 +23,12 @@ } HookClass - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    HookClass - class

    class HookClass internal constructor(internal var instance: Class<*>?, internal var name: String, internal var throwable: Throwable?)
     

    Change Records

    v1.0 first

    v1.1.0 modified

    HookClass 相关功能不再对外开放

    Function Illustrate

    创建一个当前 Hook 的 Class 接管类。

    instance 为实例,name 为实例完整包名,throwable 为找不到实例的时候抛出的异常。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html index dd1b1c906..9f32dd523 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html @@ -23,12 +23,12 @@ } HookResources - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    HookResources - class

    class HookResources internal constructor(var instance: YukiResources?)
     

    Change Records

    v1.0.80 added

    Function Illustrate

    创建一个当前 Hook 的 YukiResources 接管类。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html index 304d2685c..c4ea4e65c 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html @@ -23,7 +23,7 @@ } VariousClass - class | Yuki Hook API - + @@ -31,6 +31,6 @@

    Change Records

    v1.0 first

    v1.1.5 modified

    私有化 name 参数并设置为不可修改

    Function Illustrate

    这是一个不确定性 Class 类名装载器,通过 name 装载 Class 名称数组。

    get - method

    fun get(loader: ClassLoader? = null, initialize: Boolean): Class<*>
     

    Change Records

    v1.0.70 added

    v1.1.5 modified

    新增 initialize 参数

    Function Illustrate

    获取匹配的实体类。

    使用当前 loader 装载目标 Class

    getOrNull - method

    fun getOrNull(loader: ClassLoader? = null, initialize: Boolean): Class<*>?
     

    Change Records

    v1.1.0 added

    v1.1.5 modified

    新增 initialize 参数

    Function Illustrate

    获取匹配的实体类。

    使用当前 loader 装载目标 Class

    匹配不到 Class 会返回 null,不会抛出异常。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html index 11f4a0d75..2825ab7dc 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html @@ -23,7 +23,7 @@ } YukiMemberHookCreator - class | Yuki Hook API - + @@ -148,6 +148,6 @@

    Change Records

    v1.0.70 added

    Function Illustrate

    监听 hookClass 存在时准备开始 Hook 的操作。

    onHookClassNotFoundFailure - method

    fun onHookClassNotFoundFailure(result: (Throwable) -> Unit): Result
     

    Change Records

    v1.0.3 added

    Function Illustrate

    监听 hookClass 找不到时发生错误的回调方法。

    ignoredHookClassNotFoundFailure - method

    fun ignoredHookClassNotFoundFailure(): Result
     

    Change Records

    v1.0.3 added

    Function Illustrate

    忽略 hookClass 找不到时出现的错误。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html index 4b64a595c..9f6adf4ea 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html @@ -23,7 +23,7 @@ } YukiResourcesHookCreator - class | Yuki Hook API - + @@ -122,6 +122,6 @@

    Change Records

    v1.0.80 added

    Function Illustrate

    添加执行 Hook 需要满足的条件,不满足条件将直接停止 Hook。

    onHookingFailure - method

    fun onHookingFailure(result: (Throwable) -> Unit): Result
     

    Change Records

    v1.0.80 added

    Function Illustrate

    监听 Hook 过程发生错误的回调方法。

    ignoredHookingFailure - method

    fun ignoredHookingFailure(): Result
     

    Change Records

    v1.0.80 added

    Function Illustrate

    忽略 Hook 过程出现的错误。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html index d6b9fcc97..92f7c950b 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html @@ -23,7 +23,7 @@ } BaseFinder - class | Yuki Hook API - + @@ -36,6 +36,6 @@

    Change Records

    v1.0.70 added

    Function Illustrate

    设置满足条件的第一个。

    last - method

    fun last()
     

    Change Records

    v1.0.70 added

    Function Illustrate

    设置满足条件的最后一个。

    reverse - method

    fun reverse(num: Int)
     

    Change Records

    v1.0.70 added

    Function Illustrate

    设置倒序下标。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html index fde86a8e3..5eed150c1 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html @@ -23,7 +23,7 @@ } CountRules - class | Yuki Hook API - + @@ -33,6 +33,6 @@

    Change Records

    v1.1.0 added

    Function Illustrate

    大于 count

    Int.lessThan - i-ext-method

    fun Int.lessThan(count: Int): Boolean
     

    Change Records

    v1.1.0 added

    Function Illustrate

    小于 count

    Int.inInterval - i-ext-method

    fun Int.inInterval(countRange: IntRange): Boolean
     

    Change Records

    v1.1.0 added

    Function Illustrate

    countRange 区间 A ≤ this ≤ B。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html index 90a10bf9c..2a50c21fd 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html @@ -23,7 +23,7 @@ } ModifierRules - class | Yuki Hook API - + @@ -41,6 +41,6 @@

    Change Records

    v1.0.67 added

    v1.1.0 modified

    统一合并到扩展方法并改名

    Function Illustrate

    Class 类型是否包含 interface

    isAbstract - i-ext-field

    val isAbstract: Boolean
     

    Change Records

    v1.0.67 added

    v1.1.0 modified

    统一合并到扩展方法并改名

    Function Illustrate

    ClassMember 类型是否包含 abstract

    对于任意的抽象 ClassMember 可添加此描述进行确定。

    isStrict - i-ext-field

    val isStrict: Boolean
     

    Change Records

    v1.0.67 added

    v1.1.0 modified

    统一合并到扩展方法并改名

    Function Illustrate

    ClassMember 类型是否包含 strictfp

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html index 09bf9d1aa..1d91c3e39 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html @@ -23,7 +23,7 @@ } NameRules - class | Yuki Hook API - + @@ -36,6 +36,6 @@

    Change Records

    v1.0.88 added

    v1.1.0 modified

    统一合并到扩展方法并改名

    Function Illustrate

    是否只有字母或数字。

    String.isOnlyLowercase - i-ext-method

    fun String.isOnlyLowercase(): Boolean
     

    Change Records

    v1.0.88 added

    v1.1.0 modified

    统一合并到扩展方法并改名

    Function Illustrate

    是否只有小写字母。

    在没有其它条件的情况下设置此条件允许判断对象存在字母以外的字符。

    String.isOnlyUppercase - i-ext-method

    fun String.isOnlyUppercase(): Boolean
     

    Change Records

    v1.0.88 added

    v1.1.0 modified

    统一合并到扩展方法并改名

    Function Illustrate

    是否只有大写字母。

    在没有其它条件的情况下设置此条件允许判断对象存在字母以外的字符。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html index b097fea69..54885466c 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html @@ -23,12 +23,12 @@ } ObjectRules - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ObjectRules - class

    class ObjectRules private constructor(private val instance: Any)
     

    Change Records

    v1.1.5 added

    Function Illustrate

    这是一个任意对象条件实现类。

    可对 R8 混淆后的 ClassMember 进行更加详细的定位。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html index fd79d670f..b2beec52c 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html @@ -23,7 +23,7 @@ } DexClassFinder - class | Yuki Hook API - + @@ -72,6 +72,6 @@

    Change Records

    v1.1.0 added

    Function Illustrate

    得到 Class 本身数组 (异步)。

    回调全部查找条件匹配的多个 Class 实例。

    在查找条件找不到任何结果的时候将回调空的 HashSet

    你需要设置 async 后此方法才会被回调,否则请使用 all 方法。

    onNoClassDefFoundError - method

    fun onNoClassDefFoundError(result: (Throwable) -> Unit): Result
     

    Change Records

    v1.1.0 added

    Function Illustrate

    监听找不到 Class 时。

    ignored - method

    fun ignored(): Result
     

    Change Records

    v1.1.0 added

    Function Illustrate

    忽略异常并停止打印任何错误日志。

    此时若要监听异常结果,你需要手动实现 onNoClassDefFoundError 方法。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html index df4afe62f..173badfc2 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html @@ -23,7 +23,7 @@ } ConstructorRules - class | Yuki Hook API - + @@ -36,6 +36,6 @@

    Change Records

    v1.1.5 added

    Function Illustrate

    设置 Constructor 参数条件。

    Pay Attention

    无参 Constructor 请使用 emptyParam 设置查找条件。

    有参 Constructor 必须使用此方法设定参数或使用 paramCount 指定个数。

    paramCount - method

    fun paramCount(numRange: IntRange)
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置 Constructor 参数个数范围。

    你可以不使用 param 指定参数类型而是仅使用此方法指定参数个数范围。

    paramCount - method

    fun paramCount(conditions: CountConditions)
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置 Constructor 参数个数条件。

    你可以不使用 param 指定参数类型而是仅使用此方法指定参数个数条件。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html index 259ec7780..0a34693ed 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html @@ -23,7 +23,7 @@ } FieldRules - class | Yuki Hook API - + @@ -34,6 +34,6 @@

    Change Records

    v1.1.0 added

    Function Illustrate

    设置 Field 标识符筛选条件。

    可不设置筛选条件。

    name - method

    fun name(conditions: NameConditions)
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置 Field 名称条件。

    type - method

    fun type(conditions: ObjectConditions)
     

    Change Records

    v1.1.5 added

    Function Illustrate

    设置 Field 类型条件。

    可不填写类型。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html index 42b41e4c8..1ca1e7d39 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html @@ -23,13 +23,13 @@ } MemberRules - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    MemberRules - class

    class MemberRules internal constructor(internal val rulesData: MemberRulesData) : BaseRules
     

    Change Records

    v1.1.0 added

    Function Illustrate

    Member 查找条件实现类。

    modifiers - method

    fun modifiers(conditions: ModifierConditions)
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置 Member 标识符筛选条件。

    可不设置筛选条件。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html index 214b9af6e..1c21bde2b 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html @@ -23,7 +23,7 @@ } MethodRules - class | Yuki Hook API - + @@ -40,6 +40,6 @@

    Change Records

    v1.1.0 added

    Function Illustrate

    设置 Method 参数个数范围。

    你可以不使用 param 指定参数类型而是仅使用此方法指定参数个数范围。

    paramCount - method

    fun paramCount(conditions: CountConditions)
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置 Method 参数个数条件。

    你可以不使用 param 指定参数类型而是仅使用此方法指定参数个数条件。

    returnType - method

    fun returnType(conditions: ObjectConditions)
     

    Change Records

    v1.1.5 added

    Function Illustrate

    设置 Method 返回值条件。

    可不填写返回值。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html index 16941f4c7..e92c711f8 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html @@ -23,7 +23,7 @@ } MemberRulesResult - class | Yuki Hook API - + @@ -33,6 +33,6 @@

    Change Records

    v1.1.0 added

    Function Illustrate

    设置当前 Member 在查找条件中需要全部匹配的个数。

    count - method

    fun count(numRange: IntRange): MemberRulesResult
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置当前 Member 在查找条件中需要全部匹配的个数范围。

    count - method

    fun count(conditions: CountConditions): MemberRulesResult
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置当前 Member 在查找条件中需要全部匹配的个数条件。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html index 34d1f42fc..92bca7843 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html @@ -23,12 +23,12 @@ } ConstructorFinder - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ConstructorFinder - class

    class ConstructorFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
    -

    Change Records

    v1.0 first

    v1.0.2 modified

    合并到 BaseFinder

    v1.1.0 modified

    合并到 MemberBaseFinder

    v1.1.7 modified

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    Function Illustrate

    Constructor 查找类。

    可通过指定类型查找指定 Constructor 或一组 Constructor

    paramCount - field

    var paramCount: Int
    +

    Change Records

    v1.0 first

    v1.0.2 modified

    合并到 BaseFinder

    v1.1.0 modified

    合并到 MemberBaseFinder

    v1.1.8 modified

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    Function Illustrate

    Constructor 查找类。

    可通过指定类型查找指定 Constructor 或一组 Constructor

    paramCount - field

    var paramCount: Int
     

    Change Records

    v1.0.67 added

    Function Illustrate

    设置 Constructor 参数个数。

    你可以不使用 param 指定参数类型而是仅使用此变量指定参数个数。

    若参数个数小于零则忽略并使用 param

    modifiers - method

    fun modifiers(conditions: ModifierConditions): IndexTypeCondition
     

    Change Records

    v1.0.67 added

    v1.0.80 modified

    将方法体进行 inline

    v1.1.0 modified

    合并到 ModifierConditions

    Function Illustrate

    设置 Constructor 标识符筛选条件。

    可不设置筛选条件,默认模糊查找并取第一个匹配的 Constructor

    Pay Attention

    存在多个 IndexTypeCondition 时除了 order 只会生效最后一个。

    emptyParam - method

    fun emptyParam(): IndexTypeCondition
     

    Change Records

    v1.0.75 added

    Function Illustrate

    设置 Constructor 空参数、无参数。

    param - method

    fun param(vararg paramType: Any): IndexTypeCondition
    @@ -115,6 +115,6 @@
     

    Change Records

    v1.0.2 added

    v1.1.0 modified

    新增 constructor 参数

    Function Illustrate

    Constructor 实例处理类。

    call - method

    fun call(vararg args: Any?): Any?
     

    Change Records

    v1.0.2 added

    v1.1.6 modified

    修改参数命名 paramargs

    Function Illustrate

    执行 Constructor 创建目标实例,不指定目标实例类型。

    newInstance - method

    fun <T> newInstance(vararg args: Any?): T?
     

    Change Records

    v1.0.2 added

    v1.1.6 modified

    修改参数命名 paramargs

    Function Illustrate

    执行 Constructor 创建目标实例 ,指定 T 目标实例类型。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html index 450f381ad..876ec7ec2 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html @@ -23,12 +23,12 @@ } FieldFinder - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    FieldFinder - class

    class FieldFinder internal constructor(override val classSet: Class<*>?) : MemberBaseFinder
    -

    Change Records

    v1.0 first

    v1.0.2 modified

    合并到 BaseFinder

    v1.1.0 modified

    合并到 MemberBaseFinder

    v1.1.7 modified

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    Function Illustrate

    Field 查找类。

    可通过指定类型查找指定 Field 或一组 Field

    classSet - field

    Change Records

    v1.0 first

    v1.0.2 removed

    name - field

    var name: String
    +

    Change Records

    v1.0 first

    v1.0.2 modified

    合并到 BaseFinder

    v1.1.0 modified

    合并到 MemberBaseFinder

    v1.1.8 modified

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    Function Illustrate

    Field 查找类。

    可通过指定类型查找指定 Field 或一组 Field

    classSet - field

    Change Records

    v1.0 first

    v1.0.2 removed

    name - field

    var name: String
     

    Change Records

    v1.0 first

    v1.0.70 modified

    允许不填写名称

    Function Illustrate

    设置 Field 名称。

    Pay Attention

    若不填写名称则必须存在一个其它条件。

    type - field

    var type: Any?
     

    Change Records

    v1.0 first

    Function Illustrate

    设置 Field 类型。

    可不填写类型。

    modifiers - method

    fun modifiers(conditions: ModifierConditions): IndexTypeCondition
     

    Change Records

    v1.0.67 added

    v1.0.80 modified

    将方法体进行 inline

    v1.1.0 modified

    合并到 ModifierConditions

    Function Illustrate

    设置 Field 标识符筛选条件。

    可不设置筛选条件。

    Pay Attention

    存在多个 IndexTypeCondition 时除了 order 只会生效最后一个。

    order - method

    fun order(): IndexTypeCondition
    @@ -111,6 +111,6 @@
     

    Change Records

    v1.0 first

    Function Illustrate

    设置当前 Field 实例为 true

    Pay Attention

    请确保实例对象类型为 Boolean

    setFalse - method

    fun setFalse()
     

    Change Records

    v1.0 first

    Function Illustrate

    设置当前 Field 实例为 false

    Pay Attention

    请确保实例对象类型为 Boolean

    setNull - method

    fun setNull()
     

    Change Records

    v1.0 first

    Function Illustrate

    设置当前 Field 实例为 null

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html index 05e5a8646..b21e999eb 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html @@ -23,12 +23,12 @@ } MethodFinder - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    MethodFinder - class

    class MethodFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
    -

    Change Records

    v1.0 first

    v1.0.2 modified

    合并到 BaseFinder

    v1.1.0 modified

    合并到 MemberBaseFinder

    v1.1.7 modified

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    Function Illustrate

    Method 查找类。

    可通过指定类型查找指定 Method 或一组 Method

    name - field

    var name: String
    +

    Change Records

    v1.0 first

    v1.0.2 modified

    合并到 BaseFinder

    v1.1.0 modified

    合并到 MemberBaseFinder

    v1.1.8 modified

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    Function Illustrate

    Method 查找类。

    可通过指定类型查找指定 Method 或一组 Method

    name - field

    var name: String
     

    Change Records

    v1.0 first

    v1.0.70 modified

    允许不填写名称

    Function Illustrate

    设置 Method 名称。

    Pay Attention

    若不填写名称则必须存在一个其它条件。

    paramCount - field

    var paramCount: Int
     

    Change Records

    v1.0.67 added

    Function Illustrate

    设置 Method 参数个数。

    你可以不使用 param 指定参数类型而是仅使用此变量指定参数个数。

    若参数个数小于零则忽略并使用 param

    returnType - field

    var returnType: Any?
     

    Change Records

    v1.0 first

    Function Illustrate

    设置 Method 返回值,可不填写返回值。

    modifiers - method

    fun modifiers(conditions: ModifierConditions): IndexTypeCondition
    @@ -131,6 +131,6 @@
     

    Change Records

    v1.0.65 added

    v1.0.68 modified

    修改 callBooleanboolean

    v1.1.6 modified

    修改参数命名 paramargs

    Function Illustrate

    执行 Method,指定 Boolean 返回值类型。

    array - method

    inline fun <reified T> array(vararg args: Any?): Array<T>
     

    Change Records

    v1.0.68 added

    v1.1.6 modified

    修改参数命名 paramargs

    Function Illustrate

    执行 Method,指定 Array 返回值类型。

    list - method

    inline fun <reified T> list(vararg args: Any?): List<T>
     

    Change Records

    v1.0.68 added

    v1.1.6 modified

    修改参数命名 paramargs

    Function Illustrate

    执行 Method,指定 List 返回值类型。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html index 68523b168..3568103ef 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html @@ -23,13 +23,13 @@ } YukiBaseHooker - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiBaseHooker - class

    abstract class YukiBaseHooker : PackageParam()
     

    Change Records

    v1.0 first

    Function Illustrate

    YukiHookAPI 的子类 Hooker 实现。

    onHook - method

    fun onHook()
     

    Change Records

    v1.0 first

    Function Illustrate

    子类 Hook 开始。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html index 187843203..296af5dbe 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html @@ -23,7 +23,7 @@ } ReflectionFactory - kt | Yuki Hook API - + @@ -136,6 +136,6 @@

    Change Records

    v1.0.70 added

    v1.0.80 modified

    将方法体进行 inline

    v1.1.5 modified

    新增 isAccessible 参数

    Function Illustrate

    遍历当前类中的所有方法。

    Class.allConstructors - ext-method

    inline fun Class<*>.allConstructors(isAccessible: Boolean, result: (index: Int, constructor: Constructor<*>) -> Unit)
     

    Change Records

    v1.0.70 added

    v1.0.80 modified

    将方法体进行 inline

    v1.1.5 modified

    新增 isAccessible 参数

    Function Illustrate

    遍历当前类中的所有构造方法。

    Class.allFields - ext-method

    inline fun Class<*>.allFields(isAccessible: Boolean, result: (index: Int, field: Field) -> Unit)
     

    Change Records

    v1.0.70 added

    v1.0.80 modified

    将方法体进行 inline

    v1.1.5 modified

    新增 isAccessible 参数

    Function Illustrate

    遍历当前类中的所有变量。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html index c508afc9a..c3e0eba4e 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html @@ -23,7 +23,7 @@ } YukiHookFactory - kt | Yuki Hook API - + @@ -39,6 +39,6 @@

    Change Records

    v1.1.0 added

    Function Illustrate

    向 Hook APP (宿主) ContextResources 注入当前 Xposed 模块的资源。

    注入成功后,你就可以直接使用例如 ImageView.setImageResourceResources.getString 装载当前 Xposed 模块的资源 ID。

    注入的资源作用域仅限当前 ContextResources,你需要在每个用到宿主 ContextResources 的地方重复调用此方法进行注入才能使用。

    Pay Attention

    只能在 (Xposed) 宿主环境使用此功能,其它环境下使用将不生效且会打印警告信息。

    Context.registerModuleAppActivities - ext-method

    fun Context.registerModuleAppActivities(proxy: Any?)
     

    Change Records

    v1.1.0 added

    v1.1.5 modified

    加入最低 API 版本限制

    Function Illustrate

    向 Hook APP (宿主) 注册当前 Xposed 模块的 Activity

    注册成功后,你就可以直接使用 Context.startActivity 来启动未在宿主中注册的 Activity

    使用此方法会在未注册的 Activity 在 Hook APP (宿主) 中启动时自动调用 injectModuleAppResources 注入当前 Xposed 模块的资源。

    你要将需要在宿主启动的 Activity 继承于 ModuleAppActivityModuleAppCompatActivity

    Pay Attention

    只能在 (Xposed) 宿主环境使用此功能,其它环境下使用将不生效且会打印警告信息。

    最低支持 Android 7.0 (API 24)。

    Context.applyModuleTheme - ext-method

    fun Context.applyModuleTheme(theme: Int, configuration: Configuration?): ModuleContextThemeWrapper
     

    Change Records

    v1.1.0 added

    Function Illustrate

    生成一个 ContextThemeWrapper 代理以应用当前 Xposed 模块的主题资源。

    在 Hook APP (宿主) 中使用此方法会自动调用 injectModuleAppResources 注入当前 Xposed 模块的资源。

    如果在 Hook APP (宿主) 中使用此方法发生 ClassCastException,请手动设置 configuration

    isSupportResourcesHook - field

    Change Records

    v1.0.80 added

    v1.0.91 removed

    请转移到 YukiHookAPI.Status.isSupportResourcesHook

    isModuleActive - field

    Change Records

    v1.0.6 added

    v1.0.91 removed

    请转移到 YukiHookAPI.Status.isModuleActive

    isXposedModuleActive - field

    Change Records

    v1.0.6 added

    v1.0.91 removed

    请转移到 YukiHookAPI.Status.isXposedModuleActive

    isTaiChiModuleActive - field

    Change Records

    v1.0 first

    v1.0.91 removed

    请转移到 YukiHookAPI.Status.isTaiChiModuleActive

    YukiHookModuleStatus - class

    Change Records

    v1.0 first

    v1.0.91 deprecated

    请转移到 YukiHookAPI.Status

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html index 28a5c1ac1..6eae92dc8 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html @@ -23,7 +23,7 @@ } LoggerFactory - kt | Yuki Hook API - + @@ -66,6 +66,6 @@

    Change Records

    v1.0 first

    v1.1.0 modified

    新增 type 参数

    Function Illustrate

    Logcat 和 (Xposed) 宿主环境打印日志,级别 I

    tag 的默认参数为 YukiHookAPI.Configs.debugTag,你可以进行自定义。

    loggerW - method

    fun loggerW(tag: String, msg: String, type: LoggerType)
     

    Change Records

    v1.0 first

    v1.1.0 modified

    新增 type 参数

    Function Illustrate

    Logcat 和 (Xposed) 宿主环境打印日志,级别 W

    tag 的默认参数为 YukiHookAPI.Configs.debugTag,你可以进行自定义。

    loggerE - method

    fun loggerE(tag: String, msg: String, e: Throwable?, type: LoggerType)
     

    Change Records

    v1.0 first

    v1.1.0 modified

    新增 type 参数

    Function Illustrate

    Logcat 和 (Xposed) 宿主环境打印日志,级别 E,可携带 e 异常信息,将打印异常堆栈。

    tag 的默认参数为 YukiHookAPI.Configs.debugTag,你可以进行自定义。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html index 76e2798cc..9c1e49257 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html @@ -23,7 +23,7 @@ } HookParam - class | Yuki Hook API - + @@ -35,7 +35,7 @@

    Change Records

    v1.0 first

    v1.1.0 modified

    移动 HookParamWrapperYukiHookCallback.Param

    修正拼写错误的 creater 命名到 creator

    v1.1.5 modified

    新增 paramId 参数

    Function Illustrate

    Hook 方法、构造方法的目标对象实现类。

    args - field

    val args: Array<Any?>
     

    Change Records

    v1.0 添加

    Function Illustrate

    获取当前 Hook 对象 memberconstructor 的参数对象数组。

    这里的数组每项类型默认为 Any,你可以使用 args 方法来实现 ArgsModifyer.cast 功能。

    firstArgs - field

    Change Records

    v1.0 first

    v1.0.75 removed

    请使用 args(index = 0)args().first()

    lastArgs - field

    Change Records

    v1.0 first

    v1.0.75 removed

    请使用 args().last()

    instance - field

    val instance: Any
     

    Change Records

    v1.0 first

    Function Illustrate

    获取当前 Hook 实例的对象。

    Pay Attention

    如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。

    如果你不确定当前实例的对象是否为 null,你可以使用 instanceOrNull

    instanceOrNull - field

    val instanceOrNull: Any?
    -

    Change Records

    v1.1.7 added

    Function Illustrate

    获取当前 Hook 实例的对象。

    Pay Attention

    如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。

    instanceClass - field

    val instanceClass: Class<*>
    +

    Change Records

    v1.1.8 added

    Function Illustrate

    获取当前 Hook 实例的对象。

    Pay Attention

    如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。

    instanceClass - field

    val instanceClass: Class<*>
     

    Change Records

    v1.0 first

    Function Illustrate

    获取当前 Hook 实例的类对象。

    member - field

    val member: Member
     

    Change Records

    v1.1.0 added

    Function Illustrate

    获取当前 Hook 对象的 Member

    在不确定 Member 类型为 MethodConstructor 时可以使用此方法。

    method - field

    val method: Method
     

    Change Records

    v1.0 first

    Function Illustrate

    获取当前 Hook 对象的方法。

    constructor - field

    val constructor: Constructor
    @@ -56,7 +56,7 @@
     

    Change Records

    v1.0.75 added

    Function Illustrate

    获取当前 Hook 对象的 methodconstructor 的返回值 T

    firstArg - method

    Change Records

    v1.0.66 added

    v1.0.75 removed

    lastArgs - method

    Change Records

    v1.0.66 added

    v1.0.75 removed

    instance - method

    inline fun <reified T> instance(): T
     

    Change Records

    v1.0 first

    Function Illustrate

    获取当前 Hook 实例的对象 T

    Function Example

    你可以通过 instance 方法轻松使用泛型 cast 为目标对象的类型。

    The following example

    instance<Activity>().finish()
     

    instanceOrNull - method

    inline fun <reified T> instanceOrNull(): T?
    -

    Function Illustrate

    v1.1.7 added

    Function Illustrate

    获取当前 Hook 实例的对象 T

    Function Example

    用法请参考 instance 方法。

    args - method

    fun args(): ArgsIndexCondition
    +

    Function Illustrate

    v1.1.8 added

    Function Illustrate

    获取当前 Hook 实例的对象 T

    Function Example

    用法请参考 instance 方法。

    args - method

    fun args(): ArgsIndexCondition
     

    Change Records

    v1.0.75 added

    Function Illustrate

    获取当前 Hook 对象的 methodconstructor 的参数数组下标实例化类。

    args - method

    fun args(index: Int): ArgsModifyer
     

    Change Records

    v1.0 first

    v1.0.75 modified

    默认值 index = 0 移动到新的使用方法 args().first()

    Function Illustrate

    获取当前 Hook 对象的 methodconstructor 的参数实例化对象类。

    Function Example

    你可以通过 args 方法修改当前 Hook 实例的方法、构造方法的参数内容。

    你可以直接使用 set 方法设置 param 为你的目标实例,接受 Any 类型。

    Pay Attention

    请确保 param 类型为你的目标实例类型。

    The following example

    args(index = 0).set("modify the value")
     

    你可以这样直接设置第一位 param 的值。

    The following example

    args().first().set("modify the value")
    @@ -120,6 +120,6 @@
     

    Change Records

    v1.0 first

    Function Illustrate

    设置方法参数的实例对象为 null

    setTrue - method

    fun setTrue()
     

    Change Records

    v1.0 first

    Function Illustrate

    设置方法参数的实例对象为 true

    Pay Attention

    请确保目标对象的类型是 Boolean

    setFalse - method

    fun setFalse()
     

    Change Records

    v1.0 first

    Function Illustrate

    设置方法参数的实例对象为 false

    Pay Attention

    请确保目标对象的类型是 Boolean

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html index bc77e119b..a5f6512e5 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html @@ -23,7 +23,7 @@ } PackageParam - class | Yuki Hook API - + @@ -168,7 +168,7 @@

    Change Records

    v1.0.88 added

    Function Illustrate

    监听当前 Hook APP 装载 Application.onTrimMemory

    onConfigurationChanged - method

    fun onConfigurationChanged(result: (self: Application, config: Configuration) -> Unit)
     

    Change Records

    v1.0.88 added

    Function Illustrate

    监听当前 Hook APP 装载 Application.onConfigurationChanged

    registerReceiver - method

    fun registerReceiver(vararg action: String, result: (context: Context, intent: Intent) -> Unit)
     
    fun registerReceiver(filter: IntentFilter, result: (context: Context, intent: Intent) -> Unit)
    -

    Change Records

    v1.0.88 added

    v1.1.7 modified

    新增直接使用 IntentFilter 注册系统广播监听

    Function Illustrate

    注册系统广播监听。

    - +

    Change Records

    v1.0.88 added

    v1.1.8 modified

    新增直接使用 IntentFilter 注册系统广播监听

    Function Illustrate

    注册系统广播监听。

    + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html index 713099189..c648d804a 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html @@ -23,11 +23,11 @@ } ComponentTypeFactory - kt | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ComponentTypeFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    这是一个预置反射类型的常量类,主要为 Android 相关组件的 Class 内容,跟随版本更新会逐一进行增加。

    详情可 点击这里open in new window 进行查看。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html index 91a33714b..cfe608faf 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html @@ -23,11 +23,11 @@ } GraphicsTypeFactory - kt | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    GraphicsTypeFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    这是一个预置反射类型的常量类,主要为 Android 相关 GraphicsClass 内容,跟随版本更新会逐一进行增加。

    详情可 点击这里open in new window 进行查看。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html index 9050f6266..66c9fe3bc 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html @@ -23,11 +23,11 @@ } ViewTypeFactory - kt | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ViewTypeFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    这是一个预置反射类型的常量类,主要为 Android 相关 WidgetClass 内容,跟随版本更新会逐一进行增加。

    详情可 点击这里open in new window 进行查看。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html index 173b5d5ab..e47951c67 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html @@ -23,12 +23,12 @@ } DefinedTypeFactory - kt | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    DefinedTypeFactory - kt

    Change Records

    v1.1.0 added

    Function Illustrate

    这是一个内部类型的定义常量类,主要用于反射 API 相关用法的延伸。

    VagueType - field

    val VagueType: Class<*>
     

    Change Records

    v1.1.0 added

    Function Illustrate

    得到模糊类型。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html index 0dea36b4f..b42ea2633 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html @@ -23,11 +23,11 @@ } VariableTypeFactory - kt | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    VariableTypeFactory - kt

    Change Records

    v1.0 first

    Function Illustrate

    这是一个预置反射类型的常量类,主要为 Java 相关基本变量类型的 Class 内容,跟随版本更新会逐一进行增加。

    详情可 点击这里open in new window 进行查看。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html index 336e9d28d..fbf141132 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html @@ -23,7 +23,7 @@ } ModuleApplication - class | Yuki Hook API - + @@ -44,6 +44,6 @@ ...>

    appContext - field

    val appContext: ModuleApplication
     

    Change Records

    v1.0.77 added

    Function Illustrate

    获取全局静态 Application 实例。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html index 4c9d4b3ff..80dcbcdff 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html @@ -23,7 +23,7 @@ } YukiXposedEvent - object | Yuki Hook API - + @@ -33,6 +33,6 @@

    Change Records

    v1.0.80 added

    Function Illustrate

    设置 initZygote 事件监听。

    onHandleLoadPackage - method

    fun onHandleLoadPackage(result: (LoadPackageParam) -> Unit)
     

    Change Records

    v1.0.80 added

    Function Illustrate

    设置 handleLoadPackage 事件监听。

    onHandleInitPackageResources - method

    fun onHandleInitPackageResources(result: (InitPackageResourcesParam) -> Unit)
     

    Change Records

    v1.0.80 added

    Function Illustrate

    设置 handleInitPackageResources 事件监听。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html index e51f742b5..96069da28 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html @@ -23,13 +23,13 @@ } YukiModuleResources - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    YukiModuleResources - class

    class YukiModuleResources private constructor(private val baseInstance: XModuleResources) : Resources
     

    Change Records

    v1.0.80 added

    Function Illustrate

    对接 XModuleResources 的中间层实例。

    fwd - method

    fun fwd(resId: Int): YukiResForwarder
     

    Change Records

    v1.0.80 added

    Function Illustrate

    对接 XModuleResources.fwd 方法。

    创建 YukiResForwarderXResForwarder 实例。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html index 208ff0c9a..5217623c0 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html @@ -23,7 +23,7 @@ } YukiResForwarder - class | Yuki Hook API - + @@ -31,6 +31,6 @@

    Change Records

    v1.0.80 added

    Function Illustrate

    对接 XResForwarder 的中间层实例。

    instance - field

    Change Records

    v1.0.80 added

    v1.1.0 deprecated

    不再对外公开 instance 参数

    id - field

    val id: Int
     

    Change Records

    v1.0.80 added

    Function Illustrate

    获得当前 APP 的 Resources Id。

    resources - field

    val resources: Resources
     

    Change Records

    v1.0.80 added

    Function Illustrate

    获得当前 APP 的 Resources。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html index fbb139e0d..ea403ad48 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html @@ -23,7 +23,7 @@ } YukiResources - class | Yuki Hook API - + @@ -34,6 +34,6 @@

    Change Records

    v1.0.80 added

    Function Illustrate

    获取当前被 Hook 的布局实例。

    findViewByIdentifier - method

    inline fun <reified T : View> View.findViewByIdentifier(name: String): T?
     
    inline fun <reified T : View> findViewByIdentifier(name: String): T?
     

    Change Records

    v1.0.80 added

    Function Illustrate

    使用 Identifier 查找 Hook APP 指定 Id 的 View

    扩展方法可以使用 Identifier 查找 Hook APP 当前装载布局中指定 Id 的 View

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html index df5010a39..878882b53 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html @@ -23,7 +23,7 @@ } YukiHookDataChannel - class | Yuki Hook API - + @@ -41,6 +41,6 @@

    Change Records

    v1.0.88 added

    v1.1.5 modified

    新增 priority 参数

    Function Illustrate

    仅获取监听结果,不获取键值数据。

    Pay Attention

    仅限使用 VALUE_WAIT_FOR_LISTENER 发送的监听才能被接收。

    checkingVersionEquals - method

    fun checkingVersionEquals(priority: ChannelPriority?, result: (Boolean) -> Unit)
     

    Change Records

    v1.0.88 added

    v1.1.5 modified

    新增 priority 参数

    Function Illustrate

    获取模块与宿主的版本是否匹配。

    通过此方法可原生判断 Xposed 模块更新后宿主并未重新装载造成两者不匹配的情况。

    obtainLoggerInMemoryData - method

    fun obtainLoggerInMemoryData(priority: ChannelPriority?, result: (ArrayList<YukiLoggerData>) -> Unit)
     

    Change Records

    v1.1.4 added

    v1.1.5 modified

    新增 priority 参数

    Function Illustrate

    获取模块与宿主之间的 ArrayList<YukiLoggerData> 数据。

    由于模块与宿主处于不同的进程,我们可以使用数据通讯桥访问各自的调试日志数据。

    Pay Attention

    模块与宿主必须启用 YukiHookLogger.Configs.isRecord 才能获取到调试日志数据。

    由于 Android 限制了数据传输大小的最大值,如果调试日志过多将会自动进行分段发送,数据越大速度越慢。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html index f4ac998a8..201471d76 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html @@ -23,7 +23,7 @@ } ChannelData - class | Yuki Hook API - + @@ -50,6 +50,6 @@ // Your code here. }
    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html index 8b1c8989c..786827926 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html @@ -23,12 +23,12 @@ } ChannelPriority - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ChannelPriority - class

    class ChannelPriority(private val conditions: () -> Boolean)
     

    Change Records

    v1.1.5 added

    Function Illustrate

    数据通讯桥响应优先级构造类。

    这个类是对 YukiHookDataChannel 的一个扩展用法。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html index 5d4b54d5f..2226f7c2c 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html @@ -23,12 +23,12 @@ } ModuleAppActivity - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModuleAppActivity - class

    open class ModuleAppActivity : Activity()
     

    Change Records

    v1.1.0 added

    Function Illustrate

    代理 Activity

    继承于此类的 Activity 可以同时在宿主与模块中启动。

    在 (Xposed) 宿主环境需要在宿主启动时调用 Context.registerModuleAppActivities 进行注册。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html index fcc5545cf..661d15ee4 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html @@ -23,13 +23,13 @@ } ModuleAppCompatActivity - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModuleAppCompatActivity - class

    open class ModuleAppCompatActivity : AppCompatActivity()
     

    Change Records

    v1.1.0 added

    Function Illustrate

    代理 AppCompatActivity

    继承于此类的 Activity 可以同时在宿主与模块中启动。

    在 (Xposed) 宿主环境需要在宿主启动时调用 Context.registerModuleAppActivities 进行注册。

    在 (Xposed) 宿主环境需要重写 moduleTheme 设置 AppCompat 主题,否则会无法启动。

    moduleTheme - field

    open val moduleTheme: Int
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置当前代理的 Activity 主题。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html index afa5df075..2a987b1a5 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html @@ -23,13 +23,13 @@ } ModuleContextThemeWrapper - class | Yuki Hook API - +

    Notice

    The English translation of this page has not been completed, you are welcome to contribute translations to us.

    You can use the Chrome Translation Plugin to translate entire pages for reference.

    ModuleContextThemeWrapper - class

    class ModuleContextThemeWrapper private constructor(baseContext: Context, theme: Int, configuration: Configuration?) : ContextThemeWrapper
     

    Change Records

    v1.1.0 added

    Function Illustrate

    代理 ContextThemeWrapper

    通过包装,你可以轻松在 (Xposed) 宿主环境使用来自模块的主题资源。

    applyConfiguration - method

    fun applyConfiguration(initiate: Configuration.() -> Unit): ModuleContextThemeWrapper
     

    Change Records

    v1.1.0 added

    Function Illustrate

    设置当前 ModuleContextThemeWrapperConfiguration

    设置后会自动调用 Resources.updateConfiguration

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html index c0211d445..58c5ec772 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html @@ -23,7 +23,7 @@ } ModuleClassLoader - class | Yuki Hook API - + @@ -31,6 +31,6 @@

    Change Records

    v1.1.2 added

    Function Illustrate

    自动处理 (Xposed) 宿主环境与模块环境的 ClassLoader

    companion object - object

    Change Records

    v1.1.2 added

    excludeHostClasses - method

    fun excludeHostClasses(vararg name: String)
     

    Change Records

    v1.1.2 added

    Function Illustrate

    添加到 Hook APP (宿主) Class 排除列表。

    排除列表中的 Class 将会使用宿主的 ClassLoader 进行装载。

    Pay Attention

    排除列表仅会在 (Xposed) 宿主环境生效。

    excludeModuleClasses - method

    fun excludeModuleClasses(vararg name: String)
     

    Change Records

    v1.1.2 added

    Function Illustrate

    添加到模块 Class 排除列表。

    排除列表中的 Class 将会使用模块 (当前宿主环境的模块注入进程) 的 ClassLoader 进行装载。

    Pay Attention

    排除列表仅会在 (Xposed) 宿主环境生效。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html index 13545b7ed..f4167a846 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html @@ -23,7 +23,7 @@ } YukiHookModulePrefs - class | Yuki Hook API - + @@ -56,6 +56,6 @@

    Change Records

    v1.0.67 added

    Function Illustrate

    智能获取指定类型的键值。

    put - method

    inline fun <reified T> put(prefs: PrefsData<T>, value: T)
     

    Change Records

    v1.0.67 added

    Function Illustrate

    智能存储指定类型的键值。

    Notice

    在 (Xposed) 宿主环境下只读,无法使用。

    clearCache - method

    fun clearCache()
     

    Change Records

    v1.0.5 added

    Function Illustrate

    清除 XSharedPreferences 中缓存的键值数据。

    无论是否开启 YukiHookAPI.Configs.isEnableModulePrefsCache

    调用此方法将清除当前存储的全部键值缓存。

    下次将从 XSharedPreferences 重新读取。

    在 (Xposed) 宿主环境中使用。

    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html index 07cceaea5..36e4d9ac1 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html @@ -23,7 +23,7 @@ } PrefsData - class | Yuki Hook API - + @@ -45,6 +45,6 @@

    你依然可以不使用模板定义的默认值,随时修改你的默认值。

    The following example

    // 读取 - 此时 data 取到的默认值将会是 2 - 并不是模板提供的 0
     val data = prefs.get(DataConst.TEST_KV_DATA_3, 2)
     
    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html index 4a231f68b..49cb3b16d 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html @@ -23,7 +23,7 @@ } ModulePreferenceFragment - class | Yuki Hook API - + @@ -49,6 +49,6 @@ } }
    - + diff --git a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html index abba21511..34266fb49 100644 --- a/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html +++ b/docs/en/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html @@ -23,7 +23,7 @@ } IYukiHookXposedInit - interface | Yuki Hook API - + @@ -32,6 +32,6 @@

    Change Records

    v1.0.5 added

    Function Illustrate

    配置 YukiHookAPI.Configs 的初始化方法。

    Pay Attention

    在这里只能进行初始化配置,不能进行 Hook 操作。

    此方法可选,你也可以选择不对 YukiHookAPI.Configs 进行配置。

    onHook - method

    fun onHook()
     

    Change Records

    v1.0 first

    Function Illustrate

    Xposed API 的模块装载调用入口方法。

    onXposedEvent - method

    fun onXposedEvent()
     

    Change Records

    v1.0.80 added

    Function Illustrate

    监听 Xposed 原生装载事件。

    若你的 Hook 事件中存在需要兼容的原生 Xposed 功能,可在这里实现。

    请在这里使用 YukiXposedEvent 创建回调事件监听。

    可监听的事件如下:

    YukiXposedEvent.onInitZygote

    YukiXposedEvent.onHandleLoadPackage

    YukiXposedEvent.onHandleInitPackageResources

    Pay Attention

    此接口仅供监听和实现原生 Xposed API 的功能,请不要在这里操作 YukiHookAPI

    YukiHookXposedInitProxy - interface

    Change Records

    v1.0 first

    v1.0.80 deprecated

    请转移到 IYukiHookXposedInit

    - + diff --git a/docs/en/api/special-features/host-inject.html b/docs/en/api/special-features/host-inject.html index bd4026a98..7521954ec 100644 --- a/docs/en/api/special-features/host-inject.html +++ b/docs/en/api/special-features/host-inject.html @@ -23,7 +23,7 @@ } Host Resource Injection Extension | Yuki Hook API - + @@ -165,6 +165,6 @@ "com.demo.controller.ModuleController" )

    You need to set it before the method of injecting Module App's resources into the Host App is executed to take effect.

    This function is only to solve the situation that Class with the same name may exist in the Host App and Module App, such as shared SDK and dependencies.

    In most cases, you will not use this function.

    Tips

    For more functions, please refer to ModuleClassLoader.

    - + diff --git a/docs/en/api/special-features/host-lifecycle.html b/docs/en/api/special-features/host-lifecycle.html index 321706efe..63edcaab0 100644 --- a/docs/en/api/special-features/host-lifecycle.html +++ b/docs/en/api/special-features/host-lifecycle.html @@ -23,7 +23,7 @@ } Host Lifecycle Extension | Yuki Hook API - + @@ -78,6 +78,6 @@ } }

    Tips

    For more functions, please refer to AppLifecycle.

    - + diff --git a/docs/en/api/special-features/logger.html b/docs/en/api/special-features/logger.html index 3d4d060ee..dedcb2cf6 100644 --- a/docs/en/api/special-features/logger.html +++ b/docs/en/api/special-features/logger.html @@ -23,7 +23,7 @@ } Debug Logs | Yuki Hook API - + @@ -78,6 +78,6 @@ // ... }
    - + diff --git a/docs/en/api/special-features/reflection.html b/docs/en/api/special-features/reflection.html index 8b104b782..00760c39a 100644 --- a/docs/en/api/special-features/reflection.html +++ b/docs/en/api/special-features/reflection.html @@ -23,7 +23,7 @@ } Reflection Extensions | Yuki Hook API - + @@ -874,6 +874,6 @@ param(BundleClass) }

    The following are wrapper names for some special case types in Java represented in YukiHookAPI.

    • voidUnitType

    • java.lang.VoidUnitClass

    • java.lang.ObjectAnyClass

    • java.lang.IntegerIntClass

    • java.lang.CharacterCharClass

    Notice

    Encapsulating types with Type(Class Name) + Type will and only be represented as Java primitive type keywords.

    Since the concept of primitive types does not exist in Kotlin, they will all be defined as KClass.

    There are 9 primitive type keywords in Java, of which 8 are primitive type, namely boolean, char, byte, short , int, float, long, double, of which the void type is a special case.

    At the same time, they all have their own corresponding package types in Java, such as java.lang.Boolean, java.lang.Integer, these types are unequal, Please note the distinction.

    Similarly, arrays also have corresponding wrapper types, which also need to be distinguished from Java primitive type keywords.

    For example, the encapsulation type of byte[] is ByteArrayType or ArrayClass(ByteType), and the encapsulation type of Byte[] is ByteArrayClass or ArrayClass(ByteClass ), these types are also unequal.

    At the same time, you are welcome to contribute more commonly used types.

    - + diff --git a/docs/en/api/special-features/xposed-channel.html b/docs/en/api/special-features/xposed-channel.html index a64ebaa11..7d8864edb 100644 --- a/docs/en/api/special-features/xposed-channel.html +++ b/docs/en/api/special-features/xposed-channel.html @@ -23,7 +23,7 @@ } Xposed Module and Host Channel | Yuki Hook API - + @@ -147,6 +147,6 @@ } }

    Security Instructions

    In the Module environment, you can only receive the communication data sent by the Host App of the specified package name and can only send to the Host App of the specified package name, except for System Framework.

    Pay Attention

    In order to further prevent broadcast abuse, the API in the communication data will automatically specify the package name of the Host App and Module App to prevent other apps from monitoring and using broadcast to make overrun behaviors.

    - + diff --git a/docs/en/api/special-features/xposed-storage.html b/docs/en/api/special-features/xposed-storage.html index 3aebe69e5..988aa9f3d 100644 --- a/docs/en/api/special-features/xposed-storage.html +++ b/docs/en/api/special-features/xposed-storage.html @@ -23,7 +23,7 @@ } Xposed Module Data Storage | Yuki Hook API - + @@ -39,6 +39,6 @@ // Can also be used like this val testName = prefs.name("specify_file_name").getString("test_name", "default_value")

    If your project has a lot of fixed data that needs to be stored and read, it is recommended to use PrefsData to create templates.

    Tips

    For more functions, please refer to YukiHookModulePrefs, PrefsData.

    Use in PreferenceFragment

    Loading YukiHookModulePrefs in PreferenceFragment is described here.

    If your Module App uses PreferenceFragmentCompat, you can now start migrating its extends ModulePreferenceFragment.

    Pay Attention

    You must extends ModulePreferenceFragment to implement the module storage function of YukiHookModulePrefs.

    Tips

    For more functions, please refer to ModulePreferenceFragment.

    - + diff --git a/docs/en/config/api-example.html b/docs/en/config/api-example.html index 8d659199f..59b8ee053 100644 --- a/docs/en/config/api-example.html +++ b/docs/en/config/api-example.html @@ -23,7 +23,7 @@ } API Basic Configs | Yuki Hook API - + @@ -216,6 +216,6 @@

    Precautions when using as Hook API

    If you are using it as a Hook API, then you only need to differentiate the encase method at the entry point.

    Notice

    The encase method provides two identical methods for use as a Hook API, but with only one more parameter baseContext than the previous two.

    Method 1

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

    Method 2

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

    The baseContext here only needs to fill in the Context you got at attachBaseContext, and other usages are exactly the same as the above.

    Pay Attention

    Never use the encase method in an Xposed way without omitting the baseContext parameter, this will lead to your Hook not work at all.

    The Resources Hook feature is not supported as Hook API.

    - + diff --git a/docs/en/config/api-exception.html b/docs/en/config/api-exception.html index b1a221da1..77ee8217b 100644 --- a/docs/en/config/api-exception.html +++ b/docs/en/config/api-exception.html @@ -23,7 +23,7 @@ } API Exception Handling | Yuki Hook API - + @@ -396,6 +396,6 @@ // <Solution 2> Do not fill in the generic declaration val clazz2 = "android.app.Activity".toClass()

    Please ensure that the generic type declared after executing the method is the specified target Class type, and you do not need to fill in the generic declaration if the target type is not sure.

    - + diff --git a/docs/en/config/api-using.html b/docs/en/config/api-using.html index 4a1a08f9d..4a0b69d11 100644 --- a/docs/en/config/api-using.html +++ b/docs/en/config/api-using.html @@ -23,7 +23,7 @@ } Use as Hook API Configs | Yuki Hook API - + @@ -77,6 +77,6 @@ super.attachBaseContext(base) }
    - + diff --git a/docs/en/config/r8-proguard.html b/docs/en/config/r8-proguard.html index 6d6c11398..641a13313 100644 --- a/docs/en/config/r8-proguard.html +++ b/docs/en/config/r8-proguard.html @@ -23,12 +23,12 @@ } R8 & Proguard Obfuscate | Yuki Hook API - +

    R8 & Proguard Obfuscate

    In most scenarios, the Xposed Module can be compressed by native obfuscation.

    Here is the configuration method of obfuscation.

    R8

    If you are using R8 then you don't need any special configuration for YukiHookAPI.

    Proguard

    If you are still using Proguard, you need to do some rule configuration.

    Pay Attention

    Proguard rules have been deprecated, please don't use them anymore.

    Since Android Gradle Plugin 4.2, the obfuscator with the latest version of the Android Jetpack default is R8, and you no longer need to consider obfuscation.

    To enable R8 in any version, please add the following rules to the gradle.properties file, no configuration is required for Android Gradle Plugin 7.0 and above.

    android.enableR8=true
     
    - + diff --git a/docs/en/config/xposed-using.html b/docs/en/config/xposed-using.html index d9602df7c..4b4e8eb13 100644 --- a/docs/en/config/xposed-using.html +++ b/docs/en/config/xposed-using.html @@ -23,7 +23,7 @@ } Use as Xposed Module Configs | Yuki Hook API - + @@ -104,6 +104,6 @@ } }

    onXposedEvent and onHook methods exist completely independently and do not affect each other. You can continue to use YukiHookAPI in the onHook method.

    Tips

    For more functions, please refer to the IYukiHookXposedInit.onXposedEvent method.

    - + diff --git a/docs/en/guide/example.html b/docs/en/guide/example.html index c83157d57..d976aa9ee 100644 --- a/docs/en/guide/example.html +++ b/docs/en/guide/example.html @@ -23,7 +23,7 @@ } Usage Example | Yuki Hook API - + @@ -319,6 +319,6 @@ </queries>

    There is another solution, you can directly declare the android.permission.QUERY_ALL_PACKAGES permission, but it is not recommended and will be warned by code inspection.

    The following example

    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
     

    If the activation state of TaiChi and Wuji is included in the Module App activation judgment, the Application of the Module App must be extends ModuleApplication or ModuleApplication must be used directly;

    The API after 1.0.91 has modified the activation logic judgment method, now you can use this API in the Module App and Host App at the same time;

    Need to make sure YukiHookAPI.Configs.isEnableHookModuleStatus is enabled;

    Except for Hook Frameworks that provide standard APIs, Module Apps may not be able to determine whether they are activated in other cases.

    - + diff --git a/docs/en/guide/home.html b/docs/en/guide/home.html index 2d9820335..7e9e809ff 100644 --- a/docs/en/guide/home.html +++ b/docs/en/guide/home.html @@ -23,7 +23,7 @@ } Introduce | Yuki Hook API - + @@ -134,6 +134,6 @@ } }

    Yes, you read that right, just needing these codes can completely replace the Xposed API to achieve the same function.

    Now, with the help of the efficient and powerful YukiHookAPI, you can implement a very simple Xposed Module.

    Suppored Hook Framework

    The following are the Hook Framework and Xposed framework supported by YukiHookAPI.

    Hook FrameworkSTDescription
    LSPosedopen in new windowStable use in multiple scenarios
    LSPatchopen in new windowWIP after this project is improved
    EdXposedopen in new windowMaintenance has stopped, no longer recommended
    Pineopen in new windowOnly available
    SandHookopen in new windowOnly available
    Whaleopen in new windowNeed xposed-hook-based-on-whaleopen in new window
    YAHFAopen in new windowNeed to implement the Xposed API yourself
    FastHookopen in new windowNeed to implement the Xposed API yourself
    Epicopen in new windowNeed Dexposedopen in new window by yourself
    TaiChiopen in new windowOnly available for Xposed Module
    Xposedopen in new windowRecommended minimum system version is Android 7.0
    - + diff --git a/docs/en/guide/knowledge.html b/docs/en/guide/knowledge.html index 70f471dfa..36c685e7d 100644 --- a/docs/en/guide/knowledge.html +++ b/docs/en/guide/knowledge.html @@ -23,7 +23,7 @@ } Basic Knowledge | Yuki Hook API - + @@ -40,6 +40,6 @@ └── Hooker (Hooked) ...

    Through the operation principle of Xposed, many frameworks of the same type have been derived. As mobile devices in today's era are more and more difficult to obtain Root permissions or even flash, and when they are not just needed, some Root-free frameworks are also produced, such as LSPatchTaiChi.

    These Hook Frameworks at the ART level can also complete the Hook process with the same principle as Xposed without using the Xposed API. The operating principle of Root-free is to modify the APK and inject the Hook process into the Host, and control it through external modules.

    Another product is to use the existing functions of the Android operating environment to virtualize an environment that is completely the same as the current device system, and run App in it. This is the virtual App technology VirtualApp, which was later derived as VirtualXposed .

    The Root-free frameworks mentioned above are LSPatchopen in new windowTaiChiopen in new windowVirtualAppopen in new windowSandVXposedopen in new window.

    What YukiHookAPI does

    Since Xposed appeared until now, apart from XposedHelpers, which is well known to developers, there is still no set of syntactic sugar for Kotlin and API with complete usage encapsulation.

    The birth of this API framework is to hope that in the current era of Xposed, more capable Xposed Module developers can avoid detours and complete the entire development process more easily and simply.

    In the future, YukiHookAPI will adapt to more third-party Hook Frameworks based on the goal of using the Xposed API, so as to improve the entire ecosystem and help more developers make Xposed Module development simpler and easier to understand.

    Let's Started

    Before starting, you need to have the following basics to better use YukiHookAPI.

    - + diff --git a/docs/en/guide/move-to-new-api.html b/docs/en/guide/move-to-new-api.html index 5f6e1507a..25d96cde0 100644 --- a/docs/en/guide/move-to-new-api.html +++ b/docs/en/guide/move-to-new-api.html @@ -23,7 +23,7 @@ } Migrate from Xposed API | Yuki Hook API - + @@ -215,6 +215,6 @@ // Intercept return value override fun replaceHookedMethod(param: MethodHookParam) = null

    Migrate Other Features

    YukiHookAPI is a complete rewrite of the Xposed API, you can refer to API Document and Special Features to determine some functional Migration and use.

    - + diff --git a/docs/en/guide/quick-start.html b/docs/en/guide/quick-start.html index 3f6e5d494..11a4cb2af 100644 --- a/docs/en/guide/quick-start.html +++ b/docs/en/guide/quick-start.html @@ -23,7 +23,7 @@ } Quick Start | Yuki Hook API - + @@ -100,6 +100,6 @@ super.attachBaseContext(base) }

    Then, you can start writing Hook code in much the same way you would use it as an Xposed Module.

    For configuration details related to use as a Hook API, you can click here to continue reading.

    Notice

    YukiHookModulePrefs, YukiHookDataChannel and Resources Hook functionality will not work when using a custom Hook Framework instead of the full Xposed Module.

    - + diff --git a/docs/en/index.html b/docs/en/index.html index c3087e537..b4cb3a368 100644 --- a/docs/en/index.html +++ b/docs/en/index.html @@ -23,7 +23,7 @@ } Home | Yuki Hook API - + @@ -53,6 +53,6 @@ } } - + diff --git a/docs/en/tools/yukihookapi-projectbuilder.html b/docs/en/tools/yukihookapi-projectbuilder.html index ca0cc65b3..91fa6cc15 100644 --- a/docs/en/tools/yukihookapi-projectbuilder.html +++ b/docs/en/tools/yukihookapi-projectbuilder.html @@ -23,11 +23,11 @@ } YukiHookAPI Project Builder | Yuki Hook API - +

    YukiHookAPI Project Builder

    This is an automatic building tool for Xposed Modules using YukiHookAPI as the core.

    Implementing automated search relies on quickly building an Android project template that includes a Xposed Module environment.

    Get Project

    This project is open source and free, and will be maintained continuously according to your usage.

    The original version may have imperfections or bugs. We welcome to your feedback.

    Project Address YukiHookAPI-ProjectBuilderopen in new window

    If you want to download directly, you can click hereopen in new window to go to the Release address.

    Usage

    Here contains the basic usage and function explanation.

    Basic Usage

    • The software use process requires your device connected to the Internet.

    • After starting the software, simply configure the project you want to create, click the button in the lower right corner or select Project > Run Build from the menu bar to start the task.

    • After waiting for the automatic dependency search to complete, you can configure the project dependencies. It is recommended to use the latest dependencies to ensure the stability of the project, and the build tools only support the latest dependencies.

    • Select the folder where you need to create the project. After starting, the project will be created in the location you selected, and wait for the whole process to complete and the project will be created.

    Config Template

    Config template is an extension function, you can select menu bar Project > Config Template > New Template.

    And then, you can create a template with the current config, and you can re-create it from Saved Template next time Load the template to restore the current config.

    Multilingual Support

    The software language follows the current system, and you can manually select the software interface language in the Language column of the menu bar.

    - + diff --git a/docs/index.html b/docs/index.html index 28cb934b8..6758d3df9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -23,11 +23,11 @@ } Yuki Hook API - +

    Select a language

    English 简体中文

    - + diff --git a/docs/zh-cn/about/about.html b/docs/zh-cn/about/about.html index 76e0d37cc..09f2c364d 100644 --- a/docs/zh-cn/about/about.html +++ b/docs/zh-cn/about/about.html @@ -23,7 +23,7 @@ } 关于此文档 | Yuki Hook API - + @@ -49,6 +49,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    版权所有 © 2019-2023 HighCapable

    - + diff --git a/docs/zh-cn/about/changelog.html b/docs/zh-cn/about/changelog.html index f27a551d5..3b002aaad 100644 --- a/docs/zh-cn/about/changelog.html +++ b/docs/zh-cn/about/changelog.html @@ -23,11 +23,11 @@ } 更新日志 | Yuki Hook API - + -

    更新日志

    这里记录了 YukiHookAPI 的版本更新历史。

    特别注意

    我们只会对最新的 API 版本进行维护,若你正在使用过时的 API 版本则代表你自愿放弃一切维护的可能性。

    1.1.7 | 2023.02.01  最新

    • 修复底层 Hook 方法在回调时修改 result 等参数时时不能同步更新修改后的状态问题,感谢 Yongzheng Lai在新窗口中打开Issue在新窗口中打开
    • 移动 YukiHookAPI 自动生成的入口类名称文件 assets/yukihookapi_initresources/META-INF/yukihookapi_init
    • 允许在仅打印异常堆栈时 msg 参数为空并可以不设置 msg 参数,留空 msg 参数的日志除非异常堆栈不为空否则将不会被记录
    • 修复 Hook 回调方法体内发生的异常打印的日志无具体方法信息的 BUG
    • HookParam 新增 instanceOrNull 变量与方法,可以在不确定 Hook 实例是否为空的前提下使用以防止 Hook 实例为空抛出异常
    • 修复 Xposed 模块装载时可能出现的一些进程冲突问题
    • 解耦合所有 Member 查找功能中的 Hooker 到 MemberBaseFinder.MemberHookerManager
    • 修改了 YukiMemberHookCreator 中的 by 条件用法,现在可以重复使用 by 方法设置多个条件
    • 移除了 Android type 中的错误 Class 对象声明
    • PackageParam.AppLifecycle 中的 registerReceiver 方法新增直接使用 IntentFilter 创建系统广播监听的功能
    • 修复在 PackageParam.AppLifecycle 中可能存在多次注册生命周期的问题

    1.1.6 | 2023.01.21  过旧

    • 修复 Xposed 模块装载时可能存在同一个进程多个包名的情况导致 PackageParam 保持单例后 ClassLoader 不符的严重问题
    • 新增同一个进程多个包名的情况下未区分包名时,停止装载单例化的子 Hooker 并打印警告信息
    • 修复 HookParam.callOriginalHookParam.invokeOriginal 等方法调用原始方法时参数个数不正确的问题
    • 修改 MethodFinderConstructorFinderReflectionFactory 中反射调用的方法参数名 paramargs
    • 新增 Xposed 模块自动处理程序中判断入口类构造方法参数功能,入口类需要保证其不存在任何构造方法参数

    1.1.5 | 2023.01.13  过旧

    • 规范并优化整体代码风格
    • 对部分内部调用的 API 进行了私有化处理
    • 底层 API 接口整体解耦合,为兼容更多 Hook Framework 做准备
    • 将部分集成于 API 中的功能移动到 ksp-xposed 依赖 (解耦合),单独引入 api 依赖将不再包含第三方库等功能的引用
    • 文档 快速开始 页面加入 YukiHookAPI.Configs.isDebug 何时需要关闭的说明
    • 规范类型定义中的 Java 原始类型 (Primitive Type) 并同步更新到文档
    • Java type 新增 NumberClass 类型
    • 改进了 (Xposed) 宿主环境的识别能力
    • 接管了 Xposed 模块装载后的全部异常,若发生异常将会自动拦截并打印错误日志
    • 修改类型定义中较低 Android 系统版本 (Android 5.0) 中不存在的 Class 为空安全类型
    • 适配并支持原生 Xposed,最低推荐版本为 Android 7.0
    • Hook 入口类新增支持声明为 object 类型 (单例)
    • 修复 Android 8 以下系统不支持 Executable 类型导致 Hook 失效的问题
    • 修复 Android 9 以下系统在使用 Activity 代理功能时报错问题并限制此功能最低支持版本为 Android 7.0
    • 新增禁止资源注入与 Activity 代理功能注入当前模块自身实例进程,防止发生问题
    • 修复一个 Hook 过程中方法返回值的对象是目标的继承类和接口时被识别为返回值不符的严重错误
    • 修复在当前 Hook 的实例对象是静态的情况下调用 HookParam.callOriginalHookParam.invokeOriginal 出现对象为空问题
    • 优化对太极激活方法相关判断功能以及同步更新文档相关说明
    • 作废了 YukiHookAPI.Status.executorNameYukiHookAPI.Status.executorVersion,请转移到 YukiHookAPI.Status.Executor
    • 适配了一些第三方 Hook Framework 的 YukiHookAPI.Status.Executor.name 名称显示功能
    • 新增 Class.extendsClass.implements 等方法,可更加方便地判断当前 Class 的继承与接口关系
    • 新增 Class.toClassClass.toClassOrNull 等相关方法的同名泛型方法,可使用泛型来约束已知 Class 的实例对象类型
    • 修改 classOf<T> 方法的返回值为泛型 T,以约束已知 Class 的实例对象类型
    • 新增 Class 相关扩展方法的 initialize 参数,可控制在得到 Class 对象时是否同时初始化其静态方法块
    • 变量、方法、构造方法查找功能中新增 param { ... }type { ... } 等用法,可对查找的对象增加更加具体的条件判断
    • PackageParamloadApp 方法新增 isExcludeSelf 参数,可用于排除 Hook 相关功能注入模块自身实例进程
    • PackageParamonAppLifecycle 方法新增 isOnFailureThrowToApp 参数,可将生命周期方法体内发生的异常直接抛给宿主
    • 修改 PackageParam 中的 appClassLoader 为可修改变量,可在 Hook 过程中动态设置宿主使用的 ClassLoader
    • HookParam 中新增 dataExtra 功能,可用于临时存储 Hook 方法体中的数据
    • 作废 YukiHookModulePrefs 中的 isRunInNewXShareModeisXSharePrefsReadable,统一合并到 isPreferencesAvailable
    • Class.allFieldsClass.allMethods 等相关方法新增 isAccessible 参数,可控制成员对象何时可被设置为可访问类型
    • 修复 YukiHookDataChannel 存在多个宿主时在一个 Activity 中接收相同键值数据时仅会回调最后一个方法体的问题
    • YukiHookDataChannelwait 等相关方法中新增 priority 参数,可传入 ChannelPriority 来自定义回调数据结果的条件
    • YukiHookDataChannel 新增发送数据时自动使用 ChannelDataWrapper 类型包装功能,提升使用体验并增强数据保护
    • YukiHookDataChannel 新增限制一次性发送数据的最大字节大小功能,防止数据过大造成 APP 崩溃
    • YukiHookDataChannel 新增发送数据过大时自动分段发送功能,仅支持 ListMapSetString 类型
    • YukiHookLogger 新增 contents 方法与 saveToFiledata 参数,可传入自定义的调试日志数据进行格式化或保存到文件
    • 修复 YukiHookLogger 处理后的调试日志数据包名可能在 (Xposed) 宿主环境不正确的问题
    • 修复 Xposed 模块装载资源钩子 (Resources Hook) 事件时在部分系统上 (部分系统 APP 中) 包名可能不正确的问题

    1.1.4 | 2022.10.04  过旧

    • 修复 YukiHookDataChannel 可能不能响应系统框架中响应广播事件的问题,在 Android 13 中复现
    • 修复 YukiHookDataChannel 长达多个版本在 (Xposed) 宿主环境无法与模块通讯的问题
    • YukiHookDataChannel 中新增 obtainLoggerInMemoryData 方法,可在模块与宿主之间共享调试日志数据
    • 修改 YukiHookLogger.inMemoryData 的类型为 ArrayList 并修改 YukiLoggerDatadata class
    • 修复 YukiLoggerData 在模块中包名为空打印空白的问题
    • PackageParam 中新增 loadApploadZygoteloadSystemwithProcess 的同名多参数方法
    • 修复了一些可能存在的 BUG

    1.1.3 | 2022.09.30  过旧

    • 修复一个无法自定义 Hook 入口类名的致命错误
    • 添加 LoggerFactory 中的部分代码注释文案并更新特色功能文档

    1.1.2 | 2022.09.30  过期

    • 文档 基础知识 页面新增 English 版本友情链接
    • 修复 YukiBaseHooker 注释中的 English 文档链接错误问题
    • 修复 ModuleClassLoader 中的 ClassCastException 问题
    • 修正并规范部分代码注释
    • 新增 ModuleClassLoader 排除列表功能,可使用 excludeHostClassesexcludeModuleClasses 方法来自定义排除列表
    • 新增 YukiLoggerData 实时日志数据类,可实时通过 YukiHookLogger.inMemoryData 获取日志数组
    • 新增 ClassLoader.listOfClasses 方法,可直接获取当前 Dex 中的全部 Class

    1.1.1 | 2022.09.28  过期

    • 修复了文档 基础知识 页面友情链接错误的问题
    • 修复了文档 favicon 不显示的问题
    • 修复 DexClassFinder 查找条件中的 BUG

    1.1.0 | 2022.09.28  过期

    • 这是一次大版本更新,有关更新日志中提到的变化及用法请参考 API 文档 以及 特色功能
    • 更换帮助文档框架到 VuePress在新窗口中打开
    • 统一并规范文档中的术语名词,例如“查询”一律更改为了“查找”,XposedHelper 拼写错误修改为了 XposedHelpers
    • 文档 基础知识 页面加入友情链接,仅限简体中文
    • 将 Hook App Demo 的 ClassMethod 转为 Java 以提供更好的演示效果
    • 修正了 Hook Module Demo 中的代码注释命名
    • 重构了大量底层 Hook 逻辑及 Xposed API 的对接方式
    • 移除了 HookParamWrapper,现已将其直接与 YukiBridgeFactory 对接
    • 移动部分 YukiHookBridge 中的方法到 AppParasitics
    • 移除了 HookParam.args 与底层的直接对接方法 setArgs,直接获取并设置当前数组的对象
    • 优化自动处理程序,将引用的 jar 合并到 stub 项目
    • 修复多项目打包时模块包名无法正确匹配的问题以及修改自动处理程序的模块包名匹配逻辑,感谢 5ec1cff在新窗口中打开 的反馈及提供的解决方案
    • 对 API 私有工具类的方法进行了 internal 闭包处理,避免污染顶级命名空间
    • 修正了所有反射和 Hook 类的 Creater 命名到 Creator
    • 新增 YukiHookAPI.Status.compiledTimestamp 功能,可以在作为 Xposed 模块使用时获取编译完成的时间戳
    • 新增 YukiHookAPI.Status.isXposedEnvironment 功能,可以判断当前为 (Xposed) 宿主环境还是模块环境
    • 调试日志功能进行了大改版,现已将 YukiHookAPI.Configs.debugTag 等功能合并到 YukiHookLogger.Configs
    • 调试日志新增可指定打印使用的方法为 XposedBridge.logLogd
    • 调试日志中默认加入当前宿主的包名以及当前用户 ID,以供调试,你可以在 debugLog 配置中自行更改
    • 新增 generic 功能,可对泛型进行反射和调用,你可以在 ClassCurrentClass 中使用它
    • 作废 buildOfAny 方法,现在请直接使用 buildOf 方法 (不带泛型) 来使用构造方法创建新对象并得到结果 Any
    • 修复 hasExtends 使用过程发生空指针异常的问题
    • CurrentClass 新增非 lambda 方式的调用方法
    • CurrentClass 新增 namesimpleName 功能
    • 完全重写 ReflectionTool 的核心方法,将不同的查找条件进行了整理分类
    • 修复 ReflectionTool 中可能的直接调用 declared 获取的 Member 抛出异常的问题
    • 修复 ReflectionToolUndefinedType 未在 MethodConstructor 条件中正确判断的问题
    • 新增反射查找结果发生异常时的友好提示方式,可具体定位到指定条件找不到 Member 的问题
    • 反射查找 MethodConstructor 中新增 VagueType 条件,可使用在 param 条件中用于忽略你不想填写的参数
    • 反射查找 MethodConstructor 中新增 paramCount { ... } 条件,现在你可以直接拿到其中的 it 来自定义你的判断条件
    • FieldFinder 结果中新增 current 方法,可直接对结果实例创建调用空间
    • 修改了反射查找功能中的 modifiers 条件以及 name 条件,现在你需要对此方法体结尾返回一个 Boolean 以使条件成立
    • ModifierRules 中的 as* 功能改名为 is*,感谢 Kitsune在新窗口中打开 的建议
    • FieldFinder 中新增 RemedyPlan 功能
    • 新增 Dex 中的 Class 模糊查找功能 (Beta),你现在可以直接使用 searchClass 功能来使用指定条件模糊查找 Class
    • 新增反射查找中的多重查找功能,可使用相对查找条件同时获取多个查找结果,感谢 AA 以及 Kitsune在新窗口中打开 的建议
    • 修复 appClassLoader 获取到的对象在某些系统中的系统应用中不正确的问题,感谢 Luckyzyx在新窗口中打开 的反馈
    • 修改了 XposedBridge.invokeOriginalMethod 的调用方式并在 MethodFinder.Result.Instance 中增加 original 功能
    • 修复 YukiHookModulePrefsgetStringSet 方法取值错误的问题并优化代码风格,感谢 Teddy_Zhu在新窗口中打开PR在新窗口中打开
    • 修改 YukiHookModulePrefs,拦截 XSharePreference 可能不存在的异常
    • 修复 YukiHookDataChannel 在某些第三方 ROM 系统框架中无法注册成功的问题
    • 安全化 YukiHookDataChannel,现在它只能在来自指定包名的模块与宿主之间通信
    • 新增自动 Hook SharedPreferences 以修复部分系统中文件权限不是 0664 的问题,感谢 5ec1cff在新窗口中打开 的反馈及提供的实现代码
    • 新增 YukiHookAPI.Configs.isEnableHookSharedPreferences 功能,默认关闭,若 SharedPreferences 的权限错误可进行启用
    • 修复查找 Constructor 时无参构造方法在不填写查找条件时无法找到的 BUG,感谢 B5 KAKA 的反馈
    • 分离位于 injectMembermethodconstructorResult 实例到 Process
    • 在 Hook 过程中新增 useDangerousOperation 方法,未进行声明时在 Hook 危险列表中的功能后会自动停止 Hook 并打印错误
    • 新增模块资源注入与 Activity 代理功能,你可以调用 injectModuleAppResourcesregisterModuleAppActivities 来使用
    • 新增 ModuleContextThemeWrapper 功能,你可以调用 applyModuleTheme 在任意 Activity 中创建模块的 Context
    • 新增 ClassLoader.onLoadClass 功能,可用于监听 ClassLoaderloadClass 方法被调用的事件
    • 作废了 classOfclazz 扩展方法,新增 toClass 以及 toClassOrNull 用法,请现在转移到新的方法
    • VariousClass 新增 getOrNull 方法,可在匹配不到 Class 的时候不抛出异常而是返回 null
    • PackageParam.hook 中移除了 isUseAppClassLoader 参数,修改为 isForceUseAbsolute 并自动匹配目标 Class
    • PackageParam 新增 systemContext 功能,你可以在任意时间调用此功能获取一个持久化的 Context
    • 不再对外开放 HookClass 中的任何方法
    • HookParam 中新增 throwToApp 功能,可将异常直接抛给宿主
    • Hook 回调中新增 onFailureThrowToApp 功能,可在发生异常时直接抛给宿主
    • 修改了调试日志的打印逻辑,反射查找功能中的耗时记录仅会在 Hook 过程中进行打印
    • Hook 过程中新增解除 Hook 功能,可使用 removeremoveSelf 方法解除 Hook
    • 修复在 ReplaceHook 失败的时候导致宿主抛出异常的问题,现修改为调用原始方法保证宿主功能正常运行
    • 新增 Hook 过程中对方法返回值的检查功能,在返回值不匹配的情况下会根据情景自动抛出异常或打印错误
    • Resources Hook 中新增 array 类型,感谢 GSWXXN在新窗口中打开PR在新窗口中打开
    • 移动 me.weishu.reflectionthirdparty 防止同时引入的同名依赖冲突
    • 移除 Hook 方法体为空时抛出的异常,修改为打印警告日志
    • 修改 AppLifecycle 的异常处理逻辑,当其发生异常时直接抛给宿主
    • 更新 Demo 的 API 版本到 33

    1.0.92 | 2022.05.31  过期

    • 修正了大量方法中 callback 的命名方法
    • 更换方案再次修复 YukiHookDataChannel 在低于 Android 12 的设备上不能回调当前 Activity 广播的问题
    • InjectYukiHookWithXposed 注解新增 isUsingResourcesHook 功能,现在你可以选择性关闭自动生成 IXposedHookInitPackageResources 的依赖接口了

    1.0.91 | 2022.05.29  过期

    • 修复部分设备的定制系统在 LSPosed 环境下开机启动获取的 ClassLoader 错误的问题,感谢 Luckyzyx在新窗口中打开 的反馈
    • 修复 YukiHookDataChannelZUI 以及低于 Android 12 的系统上不能回调当前 Activity 广播的问题
    • 整合 YukiHookModuleStatus 功能到 YukiHookAPI.Status,重写了大量方法,现在你可以在模块与宿主中双向判断模块激活等状态信息

    1.0.90 | 2022.05.27  过期

    • 修复 YukiHookDataChannel 在模块设置监听回调时闪退的问题
    • 修复 YukiHookDataChannel 在非当前 Activity 情况下依然会回调的问题
    • 移除 YukiHookDataChannel 回调事件的默认值,没有即不回调
    • 移除 YukiHookModulePrefs 在 XShare 不可读的情况下打印的警告
    • 新增 YukiHookModulePrefs 中的 isXSharePrefsReadable 方法,可判断当前的 XShare 是否可用

    1.0.89 | 2022.05.26  过期

    • 修复 YukiHookDataChannel 不能重复设置监听的问题,并加入在模块不同 Activity 中重复响应和自动跟随 Activity 销毁监听功能
    • 新增 YukiHookDataChannel 重复监听用例说明文档
    • 加入 onAlreadyHooked 方法,可判断当前方法是否被重复 Hook
    • 修改部分重复添加 HashMap 的逻辑,移除 putIfAbsent 方法,允许覆盖添加
    • 修复了几处可能的 BUG

    1.0.88 | 2022.05.25  过期

    • 对 Xposed API 完全解耦合
    • 增加了 type 中的 android 类型
    • YukiHookModuleStatus 从自动生成代码中分离,并加入 isEnableHookModuleStatus 的开关,由你决定是否启用
    • 对 API 大量类的构造方法进行了 internal 闭包处理
    • YukiHookModulePrefs 设置为单例运行,防止重复创建浪费系统资源
    • 修复自 1.0.80 版本后无法嵌套 Hook 的 BUG,并优化嵌套 Hook 相关功能
    • 修改 Hooker 存储方案由 HashSet 到 HashMap,防止重复添加 Hooker 的问题
    • 修改 Hook 核心实现方法,加入查重,避免重复 Hook 多次回调 HookParam 方法
    • MethodFinderFieldFinder 加入查找模糊方法、变量名称功能,可调用 name { ... } 来设置查找条件,支持正则
    • 优化并修改 appContext 的获取方式,降低会取到空的问题的可能性
    • 修改自动生成的代码中 logger 的打印 TAG 默认为你自定义的名称,方便进行调试
    • 优化 YukiHookBridgeHooker 实现方式,提升 Hook 性能
    • PackageParam 增加 onAppLifecycle 方法,可原生监听宿主的生命周期以及实现注册系统广播功能
    • 新增 YukiHookDataChannel 功能,可在模块与宿主保持存活的情况下使用系统无序广播进行通讯
    • YukiHookDataChannel 增加 checkingVersionEquals 方法,可通过监听来验证模块更新后宿主并未更新版本不匹配问题
    • demo-module 的示例代码中新增 Java 版本的示例,仅供参考

    1.0.87 | 2022.05.10  过期

    • 新增 refreshModuleAppResources 功能,以适配语言区域、字体大小、分辨率改变等情况下的 Resources 刷新
    • 新增 isEnableModuleAppResourcesCache 功能,可自行设置是否自动缓存当前模块的 Resources

    1.0.86 | 2022.05.06  过期

    • 修复不支持 Resources Hook(资源钩子) 的情况下在 initZygote 时持续报错的问题,复现在 ZUI/LSPosed CI(1.8.3-6550)
    • 优化并对 Resources Hook 进行异常处理,只有被使用后不支持才会打印错误和警告

    1.0.85 | 2022.05.04  过期

    • 修复无法 Hook 系统框架的严重问题,从 1.0.80 开始出现
    • 调试日志中新增区分 initZygote 装载的包名为 android-zygotepackageName 保持 android 不变

    1.0.83 | 2022.05.04  过期

    • 修复 YukiHookModuleStatusloadSystem 后大量报错的问题
    • 新增 type 中的 android 类型
    • 更新帮助文档的示例说明

    1.0.82 | 2022.05.04  过期

    • 修复了一处概念混淆错误,区分 initZygote 与系统框架的关系,之前的注释和文档有问题,非常抱歉
    • PackageParam 新增 loadSystem 方法,不需要再写 loadApp(name = "android") 即可 Hook 系统框架

    1.0.81 | 2022.05.04  过期

    • 修复使用 by 方法设置条件后 Hook 方法体内查找不到的方法、构造方法依然输出错误日志的问题
    • 在执行 Hook 过程中加入全局日志显示当前 Hook APP 的包名,并修复一处错误日志打印样式的问题

    1.0.80 | 2022.05.01  过期

    • InjectYukiHookWithXposed 注解新增 entryClassName 功能,可自定义生成的 xposed_init 入口类名
    • YukiHookXposedInitProxy 更名为 IYukiHookXposedInit,原接口名称已作废,将在后续版本中直接被删除
    • 新增 initZygote 与 Resources Hook 功能,支持 Hook Layout
    • 新增 onXposedEvent 方法,可监听原生 Xposed API 的全部事件
    • 对 Hook 功能的 lambda 进行 inline 处理,避免生成过碎的匿名类,提升编译后的运行性能
    • 修复 PrefsData 编译后的方法体复制过大的问题
    • 增加 XSharePreference 可读性测试,失败后会自动打印警告日志
    • PackageParam 新增 appResourcesmoduleAppResourcesmoduleAppFilePath 功能
    • PackageParamloadApp 新增不写 name 功能,默认筛选全部 APP
    • PackageParam 新增 loadZygote 方法,可直接 Hook 系统框架
    • PackageParam 新增 resources().hook 功能
    • 优化方法、构造方法、变量查找功能,找不到的错误日志将优先显示已设置的查找条件
    • 增加 hasExtends 扩展方法,可判断当前 Class 是否有继承关系
    • 增加 isSupportResourcesHook 功能,判断当前是否支持资源钩子(Resources Hook)
    • current 功能新增 superClass 方法调用父类
    • 查找方法、构造方法、变量新增 superClass 查找条件,可继续在父类中查找
    • YukiHookAPI 大量方法与 Xposed API 解耦合
    • 新增 Xposed API 的原生 Hook 优先级功能
    • 修复 isFirstApplication 可能判断不准确的问题
    • 屏蔽 MIUI 系统上 MiuiCatcherPatch 重复调用 Hook 入口方法的问题
    • 优化 Hook 入口调用方法,避免因为 Hook Framework 问题导致多次调用
    • 修复 Hook ClassLoader 导致 Hook 卡死的问题,感谢 WankkoRee在新窗口中打开 的反馈
    • 提升 XC_Callback 接口对接后的性能
    • Java type 新增 ClassLoader 类型
    • 优化 API 帮助文档,修复可能持续缓存页面的问题

    1.0.78 | 2022.04.18  过期

    • YukiHookModulePrefs 新增 isRunInNewXShareMode 方法,可用于判断模块当前是否处于 New XSharePreference 模式
    • 修复 YukiHookModulePrefsNew XSharePreference 模式下工作的部分问题
    • 新增 ModulePreferenceFragment,现在,你可以完全替换掉 PreferenceFragmentCompat 并开始使用新的功能
    • 适配 PreferenceFragmentCompat 的 Sp 数据存储解决方案,感谢 mahoshojoHCG在新窗口中打开 的反馈
    • 更新自动处理程序以及 Kotlin 依赖到最新版本
    • 修正部分文档和代码注释中的错误

    1.0.77 | 2022.04.15  过期

    • YukiHookModulePrefs 新增 clear 方法,感谢 WankkoRee在新窗口中打开 的建议
    • YukiHookModulePrefs 新增 getStringSetputStringSetall 方法
    • HookParamargs 增加 any 方法
    • 新增 ModuleApplication,可在模块中继承此类实现更多功能
    • 对接全部的 findClass 功能到 Xposed API,在非宿主环境继续使用原生 ClassLoader
    • 修复了一些可能存在的 BUG

    1.0.75 | 2022.04.13  过期

    • 更正了自动处理程序的逻辑识别部分,感谢 ApeaSuperz在新窗口中打开 的贡献
    • 修正一处文档注释的引用未更改的问题
    • HookParam 中删除了 firstArgslastArgs 方法,现在你可以使用 args().first()args().last() 来取代它
    • HookParam 中删除了 args() 中的默认参数 index = 0,现在你可以使用 args().first()args(index = 0) 来取代它
    • HookParamresult 功能增加了泛型匹配,现在你可以使用 result<T> 来匹配你的目标方法已知返回值类型了
    • 方法、构造方法查找功能新增 emptyParam 条件,并完善了文档相关需要注意的查找条件误区
    • 增加了 type 中的 android 类型

    1.0.73 | 2022.04.10

    1.0.72 | 2022.04.09  过期

    • 更新 API 文档到新的地址
    • PackageParam 中加入 appContext 功能
    • 修复一些已知的 BUG,提升 Hook 稳定性

    1.0.71 | 2022.04.04  过期

    • 修复 VariousClass 无法匹配时会停止 Hook 抛出异常的严重问题

    1.0.70 | 2022.04.04  过期

    • 修复 instanceClass 在静态实例中调用后报错问题
    • 在 Hook 过程中加入 isUseAppClassLoader 功能,感谢 WankkoRee在新窗口中打开 的反馈
    • 加入 withProcess 功能,可根据 APP 当前指定进程进行 Hook
    • 修复查找方法、构造类和变量的严重逻辑错误问题
    • 修复 Hook 目标类不存在的时候无法忽略异常输出的问题
    • 修复部分情况下 APP 启动方法装载过快导致 Hook 不能生效的问题
    • 修复 allMethods 未 Hook 到方法时不会抛出异常的问题,感谢 WankkoRee在新窗口中打开 的反馈
    • 加入 Hook 状态监听功能,感谢 WankkoRee在新窗口中打开 的建议
    • 修改 Xposed 入口注入类的方式,重新声明 API 的定义域
    • 加入混淆的方法以及变量的查找功能,可使用不同类型筛选 index 定位指定的方法和变量,感谢 WankkoRee在新窗口中打开 提供的思路
    • 查找方法、变量时允许传入多种类型,例如 String 声明的类名和 VariousClass
    • 加入全新的 current 功能,可对任意的类构建一个反射方法操作空间,方便地调用和修改其中的方法和变量
    • 修复了 Hook 过程中的大量 BUG,感谢 WankkoRee在新窗口中打开 对此项目所做出的贡献

    1.0.69 | 2022.03.30  过期

    • 添加并改进一些方法功能的注释
    • 增加 Demo 中的更多示例 Hook 内容
    • 修复在一个 Hook 实例中,allMethods 多次使用时只有最后一个生效的问题,感谢 WankkoRee在新窗口中打开 的反馈

    1.0.68 | 2022.03.29  过期

    • 增加 Demo 中的新用例和 LSPosed 作用域
    • 增加 Member 查找缓存和查找缓存配置开关
    • 移除和修改 MethodFinderFieldFinder 以及 HookParam 相关方法的调用
    • 增加更多 Finder 中的 cast 类型并支持 cast 为数组
    • 整体的性能和稳定性提升
    • 修复上一个版本可能存在的 BUG

    1.0.67 | 2022.03.27  过期

    • 增加三个 Finder 中的 modifiers 功能,可筛选 staticnativepublicabstract 等诸多描述类型
    • 增加方法和构造方法查找时可模糊方法参数类型为指定个数进行查找
    • 增加 MemberhasModifiers 扩展功能
    • 增加 MethodFinderConstructorFinder 中的 give 方法,可获得原始类型
    • 增加 YukiHookModulePrefs 中的 PrefsData 模板功能
    • 彻底对方法、构造方法及变量的查找方案进行重构
    • 优化代码注释,修复了可能产生的 BUG

    1.0.66 | 2022.03.25  过期

    • 修复 MethodFinder 中的一个严重问题
    • 增加 hookParam 中的 args 调用方法
    • 修复其它可能存在的问题以及修复部分类的注释问题

    1.0.65 | 2022.03.25  过期

    • 重新发布版本修复 Maven 仓库因为缓存问题新版本不正确的情况
    • 增加 MethodFinderFieldFinder 新的返回值调用方法
    • 修复可能存在的问题,并修复太极使用过程中可能存在的问题
    • 修复自动生成 Xposed 入口类可能发生的问题
    • 增加了 type 中的 android 类型以及 java 类型

    1.0.6 | 2022.03.20  过期

    • 修复 YukiHookModulePrefs 在使用一次 direct 忽略缓存后每次都忽略的 BUG
    • 增加新的 API,作废了 isActive 判断模块激活的传统用法
    • 修复非 Xposed 环境使用 API 时打印调试日志的问题
    • 修复查找 Field 时的日志输出问题和未拦截的异常问题
    • 解耦合 ReflectionUtils 中的 Xposed API
    • 增加 YukiHookModuleStatus 方法名称的混淆,以精简模块生成的体积
    • 装载模块自身 Hook 时将不再打印欢迎信息
    • 修复上一个版本仍然存在的某些 BUG

    1.0.55 | 2022.03.18  过期

    • 修正一处注释错误
    • 临时修复一个 BUG
    • 增加了 type 中的大量 android 类型以及少量 java 类型
    • 修复新版与旧版 Kotlin APIs 的兼容性问题

    1.0.5 | 2022.03.18  过期

    • 修复旧版本 LSPosed 框架情况下欢迎信息多次打印的问题
    • 添加 onInit 方法来配置 YukiHookAPI
    • 新增 executorNameexecutorVersion 来获取当前 Hook Framework 的名称和版本号
    • 新增 by 方法来设置 Hook 的时机和条件
    • YukiHookModulePrefs 新增可控制的键值缓存,可在宿主运行时模块动态更新数据
    • 修复了一些可能存在的 BUG

    1.0.4 | 2022.03.06  过期

    • 修复 LSPosed 在最新版本中启用“只有模块classloader可以使用Xposed API”选项后找不到 XposedBridge 的问题
    • 添加 YukiHookAPI 的常量版本名称和版本号
    • 新增 hasField 方法以及 isAllowPrintingLogs 配置参数
    • 新增 isDebug 开启的情况下 API 将自动打印欢迎信息测试模块是否生效

    1.0.3 | 2022.03.02  过期

    • 修复一个潜在性的异常未拦截 BUG
    • 增加 ignoredError 功能
    • 增加了 type 中的 android 类型
    • 增加监听 hook 后的 ClassNotFound 功能

    1.0.2 | 2022.02.18  过期

    • 修复 Windows 下无法找到项目路径的问题
    • 移除部分反射 API,合并至 BaseFinder 进行整合
    • 增加直接使用字符串创建 Hook 的方法

    1.0.1 | 2022.02.15  过期

    • RemedyPlan 增加 onFind 功能
    • 整合并修改了部分反射 API 代码
    • 增加了 type 中的 java 类型
    • 修复忽略错误在控制台仍然输出的问题

    1.0 | 2022.02.14  过期

    • 首个版本提交至 Maven
    - +

    更新日志

    这里记录了 YukiHookAPI 的版本更新历史。

    特别注意

    我们只会对最新的 API 版本进行维护,若你正在使用过时的 API 版本则代表你自愿放弃一切维护的可能性。

    1.1.8 | 2023.02.01  最新

    • 修复底层 Hook 方法在回调时修改 result 等参数时时不能同步更新修改后的状态问题,感谢 Yongzheng Lai在新窗口中打开Issue在新窗口中打开
    • 移动 YukiHookAPI 自动生成的入口类名称文件 assets/yukihookapi_initresources/META-INF/yukihookapi_init
    • 允许在仅打印异常堆栈时 msg 参数为空并可以不设置 msg 参数,留空 msg 参数的日志除非异常堆栈不为空否则将不会被记录
    • 修复 Hook 回调方法体内发生的异常打印的日志无具体方法信息的 BUG
    • HookParam 新增 instanceOrNull 变量与方法,可以在不确定 Hook 实例是否为空的前提下使用以防止 Hook 实例为空抛出异常
    • 解耦合所有 Member 查找功能中的 Hooker 到 MemberBaseFinder.MemberHookerManager
    • 修改了 YukiMemberHookCreator 中的 by 条件用法,现在可以重复使用 by 方法设置多个条件
    • 移除了 Android type 中的错误 Class 对象声明
    • PackageParam.AppLifecycle 中的 registerReceiver 方法新增直接使用 IntentFilter 创建系统广播监听的功能
    • 修复在 PackageParam.AppLifecycle 中可能存在多次注册生命周期的问题
    • Revert: 1.1.7 版本由于有一个严重问题已经撤回,请直接更新到此版本即可 (更新日志同 1.1.7 版本)

    1.1.6 | 2023.01.21  过旧

    • 修复 Xposed 模块装载时可能存在同一个进程多个包名的情况导致 PackageParam 保持单例后 ClassLoader 不符的严重问题
    • 新增同一个进程多个包名的情况下未区分包名时,停止装载单例化的子 Hooker 并打印警告信息
    • 修复 HookParam.callOriginalHookParam.invokeOriginal 等方法调用原始方法时参数个数不正确的问题
    • 修改 MethodFinderConstructorFinderReflectionFactory 中反射调用的方法参数名 paramargs
    • 新增 Xposed 模块自动处理程序中判断入口类构造方法参数功能,入口类需要保证其不存在任何构造方法参数

    1.1.5 | 2023.01.13  过旧

    • 规范并优化整体代码风格
    • 对部分内部调用的 API 进行了私有化处理
    • 底层 API 接口整体解耦合,为兼容更多 Hook Framework 做准备
    • 将部分集成于 API 中的功能移动到 ksp-xposed 依赖 (解耦合),单独引入 api 依赖将不再包含第三方库等功能的引用
    • 文档 快速开始 页面加入 YukiHookAPI.Configs.isDebug 何时需要关闭的说明
    • 规范类型定义中的 Java 原始类型 (Primitive Type) 并同步更新到文档
    • Java type 新增 NumberClass 类型
    • 改进了 (Xposed) 宿主环境的识别能力
    • 接管了 Xposed 模块装载后的全部异常,若发生异常将会自动拦截并打印错误日志
    • 修改类型定义中较低 Android 系统版本 (Android 5.0) 中不存在的 Class 为空安全类型
    • 适配并支持原生 Xposed,最低推荐版本为 Android 7.0
    • Hook 入口类新增支持声明为 object 类型 (单例)
    • 修复 Android 8 以下系统不支持 Executable 类型导致 Hook 失效的问题
    • 修复 Android 9 以下系统在使用 Activity 代理功能时报错问题并限制此功能最低支持版本为 Android 7.0
    • 新增禁止资源注入与 Activity 代理功能注入当前模块自身实例进程,防止发生问题
    • 修复一个 Hook 过程中方法返回值的对象是目标的继承类和接口时被识别为返回值不符的严重错误
    • 修复在当前 Hook 的实例对象是静态的情况下调用 HookParam.callOriginalHookParam.invokeOriginal 出现对象为空问题
    • 优化对太极激活方法相关判断功能以及同步更新文档相关说明
    • 作废了 YukiHookAPI.Status.executorNameYukiHookAPI.Status.executorVersion,请转移到 YukiHookAPI.Status.Executor
    • 适配了一些第三方 Hook Framework 的 YukiHookAPI.Status.Executor.name 名称显示功能
    • 新增 Class.extendsClass.implements 等方法,可更加方便地判断当前 Class 的继承与接口关系
    • 新增 Class.toClassClass.toClassOrNull 等相关方法的同名泛型方法,可使用泛型来约束已知 Class 的实例对象类型
    • 修改 classOf<T> 方法的返回值为泛型 T,以约束已知 Class 的实例对象类型
    • 新增 Class 相关扩展方法的 initialize 参数,可控制在得到 Class 对象时是否同时初始化其静态方法块
    • 变量、方法、构造方法查找功能中新增 param { ... }type { ... } 等用法,可对查找的对象增加更加具体的条件判断
    • PackageParamloadApp 方法新增 isExcludeSelf 参数,可用于排除 Hook 相关功能注入模块自身实例进程
    • PackageParamonAppLifecycle 方法新增 isOnFailureThrowToApp 参数,可将生命周期方法体内发生的异常直接抛给宿主
    • 修改 PackageParam 中的 appClassLoader 为可修改变量,可在 Hook 过程中动态设置宿主使用的 ClassLoader
    • HookParam 中新增 dataExtra 功能,可用于临时存储 Hook 方法体中的数据
    • 作废 YukiHookModulePrefs 中的 isRunInNewXShareModeisXSharePrefsReadable,统一合并到 isPreferencesAvailable
    • Class.allFieldsClass.allMethods 等相关方法新增 isAccessible 参数,可控制成员对象何时可被设置为可访问类型
    • 修复 YukiHookDataChannel 存在多个宿主时在一个 Activity 中接收相同键值数据时仅会回调最后一个方法体的问题
    • YukiHookDataChannelwait 等相关方法中新增 priority 参数,可传入 ChannelPriority 来自定义回调数据结果的条件
    • YukiHookDataChannel 新增发送数据时自动使用 ChannelDataWrapper 类型包装功能,提升使用体验并增强数据保护
    • YukiHookDataChannel 新增限制一次性发送数据的最大字节大小功能,防止数据过大造成 APP 崩溃
    • YukiHookDataChannel 新增发送数据过大时自动分段发送功能,仅支持 ListMapSetString 类型
    • YukiHookLogger 新增 contents 方法与 saveToFiledata 参数,可传入自定义的调试日志数据进行格式化或保存到文件
    • 修复 YukiHookLogger 处理后的调试日志数据包名可能在 (Xposed) 宿主环境不正确的问题
    • 修复 Xposed 模块装载资源钩子 (Resources Hook) 事件时在部分系统上 (部分系统 APP 中) 包名可能不正确的问题

    1.1.4 | 2022.10.04  过旧

    • 修复 YukiHookDataChannel 可能不能响应系统框架中响应广播事件的问题,在 Android 13 中复现
    • 修复 YukiHookDataChannel 长达多个版本在 (Xposed) 宿主环境无法与模块通讯的问题
    • YukiHookDataChannel 中新增 obtainLoggerInMemoryData 方法,可在模块与宿主之间共享调试日志数据
    • 修改 YukiHookLogger.inMemoryData 的类型为 ArrayList 并修改 YukiLoggerDatadata class
    • 修复 YukiLoggerData 在模块中包名为空打印空白的问题
    • PackageParam 中新增 loadApploadZygoteloadSystemwithProcess 的同名多参数方法
    • 修复了一些可能存在的 BUG

    1.1.3 | 2022.09.30  过旧

    • 修复一个无法自定义 Hook 入口类名的致命错误
    • 添加 LoggerFactory 中的部分代码注释文案并更新特色功能文档

    1.1.2 | 2022.09.30  过期

    • 文档 基础知识 页面新增 English 版本友情链接
    • 修复 YukiBaseHooker 注释中的 English 文档链接错误问题
    • 修复 ModuleClassLoader 中的 ClassCastException 问题
    • 修正并规范部分代码注释
    • 新增 ModuleClassLoader 排除列表功能,可使用 excludeHostClassesexcludeModuleClasses 方法来自定义排除列表
    • 新增 YukiLoggerData 实时日志数据类,可实时通过 YukiHookLogger.inMemoryData 获取日志数组
    • 新增 ClassLoader.listOfClasses 方法,可直接获取当前 Dex 中的全部 Class

    1.1.1 | 2022.09.28  过期

    • 修复了文档 基础知识 页面友情链接错误的问题
    • 修复了文档 favicon 不显示的问题
    • 修复 DexClassFinder 查找条件中的 BUG

    1.1.0 | 2022.09.28  过期

    • 这是一次大版本更新,有关更新日志中提到的变化及用法请参考 API 文档 以及 特色功能
    • 更换帮助文档框架到 VuePress在新窗口中打开
    • 统一并规范文档中的术语名词,例如“查询”一律更改为了“查找”,XposedHelper 拼写错误修改为了 XposedHelpers
    • 文档 基础知识 页面加入友情链接,仅限简体中文
    • 将 Hook App Demo 的 ClassMethod 转为 Java 以提供更好的演示效果
    • 修正了 Hook Module Demo 中的代码注释命名
    • 重构了大量底层 Hook 逻辑及 Xposed API 的对接方式
    • 移除了 HookParamWrapper,现已将其直接与 YukiBridgeFactory 对接
    • 移动部分 YukiHookBridge 中的方法到 AppParasitics
    • 移除了 HookParam.args 与底层的直接对接方法 setArgs,直接获取并设置当前数组的对象
    • 优化自动处理程序,将引用的 jar 合并到 stub 项目
    • 修复多项目打包时模块包名无法正确匹配的问题以及修改自动处理程序的模块包名匹配逻辑,感谢 5ec1cff在新窗口中打开 的反馈及提供的解决方案
    • 对 API 私有工具类的方法进行了 internal 闭包处理,避免污染顶级命名空间
    • 修正了所有反射和 Hook 类的 Creater 命名到 Creator
    • 新增 YukiHookAPI.Status.compiledTimestamp 功能,可以在作为 Xposed 模块使用时获取编译完成的时间戳
    • 新增 YukiHookAPI.Status.isXposedEnvironment 功能,可以判断当前为 (Xposed) 宿主环境还是模块环境
    • 调试日志功能进行了大改版,现已将 YukiHookAPI.Configs.debugTag 等功能合并到 YukiHookLogger.Configs
    • 调试日志新增可指定打印使用的方法为 XposedBridge.logLogd
    • 调试日志中默认加入当前宿主的包名以及当前用户 ID,以供调试,你可以在 debugLog 配置中自行更改
    • 新增 generic 功能,可对泛型进行反射和调用,你可以在 ClassCurrentClass 中使用它
    • 作废 buildOfAny 方法,现在请直接使用 buildOf 方法 (不带泛型) 来使用构造方法创建新对象并得到结果 Any
    • 修复 hasExtends 使用过程发生空指针异常的问题
    • CurrentClass 新增非 lambda 方式的调用方法
    • CurrentClass 新增 namesimpleName 功能
    • 完全重写 ReflectionTool 的核心方法,将不同的查找条件进行了整理分类
    • 修复 ReflectionTool 中可能的直接调用 declared 获取的 Member 抛出异常的问题
    • 修复 ReflectionToolUndefinedType 未在 MethodConstructor 条件中正确判断的问题
    • 新增反射查找结果发生异常时的友好提示方式,可具体定位到指定条件找不到 Member 的问题
    • 反射查找 MethodConstructor 中新增 VagueType 条件,可使用在 param 条件中用于忽略你不想填写的参数
    • 反射查找 MethodConstructor 中新增 paramCount { ... } 条件,现在你可以直接拿到其中的 it 来自定义你的判断条件
    • FieldFinder 结果中新增 current 方法,可直接对结果实例创建调用空间
    • 修改了反射查找功能中的 modifiers 条件以及 name 条件,现在你需要对此方法体结尾返回一个 Boolean 以使条件成立
    • ModifierRules 中的 as* 功能改名为 is*,感谢 Kitsune在新窗口中打开 的建议
    • FieldFinder 中新增 RemedyPlan 功能
    • 新增 Dex 中的 Class 模糊查找功能 (Beta),你现在可以直接使用 searchClass 功能来使用指定条件模糊查找 Class
    • 新增反射查找中的多重查找功能,可使用相对查找条件同时获取多个查找结果,感谢 AA 以及 Kitsune在新窗口中打开 的建议
    • 修复 appClassLoader 获取到的对象在某些系统中的系统应用中不正确的问题,感谢 Luckyzyx在新窗口中打开 的反馈
    • 修改了 XposedBridge.invokeOriginalMethod 的调用方式并在 MethodFinder.Result.Instance 中增加 original 功能
    • 修复 YukiHookModulePrefsgetStringSet 方法取值错误的问题并优化代码风格,感谢 Teddy_Zhu在新窗口中打开PR在新窗口中打开
    • 修改 YukiHookModulePrefs,拦截 XSharePreference 可能不存在的异常
    • 修复 YukiHookDataChannel 在某些第三方 ROM 系统框架中无法注册成功的问题
    • 安全化 YukiHookDataChannel,现在它只能在来自指定包名的模块与宿主之间通信
    • 新增自动 Hook SharedPreferences 以修复部分系统中文件权限不是 0664 的问题,感谢 5ec1cff在新窗口中打开 的反馈及提供的实现代码
    • 新增 YukiHookAPI.Configs.isEnableHookSharedPreferences 功能,默认关闭,若 SharedPreferences 的权限错误可进行启用
    • 修复查找 Constructor 时无参构造方法在不填写查找条件时无法找到的 BUG,感谢 B5 KAKA 的反馈
    • 分离位于 injectMembermethodconstructorResult 实例到 Process
    • 在 Hook 过程中新增 useDangerousOperation 方法,未进行声明时在 Hook 危险列表中的功能后会自动停止 Hook 并打印错误
    • 新增模块资源注入与 Activity 代理功能,你可以调用 injectModuleAppResourcesregisterModuleAppActivities 来使用
    • 新增 ModuleContextThemeWrapper 功能,你可以调用 applyModuleTheme 在任意 Activity 中创建模块的 Context
    • 新增 ClassLoader.onLoadClass 功能,可用于监听 ClassLoaderloadClass 方法被调用的事件
    • 作废了 classOfclazz 扩展方法,新增 toClass 以及 toClassOrNull 用法,请现在转移到新的方法
    • VariousClass 新增 getOrNull 方法,可在匹配不到 Class 的时候不抛出异常而是返回 null
    • PackageParam.hook 中移除了 isUseAppClassLoader 参数,修改为 isForceUseAbsolute 并自动匹配目标 Class
    • PackageParam 新增 systemContext 功能,你可以在任意时间调用此功能获取一个持久化的 Context
    • 不再对外开放 HookClass 中的任何方法
    • HookParam 中新增 throwToApp 功能,可将异常直接抛给宿主
    • Hook 回调中新增 onFailureThrowToApp 功能,可在发生异常时直接抛给宿主
    • 修改了调试日志的打印逻辑,反射查找功能中的耗时记录仅会在 Hook 过程中进行打印
    • Hook 过程中新增解除 Hook 功能,可使用 removeremoveSelf 方法解除 Hook
    • 修复在 ReplaceHook 失败的时候导致宿主抛出异常的问题,现修改为调用原始方法保证宿主功能正常运行
    • 新增 Hook 过程中对方法返回值的检查功能,在返回值不匹配的情况下会根据情景自动抛出异常或打印错误
    • Resources Hook 中新增 array 类型,感谢 GSWXXN在新窗口中打开PR在新窗口中打开
    • 移动 me.weishu.reflectionthirdparty 防止同时引入的同名依赖冲突
    • 移除 Hook 方法体为空时抛出的异常,修改为打印警告日志
    • 修改 AppLifecycle 的异常处理逻辑,当其发生异常时直接抛给宿主
    • 更新 Demo 的 API 版本到 33

    1.0.92 | 2022.05.31  过期

    • 修正了大量方法中 callback 的命名方法
    • 更换方案再次修复 YukiHookDataChannel 在低于 Android 12 的设备上不能回调当前 Activity 广播的问题
    • InjectYukiHookWithXposed 注解新增 isUsingResourcesHook 功能,现在你可以选择性关闭自动生成 IXposedHookInitPackageResources 的依赖接口了

    1.0.91 | 2022.05.29  过期

    • 修复部分设备的定制系统在 LSPosed 环境下开机启动获取的 ClassLoader 错误的问题,感谢 Luckyzyx在新窗口中打开 的反馈
    • 修复 YukiHookDataChannelZUI 以及低于 Android 12 的系统上不能回调当前 Activity 广播的问题
    • 整合 YukiHookModuleStatus 功能到 YukiHookAPI.Status,重写了大量方法,现在你可以在模块与宿主中双向判断模块激活等状态信息

    1.0.90 | 2022.05.27  过期

    • 修复 YukiHookDataChannel 在模块设置监听回调时闪退的问题
    • 修复 YukiHookDataChannel 在非当前 Activity 情况下依然会回调的问题
    • 移除 YukiHookDataChannel 回调事件的默认值,没有即不回调
    • 移除 YukiHookModulePrefs 在 XShare 不可读的情况下打印的警告
    • 新增 YukiHookModulePrefs 中的 isXSharePrefsReadable 方法,可判断当前的 XShare 是否可用

    1.0.89 | 2022.05.26  过期

    • 修复 YukiHookDataChannel 不能重复设置监听的问题,并加入在模块不同 Activity 中重复响应和自动跟随 Activity 销毁监听功能
    • 新增 YukiHookDataChannel 重复监听用例说明文档
    • 加入 onAlreadyHooked 方法,可判断当前方法是否被重复 Hook
    • 修改部分重复添加 HashMap 的逻辑,移除 putIfAbsent 方法,允许覆盖添加
    • 修复了几处可能的 BUG

    1.0.88 | 2022.05.25  过期

    • 对 Xposed API 完全解耦合
    • 增加了 type 中的 android 类型
    • YukiHookModuleStatus 从自动生成代码中分离,并加入 isEnableHookModuleStatus 的开关,由你决定是否启用
    • 对 API 大量类的构造方法进行了 internal 闭包处理
    • YukiHookModulePrefs 设置为单例运行,防止重复创建浪费系统资源
    • 修复自 1.0.80 版本后无法嵌套 Hook 的 BUG,并优化嵌套 Hook 相关功能
    • 修改 Hooker 存储方案由 HashSet 到 HashMap,防止重复添加 Hooker 的问题
    • 修改 Hook 核心实现方法,加入查重,避免重复 Hook 多次回调 HookParam 方法
    • MethodFinderFieldFinder 加入查找模糊方法、变量名称功能,可调用 name { ... } 来设置查找条件,支持正则
    • 优化并修改 appContext 的获取方式,降低会取到空的问题的可能性
    • 修改自动生成的代码中 logger 的打印 TAG 默认为你自定义的名称,方便进行调试
    • 优化 YukiHookBridgeHooker 实现方式,提升 Hook 性能
    • PackageParam 增加 onAppLifecycle 方法,可原生监听宿主的生命周期以及实现注册系统广播功能
    • 新增 YukiHookDataChannel 功能,可在模块与宿主保持存活的情况下使用系统无序广播进行通讯
    • YukiHookDataChannel 增加 checkingVersionEquals 方法,可通过监听来验证模块更新后宿主并未更新版本不匹配问题
    • demo-module 的示例代码中新增 Java 版本的示例,仅供参考

    1.0.87 | 2022.05.10  过期

    • 新增 refreshModuleAppResources 功能,以适配语言区域、字体大小、分辨率改变等情况下的 Resources 刷新
    • 新增 isEnableModuleAppResourcesCache 功能,可自行设置是否自动缓存当前模块的 Resources

    1.0.86 | 2022.05.06  过期

    • 修复不支持 Resources Hook(资源钩子) 的情况下在 initZygote 时持续报错的问题,复现在 ZUI/LSPosed CI(1.8.3-6550)
    • 优化并对 Resources Hook 进行异常处理,只有被使用后不支持才会打印错误和警告

    1.0.85 | 2022.05.04  过期

    • 修复无法 Hook 系统框架的严重问题,从 1.0.80 开始出现
    • 调试日志中新增区分 initZygote 装载的包名为 android-zygotepackageName 保持 android 不变

    1.0.83 | 2022.05.04  过期

    • 修复 YukiHookModuleStatusloadSystem 后大量报错的问题
    • 新增 type 中的 android 类型
    • 更新帮助文档的示例说明

    1.0.82 | 2022.05.04  过期

    • 修复了一处概念混淆错误,区分 initZygote 与系统框架的关系,之前的注释和文档有问题,非常抱歉
    • PackageParam 新增 loadSystem 方法,不需要再写 loadApp(name = "android") 即可 Hook 系统框架

    1.0.81 | 2022.05.04  过期

    • 修复使用 by 方法设置条件后 Hook 方法体内查找不到的方法、构造方法依然输出错误日志的问题
    • 在执行 Hook 过程中加入全局日志显示当前 Hook APP 的包名,并修复一处错误日志打印样式的问题

    1.0.80 | 2022.05.01  过期

    • InjectYukiHookWithXposed 注解新增 entryClassName 功能,可自定义生成的 xposed_init 入口类名
    • YukiHookXposedInitProxy 更名为 IYukiHookXposedInit,原接口名称已作废,将在后续版本中直接被删除
    • 新增 initZygote 与 Resources Hook 功能,支持 Hook Layout
    • 新增 onXposedEvent 方法,可监听原生 Xposed API 的全部事件
    • 对 Hook 功能的 lambda 进行 inline 处理,避免生成过碎的匿名类,提升编译后的运行性能
    • 修复 PrefsData 编译后的方法体复制过大的问题
    • 增加 XSharePreference 可读性测试,失败后会自动打印警告日志
    • PackageParam 新增 appResourcesmoduleAppResourcesmoduleAppFilePath 功能
    • PackageParamloadApp 新增不写 name 功能,默认筛选全部 APP
    • PackageParam 新增 loadZygote 方法,可直接 Hook 系统框架
    • PackageParam 新增 resources().hook 功能
    • 优化方法、构造方法、变量查找功能,找不到的错误日志将优先显示已设置的查找条件
    • 增加 hasExtends 扩展方法,可判断当前 Class 是否有继承关系
    • 增加 isSupportResourcesHook 功能,判断当前是否支持资源钩子(Resources Hook)
    • current 功能新增 superClass 方法调用父类
    • 查找方法、构造方法、变量新增 superClass 查找条件,可继续在父类中查找
    • YukiHookAPI 大量方法与 Xposed API 解耦合
    • 新增 Xposed API 的原生 Hook 优先级功能
    • 修复 isFirstApplication 可能判断不准确的问题
    • 屏蔽 MIUI 系统上 MiuiCatcherPatch 重复调用 Hook 入口方法的问题
    • 优化 Hook 入口调用方法,避免因为 Hook Framework 问题导致多次调用
    • 修复 Hook ClassLoader 导致 Hook 卡死的问题,感谢 WankkoRee在新窗口中打开 的反馈
    • 提升 XC_Callback 接口对接后的性能
    • Java type 新增 ClassLoader 类型
    • 优化 API 帮助文档,修复可能持续缓存页面的问题

    1.0.78 | 2022.04.18  过期

    • YukiHookModulePrefs 新增 isRunInNewXShareMode 方法,可用于判断模块当前是否处于 New XSharePreference 模式
    • 修复 YukiHookModulePrefsNew XSharePreference 模式下工作的部分问题
    • 新增 ModulePreferenceFragment,现在,你可以完全替换掉 PreferenceFragmentCompat 并开始使用新的功能
    • 适配 PreferenceFragmentCompat 的 Sp 数据存储解决方案,感谢 mahoshojoHCG在新窗口中打开 的反馈
    • 更新自动处理程序以及 Kotlin 依赖到最新版本
    • 修正部分文档和代码注释中的错误

    1.0.77 | 2022.04.15  过期

    • YukiHookModulePrefs 新增 clear 方法,感谢 WankkoRee在新窗口中打开 的建议
    • YukiHookModulePrefs 新增 getStringSetputStringSetall 方法
    • HookParamargs 增加 any 方法
    • 新增 ModuleApplication,可在模块中继承此类实现更多功能
    • 对接全部的 findClass 功能到 Xposed API,在非宿主环境继续使用原生 ClassLoader
    • 修复了一些可能存在的 BUG

    1.0.75 | 2022.04.13  过期

    • 更正了自动处理程序的逻辑识别部分,感谢 ApeaSuperz在新窗口中打开 的贡献
    • 修正一处文档注释的引用未更改的问题
    • HookParam 中删除了 firstArgslastArgs 方法,现在你可以使用 args().first()args().last() 来取代它
    • HookParam 中删除了 args() 中的默认参数 index = 0,现在你可以使用 args().first()args(index = 0) 来取代它
    • HookParamresult 功能增加了泛型匹配,现在你可以使用 result<T> 来匹配你的目标方法已知返回值类型了
    • 方法、构造方法查找功能新增 emptyParam 条件,并完善了文档相关需要注意的查找条件误区
    • 增加了 type 中的 android 类型

    1.0.73 | 2022.04.10

    1.0.72 | 2022.04.09  过期

    • 更新 API 文档到新的地址
    • PackageParam 中加入 appContext 功能
    • 修复一些已知的 BUG,提升 Hook 稳定性

    1.0.71 | 2022.04.04  过期

    • 修复 VariousClass 无法匹配时会停止 Hook 抛出异常的严重问题

    1.0.70 | 2022.04.04  过期

    • 修复 instanceClass 在静态实例中调用后报错问题
    • 在 Hook 过程中加入 isUseAppClassLoader 功能,感谢 WankkoRee在新窗口中打开 的反馈
    • 加入 withProcess 功能,可根据 APP 当前指定进程进行 Hook
    • 修复查找方法、构造类和变量的严重逻辑错误问题
    • 修复 Hook 目标类不存在的时候无法忽略异常输出的问题
    • 修复部分情况下 APP 启动方法装载过快导致 Hook 不能生效的问题
    • 修复 allMethods 未 Hook 到方法时不会抛出异常的问题,感谢 WankkoRee在新窗口中打开 的反馈
    • 加入 Hook 状态监听功能,感谢 WankkoRee在新窗口中打开 的建议
    • 修改 Xposed 入口注入类的方式,重新声明 API 的定义域
    • 加入混淆的方法以及变量的查找功能,可使用不同类型筛选 index 定位指定的方法和变量,感谢 WankkoRee在新窗口中打开 提供的思路
    • 查找方法、变量时允许传入多种类型,例如 String 声明的类名和 VariousClass
    • 加入全新的 current 功能,可对任意的类构建一个反射方法操作空间,方便地调用和修改其中的方法和变量
    • 修复了 Hook 过程中的大量 BUG,感谢 WankkoRee在新窗口中打开 对此项目所做出的贡献

    1.0.69 | 2022.03.30  过期

    • 添加并改进一些方法功能的注释
    • 增加 Demo 中的更多示例 Hook 内容
    • 修复在一个 Hook 实例中,allMethods 多次使用时只有最后一个生效的问题,感谢 WankkoRee在新窗口中打开 的反馈

    1.0.68 | 2022.03.29  过期

    • 增加 Demo 中的新用例和 LSPosed 作用域
    • 增加 Member 查找缓存和查找缓存配置开关
    • 移除和修改 MethodFinderFieldFinder 以及 HookParam 相关方法的调用
    • 增加更多 Finder 中的 cast 类型并支持 cast 为数组
    • 整体的性能和稳定性提升
    • 修复上一个版本可能存在的 BUG

    1.0.67 | 2022.03.27  过期

    • 增加三个 Finder 中的 modifiers 功能,可筛选 staticnativepublicabstract 等诸多描述类型
    • 增加方法和构造方法查找时可模糊方法参数类型为指定个数进行查找
    • 增加 MemberhasModifiers 扩展功能
    • 增加 MethodFinderConstructorFinder 中的 give 方法,可获得原始类型
    • 增加 YukiHookModulePrefs 中的 PrefsData 模板功能
    • 彻底对方法、构造方法及变量的查找方案进行重构
    • 优化代码注释,修复了可能产生的 BUG

    1.0.66 | 2022.03.25  过期

    • 修复 MethodFinder 中的一个严重问题
    • 增加 hookParam 中的 args 调用方法
    • 修复其它可能存在的问题以及修复部分类的注释问题

    1.0.65 | 2022.03.25  过期

    • 重新发布版本修复 Maven 仓库因为缓存问题新版本不正确的情况
    • 增加 MethodFinderFieldFinder 新的返回值调用方法
    • 修复可能存在的问题,并修复太极使用过程中可能存在的问题
    • 修复自动生成 Xposed 入口类可能发生的问题
    • 增加了 type 中的 android 类型以及 java 类型

    1.0.6 | 2022.03.20  过期

    • 修复 YukiHookModulePrefs 在使用一次 direct 忽略缓存后每次都忽略的 BUG
    • 增加新的 API,作废了 isActive 判断模块激活的传统用法
    • 修复非 Xposed 环境使用 API 时打印调试日志的问题
    • 修复查找 Field 时的日志输出问题和未拦截的异常问题
    • 解耦合 ReflectionUtils 中的 Xposed API
    • 增加 YukiHookModuleStatus 方法名称的混淆,以精简模块生成的体积
    • 装载模块自身 Hook 时将不再打印欢迎信息
    • 修复上一个版本仍然存在的某些 BUG

    1.0.55 | 2022.03.18  过期

    • 修正一处注释错误
    • 临时修复一个 BUG
    • 增加了 type 中的大量 android 类型以及少量 java 类型
    • 修复新版与旧版 Kotlin APIs 的兼容性问题

    1.0.5 | 2022.03.18  过期

    • 修复旧版本 LSPosed 框架情况下欢迎信息多次打印的问题
    • 添加 onInit 方法来配置 YukiHookAPI
    • 新增 executorNameexecutorVersion 来获取当前 Hook Framework 的名称和版本号
    • 新增 by 方法来设置 Hook 的时机和条件
    • YukiHookModulePrefs 新增可控制的键值缓存,可在宿主运行时模块动态更新数据
    • 修复了一些可能存在的 BUG

    1.0.4 | 2022.03.06  过期

    • 修复 LSPosed 在最新版本中启用“只有模块classloader可以使用Xposed API”选项后找不到 XposedBridge 的问题
    • 添加 YukiHookAPI 的常量版本名称和版本号
    • 新增 hasField 方法以及 isAllowPrintingLogs 配置参数
    • 新增 isDebug 开启的情况下 API 将自动打印欢迎信息测试模块是否生效

    1.0.3 | 2022.03.02  过期

    • 修复一个潜在性的异常未拦截 BUG
    • 增加 ignoredError 功能
    • 增加了 type 中的 android 类型
    • 增加监听 hook 后的 ClassNotFound 功能

    1.0.2 | 2022.02.18  过期

    • 修复 Windows 下无法找到项目路径的问题
    • 移除部分反射 API,合并至 BaseFinder 进行整合
    • 增加直接使用字符串创建 Hook 的方法

    1.0.1 | 2022.02.15  过期

    • RemedyPlan 增加 onFind 功能
    • 整合并修改了部分反射 API 代码
    • 增加了 type 中的 java 类型
    • 修复忽略错误在控制台仍然输出的问题

    1.0 | 2022.02.14  过期

    • 首个版本提交至 Maven
    + diff --git a/docs/zh-cn/about/contacts.html b/docs/zh-cn/about/contacts.html index 7ee4ae8d6..4318dc43e 100644 --- a/docs/zh-cn/about/contacts.html +++ b/docs/zh-cn/about/contacts.html @@ -23,11 +23,11 @@ } 联系我们 | Yuki Hook API - +

    联系我们

    如在使用中有任何问题,或有任何建设性的建议,都可以联系我们。

    加入我们 点击加入 Telegram 群组在新窗口中打开

    酷安 找到我 @星夜不荟在新窗口中打开

    助力维护

    感谢您选择并使用 YukiHookAPI,如有代码相关的建议和请求,可在 Github 提交 Pull Request。

    - + diff --git a/docs/zh-cn/about/future.html b/docs/zh-cn/about/future.html index b2c790d1e..20fb0363d 100644 --- a/docs/zh-cn/about/future.html +++ b/docs/zh-cn/about/future.html @@ -23,11 +23,11 @@ } 展望未来 | Yuki Hook API - +

    展望未来

    未来是美好的,也是不确定的,让我们共同期待 YukiHookAPI 在未来的发展空间。

    未解决的问题

    这里收录了 YukiHookAPI 尚未解决的问题。

    YukiHookModulePrefs

    目前仅限完美支持 LSPosed,其它 Xposed 框架需要降级模块 API。

    可能完全不支持太极,太极在高版本系统上需要更低的 API 才能适配。

    部分 Xposed 模块开发者目前选择 Hook 目标 APP 内置 Sp 存储方案解决模块设置共享问题。

    后期 Android 系统的权限将越来越严格,selinux 就是目前面临的一个大问题,有待讨论和研究。

    未来的计划

    这里收录了 YukiHookAPI 可能会在后期添加的功能。

    支持独立使用的 Lite 版本

    如果你喜欢 YukiHookAPI 的反射 API,但你的项目可能并不需要相关 Hook 功能。

    那么这里有一个好消息要告诉你:

    YukiHookAPI 的核心反射 API 已被解耦合为 YukiReflection在新窗口中打开 项目,它现在能在任何 Android 项目中使用。

    待讨论

    目前 API 只支持通过自动处理程序绑定到 xposed_init,若您不喜欢自动处理程序,一定要自己实现模块装载入口,未来会按照需求人数推出仅有 API 功能的 Lite 版本,你可向我们提出 issues

    API 已经提供了 Xposed 原生 API 监听接口,你可以 在这里 找到或查看 Demo 的实现方法。

    支持更多 Hook Framework

    作为 API 来讲,目前仅仅对接 XposedBridge 作为兼容层,还是有一定的局限性。

    大部分 inline hook 没有 Java 兼容层,后期可能会考虑 native hookJava 兼容层适配。

    - + diff --git a/docs/zh-cn/api/home.html b/docs/zh-cn/api/home.html index 9e5df24e3..c909be0ea 100644 --- a/docs/zh-cn/api/home.html +++ b/docs/zh-cn/api/home.html @@ -23,11 +23,11 @@ } 文档介绍 | Yuki Hook API - +

    文档介绍

    这里的文档将同步最新 API 版本的相关用法,请保持 YukiHookAPI 为最新版本以使用最新版本的功能。

    功能描述说明

    功能描述主要介绍当前 API 的相关用法和用途。

    功能示例说明

    功能示例主要展示了当前 API 的基本用法示例,可供参考。

    变更记录说明

    首个版本的功能将标记为 v<version> 添加

    后期新增加的功能将标记为 v<version> 新增

    后期修改的功能将被追加为 v<version> 修改

    后期被作废的功能将标记为 v<version> 作废 并会标注删除线;

    后期被删除的功能将标记为 v<version> 移除 并会标注删除线。

    相关符号说明

    • kt  Kotlin Static File

    • annotation  注解

    • interface  接口

    • object  类 (单例)

    • class  类

    • field  变量或 getset 方法或只读的 get 方法

    • method  方法

    • enum  Enum 常量

    • ext-field  扩展的变量 (全局)

    • ext-method  扩展的方法 (全局)

    • i-ext-field  扩展的变量 (调用域限制)

    • i-ext-method  扩展的方法 (调用域限制)

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.html index 9757e8107..0dcd8384b 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/YukiHookAPI.html @@ -23,7 +23,7 @@ } YukiHookAPI - object | Yuki Hook API - + @@ -128,6 +128,6 @@
    fun encase(baseContext: Context?, initiate: PackageParam.() -> Unit)
     
    fun encase(baseContext: Context?, vararg hooker: YukiBaseHooker)
     

    变更记录

    v1.0 添加

    功能描述

    装载 Hook 入口的核心方法。

    功能示例

    详情请参考

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html index 8b4137e3a..67e454724 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/annotation/xposed/InjectYukiHookWithXposed.html @@ -23,7 +23,7 @@ } InjectYukiHookWithXposed - annotation | Yuki Hook API - + @@ -34,6 +34,6 @@ val isUsingResourcesHook: Boolean )

    变更记录

    v1.0 添加

    v1.0.80 修改

    新增 entryClassName 参数

    v1.0.92 修改

    新增 isUsingResourcesHook 参数

    功能描述

    标识 YukiHookAPI 注入 Xposed 入口的类注解。

    功能示例

    详情请参考 InjectYukiHookWithXposed 注解

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html index 1ff0930f6..15085a5c6 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/CurrentClass.html @@ -23,7 +23,7 @@ } CurrentClass - class | Yuki Hook API - + @@ -43,6 +43,6 @@

    变更记录

    v1.1.0 新增

    功能描述

    获得当前实例父类中的泛型父类。

    如果当前实例不存在泛型将返回 null

    field - method

    inline fun field(initiate: FieldConditions): FieldFinder.Result.Instance
     

    变更记录

    v1.0.80 新增

    功能描述

    调用父类实例中的变量。

    method - method

    inline fun method(initiate: MethodConditions): MethodFinder.Result.Instance
     

    变更记录

    v1.0.80 新增

    功能描述

    调用父类实例中的方法。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html index 452858845..197b1ca41 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/GenericClass.html @@ -23,7 +23,7 @@ } GenericClass - class | Yuki Hook API - + @@ -31,6 +31,6 @@

    变更记录

    v1.1.0 新增

    功能描述

    当前 Class 的泛型父类操作对象。

    argument - method

    fun argument(index: Int): Class<*>
     
    inline fun <reified T> argument(index: Int): Class<T>
     

    变更记录

    v1.1.0 新增

    v1.1.5 修改

    新增泛型返回值 Class<T> 方法

    功能描述

    获得泛型参数数组下标的 Class 实例。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html index a90b6ec51..8e2db54b7 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookClass.html @@ -23,12 +23,12 @@ } HookClass - class | Yuki Hook API - +

    HookClass - class

    class HookClass internal constructor(internal var instance: Class<*>?, internal var name: String, internal var throwable: Throwable?)
     

    变更记录

    v1.0 添加

    v1.1.0 修改

    HookClass 相关功能不再对外开放

    功能描述

    创建一个当前 Hook 的 Class 接管类。

    instance 为实例,name 为实例完整包名,throwable 为找不到实例的时候抛出的异常。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html index eb7951d21..267096483 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/HookResources.html @@ -23,12 +23,12 @@ } HookResources - class | Yuki Hook API - +

    HookResources - class

    class HookResources internal constructor(var instance: YukiResources?)
     

    变更记录

    v1.0.80 新增

    功能描述

    创建一个当前 Hook 的 YukiResources 接管类。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html index 00148930c..df30c14cb 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/bean/VariousClass.html @@ -23,7 +23,7 @@ } VariousClass - class | Yuki Hook API - + @@ -31,6 +31,6 @@

    变更记录

    v1.0 添加

    v1.1.5 修改

    私有化 name 参数并设置为不可修改

    功能描述

    这是一个不确定性 Class 类名装载器,通过 name 装载 Class 名称数组。

    get - method

    fun get(loader: ClassLoader? = null, initialize: Boolean): Class<*>
     

    变更记录

    v1.0.70 新增

    v1.1.5 修改

    新增 initialize 参数

    功能描述

    获取匹配的实体类。

    使用当前 loader 装载目标 Class

    getOrNull - method

    fun getOrNull(loader: ClassLoader? = null, initialize: Boolean): Class<*>?
     

    变更记录

    v1.1.0 新增

    v1.1.5 修改

    新增 initialize 参数

    功能描述

    获取匹配的实体类。

    使用当前 loader 装载目标 Class

    匹配不到 Class 会返回 null,不会抛出异常。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html index 74449af59..570f6dfdd 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.html @@ -23,7 +23,7 @@ } YukiMemberHookCreator - class | Yuki Hook API - + @@ -148,6 +148,6 @@

    变更记录

    v1.0.70 新增

    功能描述

    监听 hookClass 存在时准备开始 Hook 的操作。

    onHookClassNotFoundFailure - method

    fun onHookClassNotFoundFailure(result: (Throwable) -> Unit): Result
     

    变更记录

    v1.0.3 新增

    功能描述

    监听 hookClass 找不到时发生错误的回调方法。

    ignoredHookClassNotFoundFailure - method

    fun ignoredHookClassNotFoundFailure(): Result
     

    变更记录

    v1.0.3 新增

    功能描述

    忽略 hookClass 找不到时出现的错误。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html index b65210d6d..7c269b31b 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.html @@ -23,7 +23,7 @@ } YukiResourcesHookCreator - class | Yuki Hook API - + @@ -122,6 +122,6 @@

    变更记录

    v1.0.80 新增

    功能描述

    添加执行 Hook 需要满足的条件,不满足条件将直接停止 Hook。

    onHookingFailure - method

    fun onHookingFailure(result: (Throwable) -> Unit): Result
     

    变更记录

    v1.0.80 新增

    功能描述

    监听 Hook 过程发生错误的回调方法。

    ignoredHookingFailure - method

    fun ignoredHookingFailure(): Result
     

    变更记录

    v1.0.80 新增

    功能描述

    忽略 Hook 过程出现的错误。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html index 3706fe831..0989d4f4b 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/BaseFinder.html @@ -23,7 +23,7 @@ } BaseFinder - class | Yuki Hook API - + @@ -36,6 +36,6 @@

    变更记录

    v1.0.70 新增

    功能描述

    设置满足条件的第一个。

    last - method

    fun last()
     

    变更记录

    v1.0.70 新增

    功能描述

    设置满足条件的最后一个。

    reverse - method

    fun reverse(num: Int)
     

    变更记录

    v1.0.70 新增

    功能描述

    设置倒序下标。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html index 6f7a0f478..5baa93ca4 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/CountRules.html @@ -23,7 +23,7 @@ } CountRules - class | Yuki Hook API - + @@ -33,6 +33,6 @@

    变更记录

    v1.1.0 新增

    功能描述

    大于 count

    Int.lessThan - i-ext-method

    fun Int.lessThan(count: Int): Boolean
     

    变更记录

    v1.1.0 新增

    功能描述

    小于 count

    Int.inInterval - i-ext-method

    fun Int.inInterval(countRange: IntRange): Boolean
     

    变更记录

    v1.1.0 新增

    功能描述

    countRange 区间 A ≤ this ≤ B。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html index b769252ac..ca75dc49e 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.html @@ -23,7 +23,7 @@ } ModifierRules - class | Yuki Hook API - + @@ -41,6 +41,6 @@

    变更记录

    v1.0.67 新增

    v1.1.0 修改

    统一合并到扩展方法并改名

    功能描述

    Class 类型是否包含 interface

    isAbstract - i-ext-field

    val isAbstract: Boolean
     

    变更记录

    v1.0.67 新增

    v1.1.0 修改

    统一合并到扩展方法并改名

    功能描述

    ClassMember 类型是否包含 abstract

    对于任意的抽象 ClassMember 可添加此描述进行确定。

    isStrict - i-ext-field

    val isStrict: Boolean
     

    变更记录

    v1.0.67 新增

    v1.1.0 修改

    统一合并到扩展方法并改名

    功能描述

    ClassMember 类型是否包含 strictfp

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html index cae2c0b58..799354db6 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/NameRules.html @@ -23,7 +23,7 @@ } NameRules - class | Yuki Hook API - + @@ -36,6 +36,6 @@

    变更记录

    v1.0.88 新增

    v1.1.0 修改

    统一合并到扩展方法并改名

    功能描述

    是否只有字母或数字。

    String.isOnlyLowercase - i-ext-method

    fun String.isOnlyLowercase(): Boolean
     

    变更记录

    v1.0.88 新增

    v1.1.0 修改

    统一合并到扩展方法并改名

    功能描述

    是否只有小写字母。

    在没有其它条件的情况下设置此条件允许判断对象存在字母以外的字符。

    String.isOnlyUppercase - i-ext-method

    fun String.isOnlyUppercase(): Boolean
     

    变更记录

    v1.0.88 新增

    v1.1.0 修改

    统一合并到扩展方法并改名

    功能描述

    是否只有大写字母。

    在没有其它条件的情况下设置此条件允许判断对象存在字母以外的字符。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html index 27aa2335d..a359e31ed 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/base/rules/ObjectRules.html @@ -23,12 +23,12 @@ } ObjectRules - class | Yuki Hook API - +

    ObjectRules - class

    class ObjectRules private constructor(private val instance: Any)
     

    变更记录

    v1.1.5 新增

    功能描述

    这是一个任意对象条件实现类。

    可对 R8 混淆后的 ClassMember 进行更加详细的定位。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html index dd6c5aa61..4d8dbabee 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.html @@ -23,7 +23,7 @@ } DexClassFinder - class | Yuki Hook API - + @@ -72,6 +72,6 @@

    变更记录

    v1.1.0 新增

    功能描述

    得到 Class 本身数组 (异步)。

    回调全部查找条件匹配的多个 Class 实例。

    在查找条件找不到任何结果的时候将回调空的 HashSet

    你需要设置 async 后此方法才会被回调,否则请使用 all 方法。

    onNoClassDefFoundError - method

    fun onNoClassDefFoundError(result: (Throwable) -> Unit): Result
     

    变更记录

    v1.1.0 新增

    功能描述

    监听找不到 Class 时。

    ignored - method

    fun ignored(): Result
     

    变更记录

    v1.1.0 新增

    功能描述

    忽略异常并停止打印任何错误日志。

    此时若要监听异常结果,你需要手动实现 onNoClassDefFoundError 方法。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html index 78092f836..b42054519 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.html @@ -23,7 +23,7 @@ } ConstructorRules - class | Yuki Hook API - + @@ -36,6 +36,6 @@

    变更记录

    v1.1.5 新增

    功能描述

    设置 Constructor 参数条件。

    特别注意

    无参 Constructor 请使用 emptyParam 设置查找条件。

    有参 Constructor 必须使用此方法设定参数或使用 paramCount 指定个数。

    paramCount - method

    fun paramCount(numRange: IntRange)
     

    变更记录

    v1.1.0 新增

    功能描述

    设置 Constructor 参数个数范围。

    你可以不使用 param 指定参数类型而是仅使用此方法指定参数个数范围。

    paramCount - method

    fun paramCount(conditions: CountConditions)
     

    变更记录

    v1.1.0 新增

    功能描述

    设置 Constructor 参数个数条件。

    你可以不使用 param 指定参数类型而是仅使用此方法指定参数个数条件。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html index 1d677a569..efb12f23b 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/FieldRules.html @@ -23,7 +23,7 @@ } FieldRules - class | Yuki Hook API - + @@ -34,6 +34,6 @@

    变更记录

    v1.1.0 新增

    功能描述

    设置 Field 标识符筛选条件。

    可不设置筛选条件。

    name - method

    fun name(conditions: NameConditions)
     

    变更记录

    v1.1.0 新增

    功能描述

    设置 Field 名称条件。

    type - method

    fun type(conditions: ObjectConditions)
     

    变更记录

    v1.1.5 新增

    功能描述

    设置 Field 类型条件。

    可不填写类型。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html index eac6de2cc..fcbbe621b 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MemberRules.html @@ -23,13 +23,13 @@ } MemberRules - class | Yuki Hook API - +

    MemberRules - class

    class MemberRules internal constructor(internal val rulesData: MemberRulesData) : BaseRules
     

    变更记录

    v1.1.0 新增

    功能描述

    Member 查找条件实现类。

    modifiers - method

    fun modifiers(conditions: ModifierConditions)
     

    变更记录

    v1.1.0 新增

    功能描述

    设置 Member 标识符筛选条件。

    可不设置筛选条件。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html index d5168b5b6..3087f0905 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.html @@ -23,7 +23,7 @@ } MethodRules - class | Yuki Hook API - + @@ -40,6 +40,6 @@

    变更记录

    v1.1.0 新增

    功能描述

    设置 Method 参数个数范围。

    你可以不使用 param 指定参数类型而是仅使用此方法指定参数个数范围。

    paramCount - method

    fun paramCount(conditions: CountConditions)
     

    变更记录

    v1.1.0 新增

    功能描述

    设置 Method 参数个数条件。

    你可以不使用 param 指定参数类型而是仅使用此方法指定参数个数条件。

    returnType - method

    fun returnType(conditions: ObjectConditions)
     

    变更记录

    v1.1.5 新增

    功能描述

    设置 Method 返回值条件。

    可不填写返回值。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html index afb447187..284a14491 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/rules/result/MemberRulesResult.html @@ -23,7 +23,7 @@ } MemberRulesResult - class | Yuki Hook API - + @@ -33,6 +33,6 @@

    变更记录

    v1.1.0 新增

    功能描述

    设置当前 Member 在查找条件中需要全部匹配的个数。

    count - method

    fun count(numRange: IntRange): MemberRulesResult
     

    变更记录

    v1.1.0 新增

    功能描述

    设置当前 Member 在查找条件中需要全部匹配的个数范围。

    count - method

    fun count(conditions: CountConditions): MemberRulesResult
     

    变更记录

    v1.1.0 新增

    功能描述

    设置当前 Member 在查找条件中需要全部匹配的个数条件。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html index ee4bb245b..aa1dd9658 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.html @@ -23,12 +23,12 @@ } ConstructorFinder - class | Yuki Hook API - +

    ConstructorFinder - class

    class ConstructorFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
    -

    变更记录

    v1.0 添加

    v1.0.2 修改

    合并到 BaseFinder

    v1.1.0 修改

    合并到 MemberBaseFinder

    v1.1.7 修改

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    功能描述

    Constructor 查找类。

    可通过指定类型查找指定 Constructor 或一组 Constructor

    paramCount - field

    var paramCount: Int
    +

    变更记录

    v1.0 添加

    v1.0.2 修改

    合并到 BaseFinder

    v1.1.0 修改

    合并到 MemberBaseFinder

    v1.1.8 修改

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    功能描述

    Constructor 查找类。

    可通过指定类型查找指定 Constructor 或一组 Constructor

    paramCount - field

    var paramCount: Int
     

    变更记录

    v1.0.67 新增

    功能描述

    设置 Constructor 参数个数。

    你可以不使用 param 指定参数类型而是仅使用此变量指定参数个数。

    若参数个数小于零则忽略并使用 param

    modifiers - method

    fun modifiers(conditions: ModifierConditions): IndexTypeCondition
     

    变更记录

    v1.0.67 新增

    v1.0.80 修改

    将方法体进行 inline

    v1.1.0 修改

    合并到 ModifierConditions

    功能描述

    设置 Constructor 标识符筛选条件。

    可不设置筛选条件,默认模糊查找并取第一个匹配的 Constructor

    特别注意

    存在多个 IndexTypeCondition 时除了 order 只会生效最后一个。

    emptyParam - method

    fun emptyParam(): IndexTypeCondition
     

    变更记录

    v1.0.75 新增

    功能描述

    设置 Constructor 空参数、无参数。

    param - method

    fun param(vararg paramType: Any): IndexTypeCondition
    @@ -115,6 +115,6 @@
     

    变更记录

    v1.0.2 新增

    v1.1.0 修改

    新增 constructor 参数

    功能描述

    Constructor 实例处理类。

    call - method

    fun call(vararg args: Any?): Any?
     

    变更记录

    v1.0.2 新增

    v1.1.6 修改

    修改参数命名 paramargs

    功能描述

    执行 Constructor 创建目标实例,不指定目标实例类型。

    newInstance - method

    fun <T> newInstance(vararg args: Any?): T?
     

    变更记录

    v1.0.2 新增

    v1.1.6 修改

    修改参数命名 paramargs

    功能描述

    执行 Constructor 创建目标实例 ,指定 T 目标实例类型。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html index 225a49e31..8ca6c66b9 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/FieldFinder.html @@ -23,12 +23,12 @@ } FieldFinder - class | Yuki Hook API - +

    FieldFinder - class

    class FieldFinder internal constructor(override val classSet: Class<*>?) : MemberBaseFinder
    -

    变更记录

    v1.0 添加

    v1.0.2 修改

    合并到 BaseFinder

    v1.1.0 修改

    合并到 MemberBaseFinder

    v1.1.7 修改

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    功能描述

    Field 查找类。

    可通过指定类型查找指定 Field 或一组 Field

    classSet - field

    变更记录

    v1.0 添加

    v1.0.2 移除

    name - field

    var name: String
    +

    变更记录

    v1.0 添加

    v1.0.2 修改

    合并到 BaseFinder

    v1.1.0 修改

    合并到 MemberBaseFinder

    v1.1.8 修改

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    功能描述

    Field 查找类。

    可通过指定类型查找指定 Field 或一组 Field

    classSet - field

    变更记录

    v1.0 添加

    v1.0.2 移除

    name - field

    var name: String
     

    变更记录

    v1.0 添加

    v1.0.70 修改

    允许不填写名称

    功能描述

    设置 Field 名称。

    特别注意

    若不填写名称则必须存在一个其它条件。

    type - field

    var type: Any?
     

    变更记录

    v1.0 添加

    功能描述

    设置 Field 类型。

    可不填写类型。

    modifiers - method

    fun modifiers(conditions: ModifierConditions): IndexTypeCondition
     

    变更记录

    v1.0.67 新增

    v1.0.80 修改

    将方法体进行 inline

    v1.1.0 修改

    合并到 ModifierConditions

    功能描述

    设置 Field 标识符筛选条件。

    可不设置筛选条件。

    特别注意

    存在多个 IndexTypeCondition 时除了 order 只会生效最后一个。

    order - method

    fun order(): IndexTypeCondition
    @@ -111,6 +111,6 @@
     

    变更记录

    v1.0 添加

    功能描述

    设置当前 Field 实例为 true

    特别注意

    请确保实例对象类型为 Boolean

    setFalse - method

    fun setFalse()
     

    变更记录

    v1.0 添加

    功能描述

    设置当前 Field 实例为 false

    特别注意

    请确保实例对象类型为 Boolean

    setNull - method

    fun setNull()
     

    变更记录

    v1.0 添加

    功能描述

    设置当前 Field 实例为 null

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html index 6664a4dbc..5ae1b3136 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.html @@ -23,12 +23,12 @@ } MethodFinder - class | Yuki Hook API - +

    MethodFinder - class

    class MethodFinder internal constructor(override val classSet: Class<*>) : MemberBaseFinder
    -

    变更记录

    v1.0 添加

    v1.0.2 修改

    合并到 BaseFinder

    v1.1.0 修改

    合并到 MemberBaseFinder

    v1.1.7 修改

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    功能描述

    Method 查找类。

    可通过指定类型查找指定 Method 或一组 Method

    name - field

    var name: String
    +

    变更记录

    v1.0 添加

    v1.0.2 修改

    合并到 BaseFinder

    v1.1.0 修改

    合并到 MemberBaseFinder

    v1.1.8 修改

    移动 hookInstance 参数到 MemberBaseFinder.MemberHookerManager

    功能描述

    Method 查找类。

    可通过指定类型查找指定 Method 或一组 Method

    name - field

    var name: String
     

    变更记录

    v1.0 添加

    v1.0.70 修改

    允许不填写名称

    功能描述

    设置 Method 名称。

    特别注意

    若不填写名称则必须存在一个其它条件。

    paramCount - field

    var paramCount: Int
     

    变更记录

    v1.0.67 新增

    功能描述

    设置 Method 参数个数。

    你可以不使用 param 指定参数类型而是仅使用此变量指定参数个数。

    若参数个数小于零则忽略并使用 param

    returnType - field

    var returnType: Any?
     

    变更记录

    v1.0 添加

    功能描述

    设置 Method 返回值,可不填写返回值。

    modifiers - method

    fun modifiers(conditions: ModifierConditions): IndexTypeCondition
    @@ -131,6 +131,6 @@
     

    变更记录

    v1.0.65 新增

    v1.0.68 修改

    修改 callBooleanboolean

    v1.1.6 修改

    修改参数命名 paramargs

    功能描述

    执行 Method,指定 Boolean 返回值类型。

    array - method

    inline fun <reified T> array(vararg args: Any?): Array<T>
     

    变更记录

    v1.0.68 新增

    v1.1.6 修改

    修改参数命名 paramargs

    功能描述

    执行 Method,指定 Array 返回值类型。

    list - method

    inline fun <reified T> list(vararg args: Any?): List<T>
     

    变更记录

    v1.0.68 新增

    v1.1.6 修改

    修改参数命名 paramargs

    功能描述

    执行 Method,指定 List 返回值类型。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html index d4d619580..ece86342a 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/entity/YukiBaseHooker.html @@ -23,13 +23,13 @@ } YukiBaseHooker - class | Yuki Hook API - +

    YukiBaseHooker - class

    abstract class YukiBaseHooker : PackageParam()
     

    变更记录

    v1.0 添加

    功能描述

    YukiHookAPI 的子类 Hooker 实现。

    onHook - method

    fun onHook()
     

    变更记录

    v1.0 添加

    功能描述

    子类 Hook 开始。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html index b3d5bb5eb..26039fc93 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.html @@ -23,7 +23,7 @@ } ReflectionFactory - kt | Yuki Hook API - + @@ -136,6 +136,6 @@

    变更记录

    v1.0.70 新增

    v1.0.80 修改

    将方法体进行 inline

    v1.1.5 修改

    新增 isAccessible 参数

    功能描述

    遍历当前类中的所有方法。

    Class.allConstructors - ext-method

    inline fun Class<*>.allConstructors(isAccessible: Boolean, result: (index: Int, constructor: Constructor<*>) -> Unit)
     

    变更记录

    v1.0.70 新增

    v1.0.80 修改

    将方法体进行 inline

    v1.1.5 修改

    新增 isAccessible 参数

    功能描述

    遍历当前类中的所有构造方法。

    Class.allFields - ext-method

    inline fun Class<*>.allFields(isAccessible: Boolean, result: (index: Int, field: Field) -> Unit)
     

    变更记录

    v1.0.70 新增

    v1.0.80 修改

    将方法体进行 inline

    v1.1.5 修改

    新增 isAccessible 参数

    功能描述

    遍历当前类中的所有变量。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html index e2fa34ba3..f5e9b01b2 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.html @@ -23,7 +23,7 @@ } YukiHookFactory - kt | Yuki Hook API - + @@ -39,6 +39,6 @@

    变更记录

    v1.1.0 新增

    功能描述

    向 Hook APP (宿主) ContextResources 注入当前 Xposed 模块的资源。

    注入成功后,你就可以直接使用例如 ImageView.setImageResourceResources.getString 装载当前 Xposed 模块的资源 ID。

    注入的资源作用域仅限当前 ContextResources,你需要在每个用到宿主 ContextResources 的地方重复调用此方法进行注入才能使用。

    特别注意

    只能在 (Xposed) 宿主环境使用此功能,其它环境下使用将不生效且会打印警告信息。

    Context.registerModuleAppActivities - ext-method

    fun Context.registerModuleAppActivities(proxy: Any?)
     

    变更记录

    v1.1.0 新增

    v1.1.5 修改

    加入最低 API 版本限制

    功能描述

    向 Hook APP (宿主) 注册当前 Xposed 模块的 Activity

    注册成功后,你就可以直接使用 Context.startActivity 来启动未在宿主中注册的 Activity

    使用此方法会在未注册的 Activity 在 Hook APP (宿主) 中启动时自动调用 injectModuleAppResources 注入当前 Xposed 模块的资源。

    你要将需要在宿主启动的 Activity 继承于 ModuleAppActivityModuleAppCompatActivity

    特别注意

    只能在 (Xposed) 宿主环境使用此功能,其它环境下使用将不生效且会打印警告信息。

    最低支持 Android 7.0 (API 24)。

    Context.applyModuleTheme - ext-method

    fun Context.applyModuleTheme(theme: Int, configuration: Configuration?): ModuleContextThemeWrapper
     

    变更记录

    v1.1.0 新增

    功能描述

    生成一个 ContextThemeWrapper 代理以应用当前 Xposed 模块的主题资源。

    在 Hook APP (宿主) 中使用此方法会自动调用 injectModuleAppResources 注入当前 Xposed 模块的资源。

    如果在 Hook APP (宿主) 中使用此方法发生 ClassCastException,请手动设置 configuration

    isSupportResourcesHook - field

    变更记录

    v1.0.80 新增

    v1.0.91 移除

    请转移到 YukiHookAPI.Status.isSupportResourcesHook

    isModuleActive - field

    变更记录

    v1.0.6 新增

    v1.0.91 移除

    请转移到 YukiHookAPI.Status.isModuleActive

    isXposedModuleActive - field

    变更记录

    v1.0.6 新增

    v1.0.91 移除

    请转移到 YukiHookAPI.Status.isXposedModuleActive

    isTaiChiModuleActive - field

    变更记录

    v1.0 添加

    v1.0.91 移除

    请转移到 YukiHookAPI.Status.isTaiChiModuleActive

    YukiHookModuleStatus - class

    变更记录

    v1.0 添加

    v1.0.91 作废

    请转移到 YukiHookAPI.Status

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html index 8ece5b3b2..6af838718 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/log/LoggerFactory.html @@ -23,7 +23,7 @@ } LoggerFactory - kt | Yuki Hook API - + @@ -66,6 +66,6 @@

    变更记录

    v1.0 添加

    v1.1.0 修改

    新增 type 参数

    功能描述

    Logcat 和 (Xposed) 宿主环境打印日志,级别 I

    tag 的默认参数为 YukiHookAPI.Configs.debugTag,你可以进行自定义。

    loggerW - method

    fun loggerW(tag: String, msg: String, type: LoggerType)
     

    变更记录

    v1.0 添加

    v1.1.0 修改

    新增 type 参数

    功能描述

    Logcat 和 (Xposed) 宿主环境打印日志,级别 W

    tag 的默认参数为 YukiHookAPI.Configs.debugTag,你可以进行自定义。

    loggerE - method

    fun loggerE(tag: String, msg: String, e: Throwable?, type: LoggerType)
     

    变更记录

    v1.0 添加

    v1.1.0 修改

    新增 type 参数

    功能描述

    Logcat 和 (Xposed) 宿主环境打印日志,级别 E,可携带 e 异常信息,将打印异常堆栈。

    tag 的默认参数为 YukiHookAPI.Configs.debugTag,你可以进行自定义。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html index dea9aac59..ac430ba18 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/HookParam.html @@ -23,7 +23,7 @@ } HookParam - class | Yuki Hook API - + @@ -35,7 +35,7 @@

    变更记录

    v1.0 添加

    v1.1.0 修改

    移动 HookParamWrapperYukiHookCallback.Param

    修正拼写错误的 creater 命名到 creator

    v1.1.5 修改

    新增 paramId 参数

    功能描述

    Hook 方法、构造方法的目标对象实现类。

    args - field

    val args: Array<Any?>
     

    变更记录

    v1.0 添加

    功能描述

    获取当前 Hook 对象 memberconstructor 的参数对象数组。

    这里的数组每项类型默认为 Any,你可以使用 args 方法来实现 ArgsModifyer.cast 功能。

    firstArgs - field

    变更记录

    v1.0 添加

    v1.0.75 移除

    请使用 args(index = 0)args().first()

    lastArgs - field

    变更记录

    v1.0 添加

    v1.0.75 移除

    请使用 args().last()

    instance - field

    val instance: Any
     

    变更记录

    v1.0 添加

    功能描述

    获取当前 Hook 实例的对象。

    特别注意

    如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。

    如果你不确定当前实例的对象是否为 null,你可以使用 instanceOrNull

    instanceOrNull - field

    val instanceOrNull: Any?
    -

    变更记录

    v1.1.7 新增

    功能描述

    获取当前 Hook 实例的对象。

    特别注意

    如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。

    instanceClass - field

    val instanceClass: Class<*>
    +

    变更记录

    v1.1.8 新增

    功能描述

    获取当前 Hook 实例的对象。

    特别注意

    如果你当前 Hook 的对象是一个静态,那么它将不存在实例的对象。

    instanceClass - field

    val instanceClass: Class<*>
     

    变更记录

    v1.0 添加

    功能描述

    获取当前 Hook 实例的类对象。

    member - field

    val member: Member
     

    变更记录

    v1.1.0 新增

    功能描述

    获取当前 Hook 对象的 Member

    在不确定 Member 类型为 MethodConstructor 时可以使用此方法。

    method - field

    val method: Method
     

    变更记录

    v1.0 添加

    功能描述

    获取当前 Hook 对象的方法。

    constructor - field

    val constructor: Constructor
    @@ -56,7 +56,7 @@
     

    变更记录

    v1.0.75 新增

    功能描述

    获取当前 Hook 对象的 methodconstructor 的返回值 T

    firstArg - method

    变更记录

    v1.0.66 新增

    v1.0.75 移除

    lastArgs - method

    变更记录

    v1.0.66 新增

    v1.0.75 移除

    instance - method

    inline fun <reified T> instance(): T
     

    变更记录

    v1.0 添加

    功能描述

    获取当前 Hook 实例的对象 T

    功能示例

    你可以通过 instance 方法轻松使用泛型 cast 为目标对象的类型。

    示例如下

    instance<Activity>().finish()
     

    instanceOrNull - method

    inline fun <reified T> instanceOrNull(): T?
    -

    变更记录

    v1.1.7 新增

    功能描述

    获取当前 Hook 实例的对象 T

    功能示例

    用法请参考 instance 方法。

    args - method

    fun args(): ArgsIndexCondition
    +

    变更记录

    v1.1.8 新增

    功能描述

    获取当前 Hook 实例的对象 T

    功能示例

    用法请参考 instance 方法。

    args - method

    fun args(): ArgsIndexCondition
     

    变更记录

    v1.0.75 新增

    功能描述

    获取当前 Hook 对象的 methodconstructor 的参数数组下标实例化类。

    args - method

    fun args(index: Int): ArgsModifyer
     

    变更记录

    v1.0 添加

    v1.0.75 修改

    默认值 index = 0 移动到新的使用方法 args().first()

    功能描述

    获取当前 Hook 对象的 methodconstructor 的参数实例化对象类。

    功能示例

    你可以通过 args 方法修改当前 Hook 实例的方法、构造方法的参数内容。

    你可以直接使用 set 方法设置 param 为你的目标实例,接受 Any 类型。

    特别注意

    请确保 param 类型为你的目标实例类型。

    示例如下

    args(index = 0).set("modify the value")
     

    你可以这样直接设置第一位 param 的值。

    示例如下

    args().first().set("modify the value")
    @@ -120,6 +120,6 @@
     

    变更记录

    v1.0 添加

    功能描述

    设置方法参数的实例对象为 null

    setTrue - method

    fun setTrue()
     

    变更记录

    v1.0 添加

    功能描述

    设置方法参数的实例对象为 true

    特别注意

    请确保目标对象的类型是 Boolean

    setFalse - method

    fun setFalse()
     

    变更记录

    v1.0 添加

    功能描述

    设置方法参数的实例对象为 false

    特别注意

    请确保目标对象的类型是 Boolean

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html index a136249d8..743ee4e07 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.html @@ -23,7 +23,7 @@ } PackageParam - class | Yuki Hook API - + @@ -168,7 +168,7 @@

    变更记录

    v1.0.88 新增

    功能描述

    监听当前 Hook APP 装载 Application.onTrimMemory

    onConfigurationChanged - method

    fun onConfigurationChanged(result: (self: Application, config: Configuration) -> Unit)
     

    变更记录

    v1.0.88 新增

    功能描述

    监听当前 Hook APP 装载 Application.onConfigurationChanged

    registerReceiver - method

    fun registerReceiver(vararg action: String, result: (context: Context, intent: Intent) -> Unit)
     
    fun registerReceiver(filter: IntentFilter, result: (context: Context, intent: Intent) -> Unit)
    -

    变更记录

    v1.0.88 新增

    v1.1.7 修改

    新增直接使用 IntentFilter 注册系统广播监听

    功能描述

    注册系统广播监听。

    - +

    变更记录

    v1.0.88 新增

    v1.1.8 修改

    新增直接使用 IntentFilter 注册系统广播监听

    功能描述

    注册系统广播监听。

    + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html index 135b9d73e..8c645ce36 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.html @@ -23,11 +23,11 @@ } ComponentTypeFactory - kt | Yuki Hook API - +

    ComponentTypeFactory - kt

    变更记录

    v1.0 添加

    功能描述

    这是一个预置反射类型的常量类,主要为 Android 相关组件的 Class 内容,跟随版本更新会逐一进行增加。

    详情可 点击这里在新窗口中打开 进行查看。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html index 0ebb90679..00869a0d1 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.html @@ -23,11 +23,11 @@ } GraphicsTypeFactory - kt | Yuki Hook API - +

    GraphicsTypeFactory - kt

    变更记录

    v1.0 添加

    功能描述

    这是一个预置反射类型的常量类,主要为 Android 相关 GraphicsClass 内容,跟随版本更新会逐一进行增加。

    详情可 点击这里在新窗口中打开 进行查看。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html index 0ad5f0ad1..d93fa1d44 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.html @@ -23,11 +23,11 @@ } ViewTypeFactory - kt | Yuki Hook API - +

    ViewTypeFactory - kt

    变更记录

    v1.0 添加

    功能描述

    这是一个预置反射类型的常量类,主要为 Android 相关 WidgetClass 内容,跟随版本更新会逐一进行增加。

    详情可 点击这里在新窗口中打开 进行查看。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html index e4f230781..9575f37b2 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/defined/DefinedTypeFactory.html @@ -23,12 +23,12 @@ } DefinedTypeFactory - kt | Yuki Hook API - +

    DefinedTypeFactory - kt

    变更记录

    v1.1.0 新增

    功能描述

    这是一个内部类型的定义常量类,主要用于反射 API 相关用法的延伸。

    VagueType - field

    val VagueType: Class<*>
     

    变更记录

    v1.1.0 新增

    功能描述

    得到模糊类型。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html index 39faf4a17..972af84be 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.html @@ -23,11 +23,11 @@ } VariableTypeFactory - kt | Yuki Hook API - +

    VariableTypeFactory - kt

    变更记录

    v1.0 添加

    功能描述

    这是一个预置反射类型的常量类,主要为 Java 相关基本变量类型的 Class 内容,跟随版本更新会逐一进行增加。

    详情可 点击这里在新窗口中打开 进行查看。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html index 65d101cd3..e93a0084b 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/application/ModuleApplication.html @@ -23,7 +23,7 @@ } ModuleApplication - class | Yuki Hook API - + @@ -44,6 +44,6 @@ ...>

    appContext - field

    val appContext: ModuleApplication
     

    变更记录

    v1.0.77 新增

    功能描述

    获取全局静态 Application 实例。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html index 3c3a320d4..257086828 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/event/YukiXposedEvent.html @@ -23,7 +23,7 @@ } YukiXposedEvent - object | Yuki Hook API - + @@ -33,6 +33,6 @@

    变更记录

    v1.0.80 新增

    功能描述

    设置 initZygote 事件监听。

    onHandleLoadPackage - method

    fun onHandleLoadPackage(result: (LoadPackageParam) -> Unit)
     

    变更记录

    v1.0.80 新增

    功能描述

    设置 handleLoadPackage 事件监听。

    onHandleInitPackageResources - method

    fun onHandleInitPackageResources(result: (InitPackageResourcesParam) -> Unit)
     

    变更记录

    v1.0.80 新增

    功能描述

    设置 handleInitPackageResources 事件监听。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html index 1a2eb0705..9696a942a 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiModuleResources.html @@ -23,13 +23,13 @@ } YukiModuleResources - class | Yuki Hook API - +

    YukiModuleResources - class

    class YukiModuleResources private constructor(private val baseInstance: XModuleResources) : Resources
     

    变更记录

    v1.0.80 新增

    功能描述

    对接 XModuleResources 的中间层实例。

    fwd - method

    fun fwd(resId: Int): YukiResForwarder
     

    变更记录

    v1.0.80 新增

    功能描述

    对接 XModuleResources.fwd 方法。

    创建 YukiResForwarderXResForwarder 实例。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html index bc4783a93..3ad580832 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResForwarder.html @@ -23,7 +23,7 @@ } YukiResForwarder - class | Yuki Hook API - + @@ -31,6 +31,6 @@

    变更记录

    v1.0.80 新增

    功能描述

    对接 XResForwarder 的中间层实例。

    instance - field

    变更记录

    v1.0.80 新增

    v1.1.0 作废

    不再对外公开 instance 参数

    id - field

    val id: Int
     

    变更记录

    v1.0.80 新增

    功能描述

    获得当前 APP 的 Resources Id。

    resources - field

    val resources: Resources
     

    变更记录

    v1.0.80 新增

    功能描述

    获得当前 APP 的 Resources。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html index 1072ce52a..836c2557b 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/bridge/resources/YukiResources.html @@ -23,7 +23,7 @@ } YukiResources - class | Yuki Hook API - + @@ -34,6 +34,6 @@

    变更记录

    v1.0.80 新增

    功能描述

    获取当前被 Hook 的布局实例。

    findViewByIdentifier - method

    inline fun <reified T : View> View.findViewByIdentifier(name: String): T?
     
    inline fun <reified T : View> findViewByIdentifier(name: String): T?
     

    变更记录

    v1.0.80 新增

    功能描述

    使用 Identifier 查找 Hook APP 指定 Id 的 View

    扩展方法可以使用 Identifier 查找 Hook APP 当前装载布局中指定 Id 的 View

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html index da85c7622..46a687727 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.html @@ -23,7 +23,7 @@ } YukiHookDataChannel - class | Yuki Hook API - + @@ -41,6 +41,6 @@

    变更记录

    v1.0.88 新增

    v1.1.5 修改

    新增 priority 参数

    功能描述

    仅获取监听结果,不获取键值数据。

    特别注意

    仅限使用 VALUE_WAIT_FOR_LISTENER 发送的监听才能被接收。

    checkingVersionEquals - method

    fun checkingVersionEquals(priority: ChannelPriority?, result: (Boolean) -> Unit)
     

    变更记录

    v1.0.88 新增

    v1.1.5 修改

    新增 priority 参数

    功能描述

    获取模块与宿主的版本是否匹配。

    通过此方法可原生判断 Xposed 模块更新后宿主并未重新装载造成两者不匹配的情况。

    obtainLoggerInMemoryData - method

    fun obtainLoggerInMemoryData(priority: ChannelPriority?, result: (ArrayList<YukiLoggerData>) -> Unit)
     

    变更记录

    v1.1.4 新增

    v1.1.5 修改

    新增 priority 参数

    功能描述

    获取模块与宿主之间的 ArrayList<YukiLoggerData> 数据。

    由于模块与宿主处于不同的进程,我们可以使用数据通讯桥访问各自的调试日志数据。

    特别注意

    模块与宿主必须启用 YukiHookLogger.Configs.isRecord 才能获取到调试日志数据。

    由于 Android 限制了数据传输大小的最大值,如果调试日志过多将会自动进行分段发送,数据越大速度越慢。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html index 2414fbd7c..ea0430e5b 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/data/ChannelData.html @@ -23,7 +23,7 @@ } ChannelData - class | Yuki Hook API - + @@ -50,6 +50,6 @@ // Your code here. } - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html index a031ef6b6..a73b3b356 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/channel/priority/ChannelPriority.html @@ -23,12 +23,12 @@ } ChannelPriority - class | Yuki Hook API - +

    ChannelPriority - class

    class ChannelPriority(private val conditions: () -> Boolean)
     

    变更记录

    v1.1.5 新增

    功能描述

    数据通讯桥响应优先级构造类。

    这个类是对 YukiHookDataChannel 的一个扩展用法。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html index ddd2e82e8..69cd26baa 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppActivity.html @@ -23,12 +23,12 @@ } ModuleAppActivity - class | Yuki Hook API - +

    ModuleAppActivity - class

    open class ModuleAppActivity : Activity()
     

    变更记录

    v1.1.0 新增

    功能描述

    代理 Activity

    继承于此类的 Activity 可以同时在宿主与模块中启动。

    在 (Xposed) 宿主环境需要在宿主启动时调用 Context.registerModuleAppActivities 进行注册。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html index 590616d68..a16319aa7 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/activity/base/ModuleAppCompatActivity.html @@ -23,13 +23,13 @@ } ModuleAppCompatActivity - class | Yuki Hook API - +

    ModuleAppCompatActivity - class

    open class ModuleAppCompatActivity : AppCompatActivity()
     

    变更记录

    v1.1.0 新增

    功能描述

    代理 AppCompatActivity

    继承于此类的 Activity 可以同时在宿主与模块中启动。

    在 (Xposed) 宿主环境需要在宿主启动时调用 Context.registerModuleAppActivities 进行注册。

    在 (Xposed) 宿主环境需要重写 moduleTheme 设置 AppCompat 主题,否则会无法启动。

    moduleTheme - field

    open val moduleTheme: Int
     

    变更记录

    v1.1.0 新增

    功能描述

    设置当前代理的 Activity 主题。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html index 9a1406043..da2d0e00c 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/context/wrapper/ModuleContextThemeWrapper.html @@ -23,13 +23,13 @@ } ModuleContextThemeWrapper - class | Yuki Hook API - +

    ModuleContextThemeWrapper - class

    class ModuleContextThemeWrapper private constructor(baseContext: Context, theme: Int, configuration: Configuration?) : ContextThemeWrapper
     

    变更记录

    v1.1.0 新增

    功能描述

    代理 ContextThemeWrapper

    通过包装,你可以轻松在 (Xposed) 宿主环境使用来自模块的主题资源。

    applyConfiguration - method

    fun applyConfiguration(initiate: Configuration.() -> Unit): ModuleContextThemeWrapper
     

    变更记录

    v1.1.0 新增

    功能描述

    设置当前 ModuleContextThemeWrapperConfiguration

    设置后会自动调用 Resources.updateConfiguration

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html index a43818e68..7f8cabd5d 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.html @@ -23,7 +23,7 @@ } ModuleClassLoader - class | Yuki Hook API - + @@ -31,6 +31,6 @@

    变更记录

    v1.1.2 新增

    功能描述

    自动处理 (Xposed) 宿主环境与模块环境的 ClassLoader

    companion object - object

    变更记录

    v1.1.2 新增

    excludeHostClasses - method

    fun excludeHostClasses(vararg name: String)
     

    变更记录

    v1.1.2 新增

    功能描述

    添加到 Hook APP (宿主) Class 排除列表。

    排除列表中的 Class 将会使用宿主的 ClassLoader 进行装载。

    特别注意

    排除列表仅会在 (Xposed) 宿主环境生效。

    excludeModuleClasses - method

    fun excludeModuleClasses(vararg name: String)
     

    变更记录

    v1.1.2 新增

    功能描述

    添加到模块 Class 排除列表。

    排除列表中的 Class 将会使用模块 (当前宿主环境的模块注入进程) 的 ClassLoader 进行装载。

    特别注意

    排除列表仅会在 (Xposed) 宿主环境生效。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html index d72bc46d0..1048fb4f9 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.html @@ -23,7 +23,7 @@ } YukiHookModulePrefs - class | Yuki Hook API - + @@ -56,6 +56,6 @@

    变更记录

    v1.0.67 新增

    功能描述

    智能获取指定类型的键值。

    put - method

    inline fun <reified T> put(prefs: PrefsData<T>, value: T)
     

    变更记录

    v1.0.67 新增

    功能描述

    智能存储指定类型的键值。

    注意

    在 (Xposed) 宿主环境下只读,无法使用。

    clearCache - method

    fun clearCache()
     

    变更记录

    v1.0.5 新增

    功能描述

    清除 XSharedPreferences 中缓存的键值数据。

    无论是否开启 YukiHookAPI.Configs.isEnableModulePrefsCache

    调用此方法将清除当前存储的全部键值缓存。

    下次将从 XSharedPreferences 重新读取。

    在 (Xposed) 宿主环境中使用。

    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html index 8dea6e18e..633924111 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/data/PrefsData.html @@ -23,7 +23,7 @@ } PrefsData - class | Yuki Hook API - + @@ -45,6 +45,6 @@

    你依然可以不使用模板定义的默认值,随时修改你的默认值。

    示例如下

    // 读取 - 此时 data 取到的默认值将会是 2 - 并不是模板提供的 0
     val data = prefs.get(DataConst.TEST_KV_DATA_3, 2)
     
    - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html index f2a815d27..f585891e5 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/ui/ModulePreferenceFragment.html @@ -23,7 +23,7 @@ } ModulePreferenceFragment - class | Yuki Hook API - + @@ -49,6 +49,6 @@ } } - + diff --git a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html index dfa8105b0..0ccb8b427 100644 --- a/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html +++ b/docs/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/proxy/IYukiHookXposedInit.html @@ -23,7 +23,7 @@ } IYukiHookXposedInit - interface | Yuki Hook API - + @@ -32,6 +32,6 @@

    变更记录

    v1.0.5 新增

    功能描述

    配置 YukiHookAPI.Configs 的初始化方法。

    特别注意

    在这里只能进行初始化配置,不能进行 Hook 操作。

    此方法可选,你也可以选择不对 YukiHookAPI.Configs 进行配置。

    onHook - method

    fun onHook()
     

    变更记录

    v1.0 添加

    功能描述

    Xposed API 的模块装载调用入口方法。

    onXposedEvent - method

    fun onXposedEvent()
     

    变更记录

    v1.0.80 新增

    功能描述

    监听 Xposed 原生装载事件。

    若你的 Hook 事件中存在需要兼容的原生 Xposed 功能,可在这里实现。

    请在这里使用 YukiXposedEvent 创建回调事件监听。

    可监听的事件如下:

    YukiXposedEvent.onInitZygote

    YukiXposedEvent.onHandleLoadPackage

    YukiXposedEvent.onHandleInitPackageResources

    特别注意

    此接口仅供监听和实现原生 Xposed API 的功能,请不要在这里操作 YukiHookAPI

    YukiHookXposedInitProxy - interface

    变更记录

    v1.0 添加

    v1.0.80 作废

    请转移到 IYukiHookXposedInit

    - + diff --git a/docs/zh-cn/api/special-features/host-inject.html b/docs/zh-cn/api/special-features/host-inject.html index 843077683..683733bf3 100644 --- a/docs/zh-cn/api/special-features/host-inject.html +++ b/docs/zh-cn/api/special-features/host-inject.html @@ -23,7 +23,7 @@ } 宿主资源注入扩展 | Yuki Hook API - + @@ -159,6 +159,6 @@ "com.demo.controller.ModuleController" )

    你需要在向宿主注入模块资源的方法执行之前进行设置才能生效。

    此功能仅为解决宿主与模块中可能存在同名的 Class 情况,例如共用的 SDK 以及依赖,在大部分情况下你不会用到此功能。

    小提示

    更多功能请参考 ModuleClassLoader

    - + diff --git a/docs/zh-cn/api/special-features/host-lifecycle.html b/docs/zh-cn/api/special-features/host-lifecycle.html index 440fb0984..1783a42a0 100644 --- a/docs/zh-cn/api/special-features/host-lifecycle.html +++ b/docs/zh-cn/api/special-features/host-lifecycle.html @@ -23,7 +23,7 @@ } 宿主生命周期扩展 | Yuki Hook API - + @@ -74,6 +74,6 @@ } }

    小提示

    更多功能请参考 AppLifecycle

    - + diff --git a/docs/zh-cn/api/special-features/logger.html b/docs/zh-cn/api/special-features/logger.html index 5a424c840..94cc4ccd8 100644 --- a/docs/zh-cn/api/special-features/logger.html +++ b/docs/zh-cn/api/special-features/logger.html @@ -23,7 +23,7 @@ } 调试日志 | Yuki Hook API - + @@ -74,6 +74,6 @@ // ... }

    小提示

    更多功能请参考 YukiHookLogger.inMemoryDataYukiHookLogger.contentsYukiHookLogger.contentsYukiHookLogger.saveToFile 方法以及 YukiHookLogger.Configs

    - + diff --git a/docs/zh-cn/api/special-features/reflection.html b/docs/zh-cn/api/special-features/reflection.html index cf7313297..296c95559 100644 --- a/docs/zh-cn/api/special-features/reflection.html +++ b/docs/zh-cn/api/special-features/reflection.html @@ -23,7 +23,7 @@ } 字节码与反射扩展 | Yuki Hook API - + @@ -847,6 +847,6 @@ param(BundleClass) }

    以下是 Java 中一些特例类型在 YukiHookAPI 中的封装名称。

    注意

    类型 + Type 封装类型会且仅会表示为 Java 原始类型关键字,由于 Kotlin 中不存在原始类型这个概念,所以它们都会被定义为 KClass

    Java 中共有 9 个原始类型关键字,其中 8 个为原始类型,分别为 booleancharbyteshortintfloatlongdouble,其中 void 类型是一个特例。

    同时它们都有 Java 自身对应的封装类型,例如 java.lang.Booleanjava.lang.Integer,这些类型是不相等的,请注意区分。

    同样地,数组也有对应的封装类型,它们也需要与 Java 原始类型关键字 进行区分。

    例如 byte[] 的封装类型为 ByteArrayTypeArrayClass(ByteType),而 Byte[] 的封装类型为 ByteArrayClassArrayClass(ByteClass),这些类型也是不相等的

    小提示

    更多类型可查看 ComponentTypeFactoryGraphicsTypeFactoryViewTypeFactoryVariableTypeFactory

    同时,欢迎你能贡献更多的常用类型。

    - + diff --git a/docs/zh-cn/api/special-features/xposed-channel.html b/docs/zh-cn/api/special-features/xposed-channel.html index 4c896b748..bb0098476 100644 --- a/docs/zh-cn/api/special-features/xposed-channel.html +++ b/docs/zh-cn/api/special-features/xposed-channel.html @@ -23,7 +23,7 @@ } Xposed 模块与宿主通讯桥 | Yuki Hook API - + @@ -145,6 +145,6 @@ } }

    安全性说明

    在模块环境中,你只能接收指定包名的宿主发送的通讯数据且只能发送给指定包名的宿主,系统框架除外。

    特别注意

    为了进一步防止广播滥用,通讯数据中 API 会自动指定宿主和模块的包名,防止其它 APP 监听并利用广播做出超限行为。

    - + diff --git a/docs/zh-cn/api/special-features/xposed-storage.html b/docs/zh-cn/api/special-features/xposed-storage.html index 19d3a1bf5..495c3d259 100644 --- a/docs/zh-cn/api/special-features/xposed-storage.html +++ b/docs/zh-cn/api/special-features/xposed-storage.html @@ -23,7 +23,7 @@ } Xposed 模块数据存储 | Yuki Hook API - + @@ -39,6 +39,6 @@ // 也可以这样用 val testName = prefs.name("specify_file_name").getString("test_name", "default_value")

    若你的项目中有大量的固定数据需要存储和读取,推荐使用 PrefsData 来创建模板。

    小提示

    更多功能请参考 YukiHookModulePrefsPrefsData

    在 PreferenceFragment 中使用

    这里描述了在 PreferenceFragment 中装载 YukiHookModulePrefs 的场景。

    若你的模块使用了 PreferenceFragmentCompat,你现在可以将其继承类开始迁移到 ModulePreferenceFragment

    特别注意

    你必须继承 ModulePreferenceFragment 才能实现 YukiHookModulePrefs 的模块存储功能。

    小提示

    更多功能请参考 ModulePreferenceFragment

    - + diff --git a/docs/zh-cn/config/api-example.html b/docs/zh-cn/config/api-example.html index 529e5b57d..3be8fc464 100644 --- a/docs/zh-cn/config/api-example.html +++ b/docs/zh-cn/config/api-example.html @@ -23,7 +23,7 @@ } API 基本配置 | Yuki Hook API - + @@ -214,6 +214,6 @@

    作为 Hook API 使用需要注意的地方

    若你作为 Hook API 使用,那么你只需要在入口处对 encase 方法进行区分。

    注意

    encase 方法对作为 Hook API 使用提供了两个完全一样的方法,但是比前两者仅多出一个参数 baseContext

    方法 1

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

    方法 2

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

    此处的 baseContext 只需填入你在 attachBaseContext 处得到的 Context 即可,其它用法与上述内容完全一致。

    特别注意

    切勿以 Xposed 方式使用 encase 方法而漏掉 baseContext 参数,否则你的 Hook 将完全不工作。

    Resources Hook 功能不支持作为 Hook API 使用。

    - + diff --git a/docs/zh-cn/config/api-exception.html b/docs/zh-cn/config/api-exception.html index e548cfacc..e4c5e23ad 100644 --- a/docs/zh-cn/config/api-exception.html +++ b/docs/zh-cn/config/api-exception.html @@ -23,7 +23,7 @@ } API 异常处理 | Yuki Hook API - + @@ -391,6 +391,6 @@ // <解决方案 2> 不填写泛型声明 val clazz2 = "android.app.Activity".toClass()

    请确保执行方法后声明的泛型是指定的目标 Class 类型,在不确定目标类型的情况下你可以不需要填写泛型声明。

    - + diff --git a/docs/zh-cn/config/api-using.html b/docs/zh-cn/config/api-using.html index a54fb8e5f..c44e4092f 100644 --- a/docs/zh-cn/config/api-using.html +++ b/docs/zh-cn/config/api-using.html @@ -23,7 +23,7 @@ } 作为 Hook API 使用的相关配置 | Yuki Hook API - + @@ -77,6 +77,6 @@ super.attachBaseContext(base) } - + diff --git a/docs/zh-cn/config/r8-proguard.html b/docs/zh-cn/config/r8-proguard.html index 18597bec2..f0b20b582 100644 --- a/docs/zh-cn/config/r8-proguard.html +++ b/docs/zh-cn/config/r8-proguard.html @@ -23,12 +23,12 @@ } R8 与 Proguard 混淆 | Yuki Hook API - +

    R8 与 Proguard 混淆

    大部分场景下 Xposed 模块可通过原生混淆压缩体积,这里介绍了混淆的配置方法。

    R8

    如果你使用的是 R8,那么你无需对 YukiHookAPI 进行任何特殊配置。

    Proguard

    如果你仍然在使用 Proguard,你需要做一些规则配置。

    特别注意

    Proguard 规则已被弃用,请不要再使用,自从 Android Gradle Plugin 4.2 后,拥有 Android Jetpack 套件最新版本的混淆处理程序默认均为 R8,不再需要考虑混淆的问题。

    若要在任何版本下启用 R8,请在 gradle.properties 文件中加入如下规则,Android Gradle Plugin 7.0 及以上版本无需任何配置。

    android.enableR8=true
     
    - + diff --git a/docs/zh-cn/config/xposed-using.html b/docs/zh-cn/config/xposed-using.html index 214e4698b..a4200853f 100644 --- a/docs/zh-cn/config/xposed-using.html +++ b/docs/zh-cn/config/xposed-using.html @@ -23,7 +23,7 @@ } 作为 Xposed 模块使用的相关配置 | Yuki Hook API - + @@ -104,6 +104,6 @@ } }

    onXposedEventonHook 方法完全独立存在,互不影响,你可以继续在 onHook 方法中使用 YukiHookAPI

    小提示

    更多功能请参考 IYukiHookXposedInit.onXposedEvent 方法。

    - + diff --git a/docs/zh-cn/guide/example.html b/docs/zh-cn/guide/example.html index 5a49839d5..af2042b3c 100644 --- a/docs/zh-cn/guide/example.html +++ b/docs/zh-cn/guide/example.html @@ -23,7 +23,7 @@ } 用法示例 | Yuki Hook API - + @@ -319,6 +319,6 @@ </queries>

    还有一种方案,你可以直接声明 android.permission.QUERY_ALL_PACKAGES 权限,但是不推荐且会被代码检查警告。

    示例如下

    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
     

    若模块激活判断中包含太极、无极中的激活状态,就必须将模块的 Application 继承于 ModuleApplication 或直接使用 ModuleApplication

    1.0.91 版本后的 API 修改了激活逻辑判断方式,现在你可以在模块与 Hook APP (宿主) 中同时使用此 API;

    需要确保 YukiHookAPI.Configs.isEnableHookModuleStatus 是启用状态;

    除了提供标准 API 的 Hook Framework 之外,其它情况下模块可能都将无法判断自己是否被激活。

    - + diff --git a/docs/zh-cn/guide/home.html b/docs/zh-cn/guide/home.html index 7ef3ef54a..41da8a395 100644 --- a/docs/zh-cn/guide/home.html +++ b/docs/zh-cn/guide/home.html @@ -23,7 +23,7 @@ } 介绍 | Yuki Hook API - + @@ -134,6 +134,6 @@ } }

    是的,你没有看错,仅仅就需要这些代码,就能完全取代 Xposed API 实现同样的功能。

    现在,借助高效强大的 YukiHookAPI,你就可以实现一个非常简单的 Xposed 模块。

    支持的 Hook Framework

    以下是 YukiHookAPI 支持的 Hook Framework 以及 Xposed 框架。

    Hook FrameworkSTDescription
    LSPosed在新窗口中打开多场景下稳定使用
    LSPatch在新窗口中打开将在此项目完善后逐渐加入 API 支持
    EdXposed在新窗口中打开已停止维护,不再推荐使用
    Pine在新窗口中打开可以使用
    SandHook在新窗口中打开可以使用
    Whale在新窗口中打开需要 xposed-hook-based-on-whale在新窗口中打开
    YAHFA在新窗口中打开需要自行实现 Xposed API
    FastHook在新窗口中打开需要自行实现 Xposed API
    Epic在新窗口中打开需要自行对接 Dexposed在新窗口中打开
    TaiChi在新窗口中打开可以作为模块使用
    Xposed在新窗口中打开建议最低系统版本为 Android 7.0
    - + diff --git a/docs/zh-cn/guide/knowledge.html b/docs/zh-cn/guide/knowledge.html index 920612439..8d56c4939 100644 --- a/docs/zh-cn/guide/knowledge.html +++ b/docs/zh-cn/guide/knowledge.html @@ -23,7 +23,7 @@ } 基础知识 | Yuki Hook API - + @@ -40,6 +40,6 @@ └── Hooker (Hooked) ...

    通过 Xposed 的运行原理,从而衍生了很多同类型框架,随着当今时代的移动设备获取 Root 权限甚至刷机越来越困难且不是刚需的时候,一些免 Root 框架也随之产生,例如 LSPatch太极

    这些在 ART 层面上的 Hook Framework 同样也可不借助 Xposed API 完成其和 Xposed 原理一样的 Hook 流程,免 Root 的运行原理为修改 APK 并将 Hook 进程注入宿主,通过外部模块对其进行控制。

    另外一种产品就是利用 Android 运行环境现有的功能虚拟出一个完全与当前设备系统一样的环境,并在其中运行 APP,这个就是虚拟 APP 技术 VirtualApp,后来衍生为 VirtualXposed

    上述提到的免 Root 框架分别为 LSPatch在新窗口中打开太极在新窗口中打开VirtualApp在新窗口中打开SandVXposed在新窗口中打开

    YukiHookAPI 做了什么

    自从 Xposed 出现到现在为止,除了开发者人人皆知的 XposedHelpers,依然没有一套针对 Kotlin 打造的语法糖以及用法封装十分完善的 API。

    本 API 框架的诞生就是希望在 Xposed 的如今时代,能让更多有动手能力的 Xposed 模块开发者少走弯路,更容易、更简单地完成整个开发流程。

    未来,YukiHookAPI 将在使用 Xposed API 的目标基础上适配更多第三方 Hook Framework,使得整个生态得到完善,并帮助更多开发者让 Xposed 模块开发变得更加简单和易懂。

    让我们开始吧

    在开始之前,你需要拥有以下基础才能更好地使用 YukiHookAPI

    - + diff --git a/docs/zh-cn/guide/move-to-new-api.html b/docs/zh-cn/guide/move-to-new-api.html index 7f5970494..c3450c1de 100644 --- a/docs/zh-cn/guide/move-to-new-api.html +++ b/docs/zh-cn/guide/move-to-new-api.html @@ -23,7 +23,7 @@ } 从 Xposed API 迁移 | Yuki Hook API - + @@ -215,6 +215,6 @@ // 拦截返回值 override fun replaceHookedMethod(param: MethodHookParam) = null

    迁移其它功能

    YukiHookAPI 对 Xposed API 进行了完全重写,你可以参考 API 文档 以及 特色功能 来决定一些功能性的迁移和使用。

    - + diff --git a/docs/zh-cn/guide/quick-start.html b/docs/zh-cn/guide/quick-start.html index dd65c9b47..50451ef8d 100644 --- a/docs/zh-cn/guide/quick-start.html +++ b/docs/zh-cn/guide/quick-start.html @@ -23,7 +23,7 @@ } 快速开始 | Yuki Hook API - + @@ -99,6 +99,6 @@ super.attachBaseContext(base) }

    然后,你就可以开始编写 Hook 代码了,方式与作为 Xposed 模块使用基本一致。

    有关作为 Hook API 使用的相关配置详细内容,你可以 点击这里 继续阅读。

    注意

    使用自定义的 Hook Framework 而并非完整的 Xposed 模块时,YukiHookModulePrefsYukiHookDataChannel 以及 Resources Hook 功能将失效。

    - + diff --git a/docs/zh-cn/index.html b/docs/zh-cn/index.html index 46dab0c06..37b43a883 100644 --- a/docs/zh-cn/index.html +++ b/docs/zh-cn/index.html @@ -23,7 +23,7 @@ } 首页 | Yuki Hook API - + @@ -53,6 +53,6 @@ } } - + diff --git a/docs/zh-cn/tools/yukihookapi-projectbuilder.html b/docs/zh-cn/tools/yukihookapi-projectbuilder.html index 1787d53e7..d4a9d8d85 100644 --- a/docs/zh-cn/tools/yukihookapi-projectbuilder.html +++ b/docs/zh-cn/tools/yukihookapi-projectbuilder.html @@ -23,11 +23,11 @@ } YukiHookAPI 构建工具 | Yuki Hook API - +

    YukiHookAPI 构建工具

    这是一个使用 YukiHookAPI 作为核心的 Xposed 模块自动构建工具。

    实现自动化搜索依赖快速搭建一个包含 Xposed 模块环境的 Android 项目模板。

    获取项目

    本项目完全开源免费,且会根据大家的使用情况持续维护,初代版本可能存在不完善或 BUG,欢迎反馈。

    项目地址 YukiHookAPI-ProjectBuilder在新窗口中打开

    若你想直接下载可以 点击这里在新窗口中打开 前往 Release 发布地址。

    使用方法

    这里包含了基本的使用方法和功能讲解。

    基本用法

    • 软件使用过程需要当前设备已连接互联网,若项目依赖无法搜索请尝试 科学上网

    • 启动软件后,对你期望创建的项目进行简单配置,点击右下角的 按钮 或菜单栏选择 项目 > 开始创建 即可开始任务。

    • 等待依赖自动搜索完成后,你可以对项目依赖进行配置,建议使用最新依赖保证项目的稳定性,构建工具也仅对最新依赖进行支持。

    • 选择你需要创建项目的目录,开始后项目会在你选择的位置中创建,并等待整个过程完成,项目就创建好了。

    配置模板

    配置模板是一个扩展功能,你可以选择菜单栏 项目 > 配置模板 > 新建模板,即可使用当前填写的配置创建一份模板,下次可以从 已保存的模板 中重新载入模板,即可还原当前配置。

    多语言支持

    软件语言跟随当前系统,你可以在菜单栏 语言 (Language) 一栏手动选择软件的界面语言。

    - +