mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-09 20:14:12 +08:00
Compare commits
52 Commits
1.2.1
...
61c0c5960b
Author | SHA1 | Date | |
---|---|---|---|
61c0c5960b
|
|||
3dbc33a301
|
|||
03304e3c22
|
|||
7c9e84f0ed
|
|||
|
525d716256 | ||
a136832e77
|
|||
243ec6ea1e
|
|||
2c1d99e0ea
|
|||
db5516ad6d
|
|||
7135d34381
|
|||
67e2dac3c4
|
|||
e17e7681ec
|
|||
932f644c7f
|
|||
f8c1a27169
|
|||
6b08287991
|
|||
311926b3cb
|
|||
684e3abbdc
|
|||
14399538ea
|
|||
701cbe0fc0
|
|||
de5a3ffe83
|
|||
4ecc67507a
|
|||
beb7b431f8
|
|||
d36a6a10e0
|
|||
242322954a
|
|||
c8f1e3441e
|
|||
cca6e1d2a8
|
|||
6ead14e65b
|
|||
|
fafd54139b | ||
|
54c4379e97 | ||
|
34a701a83c | ||
2f832d46d4
|
|||
d81c74c60a
|
|||
7509112177
|
|||
3e6435905e
|
|||
155077436d
|
|||
67116bba5a
|
|||
34f90a2466
|
|||
d6db8925c9
|
|||
7f97ad7197
|
|||
5262e15749
|
|||
1fd68bf6e3
|
|||
7aecf84829
|
|||
8b607b2243
|
|||
fddd2991a1
|
|||
|
32c430650f | ||
|
5dd117c8bb | ||
|
a72bc47c4f | ||
|
ff256bd41d | ||
|
9c7c9248f8 | ||
|
e4ea41e46c | ||
|
71e977b6cf | ||
a10c15d5ab
|
@@ -25,6 +25,9 @@ ktlint_standard_function-naming = disabled
|
|||||||
ktlint_standard_chain-method-continuation = disabled
|
ktlint_standard_chain-method-continuation = disabled
|
||||||
ktlint_standard_class-signature = disabled
|
ktlint_standard_class-signature = disabled
|
||||||
ktlint_standard_condition-wrapping = disabled
|
ktlint_standard_condition-wrapping = disabled
|
||||||
|
ktlint_standard_class-signature = disabled
|
||||||
|
ktlint_standard_no-trailing-spaces = disabled
|
||||||
|
ktlint_standard_multiline-loop = disabled
|
||||||
ij_continuation_indent_size = 2
|
ij_continuation_indent_size = 2
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
indent_style = space
|
indent_style = space
|
||||||
|
4
.github/workflows/docs-deploy.yml
vendored
4
.github/workflows/docs-deploy.yml
vendored
@@ -16,11 +16,11 @@ jobs:
|
|||||||
if: ${{ success() }}
|
if: ${{ success() }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
node-version: 18
|
||||||
- name: Build VuePress site
|
- name: Build VuePress site
|
||||||
|
7
.gitignore
vendored
7
.gitignore
vendored
@@ -30,15 +30,22 @@
|
|||||||
.idea/**/libraries
|
.idea/**/libraries
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
# Gradle and Maven with auto-import
|
||||||
|
.idea/.name
|
||||||
.idea/artifacts
|
.idea/artifacts
|
||||||
.idea/compiler.xml
|
.idea/compiler.xml
|
||||||
.idea/jarRepositories.xml
|
.idea/jarRepositories.xml
|
||||||
.idea/modules.xml
|
.idea/modules.xml
|
||||||
.idea/*.iml
|
.idea/*.iml
|
||||||
.idea/modules
|
.idea/modules
|
||||||
|
.idea/caches
|
||||||
|
.idea/material_theme**
|
||||||
|
.idea/other.xml
|
||||||
*.iml
|
*.iml
|
||||||
*.ipr
|
*.ipr
|
||||||
|
|
||||||
|
# Kotlin
|
||||||
|
.kotlin
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
.idea/misc.xml
|
.idea/misc.xml
|
||||||
|
|
||||||
|
6
.idea/AndroidProjectSystem.xml
generated
Normal file
6
.idea/AndroidProjectSystem.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AndroidProjectSystem">
|
||||||
|
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
|
||||||
|
</component>
|
||||||
|
</project>
|
2
.idea/kotlinc.xml
generated
2
.idea/kotlinc.xml
generated
@@ -7,6 +7,6 @@
|
|||||||
<option name="additionalArguments" value="-version -Xopt-in=kotlin.RequiresOptIn" />
|
<option name="additionalArguments" value="-version -Xopt-in=kotlin.RequiresOptIn" />
|
||||||
</component>
|
</component>
|
||||||
<component name="KotlinJpsPluginSettings">
|
<component name="KotlinJpsPluginSettings">
|
||||||
<option name="version" value="2.0.0" />
|
<option name="version" value="2.1.10" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
4
.idea/ktlint-plugin.xml
generated
4
.idea/ktlint-plugin.xml
generated
@@ -4,4 +4,8 @@
|
|||||||
<ktlintMode>MANUAL</ktlintMode>
|
<ktlintMode>MANUAL</ktlintMode>
|
||||||
<formatOnSave>false</formatOnSave>
|
<formatOnSave>false</formatOnSave>
|
||||||
</component>
|
</component>
|
||||||
|
<component name="com.nbadal.ktlint.KtlintProjectSettings">
|
||||||
|
<ktlintMode>MANUAL</ktlintMode>
|
||||||
|
<ktlintRulesetVersion>DEFAULT</ktlintRulesetVersion>
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
17
.idea/runConfigurations.xml
generated
Normal file
17
.idea/runConfigurations.xml
generated
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="RunConfigurationProducerService">
|
||||||
|
<option name="ignoredProducers">
|
||||||
|
<set>
|
||||||
|
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
|
||||||
|
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
|
||||||
|
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
|
||||||
|
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
@@ -1,10 +1,10 @@
|
|||||||
# Yuki Hook API
|
# Yuki Hook API
|
||||||
|
|
||||||
[](https://github.com/HighCapable/YukiHookAPI/blob/master/LICENSE)
|
[](https://github.com/HighCapable/YukiHookAPI/blob/master/LICENSE)
|
||||||
[](https://github.com/HighCapable/YukiHookAPI/releases)
|
[](https://github.com/HighCapable/YukiHookAPI/releases)
|
||||||
[](https://t.me/YukiHookAPI)
|
[](https://t.me/YukiHookAPI)
|
||||||
[](https://t.me/HighCapable_Dev)
|
[](https://t.me/HighCapable_Dev)
|
||||||
[](https://qm.qq.com/cgi-bin/qm/qr?k=Pnsc5RY6N2mBKFjOLPiYldbAbprAU3V7&jump_from=webapi&authKey=X5EsOVzLXt1dRunge8ryTxDRrh9/IiW1Pua75eDLh9RE3KXE+bwXIYF5cWri/9lf)
|
[](https://qm.qq.com/cgi-bin/qm/qr?k=Pnsc5RY6N2mBKFjOLPiYldbAbprAU3V7&jump_from=webapi&authKey=X5EsOVzLXt1dRunge8ryTxDRrh9/IiW1Pua75eDLh9RE3KXE+bwXIYF5cWri/9lf)
|
||||||
|
|
||||||
<img src="img-src/icon.png" width = "100" height = "100" alt="LOGO"/>
|
<img src="img-src/icon.png" width = "100" height = "100" alt="LOGO"/>
|
||||||
|
|
||||||
@@ -31,6 +31,11 @@
|
|||||||
|
|
||||||
有关支持性的相关信息,你可以直接 [点击这里](https://highcapable.github.io/YukiHookAPI/zh-cn/guide/supportive) 进行查看。
|
有关支持性的相关信息,你可以直接 [点击这里](https://highcapable.github.io/YukiHookAPI/zh-cn/guide/supportive) 进行查看。
|
||||||
|
|
||||||
|
| <img src="https://github.com/HighCapable/KavaRef/blob/main/img-src/icon.svg?raw=true" width = "30" height = "30" alt="LOGO"/> | [KavaRef](https://github.com/HighCapable/KavaRef) |
|
||||||
|
|-------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------|
|
||||||
|
|
||||||
|
🚀 `YukiHookAPI` 正使用 `KavaRef` 作为反射 API 强力驱动,**点击上方链接 star 这个项目**,你也可以优雅地使用它!
|
||||||
|
|
||||||
## 合作项目
|
## 合作项目
|
||||||
|
|
||||||
以下是经过合作并稳定使用 `YukiHookAPI` 的项目。
|
以下是经过合作并稳定使用 `YukiHookAPI` 的项目。
|
||||||
@@ -57,6 +62,10 @@
|
|||||||
| [MIUI录屏进化](https://www.coolapk.com/apk/UTSSG.ZQDesigned.miuirecordercracker) | [ZQDesigned](https://github.com/ZQDesigned) |
|
| [MIUI录屏进化](https://www.coolapk.com/apk/UTSSG.ZQDesigned.miuirecordercracker) | [ZQDesigned](https://github.com/ZQDesigned) |
|
||||||
| [Fuck AD](https://github.com/hujiayucc/Fuck-AD) | [hujiayucc](https://github.com/hujiayucc) |
|
| [Fuck AD](https://github.com/hujiayucc/Fuck-AD) | [hujiayucc](https://github.com/hujiayucc) |
|
||||||
| [最右强力去广告](https://github.com/kazutoiris/zuiyou-adfree) | [kazutoiris](https://github.com/kazutoiris) |
|
| [最右强力去广告](https://github.com/kazutoiris/zuiyou-adfree) | [kazutoiris](https://github.com/kazutoiris) |
|
||||||
|
| [叮嗒出行强力去广告](https://github.com/kazutoiris/dingda-adfree) | [kazutoiris](https://github.com/kazutoiris) |
|
||||||
|
| [无限幻境](https://github.com/kazutoiris/infinite-illusion) | [kazutoiris](https://github.com/kazutoiris) |
|
||||||
|
| [HookGG](https://github.com/HdShare/HookGG) | [HdShare](https://github.com/HdShare) |
|
||||||
|
| [OnePlusPlusLauncher](https://github.com/wizpizz/OnePlusPlusLauncher) | [wizpizz](https://github.com/wizpizz) |
|
||||||
|
|
||||||
你也在使用 `YukiHookAPI` 吗?快来 **PR** 将你的存储仓库添加到上方的列表 (私有仓库可以不需要注明网页链接)。
|
你也在使用 `YukiHookAPI` 吗?快来 **PR** 将你的存储仓库添加到上方的列表 (私有仓库可以不需要注明网页链接)。
|
||||||
|
|
||||||
@@ -87,7 +96,7 @@
|
|||||||
```
|
```
|
||||||
Apache License Version 2.0
|
Apache License Version 2.0
|
||||||
|
|
||||||
Copyright (C) 2019-2024 HighCapable
|
Copyright (C) 2019 HighCapable
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -102,4 +111,4 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
```
|
```
|
||||||
|
|
||||||
版权所有 © 2019-2024 HighCapable
|
版权所有 © 2019 HighCapable
|
||||||
|
24
README.md
24
README.md
@@ -1,10 +1,10 @@
|
|||||||
# Yuki Hook API
|
# Yuki Hook API
|
||||||
|
|
||||||
[](https://github.com/HighCapable/YukiHookAPI/blob/master/LICENSE)
|
[](https://github.com/HighCapable/YukiHookAPI/blob/master/LICENSE)
|
||||||
[](https://github.com/HighCapable/YukiHookAPI/releases)
|
[](https://github.com/HighCapable/YukiHookAPI/releases)
|
||||||
[](https://t.me/YukiHookAPI)
|
[](https://t.me/YukiHookAPI)
|
||||||
[](https://t.me/HighCapable_Dev)
|
[](https://t.me/HighCapable_Dev)
|
||||||
[](https://qm.qq.com/cgi-bin/qm/qr?k=Pnsc5RY6N2mBKFjOLPiYldbAbprAU3V7&jump_from=webapi&authKey=X5EsOVzLXt1dRunge8ryTxDRrh9/IiW1Pua75eDLh9RE3KXE+bwXIYF5cWri/9lf)
|
[](https://qm.qq.com/cgi-bin/qm/qr?k=Pnsc5RY6N2mBKFjOLPiYldbAbprAU3V7&jump_from=webapi&authKey=X5EsOVzLXt1dRunge8ryTxDRrh9/IiW1Pua75eDLh9RE3KXE+bwXIYF5cWri/9lf)
|
||||||
|
|
||||||
<img src="img-src/icon.png" width = "100" height = "100" alt="LOGO"/>
|
<img src="img-src/icon.png" width = "100" height = "100" alt="LOGO"/>
|
||||||
|
|
||||||
@@ -32,6 +32,12 @@ Formerly the Innocent Xposed API used in [Development Learning Project](https://
|
|||||||
|
|
||||||
For supportive related information, you can check it directly [click here](https://highcapable.github.io/YukiHookAPI/en/guide/supportive).
|
For supportive related information, you can check it directly [click here](https://highcapable.github.io/YukiHookAPI/en/guide/supportive).
|
||||||
|
|
||||||
|
| <img src="https://github.com/HighCapable/KavaRef/blob/main/img-src/icon.svg?raw=true" width = "30" height = "30" alt="LOGO"/> | [KavaRef](https://github.com/HighCapable/KavaRef) |
|
||||||
|
|-------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------|
|
||||||
|
|
||||||
|
🚀 `YukiHookAPI` is using `KavaRef` as a powerful driver for the reflection API.
|
||||||
|
**Click on the link above star project**, and you can also use it gracefully!
|
||||||
|
|
||||||
## Cooperations
|
## Cooperations
|
||||||
|
|
||||||
The following are projects that have collaborated and are using `YukiHookAPI`.
|
The following are projects that have collaborated and are using `YukiHookAPI`.
|
||||||
@@ -58,6 +64,10 @@ The following are projects that have collaborated and are using `YukiHookAPI`.
|
|||||||
| [MIUI录屏进化](https://www.coolapk.com/apk/UTSSG.ZQDesigned.miuirecordercracker) | [ZQDesigned](https://github.com/ZQDesigned) |
|
| [MIUI录屏进化](https://www.coolapk.com/apk/UTSSG.ZQDesigned.miuirecordercracker) | [ZQDesigned](https://github.com/ZQDesigned) |
|
||||||
| [Fuck AD](https://github.com/hujiayucc/Fuck-AD) | [hujiayucc](https://github.com/hujiayucc) |
|
| [Fuck AD](https://github.com/hujiayucc/Fuck-AD) | [hujiayucc](https://github.com/hujiayucc) |
|
||||||
| [Zuiyou ADFree](https://github.com/kazutoiris/zuiyou-adfree) | [kazutoiris](https://github.com/kazutoiris) |
|
| [Zuiyou ADFree](https://github.com/kazutoiris/zuiyou-adfree) | [kazutoiris](https://github.com/kazutoiris) |
|
||||||
|
| [Dingda ADFree](https://github.com/kazutoiris/dingda-adfree) | [kazutoiris](https://github.com/kazutoiris) |
|
||||||
|
| [Infinite Illusion](https://github.com/kazutoiris/infinite-illusion) | [kazutoiris](https://github.com/kazutoiris) |
|
||||||
|
| [HookGG](https://github.com/HdShare/HookGG) | [HdShare](https://github.com/HdShare) |
|
||||||
|
| [OnePlusPlusLauncher](https://github.com/wizpizz/OnePlusPlusLauncher) | [wizpizz](https://github.com/wizpizz) |
|
||||||
|
|
||||||
Are you also using `YukiHookAPI`? Come and **PR** to add your repository to the list above (private repositories do not need to indicate web
|
Are you also using `YukiHookAPI`? Come and **PR** to add your repository to the list above (private repositories do not need to indicate web
|
||||||
links).
|
links).
|
||||||
@@ -89,7 +99,7 @@ links).
|
|||||||
```
|
```
|
||||||
Apache License Version 2.0
|
Apache License Version 2.0
|
||||||
|
|
||||||
Copyright (C) 2019-2024 HighCapable
|
Copyright (C) 2019 HighCapable
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -104,4 +114,4 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
```
|
```
|
||||||
|
|
||||||
Copyright © 2019-2024 HighCapable
|
Copyright © 2019 HighCapable
|
||||||
|
@@ -17,6 +17,7 @@ const navigationLinks = {
|
|||||||
'/config/xposed-using',
|
'/config/xposed-using',
|
||||||
'/config/api-using',
|
'/config/api-using',
|
||||||
'/config/move-to-api-1-2-x',
|
'/config/move-to-api-1-2-x',
|
||||||
|
'/config/move-to-api-1-3-x',
|
||||||
'/config/r8-proguard'
|
'/config/r8-proguard'
|
||||||
],
|
],
|
||||||
tools: '/tools/yukihookapi-projectbuilder',
|
tools: '/tools/yukihookapi-projectbuilder',
|
||||||
@@ -145,7 +146,8 @@ export const navBarItems = {
|
|||||||
{ text: 'Use as Xposed Module Configs', link: i18n.string(navigationLinks.config[2], 'en') },
|
{ text: 'Use as Xposed Module Configs', link: i18n.string(navigationLinks.config[2], 'en') },
|
||||||
{ text: 'Use as Hook API Configs', link: i18n.string(navigationLinks.config[3], 'en') },
|
{ text: 'Use as Hook API Configs', link: i18n.string(navigationLinks.config[3], 'en') },
|
||||||
{ text: 'Migrate to YukiHookAPI 1.2.x', link: i18n.string(navigationLinks.config[4], 'en') },
|
{ text: 'Migrate to YukiHookAPI 1.2.x', link: i18n.string(navigationLinks.config[4], 'en') },
|
||||||
{ text: 'R8 & Proguard Obfuscate', link: i18n.string(navigationLinks.config[5], 'en') }
|
{ text: 'Migrate to YukiHookAPI 1.3.x', link: i18n.string(navigationLinks.config[5], 'en') },
|
||||||
|
{ text: 'R8 & Proguard Obfuscate', link: i18n.string(navigationLinks.config[6], 'en') }
|
||||||
]
|
]
|
||||||
}, {
|
}, {
|
||||||
text: 'Tools',
|
text: 'Tools',
|
||||||
@@ -195,8 +197,9 @@ export const navBarItems = {
|
|||||||
{ text: 'API 异常处理', link: i18n.string(navigationLinks.config[1], 'zh-cn') },
|
{ text: 'API 异常处理', link: i18n.string(navigationLinks.config[1], 'zh-cn') },
|
||||||
{ text: '作为 Xposed 模块使用的相关配置', link: i18n.string(navigationLinks.config[2], 'zh-cn') },
|
{ text: '作为 Xposed 模块使用的相关配置', link: i18n.string(navigationLinks.config[2], 'zh-cn') },
|
||||||
{ text: '作为 Hook API 使用的相关配置', link: i18n.string(navigationLinks.config[3], 'zh-cn') },
|
{ text: '作为 Hook API 使用的相关配置', link: i18n.string(navigationLinks.config[3], 'zh-cn') },
|
||||||
{ text: '迁移到 YukiHookAPI 1.2.x', link: i18n.string(navigationLinks.config[4], 'zh-cn') },
|
{ text: '迁移至 YukiHookAPI 1.2.x', link: i18n.string(navigationLinks.config[4], 'zh-cn') },
|
||||||
{ text: 'R8 与 Proguard 混淆', link: i18n.string(navigationLinks.config[5], 'zh-cn') }
|
{ text: '迁移至 YukiHookAPI 1.3.x', link: i18n.string(navigationLinks.config[5], 'zh-cn') },
|
||||||
|
{ text: 'R8 与 Proguard 混淆', link: i18n.string(navigationLinks.config[6], 'zh-cn') }
|
||||||
]
|
]
|
||||||
}, {
|
}, {
|
||||||
text: '工具',
|
text: '工具',
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
```:no-line-numbers
|
```:no-line-numbers
|
||||||
Apache License Version 2.0
|
Apache License Version 2.0
|
||||||
|
|
||||||
Copyright (C) 2019-2024 HighCapable
|
Copyright (C) 2019 HighCapable
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -24,4 +24,4 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
```
|
```
|
||||||
|
|
||||||
Copyright © 2019-2024 HighCapable
|
Copyright © 2019 HighCapable
|
@@ -16,7 +16,16 @@ Time zone of version release date: **UTC+8**
|
|||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### 1.2.1 | 2024.06.20  <Badge type="tip" text="latest" vertical="middle" />
|
### 1.3.0 | 2024.06.25  <Badge type="tip" text="latest" vertical="middle" />
|
||||||
|
|
||||||
|
- This is a major update, please refer to [Migrate to YukiHookAPI 1.3.x](https://highcapable.github.io/YukiHookAPI/zh-cn/config/move-to-api-1-3-x)
|
||||||
|
- The reflection API of `YukiHookAPI` is deprecated, please move to the brand new [KavaRef](https://github.com/HighCapable/KavaRef)
|
||||||
|
- The limitation of duplicate Hooks has been deprecated, now you can repeat the same method of the Hook
|
||||||
|
- Deprecated ~~`ModuleAppActivity`~~, ~~`ModuleAppCompatActivity`~~, please use `ModuleActivity` to create your own proxy `Activity`
|
||||||
|
- `YLog` is now allowed to pass `msg` into any object and will be automatically converted to a string for printing
|
||||||
|
- `FreeReflection` has been deprecated and has now switched to [AndroidHiddenApiBypass](https://github.com/LSPosed/AndroidHiddenApiBypass)
|
||||||
|
|
||||||
|
### 1.2.1 | 2024.06.20  <Badge type="warning" text="stale" vertical="middle" />
|
||||||
|
|
||||||
- Catch exceptions in singleton Hooker to prevent it from blocking the entire process
|
- Catch exceptions in singleton Hooker to prevent it from blocking the entire process
|
||||||
- Add automatic use of "`" in the automatic handler to fix the situation where Kotlin keywords are package names, thanks to [Fengning Zhu](https://github.com/zhufengning) for [PR](https://github.com/HighCapable/YukiHookAPI/pull/70)
|
- Add automatic use of "`" in the automatic handler to fix the situation where Kotlin keywords are package names, thanks to [Fengning Zhu](https://github.com/zhufengning) for [PR](https://github.com/HighCapable/YukiHookAPI/pull/70)
|
||||||
@@ -56,7 +65,7 @@ Time zone of version release date: **UTC+8**
|
|||||||
- `constructor()` no longer behaves like `constructor { emptyParam() }`
|
- `constructor()` no longer behaves like `constructor { emptyParam() }`
|
||||||
- Added `lazyClass` and `lazyClassOrNull` methods to lazily load `Class`
|
- Added `lazyClass` and `lazyClassOrNull` methods to lazily load `Class`
|
||||||
|
|
||||||
### 1.1.11 | 2023.04.25  <Badge type="warning" text="stale" vertical="middle" />
|
### 1.1.11 | 2023.04.25  <Badge type="danger" text="outdate" vertical="middle" />
|
||||||
|
|
||||||
- Fixed a critical issue since `1.1.5` version where the `Member` cache did not take effect and persistent storage eventually caused app out of memory (OOM), thanks to [Art-Chen](https://github.com/Art-Chen)
|
- Fixed a critical issue since `1.1.5` version where the `Member` cache did not take effect and persistent storage eventually caused app out of memory (OOM), thanks to [Art-Chen](https://github.com/Art-Chen)
|
||||||
- Remove the direct cache function of `Member` and deprecated ~~`YukiReflection.Configs.isEnableMemberCache`~~, keep the cache function of `Class`
|
- Remove the direct cache function of `Member` and deprecated ~~`YukiReflection.Configs.isEnableMemberCache`~~, keep the cache function of `Class`
|
||||||
@@ -65,7 +74,7 @@ Time zone of version release date: **UTC+8**
|
|||||||
- Deprecated ~~`YukiHookAPI.Configs.isEnablePrefsBridgeCache`~~
|
- Deprecated ~~`YukiHookAPI.Configs.isEnablePrefsBridgeCache`~~
|
||||||
- Deprecated ~~`direct`~~, ~~`clearCache`~~ functions in `YukiHookPrefsBridge`
|
- Deprecated ~~`direct`~~, ~~`clearCache`~~ functions in `YukiHookPrefsBridge`
|
||||||
|
|
||||||
### 1.1.10 | 2023.04.21  <Badge type="warning" text="stale" vertical="middle" />
|
### 1.1.10 | 2023.04.21  <Badge type="danger" text="outdate" vertical="middle" />
|
||||||
|
|
||||||
- The `Activity` proxy function adds the function of specifying a separate proxy `Activity` for each proxied `Activity`
|
- The `Activity` proxy function adds the function of specifying a separate proxy `Activity` for each proxied `Activity`
|
||||||
- Fixed problem that the `contains` and `all` methods in `YukiHookPrefsBridge` did not judge the `native` function
|
- Fixed problem that the `contains` and `all` methods in `YukiHookPrefsBridge` did not judge the `native` function
|
||||||
@@ -74,7 +83,7 @@ Time zone of version release date: **UTC+8**
|
|||||||
- Modify part of `HashMap` used for caching to `ArrayMap` to reduce memory consumption
|
- Modify part of `HashMap` used for caching to `ArrayMap` to reduce memory consumption
|
||||||
- Fix some other possible problems
|
- Fix some other possible problems
|
||||||
|
|
||||||
### 1.1.9 | 2023.04.17  <Badge type="warning" text="stale" vertical="middle" />
|
### 1.1.9 | 2023.04.17  <Badge type="danger" text="outdate" vertical="middle" />
|
||||||
|
|
||||||
- Change the type of dependent library from **Java Library** (jar) to **Android Library** (aar)
|
- Change the type of dependent library from **Java Library** (jar) to **Android Library** (aar)
|
||||||
- Remove the inspection function of internal methods and parameters through Hook or reflection API
|
- Remove the inspection function of internal methods and parameters through Hook or reflection API
|
||||||
@@ -94,7 +103,7 @@ Time zone of version release date: **UTC+8**
|
|||||||
- Modify the proxy class of the `Activity` proxy function to be dynamically generated to prevent conflicts caused by injecting different modules into the host
|
- Modify the proxy class of the `Activity` proxy function to be dynamically generated to prevent conflicts caused by injecting different modules into the host
|
||||||
- Fixed some other possible problems
|
- Fixed some other possible problems
|
||||||
|
|
||||||
### 1.1.8 | 2023.02.01  <Badge type="warning" text="stale" vertical="middle" />
|
### 1.1.8 | 2023.02.01  <Badge type="danger" text="outdate" vertical="middle" />
|
||||||
|
|
||||||
- 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 [Issue](https://github.com/HighCapable/YukiHookAPI/issues/23) of [Yongzheng Lai](https://github.com/elvizlai)
|
- 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 [Issue](https://github.com/HighCapable/YukiHookAPI/issues/23) of [Yongzheng Lai](https://github.com/elvizlai)
|
||||||
- Move the entry class name file automatically generated by `YukiHookAPI` from `assets/yukihookapi_init` to `resources/META-INF/yukihookapi_init`
|
- Move the entry class name file automatically generated by `YukiHookAPI` from `assets/yukihookapi_init` to `resources/META-INF/yukihookapi_init`
|
||||||
@@ -108,7 +117,7 @@ Time zone of version release date: **UTC+8**
|
|||||||
- Fixed the problem that there may be multiple registration lifecycles in `PackageParam.AppLifecycle`
|
- 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)
|
- 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  <Badge type="warning" text="stale" vertical="middle" />
|
### 1.1.6 | 2023.01.21  <Badge type="danger" text="outdate" vertical="middle" />
|
||||||
|
|
||||||
- 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
|
- 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
|
- 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
|
||||||
@@ -116,7 +125,7 @@ Time zone of version release date: **UTC+8**
|
|||||||
- Modify the method parameter name `param` of reflection calls in `MethodFinder`, `ConstructorFinder`, `ReflectionFactory` to `args`
|
- 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
|
- 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  <Badge type="warning" text="stale" vertical="middle" />
|
### 1.1.5 | 2023.01.13  <Badge type="danger" text="outdate" vertical="middle" />
|
||||||
|
|
||||||
- Standardize and optimize the overall code style
|
- Standardize and optimize the overall code style
|
||||||
- Privatized some APIs called internally
|
- Privatized some APIs called internally
|
||||||
@@ -158,7 +167,7 @@ Time zone of version release date: **UTC+8**
|
|||||||
- 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 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
|
- 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  <Badge type="warning" text="stale" vertical="middle" />
|
### 1.1.4 | 2022.10.04  <Badge type="danger" text="outdate" vertical="middle" />
|
||||||
|
|
||||||
- Fixed the issue that `YukiHookDataChannel` may not respond to broadcast events in the system framework, reproduced in A13
|
- 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
|
- Fixed the issue that `YukiHookDataChannel` could not communicate with Module App in Host App for multiple versions
|
||||||
@@ -168,7 +177,7 @@ Time zone of version release date: **UTC+8**
|
|||||||
- Added `loadApp`, `loadZygote`, `loadSystem`, `withProcess` multi-parameter methods of the same name in `PackageParam`
|
- Added `loadApp`, `loadZygote`, `loadSystem`, `withProcess` multi-parameter methods of the same name in `PackageParam`
|
||||||
- Fixed some possible bugs
|
- Fixed some possible bugs
|
||||||
|
|
||||||
### 1.1.3 | 2022.09.30  <Badge type="warning" text="stale" vertical="middle" />
|
### 1.1.3 | 2022.09.30  <Badge type="danger" text="outdate" vertical="middle" />
|
||||||
|
|
||||||
- Fixed a fatal bug where the Hook entry class name could not be customized
|
- 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
|
- Added some code notes in `LoggerFactory` and updated special features documentation
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# Contact Us
|
# Contact Us
|
||||||
|
|
||||||
> If you have any questions in use, or have any constructive suggestions, you can contact us.
|
> If you have any questions during usage, or have any constructive suggestions, you can contact us.
|
||||||
|
|
||||||
Join our developers group.
|
Join our developers group.
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# Looking for Future
|
# Looking Toward the Future
|
||||||
|
|
||||||
> The future is bright and uncertain, let us look forward to the future development space of `YukiHookAPI`.
|
> The future is bright and uncertain, let us look forward to the future development space of `YukiHookAPI`.
|
||||||
|
|
||||||
@@ -34,7 +34,10 @@ If you like the Reflection API of `YukiHookAPI`, but your project may not need r
|
|||||||
|
|
||||||
Well here is some good news for you:
|
Well here is some good news for you:
|
||||||
|
|
||||||
The core Reflection API of `YukiHookAPI` has been decoupled into [YukiReflection](https://github.com/HighCapable/YukiReflection) project, which can now be used in any Android project.
|
~~The core Reflection API of `YukiHookAPI` has been decoupled into [YukiReflection](https://github.com/HighCapable/YukiReflection) project, which can now be used in any Android project.~~
|
||||||
|
|
||||||
|
The `YukiReflection` project has been deprecated due to many unsolved black box issues, so we no longer recommend anyone to use it.
|
||||||
|
Please now migrate to the brand new design [KavaRef](https://github.com/HighCapable/KavaRef).
|
||||||
|
|
||||||
::: tip To be Discussed
|
::: tip To be Discussed
|
||||||
|
|
||||||
@@ -58,4 +61,4 @@ All functions are expected to be completed in `2.0.0` version, so stay tuned.
|
|||||||
|
|
||||||
- [New Xposed Module Config Plan](https://github.com/HighCapable/YukiHookAPI/issues/49)
|
- [New Xposed Module Config Plan](https://github.com/HighCapable/YukiHookAPI/issues/49)
|
||||||
- [New Hook Entry Class](https://github.com/HighCapable/YukiHookAPI/issues/48)
|
- [New Hook Entry Class](https://github.com/HighCapable/YukiHookAPI/issues/48)
|
||||||
- [New Hook Code Style](https://github.com/HighCapable/YukiHookAPI/issues/33)
|
- ~~[New Hook Code Style](https://github.com/HighCapable/YukiHookAPI/issues/33)~~ (Replaced by [KavaRef](https://github.com/HighCapable/KavaRef))
|
@@ -8,6 +8,14 @@ next:
|
|||||||
|
|
||||||
> 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.
|
> 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.
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the
|
||||||
|
Dokka plugin in version `2.0.0`.
|
||||||
|
If you encounter unsolvable problems, you can contact us via [Contact Us](../about/contacts).
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## Function Description
|
## Function Description
|
||||||
|
|
||||||
> The function description mainly introduces the related usage and purpose of the current API.
|
> The function description mainly introduces the related usage and purpose of the current API.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
|||||||
|
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, the `YukiHookAPI` will no longer update this document from version `1.3.0` and switch to the API document automatically generated by the Dokka plugin in version `2.0.0`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
The English translation of this page has not been completed, you are welcome to contribute translations to us.
|
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.
|
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||||
|
@@ -37,9 +37,9 @@ After the Host App is hooked, we can directly inject the `Context` obtained in t
|
|||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
method {
|
resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
instance<Activity>().also {
|
instance<Activity>().also {
|
||||||
@@ -90,9 +90,9 @@ After the Host App is hooked, we can directly register the `Activity` proxy of t
|
|||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
method {
|
resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
instance<Activity>().registerModuleAppActivities()
|
instance<Activity>().registerModuleAppActivities()
|
||||||
@@ -146,34 +146,45 @@ Alternatively, if you write a `stub` for the Host App's class, you can register
|
|||||||
registerModuleAppActivities(TestActivity::class.java)
|
registerModuleAppActivities(TestActivity::class.java)
|
||||||
```
|
```
|
||||||
|
|
||||||
After the registration is complete, extends the `Activity` in the Module App you need to use the Host App to start by `ModuleAppActivity` or `ModuleAppCompatActivity`.
|
After registration is completed, please implement the `ModuleActivity` interface using the `Activity` module in the host-started module.
|
||||||
|
|
||||||
These `Activity` now live seamlessly in the Host App without registration.
|
These `Activity` (ies) now live seamlessly in the host without registration.
|
||||||
|
|
||||||
|
We recommend that you create `BaseActivity` as the base class for all modules `Activity`.
|
||||||
|
|
||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
class HostTestActivity : ModuleAppActivity() {
|
abstract class BaseActivity : AppCompatActivity(), ModuleActivity {
|
||||||
|
|
||||||
|
// Set up AppCompat Theme (if currently is [AppCompatActivity])
|
||||||
|
override val moduleTheme get() = R.style.YourAppTheme
|
||||||
|
|
||||||
|
override fun getClassLoader() = delegate.getClassLoader()
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
delegate.onCreate(savedInstanceState)
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
// Module App's Resources have been injected automatically
|
}
|
||||||
// You can directly use xml to load the layout
|
|
||||||
setContentView(R.layout.activity_main)
|
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||||
|
delegate.onConfigurationChanged(newConfig)
|
||||||
|
super.onConfigurationChanged(newConfig)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
|
||||||
|
delegate.onRestoreInstanceState(savedInstanceState)
|
||||||
|
super.onRestoreInstanceState(savedInstanceState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you need to extends `ModuleAppCompatActivity`, you need to set the AppCompat theme manually.
|
Then inherit the `Activity` you want to implement in `BaseActivity`.
|
||||||
|
|
||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
class HostTestActivity : ModuleAppCompatActivity() {
|
class HostTestActivity : BaseActivity() {
|
||||||
|
|
||||||
// The theme name here is for reference only
|
|
||||||
// Please fill in the theme name already in your Module App
|
|
||||||
override val moduleTheme get() = R.style.Theme_AppCompat
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@@ -200,7 +211,7 @@ If you need to specify a delegated `Activity` to use another Host App's `Activit
|
|||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
class HostTestActivity : ModuleAppActivity() {
|
class HostTestActivity : BaseActivity() {
|
||||||
|
|
||||||
// Specify an additional proxy Activity class name
|
// Specify an additional proxy Activity class name
|
||||||
// Which must also exist in the Host App's AndroidManifest
|
// Which must also exist in the Host App's AndroidManifest
|
||||||
@@ -210,7 +221,7 @@ class HostTestActivity : ModuleAppActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
// Module App's Resources have been injected automatically
|
// Module App's Resources have been injected automatically
|
||||||
// You can directly use xml to load the layout
|
// You can directly use xml to load the layout
|
||||||
setContentView(R. layout. activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -236,9 +247,9 @@ At this time, we want to use `MaterialAlertDialogBuilder` to create a dialog in
|
|||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
method {
|
resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
// Use applyModuleTheme to create a theme resource in the current Module App
|
// Use applyModuleTheme to create a theme resource in the current Module App
|
||||||
@@ -260,9 +271,9 @@ Which requires at least Android 10 and above system version support and the curr
|
|||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
method {
|
resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
// Define the theme resource in the current Module App
|
// Define the theme resource in the current Module App
|
||||||
|
@@ -2,6 +2,15 @@
|
|||||||
|
|
||||||
> Log is the most important part of the debugging process, `YukiHookAPI` encapsulates a set of stable and efficient debugging log functions for developers.
|
> Log is the most important part of the debugging process, `YukiHookAPI` encapsulates a set of stable and efficient debugging log functions for developers.
|
||||||
|
|
||||||
|
::: tip
|
||||||
|
|
||||||
|
The logs of `KavaRef` can be managed separately by itself. For detailed configuration plans,
|
||||||
|
you can refer to [here](https://highcapable.github.io/KavaRef/en/library/kavaref-core#log-management), which will jump to the `KavaRef` document.
|
||||||
|
|
||||||
|
`YukiHookAPI` has taken over the logging function of `KavaRef` by default, and you can also configure the logging function of `KavaRef` yourself.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## Normal Logs
|
## Normal Logs
|
||||||
|
|
||||||
You can call `YLog.debug`, `YLog.info`, `YLog.warn` to print normal logs to the console.
|
You can call `YLog.debug`, `YLog.info`, `YLog.warn` to print normal logs to the console.
|
||||||
|
@@ -1,12 +1,26 @@
|
|||||||
# Reflection Extensions
|
# Reflection Extensions (Migrated)
|
||||||
|
|
||||||
> `YukiHookAPI` 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.
|
> `YukiHookAPI` 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.
|
||||||
|
|
||||||
The core part of this functionality has been decoupled into the [YukiReflection](https://github.com/HighCapable/YukiReflection) project, which can be used independently in any Java or Android project.
|
~~The core part of this functionality has been decoupled into the [YukiReflection](https://github.com/HighCapable/YukiReflection) project, which can be used independently in any Java or Android project.~~
|
||||||
|
|
||||||
Now `YukiReflection` is integrated into `YukiHookAPI` as a core dependency.
|
~~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`.
|
~~`YukiHookAPI` adds related extensions for Hook functions on the basis of `YukiReflection`, and there is no need to introduce this dependency to use `YukiHookAPI`.~~
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
Starting with version `1.3.0`, `YukiHookAPI` has moved its own reflection API partially to
|
||||||
|
[KavaRef](https://github.com/HighCapable/KavaRef), we no longer recommend the reflection API of `YukiHookAPI` itself, which have been marked as deprecated.
|
||||||
|
|
||||||
|
The `YukiReflection` project has been deprecated due to many unsolved black box issues, and we no longer recommend anyone to use it.
|
||||||
|
|
||||||
|
If you are still using the reflection API section of `YukiHookAPI`,
|
||||||
|
please refer to the migration document [here](https://highcapable.github.io/KavaRef/zh-cn/config/migration) which will jump to the `KavaRef` document.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
<div style="opacity: 0.35">
|
||||||
|
|
||||||
## Class Extensions
|
## Class Extensions
|
||||||
|
|
||||||
@@ -201,7 +215,7 @@ Please note that the more the same type **Class** is matched, the slower the spe
|
|||||||
|
|
||||||
::: danger
|
::: danger
|
||||||
|
|
||||||
After **YukiHookAPI** **2.0.0** released, this function will be deprecated and will no longer be migrated to [YukiReflection](https://github.com/HighCapable/YukiReflection).
|
~~After **YukiHookAPI** **2.0.0** released, this function will be deprecated and will no longer be migrated to [YukiReflection](https://github.com/HighCapable/YukiReflection).~~
|
||||||
|
|
||||||
We welcome all developers to start using [DexKit](https://github.com/LuckyPray/DexKit), which is a high-performance runtime parsing library for **Dex** implemented in C++, which is more efficient than the Java layer in terms of performance, efficient and excellent, it is still in the development stage, your valuable suggestions are welcome.
|
We welcome all developers to start using [DexKit](https://github.com/LuckyPray/DexKit), which is a high-performance runtime parsing library for **Dex** implemented in C++, which is more efficient than the Java layer in terms of performance, efficient and excellent, it is still in the development stage, your valuable suggestions are welcome.
|
||||||
|
|
||||||
@@ -1959,3 +1973,5 @@ For more types, see [ComponentTypeFactory](../public/com/highcapable/yukihookapi
|
|||||||
:::
|
:::
|
||||||
|
|
||||||
At the same time, you are welcome to contribute more commonly used types.
|
At the same time, you are welcome to contribute more commonly used types.
|
||||||
|
|
||||||
|
</div>
|
@@ -52,7 +52,8 @@ The `encase` method can be created in the `onHook` method using two schemes.
|
|||||||
YukiHookAPI.encase {
|
YukiHookAPI.encase {
|
||||||
loadApp(name = "com.example.demo") {
|
loadApp(name = "com.example.demo") {
|
||||||
"$packageName.DemoClass".toClass()
|
"$packageName.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -67,7 +68,8 @@ YukiHookAPI.encase {
|
|||||||
encase {
|
encase {
|
||||||
loadApp(name = "com.example.demo") {
|
loadApp(name = "com.example.demo") {
|
||||||
"$packageName.DemoClass".toClass()
|
"$packageName.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -127,7 +129,8 @@ object CustomHooker : YukiBaseHooker() {
|
|||||||
override fun onHook() {
|
override fun onHook() {
|
||||||
loadApp(name = "com.example.demo1") {
|
loadApp(name = "com.example.demo1") {
|
||||||
"$packageName.DemoClass".toClass()
|
"$packageName.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -135,7 +138,8 @@ object CustomHooker : YukiBaseHooker() {
|
|||||||
}
|
}
|
||||||
loadApp(name = "com.example.demo2") {
|
loadApp(name = "com.example.demo2") {
|
||||||
"$packageName.CustomClass".toClass()
|
"$packageName.CustomClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -161,7 +165,8 @@ object ChildCustomHooker : YukiBaseHooker() {
|
|||||||
|
|
||||||
override fun onHook() {
|
override fun onHook() {
|
||||||
"$packageName.DemoClass".toClass()
|
"$packageName.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -179,7 +184,8 @@ object FirstHooker : YukiBaseHooker() {
|
|||||||
|
|
||||||
override fun onHook() {
|
override fun onHook() {
|
||||||
"$packageName.DemoClass".toClass()
|
"$packageName.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -254,7 +260,8 @@ In `YukiHookAPI`, these functions **are seamless**.
|
|||||||
encase {
|
encase {
|
||||||
loadApp(name = "com.example.demo") {
|
loadApp(name = "com.example.demo") {
|
||||||
"$packageName.DemoClass".toClass()
|
"$packageName.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -274,7 +281,7 @@ You can also use the `loadZygote` method to load the first event `initZygote` af
|
|||||||
```kotlin
|
```kotlin
|
||||||
encase {
|
encase {
|
||||||
loadZygote {
|
loadZygote {
|
||||||
ActivityClass.hook {
|
Activity::class.resolve().firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}
|
}
|
||||||
// Create a Resources Hook in Zygote
|
// Create a Resources Hook in Zygote
|
||||||
@@ -284,7 +291,8 @@ encase {
|
|||||||
}
|
}
|
||||||
loadApp(name = "com.example.demo") {
|
loadApp(name = "com.example.demo") {
|
||||||
"$packageName.DemoClass".toClass()
|
"$packageName.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -324,7 +332,8 @@ Below are two **error** examples.
|
|||||||
encase {
|
encase {
|
||||||
// Wrong usage, can't start Hook directly
|
// Wrong usage, can't start Hook directly
|
||||||
"com.example.demo.DemoClass".toClass()
|
"com.example.demo.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -357,7 +366,8 @@ object CustomHooker : YukiBaseHooker() {
|
|||||||
// Wrong method of use
|
// Wrong method of use
|
||||||
// Because there is no judgment object in the outer layer, you cannot start Hook directly
|
// Because there is no judgment object in the outer layer, you cannot start Hook directly
|
||||||
"com.example.demo.DemoClass".toClass()
|
"com.example.demo.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -388,7 +398,8 @@ encase {
|
|||||||
loadHooker(CustomHooker)
|
loadHooker(CustomHooker)
|
||||||
// ✅ Correct usage, Hook in app scope
|
// ✅ Correct usage, Hook in app scope
|
||||||
"com.example.demo.DemoClass".toClass()
|
"com.example.demo.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -418,7 +429,8 @@ object CustomHooker : YukiBaseHooker() {
|
|||||||
// it is necessary to judge the scope of the app before performing Hook
|
// it is necessary to judge the scope of the app before performing Hook
|
||||||
loadApp(/** name parameter optional */) {
|
loadApp(/** name parameter optional */) {
|
||||||
"com.example.demo.DemoClass".toClass()
|
"com.example.demo.DemoClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
|
@@ -8,6 +8,17 @@ pageClass: hidden-anchor-page
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
Due to maintenance costs, `YukiHookAPI` will no longer update this document from the `1.3.0` version and there will be no new unspecified exceptions added here.
|
||||||
|
If you encounter unsolvable problems, you can contact us via [Contact Us](../about/contacts).
|
||||||
|
|
||||||
|
The exception of `KavaRef` will be managed separately by itself.
|
||||||
|
For detailed configuration plans, you can refer to [here](https://highcapable.github.io/KavaRef/en/library/kavaref-core#exception-handling),
|
||||||
|
which will jump to the `KavaRef` document.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## Non-Blocking Exceptions
|
## 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.
|
> 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.
|
||||||
|
@@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
`YukiHookAPI` has undergone a lot of adjustments since version `1.2.0`, you can read on to see what are the notes and new features.
|
`YukiHookAPI` has undergone a lot of adjustments since version `1.2.0`, you can read on to see what are the notes and new features.
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
If you are using the YukiHookAPI previous version of `1.2.x`, it is recommended to refer to this document to migrate to the `1.2.x` version first.
|
||||||
|
|
||||||
|
If you are using the `1.2.x` version of `YukiHookAPI`, please read directly [Migrate to YukiHookAPI 1.3.x](move-to-api-1-3-x) instead of this document.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## Default Behavior Changes
|
## Default Behavior Changes
|
||||||
|
|
||||||
Since version `1.2.0`, the `isUsingResourcesHook` function in `@InjectYukiHookWithXposed` is no longer enabled by default, please enable it manually if necessary.
|
Since version `1.2.0`, the `isUsingResourcesHook` function in `@InjectYukiHookWithXposed` is no longer enabled by default, please enable it manually if necessary.
|
||||||
|
98
docs-source/src/en/config/move-to-api-1-3-x.md
Normal file
98
docs-source/src/en/config/move-to-api-1-3-x.md
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# Migrate to YukiHookAPI 1.3.x
|
||||||
|
|
||||||
|
`YukiHookAPI` has deprecated its own reflection API since `1.3.0`, you can read on to see what are the notes and new features.
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
If you are using `1.2.x` and previous versions of `YukiHookAPI`, it is recommended to read [Migrate to YukiHookAPI 1.2.x](move-to-api-1-2-x) instead of this document.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Self-reflection API Deprecated
|
||||||
|
|
||||||
|
`YukiHookAPI` has deprecated its own reflection API since the `1.3.0` version. Now we recommend that all developers move to a brand new development.
|
||||||
|
[KavaRef](https://github.com/HighCapable/KavaRef), we no longer recommend the reflection API of `YukiHookAPI` itself, which have been marked as deprecated.
|
||||||
|
|
||||||
|
Please refer to the migration document [here](https://highcapable.github.io/KavaRef/en/config/migration) which will jump to the `KavaRef` document.
|
||||||
|
|
||||||
|
`YukiHookAPI` has now implemented complete decoupling of the reflection API.
|
||||||
|
The reflection API used by its internal API has also been migrated to `KavaRef` and has been tested stably.
|
||||||
|
|
||||||
|
In later versions of `2.0.0`, the self-reflection API will be completely removed,
|
||||||
|
during which time you will have enough time to learn and migrate to this brand new set of reflection APIs.
|
||||||
|
|
||||||
|
## FreeReflection Deprecated
|
||||||
|
|
||||||
|
`YukiHookAPI` has deprecated [FreeReflection](https://github.com/tiann/FreeReflection) since the `1.3.0` version and migrated to a maintained by the LSPosed team
|
||||||
|
[AndroidHiddenApiBypass](https://github.com/LSPosed/AndroidHiddenApiBypass).
|
||||||
|
|
||||||
|
When the reflection system hides the API, you cannot reflect directly like before, but need to do some operations.
|
||||||
|
|
||||||
|
YukiHookAPI has built-in `AndroidHiddenApiBypassResolver` in `KavaRef`'s third-party Member parser,
|
||||||
|
and now you can use it like this where you need the reflection system to hide the API.
|
||||||
|
|
||||||
|
> The following example
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
"android.app.ActivityThread".toClass()
|
||||||
|
.resolve()
|
||||||
|
// Add a custom Member parser
|
||||||
|
.processor(AndroidHiddenApiBypassResolver.get())
|
||||||
|
.firstMethod {
|
||||||
|
name = "currentActivityThread"
|
||||||
|
emptyParameters()
|
||||||
|
}.invoke()
|
||||||
|
```
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
`AndroidHiddenApiBypassResolver` is a tentative feature and may be migrated to a separate module in the `2.0.0` version,
|
||||||
|
you can also refer to [Third-party Member Resolvers](https://highcapable.github.io/KavaRef/en/config/processor-resolvers) implement one by yourself,
|
||||||
|
which will jump to the `KavaRef` document.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Original Method Call
|
||||||
|
|
||||||
|
`Xposed` provides the `XposedBridge.invokeOriginalMethod` function, which can call original methods without a Hook.
|
||||||
|
|
||||||
|
Due to deprecation of the self-reflection API, the method `method { ... }.get().original().call(...)` will no longer be available.
|
||||||
|
|
||||||
|
So, YukiHookAPI has added an extension to `KavaRef`, and you can still implement this feature now.
|
||||||
|
|
||||||
|
`YukiHookAPI` provides the following methods to connect to the original method calls of `KavaRef`.
|
||||||
|
|
||||||
|
- `invokeOriginal(...)` → `invoke(...)`
|
||||||
|
- `invokeOriginalQuietly(...)` → `invokeQuietly(...)`
|
||||||
|
|
||||||
|
> The following example
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
// Suppose this is an instance of the Test class
|
||||||
|
val instance: Any
|
||||||
|
// Original call to the method using KavaRef
|
||||||
|
"com.example.Test".toClass()
|
||||||
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
|
name = "test"
|
||||||
|
emptyParameters()
|
||||||
|
}.of(instance).invokeOriginal()
|
||||||
|
```
|
||||||
|
|
||||||
|
## Repeat Hook Restricted Deprecated
|
||||||
|
|
||||||
|
`YukiHookAPI` has deprecated the restriction of duplicate Hook since the `1.3.0` version.
|
||||||
|
Now, `YukiHookAPI` no longer limits duplicate Hooks to the same method, you can hook multiple times on the same method.
|
||||||
|
|
||||||
|
`YukiHookAPI` also deprecated the `onAlreadyHooked` method of `hook { ... }`.
|
||||||
|
Now this method will be useless and will not be called back. If necessary, please manually handle the relevant logic of duplicate Hooks.
|
||||||
|
|
||||||
|
## Register Module App's Activity Behavior Change
|
||||||
|
|
||||||
|
`YukiHookAPI` starting with `1.3.0`, the way in which the module `Activity` behavior has changed.
|
||||||
|
|
||||||
|
Please read [Register Module App's Activity](../api/special-features/host-inject#register-module-app-s-activity) for more information.
|
||||||
|
|
||||||
|
## YLog Behavior Change
|
||||||
|
|
||||||
|
`YukiHookAPI` allows the `msg` parameter of `YLog` to be passed into any object starting from `1.3.0`, and they will be automatically converted using the `toString()` method.
|
@@ -33,7 +33,25 @@ Host Environment
|
|||||||
> The above structure can be written in the following form in code.
|
> The above structure can be written in the following form in code.
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
// New version
|
// KavaRef
|
||||||
|
TargetClass.resolve().firstMethod {
|
||||||
|
// Your code here.
|
||||||
|
}.hook {
|
||||||
|
before {
|
||||||
|
// Your code here.
|
||||||
|
}
|
||||||
|
after {
|
||||||
|
// Your code here.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary>Click to view the previous writing method</summary>
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
// Old version (1.2.x-1.3.0 (Not included))
|
||||||
TargetClass.method {
|
TargetClass.method {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
@@ -58,6 +76,11 @@ TargetClass.hook {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
```kotlin
|
||||||
// Resources Hook (2.0.0 will be discontinued)
|
// Resources Hook (2.0.0 will be discontinued)
|
||||||
resources().hook {
|
resources().hook {
|
||||||
injectResource {
|
injectResource {
|
||||||
@@ -83,6 +106,14 @@ Install the Host App and Module App Demo at the same time, and test the hooked f
|
|||||||
|
|
||||||
> Here are examples of Hook App, Hook System Framework and Hook Resources for reference.
|
> Here are examples of Hook App, Hook System Framework and Hook Resources for reference.
|
||||||
|
|
||||||
|
::: tip
|
||||||
|
|
||||||
|
Starting with version `1.3.0`, YukiHookAPI has moved its own reflection API partially to
|
||||||
|
[KavaRef](https://github.com/HighCapable/KavaRef), the reflection APIs in the demonstration section below use the `KavaRef` writing method.
|
||||||
|
We no longer recommend using the `YukiHookAPI`'s own reflection API.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
### Hook App
|
### Hook App
|
||||||
|
|
||||||
Suppose, we want to hook the `onCreate` method in `com.android.browser` and show a dialog.
|
Suppose, we want to hook the `onCreate` method in `com.android.browser` and show a dialog.
|
||||||
@@ -93,10 +124,9 @@ Add code in the body of the `encase` method.
|
|||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
loadApp(name = "com.android.browser") {
|
loadApp(name = "com.android.browser") {
|
||||||
ActivityClass.method {
|
Activity::class.resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
returnType = UnitType
|
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
AlertDialog.Builder(instance())
|
AlertDialog.Builder(instance())
|
||||||
@@ -113,17 +143,16 @@ At this point, the `onCreate` method will be successfully hooked and this dialog
|
|||||||
|
|
||||||
So, what should I do if I want to continue the Hook `onStart` method?
|
So, what should I do if I want to continue the Hook `onStart` method?
|
||||||
|
|
||||||
We can use Kotlin's `apply` method on `ActivityClass` to create a call space.
|
We can use Kotlin's `apply` method on `Activity::class.resolve()` to create a call space.
|
||||||
|
|
||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
loadApp(name = "com.android.browser") {
|
loadApp(name = "com.android.browser") {
|
||||||
ActivityClass.apply {
|
Activity::class.resolve().apply {
|
||||||
method {
|
firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
returnType = UnitType
|
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
AlertDialog.Builder(instance())
|
AlertDialog.Builder(instance())
|
||||||
@@ -133,10 +162,9 @@ loadApp(name = "com.android.browser") {
|
|||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
method {
|
firstMethod {
|
||||||
name = "onStart"
|
name = "onStart"
|
||||||
emptyParam()
|
emptyParameters()
|
||||||
returnType = UnitType
|
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -154,7 +182,8 @@ For example, I want to get `com.example.demo.TestClass`.
|
|||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
"com.example.demo.TestClass".toClass()
|
"com.example.demo.TestClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -167,7 +196,8 @@ If `com.example.demo` is the app you want to hook, then the writing method can b
|
|||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
"$packageName.TestClass".toClass()
|
"$packageName.TestClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -187,7 +217,7 @@ val TestClass by lazyClass("com.example.demo.TestClass")
|
|||||||
Use it when appropriate.
|
Use it when appropriate.
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
TestClass.method {
|
TestClass.resolve().firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -212,10 +242,9 @@ Add code in the body of the `encase` method.
|
|||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
loadZygote {
|
loadZygote {
|
||||||
ActivityClass.method {
|
Activity::class.resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
returnType = UnitType
|
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -242,12 +271,12 @@ Add code in the body of the `encase` method.
|
|||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
loadSystem {
|
loadSystem {
|
||||||
ApplicationInfoClass.method {
|
ApplicationInfo::class.resolve().firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}
|
}
|
||||||
PackageInfoClass.method {
|
PackageInfo::class.resolve().firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook {
|
}.hook {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -341,9 +370,9 @@ The first way, save the `Result` instance of the current injected object, and ca
|
|||||||
```kotlin
|
```kotlin
|
||||||
// Set a variable to save the current instance
|
// Set a variable to save the current instance
|
||||||
val hookResult =
|
val hookResult =
|
||||||
method {
|
resolve().firstMethod {
|
||||||
name = "test"
|
name = "test"
|
||||||
returnType = UnitType
|
returnType = Void.TYPE
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
// ...
|
// ...
|
||||||
@@ -358,9 +387,9 @@ The second method, call `removeSelf` in the Hook callback method to remove itsel
|
|||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
method {
|
resolve().firstMethod {
|
||||||
name = "test"
|
name = "test"
|
||||||
returnType = UnitType
|
returnType = Void.TYPE
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
// Just call the following method directly
|
// Just call the following method directly
|
||||||
@@ -427,7 +456,7 @@ TargetClass.hook {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also handle exceptions when looking up methods.
|
**(Applicable to older versions)** You can also handle exceptions when looking up methods.
|
||||||
|
|
||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
@@ -447,6 +476,14 @@ For more functions, please refer to [MemberHookCreator.Result](../api/public/com
|
|||||||
|
|
||||||
Common exceptions that may occur are described here. For more information, please refer to [API Exception Handling](../config/api-exception).
|
Common exceptions that may occur are described here. For more information, please refer to [API Exception Handling](../config/api-exception).
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
The exception of `KavaRef` will be managed separately by itself.
|
||||||
|
For detailed configuration plans, you can refer to [here](https://highcapable.github.io/KavaRef/en/library/kavaref-core#exception-handling),
|
||||||
|
which will jump to the `KavaRef` document.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
### Throw an Exception
|
### Throw an Exception
|
||||||
|
|
||||||
In some cases, you can **manually throw exceptions** to alert some functionality that there is a problem.
|
In some cases, you can **manually throw exceptions** to alert some functionality that there is a problem.
|
||||||
@@ -593,7 +630,7 @@ You can also abbreviate the `hook { ... }` method body when you only need a Hook
|
|||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
ActivityClass.method {
|
Activity::class.resolve().firstMethod {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
}.hook().after {
|
}.hook().after {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# Introduce
|
# Introduction
|
||||||
|
|
||||||
> `YukiHookAPI` is an integrated Hook API Framework, which does not provide any Hook functions, and needs the support of Xposed related basic APIs.
|
> `YukiHookAPI` is an integrated Hook API Framework, which does not provide any Hook functions, and needs the support of Xposed related basic APIs.
|
||||||
|
|
||||||
@@ -22,8 +22,6 @@ Please use Kotlin, the framework part of the code composition is also compatible
|
|||||||
|
|
||||||
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`.
|
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`.
|
||||||
|
|
||||||
Part of the Java Demo code can be found [here](https://github.com/HighCapable/YukiHookAPI/tree/master/samples/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/java), but not recommended.
|
|
||||||
|
|
||||||
## Source of Inspiration
|
## Source of Inspiration
|
||||||
|
|
||||||
Previously, when we built an Xposed Module, we first needed to create an `xposed_init` file under `assets`.
|
Previously, when we built an Xposed Module, we first needed to create an `xposed_init` file under `assets`.
|
||||||
@@ -51,9 +49,9 @@ object HookEntry : IYukiHookXposedInit {
|
|||||||
|
|
||||||
override fun onHook() = encase {
|
override fun onHook() = encase {
|
||||||
loadZygote {
|
loadZygote {
|
||||||
ActivityClass.method {
|
Activity::class.resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
}.hook {
|
}.hook {
|
||||||
before {
|
before {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -64,9 +62,9 @@ object HookEntry : IYukiHookXposedInit {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
loadApp(name = "com.android.browser") {
|
loadApp(name = "com.android.browser") {
|
||||||
ActivityClass.method {
|
Activity::class.resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
}.hook {
|
}.hook {
|
||||||
before {
|
before {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
@@ -130,3 +128,11 @@ class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage {
|
|||||||
Yes, you read that right, just needing these codes can completely replace the traditional Xposed API to achieve the same function.
|
Yes, you read that right, just needing these codes can completely replace the traditional 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.
|
Now, with the help of the efficient and powerful `YukiHookAPI`, you can implement a very simple Xposed Module.
|
||||||
|
|
||||||
|
::: tip
|
||||||
|
|
||||||
|
Starting with version `1.3.0`, `YukiHookAPI` has migrated its own reflection API part to [KavaRef](https://github.com/HighCapable/KavaRef) (including the reflection API part demonstrated above).
|
||||||
|
|
||||||
|
Now, you can make the `YukiHookAPI` more easy to use with the powerful reflection ability of `KavaRef`.
|
||||||
|
|
||||||
|
:::
|
@@ -31,9 +31,10 @@ override fun onHook() = encase {
|
|||||||
loadApp(name = "com.demo.test") {
|
loadApp(name = "com.demo.test") {
|
||||||
// Member Hook
|
// Member Hook
|
||||||
"com.demo.test.TestClass".toClass()
|
"com.demo.test.TestClass".toClass()
|
||||||
.method {
|
.resolve()
|
||||||
|
.firstMethod {
|
||||||
name = "test"
|
name = "test"
|
||||||
param(BooleanType)
|
parameters(Boolean::class)
|
||||||
}.hook {
|
}.hook {
|
||||||
after {
|
after {
|
||||||
// ...
|
// ...
|
||||||
@@ -260,6 +261,60 @@ override fun replaceHookedMethod(param: MethodHookParam) = null
|
|||||||
:::
|
:::
|
||||||
::::
|
::::
|
||||||
|
|
||||||
|
### Notes on Migrating XposedHelpers
|
||||||
|
|
||||||
|
The reflection functionality provided in `YukiHookAPI` differs from the reflection functionality of `XposedHelpers`.
|
||||||
|
|
||||||
|
Here is a guide to avoid common pitfalls.
|
||||||
|
|
||||||
|
Methods like `XposedHelpers.callMethod` and `XposedHelpers.callStaticMethod` automatically search and invoke all public methods (including those in superclasses), which is a feature of native Java reflection. In contrast, the reflection solution provided by `YukiHookAPI` first searches and then calls, and by default, the search process does not automatically look for methods in superclasses.
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
The reflection API of `YukiHookAPI` itself has been deprecated in `1.3.0` version.
|
||||||
|
The following content is only used as migration guidelines before `1.3.0` version, we will retain it but will not update the content again.
|
||||||
|
|
||||||
|
You can migrate to [KavaRef](https://github.com/HighCapable/KavaRef), and this feature is also applicable to `KavaRef`.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
|
||||||
|
For example, class `A` inherits from `B`, and `B` has a public method `test`, while `A` does not.
|
||||||
|
|
||||||
|
```java
|
||||||
|
public class B {
|
||||||
|
public void test(String a) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class A extends B {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Usage with `XposedHelpers`.
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
val instance: A = ...
|
||||||
|
XposedHelpers.callMethod(instance, "test", "some string")
|
||||||
|
```
|
||||||
|
|
||||||
|
Usage with `YukiHookAPI`.
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
val instance: A = ...
|
||||||
|
instance.current().method {
|
||||||
|
name = "test"
|
||||||
|
// Note that you need to add this search condition to ensure it searches for methods in superclasses.
|
||||||
|
superClass()
|
||||||
|
}.call("some string")
|
||||||
|
// Or directly call the superClass() method.
|
||||||
|
instance.current().superClass()?.method {
|
||||||
|
name = "test"
|
||||||
|
}?.call("some string")
|
||||||
|
```
|
||||||
|
|
||||||
## Migrate More Functions Related to Hook API
|
## Migrate More Functions Related to Hook API
|
||||||
|
|
||||||
`YukiHookAPI` is a brand new Hook API, which is fundamentally different from other Hook APIs, you can refer to [API Document](../api/home) and [Special Features](../api/special-features/reflection) to determine some functional Migration and use.
|
`YukiHookAPI` is a brand new Hook API, which is fundamentally different from other Hook APIs, you can refer to [API Document](../api/home) and [Special Features](../api/special-features/reflection) to determine some functional Migration and use.
|
@@ -2,23 +2,15 @@
|
|||||||
|
|
||||||
> Integrate `YukiHookAPI` into your project.
|
> Integrate `YukiHookAPI` into your project.
|
||||||
|
|
||||||
## Environment Requirements
|
## Project Requirements
|
||||||
|
|
||||||
- Windows 7 and above / macOS 10.14 and above / Linux distributions (Arch/Debian)
|
The project needs to be created using `Android Studio` or `IntelliJ IDEA` and be of type Android project and have integrated Kotlin environment dependencies.
|
||||||
|
|
||||||
- Android Studio 2021.1 and above
|
- Android Studio (It is recommended to get the latest version from [here](https://developer.android.com/studio))
|
||||||
|
|
||||||
- IntelliJ IDEA 2021.1 and above
|
- IntelliJ IDEA (It is recommended to get the latest version from [here](https://www.jetbrains.com/idea))
|
||||||
|
|
||||||
- Kotlin 1.7.0 and above
|
- Kotlin 1.9.0+, Gradle 8+, Java 11, 17+, Android Gradle Plugin 8+
|
||||||
|
|
||||||
- Android Gradle Plugin 7.0 and above
|
|
||||||
|
|
||||||
- Gradle 7.0 and above
|
|
||||||
|
|
||||||
- Java 11 and above (Since API `1.0.80`)
|
|
||||||
|
|
||||||
- Java 17 and above (Since API `1.2.0`)
|
|
||||||
|
|
||||||
## Automatically Build Project
|
## Automatically Build Project
|
||||||
|
|
||||||
@@ -49,9 +41,6 @@ repositories:
|
|||||||
# Must be added when used as an Xposed Module, otherwise optional
|
# Must be added when used as an Xposed Module, otherwise optional
|
||||||
rovo89-xposed-api:
|
rovo89-xposed-api:
|
||||||
url: https://api.xposed.info/
|
url: https://api.xposed.info/
|
||||||
# MavenCentral has a 2-hour cache,
|
|
||||||
# if the latest version cannot be integrated, please add this
|
|
||||||
sonatype-oss-releases:
|
|
||||||
|
|
||||||
plugins:
|
plugins:
|
||||||
# Must be added when used as an Xposed Module, otherwise optional
|
# Must be added when used as an Xposed Module, otherwise optional
|
||||||
@@ -72,12 +61,19 @@ libraries:
|
|||||||
# Must be added when used as an Xposed Module, otherwise optional
|
# Must be added when used as an Xposed Module, otherwise optional
|
||||||
ksp-xposed:
|
ksp-xposed:
|
||||||
version-ref: <this>::api
|
version-ref: <this>::api
|
||||||
|
# YukiHookAPI version 1.3.0 uses KavaRef as core reflection API
|
||||||
|
# YukiHookAPI no longer binds its own reflection API, you can start trying to use KavaRef
|
||||||
|
com.highcapable.kavaref:
|
||||||
|
kavaref-core:
|
||||||
|
version: +
|
||||||
|
kavaref-extension:
|
||||||
|
version: +
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
After adding it, run Gradle Sync and all dependencies will be autowired.
|
After adding it, run Gradle Sync and all dependencies will be autowired.
|
||||||
|
|
||||||
Next, deploy plugins in your project `build.gradle.kts`.
|
Next, deploy plugins in your project's `build.gradle.kts`.
|
||||||
|
|
||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
@@ -89,7 +85,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, deploy dependencies in your project `build.gradle.kts`.
|
Then, deploy dependencies in your project's `build.gradle.kts`.
|
||||||
|
|
||||||
> The following example
|
> The following example
|
||||||
|
|
||||||
@@ -97,6 +93,9 @@ Then, deploy dependencies in your project `build.gradle.kts`.
|
|||||||
dependencies {
|
dependencies {
|
||||||
// Basic dependencies
|
// Basic dependencies
|
||||||
implementation(com.highcapable.yukihookapi.api)
|
implementation(com.highcapable.yukihookapi.api)
|
||||||
|
// It is recommended to use KavaRef as the core reflection API
|
||||||
|
implementation(com.highcapable.kavaref.kavaref.core)
|
||||||
|
implementation(com.highcapable.kavaref.kavaref.extension)
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
compileOnly(de.robv.android.xposed.api)
|
compileOnly(de.robv.android.xposed.api)
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
@@ -104,9 +103,9 @@ dependencies {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Traditional Method
|
#### Version Catalog
|
||||||
|
|
||||||
Add repositories in your project `build.gradle.kts` or `build.gradle`.
|
Add repositories in your project's `build.gradle.kts`.
|
||||||
|
|
||||||
> Kotlin DSL
|
> Kotlin DSL
|
||||||
|
|
||||||
@@ -115,26 +114,82 @@ repositories {
|
|||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
maven { url("https://api.xposed.info/") }
|
maven("https://api.xposed.info/")
|
||||||
// MavenCentral has a 2-hour cache, if the latest version cannot be integrated, please add this URL
|
|
||||||
maven { url("https://s01.oss.sonatype.org/content/repositories/releases/") }
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> Groovy DSL
|
Add dependency in your project's `gradle/libs.versions.toml`.
|
||||||
|
|
||||||
```groovy
|
> The following example
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[versions]
|
||||||
|
yukihookapi = "<yuki-version>"
|
||||||
|
ksp = "<ksp-version>"
|
||||||
|
kavaref-core = "<kavaref-version>"
|
||||||
|
kavaref-extension = "<kavaref-version>"
|
||||||
|
|
||||||
|
[plugins]
|
||||||
|
# Must be added when used as an Xposed Module, otherwise optional
|
||||||
|
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
yukihookapi-api = { module = "com.highcapable.yukihookapi:api", version.ref = "yukihookapi" }
|
||||||
|
# Must be added when used as an Xposed Module, otherwise optional
|
||||||
|
yukihookapi-ksp-xposed = { module = "com.highcapable.yukihookapi:ksp-xposed", version.ref = "yukihookapi" }
|
||||||
|
# YukiHookAPI version 1.3.0 uses KavaRef as core reflection API
|
||||||
|
# YukiHookAPI no longer binds its own reflection API, you can start trying to use KavaRef
|
||||||
|
kavaref-core = { module = "com.highcapable.kavaref:kavaref-core", version.ref = "kavaref-core" }
|
||||||
|
kavaref-extension = { module = "com.highcapable.kavaref:kavaref-extension", version.ref = "kavaref-extension" }
|
||||||
|
# Must be added when used as an Xposed Module, otherwise optional
|
||||||
|
xposed-api = { module = "de.robv.android.xposed:api", version = "82" }
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, deploy plugins in your project's `build.gradle.kts`.
|
||||||
|
|
||||||
|
> Kotlin DSL
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
plugins {
|
||||||
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
|
alias(libs.plugins.ksp)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, deploy dependencies in your project's `build.gradle.kts`.
|
||||||
|
|
||||||
|
> Kotlin DSL
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
dependencies {
|
||||||
|
// Basic dependency
|
||||||
|
implementation(libs.yukihookapi.api)
|
||||||
|
// It is recommended to use KavaRef as the core reflection API
|
||||||
|
implementation(libs.kavaref.core)
|
||||||
|
implementation(libs.kavaref.extension)
|
||||||
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
|
compileOnly(libs.xposed.api)
|
||||||
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
|
ksp(libs.yukihookapi.ksp.xposed)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Traditional Method
|
||||||
|
|
||||||
|
Add repositories in your project's `build.gradle.kts`.
|
||||||
|
|
||||||
|
> Kotlin DSL
|
||||||
|
|
||||||
|
```kotlin
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
maven { url 'https://api.xposed.info/' }
|
maven("https://api.xposed.info/")
|
||||||
// MavenCentral has a 2-hour cache, if the latest version cannot be integrated, please add this URL
|
|
||||||
maven { url 'https://s01.oss.sonatype.org/content/repositories/releases/' }
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Add plugins in your project `build.gradle.kts` or `build.gradle`.
|
Add plugins in your project's `build.gradle.kts`.
|
||||||
|
|
||||||
> Kotlin DSL
|
> Kotlin DSL
|
||||||
|
|
||||||
@@ -145,16 +200,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> Groovy DSL
|
Add dependencies in your project's `build.gradle.kts`.
|
||||||
|
|
||||||
```groovy
|
|
||||||
plugins {
|
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
|
||||||
id 'com.google.devtools.ksp' version '<ksp-version>'
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Add dependencies in your project `build.gradle.kts` or `build.gradle`.
|
|
||||||
|
|
||||||
> Kotlin DSL
|
> Kotlin DSL
|
||||||
|
|
||||||
@@ -162,6 +208,9 @@ Add dependencies in your project `build.gradle.kts` or `build.gradle`.
|
|||||||
dependencies {
|
dependencies {
|
||||||
// Basic dependency
|
// Basic dependency
|
||||||
implementation("com.highcapable.yukihookapi:api:<yuki-version>")
|
implementation("com.highcapable.yukihookapi:api:<yuki-version>")
|
||||||
|
// It is recommended to use KavaRef as the core reflection API
|
||||||
|
implementation("com.highcapable.kavaref:kavaref-core:<kavaref-version>")
|
||||||
|
implementation("com.highcapable.kavaref:kavaref-extension:<kavaref-version>")
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
compileOnly("de.robv.android.xposed:api:82")
|
compileOnly("de.robv.android.xposed:api:82")
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
// Must be added when used as an Xposed Module, otherwise optional
|
||||||
@@ -169,29 +218,16 @@ dependencies {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> Groovy DSL
|
|
||||||
|
|
||||||
```groovy
|
|
||||||
dependencies {
|
|
||||||
// Basic dependency
|
|
||||||
implementation 'com.highcapable.yukihookapi:api:<yuki-version>'
|
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
|
||||||
compileOnly 'de.robv.android.xposed:api:82'
|
|
||||||
// Must be added when used as an Xposed Module, otherwise optional
|
|
||||||
ksp 'com.highcapable.yukihookapi:ksp-xposed:<yuki-version>'
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Please modify **<ksp-version>** to the latest version found [here](https://github.com/google/ksp/releases) **(please note to select your current corresponding Kotlin version)**.
|
Please modify **<ksp-version>** to the latest version found [here](https://github.com/google/ksp/releases) **(please note to select your current corresponding Kotlin version)**.
|
||||||
|
|
||||||
Please change **<yuki-version>** to the latest version [here](../about/changelog).
|
Please change **<yuki-version>** to the latest version [here](../about/changelog).
|
||||||
|
|
||||||
|
Please change **<kavaref-version>** to the latest version [here](https://highcapable.github.io/KavaRef/en/about/changelog).
|
||||||
|
|
||||||
:::danger
|
:::danger
|
||||||
|
|
||||||
The **api** and **ksp-xposed** dependency versions of **YukiHookAPI** must correspond one-to-one, otherwise a version mismatch error will occur.
|
The **api** and **ksp-xposed** dependency versions of **YukiHookAPI** must correspond one-to-one, otherwise a version mismatch error will occur.
|
||||||
|
|
||||||
We recommend using [SweetDependency](https://github.com/HighCapable/SweetDependency) to autowire dependencies for you.
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
#### Configure Java Version
|
#### Configure Java Version
|
||||||
|
@@ -4,22 +4,22 @@ The following are the related functions, Xposed Frameworks, Hook Frameworks and
|
|||||||
|
|
||||||
> Basic Functions
|
> Basic Functions
|
||||||
|
|
||||||
| Name | ST | Description |
|
| Name | ST | Description |
|
||||||
| -------------------------- | --- | ------------------------------------------------------------------------------------------------------------------ |
|
| -------------------------- | --- | ----------------------------------------------------------------------------------------------------------------------- |
|
||||||
| Xposed Module Auto Builder | ✅ | Will use [New Xposed Module Config Plan](https://github.com/HighCapable/YukiHookAPI/issues/49) on `YukiHookAPI` `2.0.0` |
|
| Xposed Module Auto Builder | ✅ | Will use [New Xposed Module Config Plan](https://github.com/HighCapable/YukiHookAPI/issues/49) on `YukiHookAPI` `2.0.0` |
|
||||||
| ART Dynamic Method Hook | ✅ | Stable use in multiple scenarios |
|
| ART Dynamic Method Hook | ✅ | Stable use in multiple scenarios |
|
||||||
| Xposed Resources Hook | ❗ | Supported, but will be deprecated on `YukiHookAPI` `2.0.0` |
|
| Xposed Resources Hook | ❗ | Supported, but will be removed on `YukiHookAPI` `2.0.0` |
|
||||||
|
|
||||||
> Extended Functions
|
> Extended Functions
|
||||||
|
|
||||||
| Name | ST | Description |
|
| Name | ST | Description |
|
||||||
| -------------------------------------------------------------------------------------------------- | --- | ------------------------------------------------------------------------------------------------------ |
|
| -------------------------------------------------------------------------------------------------- | --- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| [Reflection Extensions](../api/special-features/reflection) | ⭕ | Will be merge into [YukiReflection](https://github.com/HighCapable/YukiReflection) on `YukiHookAPI` `2.0.0` |
|
| ~~[Reflection Extensions](../api/special-features/reflection)~~ | ❗ | Completely deprecated, recommended to migrate to [KavaRef](https://github.com/HighCapable/KavaRef), planned `YukiHookAPI` `2.0.0` version removed |
|
||||||
| [Xposed Module Data Storage](../api/special-features/xposed-storage) | ✅ | Normal use |
|
| [Xposed Module Data Storage](../api/special-features/xposed-storage) | ✅ | Normal use |
|
||||||
| [Xposed Module and Host Channel](../api/special-features/xposed-channel) | ✅ | Normal use |
|
| [Xposed Module and Host Channel](../api/special-features/xposed-channel) | ✅ | Normal use |
|
||||||
| [Host Lifecycle Extension](../api/special-features/host-lifecycle) | ✅ | Normal use |
|
| [Host Lifecycle Extension](../api/special-features/host-lifecycle) | ✅ | Normal use |
|
||||||
| [Inject Module Apps Resources](../api/special-features/host-inject#inject-module-apps-resources) | ✅ | Normal use |
|
| [Inject Module Apps Resources](../api/special-features/host-inject#inject-module-apps-resources) | ✅ | Normal use |
|
||||||
| [Register Module Apps Activity](../api/special-features/host-inject#register-module-apps-activity) | ✅ | Normal use |
|
| [Register Module Apps Activity](../api/special-features/host-inject#register-module-apps-activity) | ✅ | Normal use |
|
||||||
|
|
||||||
> Xposed Frameworks
|
> Xposed Frameworks
|
||||||
|
|
||||||
|
@@ -20,18 +20,18 @@ features:
|
|||||||
details: Natively supports multiple Xposed API usages and natively connects to multiple Xposed APIs, Hook Frameworks within the supported range can be quickly integrated.
|
details: Natively supports multiple Xposed API usages and natively connects to multiple Xposed APIs, Hook Frameworks within the supported range can be quickly integrated.
|
||||||
- title: Obfuscate Support
|
- title: Obfuscate Support
|
||||||
details: The built Xposed Module simply supports R8, obfuscate will not destroy the hook entry point, and no other configuration is required under R8.
|
details: The built Xposed Module simply supports R8, obfuscate will not destroy the hook entry point, and no other configuration is required under R8.
|
||||||
- title: Quickly Started
|
- title: Quick to Start
|
||||||
details: Simple and easy to use it now! Do not need complex configuration and full development experience, Integrate dependencies and enjoy yourself.
|
details: Simple and easy to use it now! Do not need complex configuration and full development experience, Integrate dependencies and enjoy yourself.
|
||||||
footer: Apache-2.0 License | Copyright (C) 2019-2024 HighCapable
|
footer: Apache-2.0 License | Copyright (C) 2019 HighCapable
|
||||||
---
|
---
|
||||||
|
|
||||||
### All Hook process in one step, everything is simplified
|
### All Hook process in one step, everything is simplified
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
loadApp(name = "com.android.browser") {
|
loadApp(name = "com.android.browser") {
|
||||||
ActivityClass.method {
|
Activity::class.resolve().firstMethod {
|
||||||
name = "onCreate"
|
name = "onCreate"
|
||||||
param(BundleClass)
|
parameters(Bundle::class)
|
||||||
}.hook {
|
}.hook {
|
||||||
before {
|
before {
|
||||||
// Your code here.
|
// Your code here.
|
||||||
|
@@ -12,6 +12,12 @@ This project is open source and free, and will be maintained continuously accord
|
|||||||
|
|
||||||
The original version may have imperfections or bugs. We welcome to your feedback.
|
The original version may have imperfections or bugs. We welcome to your feedback.
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
The project builder will be maintained before the release of the first `2.0.0` version of `YukiHookAPI`. This project will be officially deprecated after the new version is released.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
Project Address [YukiHookAPI-ProjectBuilder](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder)。
|
Project Address [YukiHookAPI-ProjectBuilder](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder)。
|
||||||
|
|
||||||
If you want to download directly, you can [click here](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/releases) to go to the Release address.
|
If you want to download directly, you can [click here](https://github.com/HighCapable/YukiHookAPI-ProjectBuilder/releases) to go to the Release address.
|
||||||
|
@@ -13,5 +13,5 @@ actions:
|
|||||||
- text: 简体中文
|
- text: 简体中文
|
||||||
link: /zh-cn/
|
link: /zh-cn/
|
||||||
type: secondary
|
type: secondary
|
||||||
footer: Apache-2.0 License | Copyright (C) 2019-2024 HighCapable
|
footer: Apache-2.0 License | Copyright (C) 2019 HighCapable
|
||||||
---
|
---
|
@@ -9,7 +9,7 @@
|
|||||||
```:no-line-numbers
|
```:no-line-numbers
|
||||||
Apache License Version 2.0
|
Apache License Version 2.0
|
||||||
|
|
||||||
Copyright (C) 2019-2024 HighCapable
|
Copyright (C) 2019 HighCapable
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -24,4 +24,4 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
```
|
```
|
||||||
|
|
||||||
版权所有 © 2019-2024 HighCapable
|
版权所有 © 2019 HighCapable
|
@@ -8,7 +8,16 @@
|
|||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### 1.2.1 | 2024.06.20  <Badge type="tip" text="最新" vertical="middle" />
|
### 1.3.0 | 2025.06.25  <Badge type="tip" text="最新" vertical="middle" />
|
||||||
|
|
||||||
|
- 这是一次重大更新,详情请参考 [迁移到 YukiHookAPI 1.3.x](https://highcapable.github.io/YukiHookAPI/zh-cn/config/move-to-api-1-3-x)
|
||||||
|
- 弃用了 `YukiHookAPI` 自身的反射 API,现在请迁移到全新的 [KavaRef](https://github.com/HighCapable/KavaRef)
|
||||||
|
- 弃用了重复 Hook 的限制,现在你可以重复 Hook 同一个方法
|
||||||
|
- 弃用了 ~~`ModuleAppActivity`~~、~~`ModuleAppCompatActivity`~~,现在请使用 `ModuleActivity` 创建自己的代理 `Activity`
|
||||||
|
- `YLog` 现已允许 `msg` 传入任意对象,将自动转换为字符串进行打印
|
||||||
|
- `FreeReflection` 已被弃用,现已切换至 [AndroidHiddenApiBypass](https://github.com/LSPosed/AndroidHiddenApiBypass)
|
||||||
|
|
||||||
|
### 1.2.1 | 2024.06.20  <Badge type="warning" text="过旧" vertical="middle" />
|
||||||
|
|
||||||
- 捕获单例 Hooker 中的异常,防止其阻断整个进程
|
- 捕获单例 Hooker 中的异常,防止其阻断整个进程
|
||||||
- 在自动处理程序中添加自动使用 "`" 来修复 Kotlin 关键字为包名的情况,感谢 [Fengning Zhu](https://github.com/zhufengning) 的 [PR](https://github.com/HighCapable/YukiHookAPI/pull/70)
|
- 在自动处理程序中添加自动使用 "`" 来修复 Kotlin 关键字为包名的情况,感谢 [Fengning Zhu](https://github.com/zhufengning) 的 [PR](https://github.com/HighCapable/YukiHookAPI/pull/70)
|
||||||
@@ -46,7 +55,7 @@
|
|||||||
- `constructor()` 的行为不再是 `constructor { emptyParam() }`
|
- `constructor()` 的行为不再是 `constructor { emptyParam() }`
|
||||||
- 新增 `lazyClass`、`lazyClassOrNull` 方法,可延迟装载 `Class`
|
- 新增 `lazyClass`、`lazyClassOrNull` 方法,可延迟装载 `Class`
|
||||||
|
|
||||||
### 1.1.11 | 2023.04.25  <Badge type="warning" text="过旧" vertical="middle" />
|
### 1.1.11 | 2023.04.25  <Badge type="danger" text="过期" vertical="middle" />
|
||||||
|
|
||||||
- 修复从 `1.1.5` 版本开始的一个严重问题,`Member` 缓存未生效且持续存储最终引发 APP 内存溢出 (OOM),感谢 [Art-Chen](https://github.com/Art-Chen)
|
- 修复从 `1.1.5` 版本开始的一个严重问题,`Member` 缓存未生效且持续存储最终引发 APP 内存溢出 (OOM),感谢 [Art-Chen](https://github.com/Art-Chen)
|
||||||
- 移除 `Member` 的直接缓存功能并作废 ~~`YukiHookAPI.Configs.isEnableMemberCache`~~,保留 `Class` 的缓存功能
|
- 移除 `Member` 的直接缓存功能并作废 ~~`YukiHookAPI.Configs.isEnableMemberCache`~~,保留 `Class` 的缓存功能
|
||||||
@@ -55,7 +64,7 @@
|
|||||||
- 作废了 ~~`YukiHookAPI.Configs.isEnablePrefsBridgeCache`~~
|
- 作废了 ~~`YukiHookAPI.Configs.isEnablePrefsBridgeCache`~~
|
||||||
- 作废了 `YukiHookPrefsBridge` 中的 ~~`direct`~~、~~`clearCache`~~ 方法
|
- 作废了 `YukiHookPrefsBridge` 中的 ~~`direct`~~、~~`clearCache`~~ 方法
|
||||||
|
|
||||||
### 1.1.10 | 2023.04.21  <Badge type="warning" text="过旧" vertical="middle" />
|
### 1.1.10 | 2023.04.21  <Badge type="danger" text="过期" vertical="middle" />
|
||||||
|
|
||||||
- `Activity` 代理功能新增每个被代理的 `Activity` 指定单独的代理 `Activity` 功能
|
- `Activity` 代理功能新增每个被代理的 `Activity` 指定单独的代理 `Activity` 功能
|
||||||
- 修复 `YukiHookPrefsBridge` 中的 `contains`、`all` 方法未判断 `native` 功能的问题
|
- 修复 `YukiHookPrefsBridge` 中的 `contains`、`all` 方法未判断 `native` 功能的问题
|
||||||
@@ -64,7 +73,7 @@
|
|||||||
- 修改部分用于缓存的 `HashMap` 到 `ArrayMap` 以减少内存消耗
|
- 修改部分用于缓存的 `HashMap` 到 `ArrayMap` 以减少内存消耗
|
||||||
- 修复一些其它可能出现的问题
|
- 修复一些其它可能出现的问题
|
||||||
|
|
||||||
### 1.1.9 | 2023.04.17  <Badge type="warning" text="过旧" vertical="middle" />
|
### 1.1.9 | 2023.04.17  <Badge type="danger" text="过期" vertical="middle" />
|
||||||
|
|
||||||
- 将依赖库的类型由 **Java Library** (jar) 修改为 **Android Library** (aar)
|
- 将依赖库的类型由 **Java Library** (jar) 修改为 **Android Library** (aar)
|
||||||
- 移除通过 Hook 或反射 API 内部方法、参数的检查功能
|
- 移除通过 Hook 或反射 API 内部方法、参数的检查功能
|
||||||
@@ -84,7 +93,7 @@
|
|||||||
- 修改 `Activity` 代理功能的代理类为动态生成,防止不同模块注入宿主后造成冲突
|
- 修改 `Activity` 代理功能的代理类为动态生成,防止不同模块注入宿主后造成冲突
|
||||||
- 修复一些其它可能出现的问题
|
- 修复一些其它可能出现的问题
|
||||||
|
|
||||||
### 1.1.8 | 2023.02.01  <Badge type="warning" text="过旧" vertical="middle" />
|
### 1.1.8 | 2023.02.01  <Badge type="danger" text="过期" vertical="middle" />
|
||||||
|
|
||||||
- 修复底层 Hook 方法在回调时修改 `result` 等参数时时不能同步更新修改后的状态问题,感谢 [Yongzheng Lai](https://github.com/elvizlai) 的 [Issue](https://github.com/HighCapable/YukiHookAPI/issues/23)
|
- 修复底层 Hook 方法在回调时修改 `result` 等参数时时不能同步更新修改后的状态问题,感谢 [Yongzheng Lai](https://github.com/elvizlai) 的 [Issue](https://github.com/HighCapable/YukiHookAPI/issues/23)
|
||||||
- 移动 `YukiHookAPI` 自动生成的入口类名称文件 `assets/yukihookapi_init` 到 `resources/META-INF/yukihookapi_init`
|
- 移动 `YukiHookAPI` 自动生成的入口类名称文件 `assets/yukihookapi_init` 到 `resources/META-INF/yukihookapi_init`
|
||||||
@@ -98,7 +107,7 @@
|
|||||||
- 修复在 `PackageParam.AppLifecycle` 中可能存在多次注册生命周期的问题
|
- 修复在 `PackageParam.AppLifecycle` 中可能存在多次注册生命周期的问题
|
||||||
- Revert: 1.1.7 版本由于有一个严重问题已经撤回,请直接更新到此版本即可 (更新日志同 1.1.7 版本)
|
- Revert: 1.1.7 版本由于有一个严重问题已经撤回,请直接更新到此版本即可 (更新日志同 1.1.7 版本)
|
||||||
|
|
||||||
### 1.1.6 | 2023.01.21  <Badge type="warning" text="过旧" vertical="middle" />
|
### 1.1.6 | 2023.01.21  <Badge type="danger" text="过期" vertical="middle" />
|
||||||
|
|
||||||
- 修复 Xposed 模块装载时可能存在同一个进程多个包名的情况导致 `PackageParam` 保持单例后 `ClassLoader` 不符的严重问题
|
- 修复 Xposed 模块装载时可能存在同一个进程多个包名的情况导致 `PackageParam` 保持单例后 `ClassLoader` 不符的严重问题
|
||||||
- 新增同一个进程多个包名的情况下未区分包名时,停止装载单例化的子 Hooker 并打印警告信息
|
- 新增同一个进程多个包名的情况下未区分包名时,停止装载单例化的子 Hooker 并打印警告信息
|
||||||
@@ -106,7 +115,7 @@
|
|||||||
- 修改 `MethodFinder`、`ConstructorFinder`、`ReflectionFactory` 中反射调用的方法参数名 `param` 为 `args`
|
- 修改 `MethodFinder`、`ConstructorFinder`、`ReflectionFactory` 中反射调用的方法参数名 `param` 为 `args`
|
||||||
- 新增 Xposed 模块自动处理程序中判断入口类构造方法参数功能,入口类需要保证其不存在任何构造方法参数
|
- 新增 Xposed 模块自动处理程序中判断入口类构造方法参数功能,入口类需要保证其不存在任何构造方法参数
|
||||||
|
|
||||||
### 1.1.5 | 2023.01.13  <Badge type="warning" text="过旧" vertical="middle" />
|
### 1.1.5 | 2023.01.13  <Badge type="danger" text="过期" vertical="middle" />
|
||||||
|
|
||||||
- 规范并优化整体代码风格
|
- 规范并优化整体代码风格
|
||||||
- 对部分内部调用的 API 进行了私有化处理
|
- 对部分内部调用的 API 进行了私有化处理
|
||||||
@@ -148,7 +157,7 @@
|
|||||||
- 修复 `YukiHookLogger` 处理后的调试日志数据包名可能在 (Xposed) 宿主环境不正确的问题
|
- 修复 `YukiHookLogger` 处理后的调试日志数据包名可能在 (Xposed) 宿主环境不正确的问题
|
||||||
- 修复 Xposed 模块装载资源钩子 (Resources Hook) 事件时在部分系统上 (部分系统 APP 中) 包名可能不正确的问题
|
- 修复 Xposed 模块装载资源钩子 (Resources Hook) 事件时在部分系统上 (部分系统 APP 中) 包名可能不正确的问题
|
||||||
|
|
||||||
### 1.1.4 | 2022.10.04  <Badge type="warning" text="过旧" vertical="middle" />
|
### 1.1.4 | 2022.10.04  <Badge type="danger" text="过期" vertical="middle" />
|
||||||
|
|
||||||
- 修复 `YukiHookDataChannel` 可能不能响应系统框架中响应广播事件的问题,在 Android 13 中复现
|
- 修复 `YukiHookDataChannel` 可能不能响应系统框架中响应广播事件的问题,在 Android 13 中复现
|
||||||
- 修复 `YukiHookDataChannel` 长达多个版本在 (Xposed) 宿主环境无法与模块通讯的问题
|
- 修复 `YukiHookDataChannel` 长达多个版本在 (Xposed) 宿主环境无法与模块通讯的问题
|
||||||
@@ -158,7 +167,7 @@
|
|||||||
- `PackageParam` 中新增 `loadApp`、`loadZygote`、`loadSystem`、`withProcess` 的同名多参数方法
|
- `PackageParam` 中新增 `loadApp`、`loadZygote`、`loadSystem`、`withProcess` 的同名多参数方法
|
||||||
- 修复了一些可能存在的 BUG
|
- 修复了一些可能存在的 BUG
|
||||||
|
|
||||||
### 1.1.3 | 2022.09.30  <Badge type="warning" text="过旧" vertical="middle" />
|
### 1.1.3 | 2022.09.30  <Badge type="danger" text="过期" vertical="middle" />
|
||||||
|
|
||||||
- 修复一个无法自定义 Hook 入口类名的致命错误
|
- 修复一个无法自定义 Hook 入口类名的致命错误
|
||||||
- 添加 `LoggerFactory` 中的部分代码注释文案并更新特色功能文档
|
- 添加 `LoggerFactory` 中的部分代码注释文案并更新特色功能文档
|
||||||
|
@@ -34,7 +34,9 @@ LSPosed 现已实验性推出了 [Modern Xposed API](https://github.com/libxpose
|
|||||||
|
|
||||||
那么这里有一个好消息要告诉你:
|
那么这里有一个好消息要告诉你:
|
||||||
|
|
||||||
`YukiHookAPI` 的核心反射 API 已被解耦合为 [YukiReflection](https://github.com/HighCapable/YukiReflection) 项目,它现在能在任何 Android 项目中使用。
|
~~`YukiHookAPI` 的核心反射 API 已被解耦合为 [YukiReflection](https://github.com/HighCapable/YukiReflection) 项目,它现在能在任何 Android 项目中使用。~~
|
||||||
|
|
||||||
|
`YukiReflection` 项目由于很多未能解决的黑盒问题已被弃用,我们不再推荐任何人使用它,现在请迁移到全新设计的 [KavaRef](https://github.com/HighCapable/KavaRef)。
|
||||||
|
|
||||||
::: tip 待讨论
|
::: tip 待讨论
|
||||||
|
|
||||||
@@ -52,4 +54,4 @@ API 已经提供了 Xposed 原生 API 监听接口,你可以 [在这里](../co
|
|||||||
|
|
||||||
- [New Xposed Module Config Plan](https://github.com/HighCapable/YukiHookAPI/issues/49)
|
- [New Xposed Module Config Plan](https://github.com/HighCapable/YukiHookAPI/issues/49)
|
||||||
- [New Hook Entry Class](https://github.com/HighCapable/YukiHookAPI/issues/48)
|
- [New Hook Entry Class](https://github.com/HighCapable/YukiHookAPI/issues/48)
|
||||||
- [New Hook Code Style](https://github.com/HighCapable/YukiHookAPI/issues/33)
|
- ~~[New Hook Code Style](https://github.com/HighCapable/YukiHookAPI/issues/33)~~ (已由 [KavaRef](https://github.com/HighCapable/KavaRef) 取代)
|
@@ -8,6 +8,12 @@ next:
|
|||||||
|
|
||||||
> 这里的文档将同步最新 API 版本的相关用法,请保持 `YukiHookAPI` 为最新版本以使用最新版本的功能。
|
> 这里的文档将同步最新 API 版本的相关用法,请保持 `YukiHookAPI` 为最新版本以使用最新版本的功能。
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档,如遇到无法解决的问题,你可以通过 [联系我们](../about/contacts) 与我们联系。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## 功能描述说明
|
## 功能描述说明
|
||||||
|
|
||||||
> 功能描述主要介绍当前 API 的相关用法和用途。
|
> 功能描述主要介绍当前 API 的相关用法和用途。
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# YukiHookAPI <span class="symbol">- object</span>
|
# YukiHookAPI <span class="symbol">- object</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# InjectYukiHookWithXposed <span class="symbol">- annotation</span>
|
# InjectYukiHookWithXposed <span class="symbol">- annotation</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# CurrentClass <span class="symbol">- class</span>
|
# CurrentClass <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# GenericClass <span class="symbol">- class</span>
|
# GenericClass <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# HookClass <span class="symbol">- class</span>
|
# HookClass <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# VariousClass <span class="symbol">- class</span>
|
# VariousClass <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# YukiMemberHookCreator <span class="symbol">- class</span>
|
# YukiMemberHookCreator <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# YukiResourcesHookCreator <span class="symbol">- class</span>
|
# YukiResourcesHookCreator <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# ExecutorType <span class="symbol">- class</span>
|
# ExecutorType <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# YukiHookPriority <span class="symbol">- class</span>
|
# YukiHookPriority <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# BaseFinder <span class="symbol">- class</span>
|
# BaseFinder <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# CountRules <span class="symbol">- class</span>
|
# CountRules <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# ModifierRules <span class="symbol">- class</span>
|
# ModifierRules <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
@@ -2,6 +2,12 @@
|
|||||||
pageClass: code-page
|
pageClass: code-page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
|
||||||
|
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
# NameRules <span class="symbol">- class</span>
|
# NameRules <span class="symbol">- class</span>
|
||||||
|
|
||||||
```kotlin:no-line-numbers
|
```kotlin:no-line-numbers
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user