mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 01:35:17 +08:00
Compare commits
56 Commits
1.2.1
...
e1544a8ae3
Author | SHA1 | Date | |
---|---|---|---|
e1544a8ae3
|
|||
276503ccf4
|
|||
36bb1bf108
|
|||
edb22f1bd3
|
|||
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_class-signature = 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
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
|
4
.github/workflows/docs-deploy.yml
vendored
4
.github/workflows/docs-deploy.yml
vendored
@@ -16,11 +16,11 @@ jobs:
|
||||
if: ${{ success() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
- name: Build VuePress site
|
||||
|
7
.gitignore
vendored
7
.gitignore
vendored
@@ -30,15 +30,22 @@
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
.idea/.name
|
||||
.idea/artifacts
|
||||
.idea/compiler.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/modules.xml
|
||||
.idea/*.iml
|
||||
.idea/modules
|
||||
.idea/caches
|
||||
.idea/material_theme**
|
||||
.idea/other.xml
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
# Kotlin
|
||||
.kotlin
|
||||
|
||||
# Misc
|
||||
.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" />
|
||||
</component>
|
||||
<component name="KotlinJpsPluginSettings">
|
||||
<option name="version" value="2.0.0" />
|
||||
<option name="version" value="2.2.10" />
|
||||
</component>
|
||||
</project>
|
4
.idea/ktlint-plugin.xml
generated
4
.idea/ktlint-plugin.xml
generated
@@ -4,4 +4,8 @@
|
||||
<ktlintMode>MANUAL</ktlintMode>
|
||||
<formatOnSave>false</formatOnSave>
|
||||
</component>
|
||||
<component name="com.nbadal.ktlint.KtlintProjectSettings">
|
||||
<ktlintMode>MANUAL</ktlintMode>
|
||||
<ktlintRulesetVersion>DEFAULT</ktlintRulesetVersion>
|
||||
</component>
|
||||
</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
|
||||
|
||||
[](https://github.com/HighCapable/YukiHookAPI/blob/master/LICENSE)
|
||||
[](https://github.com/HighCapable/YukiHookAPI/releases)
|
||||
[](https://t.me/YukiHookAPI)
|
||||
[](https://t.me/HighCapable_Dev)
|
||||
[](https://qm.qq.com/cgi-bin/qm/qr?k=Pnsc5RY6N2mBKFjOLPiYldbAbprAU3V7&jump_from=webapi&authKey=X5EsOVzLXt1dRunge8ryTxDRrh9/IiW1Pua75eDLh9RE3KXE+bwXIYF5cWri/9lf)
|
||||
[](https://github.com/HighCapable/YukiHookAPI/blob/master/LICENSE)
|
||||
[](https://github.com/HighCapable/YukiHookAPI/releases)
|
||||
[](https://t.me/YukiHookAPI)
|
||||
[](https://t.me/HighCapable_Dev)
|
||||
[](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"/>
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
|
||||
有关支持性的相关信息,你可以直接 [点击这里](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` 的项目。
|
||||
@@ -57,6 +62,10 @@
|
||||
| [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) |
|
||||
| [最右强力去广告](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** 将你的存储仓库添加到上方的列表 (私有仓库可以不需要注明网页链接)。
|
||||
|
||||
@@ -87,7 +96,7 @@
|
||||
```
|
||||
Apache License Version 2.0
|
||||
|
||||
Copyright (C) 2019-2024 HighCapable
|
||||
Copyright (C) 2019 HighCapable
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (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.
|
||||
```
|
||||
|
||||
版权所有 © 2019-2024 HighCapable
|
||||
版权所有 © 2019 HighCapable
|
||||
|
24
README.md
24
README.md
@@ -1,10 +1,10 @@
|
||||
# Yuki Hook API
|
||||
|
||||
[](https://github.com/HighCapable/YukiHookAPI/blob/master/LICENSE)
|
||||
[](https://github.com/HighCapable/YukiHookAPI/releases)
|
||||
[](https://t.me/YukiHookAPI)
|
||||
[](https://t.me/HighCapable_Dev)
|
||||
[](https://qm.qq.com/cgi-bin/qm/qr?k=Pnsc5RY6N2mBKFjOLPiYldbAbprAU3V7&jump_from=webapi&authKey=X5EsOVzLXt1dRunge8ryTxDRrh9/IiW1Pua75eDLh9RE3KXE+bwXIYF5cWri/9lf)
|
||||
[](https://github.com/HighCapable/YukiHookAPI/blob/master/LICENSE)
|
||||
[](https://github.com/HighCapable/YukiHookAPI/releases)
|
||||
[](https://t.me/YukiHookAPI)
|
||||
[](https://t.me/HighCapable_Dev)
|
||||
[](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"/>
|
||||
|
||||
@@ -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).
|
||||
|
||||
| <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
|
||||
|
||||
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) |
|
||||
| [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) |
|
||||
| [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
|
||||
links).
|
||||
@@ -89,7 +99,7 @@ links).
|
||||
```
|
||||
Apache License Version 2.0
|
||||
|
||||
Copyright (C) 2019-2024 HighCapable
|
||||
Copyright (C) 2019 HighCapable
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (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.
|
||||
```
|
||||
|
||||
Copyright © 2019-2024 HighCapable
|
||||
Copyright © 2019 HighCapable
|
||||
|
@@ -1,7 +1,23 @@
|
||||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
|
||||
|
||||
plugins {
|
||||
autowire(libs.plugins.android.application) apply false
|
||||
autowire(libs.plugins.android.library) apply false
|
||||
autowire(libs.plugins.kotlin.jvm) apply false
|
||||
autowire(libs.plugins.kotlin.android) apply false
|
||||
autowire(libs.plugins.kotlin.ksp) apply false
|
||||
}
|
||||
|
||||
allprojects {
|
||||
tasks.withType<KotlinJvmCompile>().configureEach {
|
||||
compilerOptions {
|
||||
jvmTarget = JvmTarget.JVM_17
|
||||
freeCompilerArgs.addAll(
|
||||
"-Xno-param-assertions",
|
||||
"-Xno-call-assertions",
|
||||
"-Xno-receiver-assertions"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@@ -17,6 +17,7 @@ const navigationLinks = {
|
||||
'/config/xposed-using',
|
||||
'/config/api-using',
|
||||
'/config/move-to-api-1-2-x',
|
||||
'/config/move-to-api-1-3-x',
|
||||
'/config/r8-proguard'
|
||||
],
|
||||
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 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: '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',
|
||||
@@ -195,8 +197,9 @@ export const navBarItems = {
|
||||
{ text: 'API 异常处理', link: i18n.string(navigationLinks.config[1], 'zh-cn') },
|
||||
{ text: '作为 Xposed 模块使用的相关配置', link: i18n.string(navigationLinks.config[2], '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: 'R8 与 Proguard 混淆', link: i18n.string(navigationLinks.config[5], 'zh-cn') }
|
||||
{ text: '迁移至 YukiHookAPI 1.2.x', link: i18n.string(navigationLinks.config[4], '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: '工具',
|
||||
|
@@ -9,7 +9,7 @@
|
||||
```:no-line-numbers
|
||||
Apache License Version 2.0
|
||||
|
||||
Copyright (C) 2019-2024 HighCapable
|
||||
Copyright (C) 2019 HighCapable
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (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.
|
||||
```
|
||||
|
||||
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
|
||||
- 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() }`
|
||||
- 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)
|
||||
- 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 ~~`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`
|
||||
- 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
|
||||
- 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)
|
||||
- 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
|
||||
- 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)
|
||||
- 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`
|
||||
- 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
|
||||
- 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`
|
||||
- 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
|
||||
- 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 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` 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`
|
||||
- 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
|
||||
- Added some code notes in `LoggerFactory` and updated special features documentation
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# 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.
|
||||
|
||||
|
@@ -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`.
|
||||
|
||||
@@ -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:
|
||||
|
||||
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
|
||||
|
||||
@@ -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 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.
|
||||
|
||||
::: 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
|
||||
|
||||
> The function description mainly introduces the related usage and purpose of the current API.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
You can use the **Chrome Translation Plugin** to translate entire pages for reference.
|
||||
|
@@ -4,6 +4,12 @@ pageClass: code-page
|
||||
|
||||
::: 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.
|
||||
|
||||
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
|
||||
|
||||
```kotlin
|
||||
method {
|
||||
resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
after {
|
||||
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
|
||||
|
||||
```kotlin
|
||||
method {
|
||||
resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
after {
|
||||
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)
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
```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?) {
|
||||
delegate.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
|
||||
|
||||
```kotlin
|
||||
class HostTestActivity : ModuleAppCompatActivity() {
|
||||
|
||||
// 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
|
||||
class HostTestActivity : BaseActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
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
|
||||
|
||||
```kotlin
|
||||
class HostTestActivity : ModuleAppActivity() {
|
||||
class HostTestActivity : BaseActivity() {
|
||||
|
||||
// Specify an additional proxy Activity class name
|
||||
// Which must also exist in the Host App's AndroidManifest
|
||||
@@ -210,7 +221,7 @@ class HostTestActivity : ModuleAppActivity() {
|
||||
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)
|
||||
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
|
||||
|
||||
```kotlin
|
||||
method {
|
||||
resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
after {
|
||||
// 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
|
||||
|
||||
```kotlin
|
||||
method {
|
||||
resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
after {
|
||||
// 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.
|
||||
|
||||
::: 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
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
@@ -201,7 +215,7 @@ Please note that the more the same type **Class** is matched, the slower the spe
|
||||
|
||||
::: 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.
|
||||
|
||||
@@ -1958,4 +1972,6 @@ 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 {
|
||||
loadApp(name = "com.example.demo") {
|
||||
"$packageName.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -67,7 +68,8 @@ YukiHookAPI.encase {
|
||||
encase {
|
||||
loadApp(name = "com.example.demo") {
|
||||
"$packageName.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -127,7 +129,8 @@ object CustomHooker : YukiBaseHooker() {
|
||||
override fun onHook() {
|
||||
loadApp(name = "com.example.demo1") {
|
||||
"$packageName.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -135,7 +138,8 @@ object CustomHooker : YukiBaseHooker() {
|
||||
}
|
||||
loadApp(name = "com.example.demo2") {
|
||||
"$packageName.CustomClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -161,7 +165,8 @@ object ChildCustomHooker : YukiBaseHooker() {
|
||||
|
||||
override fun onHook() {
|
||||
"$packageName.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -179,7 +184,8 @@ object FirstHooker : YukiBaseHooker() {
|
||||
|
||||
override fun onHook() {
|
||||
"$packageName.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -254,7 +260,8 @@ In `YukiHookAPI`, these functions **are seamless**.
|
||||
encase {
|
||||
loadApp(name = "com.example.demo") {
|
||||
"$packageName.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -274,7 +281,7 @@ You can also use the `loadZygote` method to load the first event `initZygote` af
|
||||
```kotlin
|
||||
encase {
|
||||
loadZygote {
|
||||
ActivityClass.hook {
|
||||
Activity::class.resolve().firstMethod {
|
||||
// Your code here.
|
||||
}
|
||||
// Create a Resources Hook in Zygote
|
||||
@@ -284,7 +291,8 @@ encase {
|
||||
}
|
||||
loadApp(name = "com.example.demo") {
|
||||
"$packageName.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -324,7 +332,8 @@ Below are two **error** examples.
|
||||
encase {
|
||||
// Wrong usage, can't start Hook directly
|
||||
"com.example.demo.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -357,7 +366,8 @@ object CustomHooker : YukiBaseHooker() {
|
||||
// Wrong method of use
|
||||
// Because there is no judgment object in the outer layer, you cannot start Hook directly
|
||||
"com.example.demo.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -388,7 +398,8 @@ encase {
|
||||
loadHooker(CustomHooker)
|
||||
// ✅ Correct usage, Hook in app scope
|
||||
"com.example.demo.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -418,7 +429,8 @@ object CustomHooker : YukiBaseHooker() {
|
||||
// it is necessary to judge the scope of the app before performing Hook
|
||||
loadApp(/** name parameter optional */) {
|
||||
"com.example.demo.DemoClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// 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.
|
||||
|
||||
::: 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
|
||||
|
||||
> 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.
|
||||
|
||||
::: 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
|
||||
|
||||
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.
|
||||
|
||||
```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 {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
@@ -58,6 +76,11 @@ TargetClass.hook {
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
```kotlin
|
||||
// Resources Hook (2.0.0 will be discontinued)
|
||||
resources().hook {
|
||||
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.
|
||||
|
||||
::: 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
|
||||
|
||||
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
|
||||
loadApp(name = "com.android.browser") {
|
||||
ActivityClass.method {
|
||||
Activity::class.resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
returnType = UnitType
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
after {
|
||||
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?
|
||||
|
||||
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
|
||||
|
||||
```kotlin
|
||||
loadApp(name = "com.android.browser") {
|
||||
ActivityClass.apply {
|
||||
method {
|
||||
Activity::class.resolve().apply {
|
||||
firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
returnType = UnitType
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
after {
|
||||
AlertDialog.Builder(instance())
|
||||
@@ -133,10 +162,9 @@ loadApp(name = "com.android.browser") {
|
||||
.show()
|
||||
}
|
||||
}
|
||||
method {
|
||||
firstMethod {
|
||||
name = "onStart"
|
||||
emptyParam()
|
||||
returnType = UnitType
|
||||
emptyParameters()
|
||||
}.hook {
|
||||
after {
|
||||
// Your code here.
|
||||
@@ -154,7 +182,8 @@ For example, I want to get `com.example.demo.TestClass`.
|
||||
|
||||
```kotlin
|
||||
"com.example.demo.TestClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// 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
|
||||
"$packageName.TestClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -187,7 +217,7 @@ val TestClass by lazyClass("com.example.demo.TestClass")
|
||||
Use it when appropriate.
|
||||
|
||||
```kotlin
|
||||
TestClass.method {
|
||||
TestClass.resolve().firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -212,10 +242,9 @@ Add code in the body of the `encase` method.
|
||||
|
||||
```kotlin
|
||||
loadZygote {
|
||||
ActivityClass.method {
|
||||
Activity::class.resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
returnType = UnitType
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
after {
|
||||
// Your code here.
|
||||
@@ -242,12 +271,12 @@ Add code in the body of the `encase` method.
|
||||
|
||||
```kotlin
|
||||
loadSystem {
|
||||
ApplicationInfoClass.method {
|
||||
ApplicationInfo::class.resolve().firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
}
|
||||
PackageInfoClass.method {
|
||||
PackageInfo::class.resolve().firstMethod {
|
||||
// Your code here.
|
||||
}.hook {
|
||||
// Your code here.
|
||||
@@ -341,9 +370,9 @@ The first way, save the `Result` instance of the current injected object, and ca
|
||||
```kotlin
|
||||
// Set a variable to save the current instance
|
||||
val hookResult =
|
||||
method {
|
||||
resolve().firstMethod {
|
||||
name = "test"
|
||||
returnType = UnitType
|
||||
returnType = Void.TYPE
|
||||
}.hook {
|
||||
after {
|
||||
// ...
|
||||
@@ -358,9 +387,9 @@ The second method, call `removeSelf` in the Hook callback method to remove itsel
|
||||
> The following example
|
||||
|
||||
```kotlin
|
||||
method {
|
||||
resolve().firstMethod {
|
||||
name = "test"
|
||||
returnType = UnitType
|
||||
returnType = Void.TYPE
|
||||
}.hook {
|
||||
after {
|
||||
// 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
|
||||
|
||||
@@ -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).
|
||||
|
||||
::: 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
|
||||
|
||||
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
|
||||
|
||||
```kotlin
|
||||
ActivityClass.method {
|
||||
Activity::class.resolve().firstMethod {
|
||||
// Your code here.
|
||||
}.hook().after {
|
||||
// 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.
|
||||
|
||||
@@ -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`.
|
||||
|
||||
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
|
||||
|
||||
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 {
|
||||
loadZygote {
|
||||
ActivityClass.method {
|
||||
Activity::class.resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
before {
|
||||
// Your code here.
|
||||
@@ -64,9 +62,9 @@ object HookEntry : IYukiHookXposedInit {
|
||||
}
|
||||
}
|
||||
loadApp(name = "com.android.browser") {
|
||||
ActivityClass.method {
|
||||
Activity::class.resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
before {
|
||||
// Your code here.
|
||||
@@ -129,4 +127,12 @@ 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.
|
||||
|
||||
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") {
|
||||
// Member Hook
|
||||
"com.demo.test.TestClass".toClass()
|
||||
.method {
|
||||
.resolve()
|
||||
.firstMethod {
|
||||
name = "test"
|
||||
param(BooleanType)
|
||||
parameters(Boolean::class)
|
||||
}.hook {
|
||||
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
|
||||
|
||||
`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.
|
||||
|
||||
## 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
|
||||
|
||||
- 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`)
|
||||
- Kotlin 1.9.0+, Gradle 8+, Java 11, 17+, Android Gradle Plugin 8+
|
||||
|
||||
## Automatically Build Project
|
||||
|
||||
@@ -49,9 +41,6 @@ repositories:
|
||||
# Must be added when used as an Xposed Module, otherwise optional
|
||||
rovo89-xposed-api:
|
||||
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:
|
||||
# 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
|
||||
ksp-xposed:
|
||||
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.
|
||||
|
||||
Next, deploy plugins in your project `build.gradle.kts`.
|
||||
Next, deploy plugins in your project's `build.gradle.kts`.
|
||||
|
||||
> 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
|
||||
|
||||
@@ -97,6 +93,9 @@ Then, deploy dependencies in your project `build.gradle.kts`.
|
||||
dependencies {
|
||||
// Basic dependencies
|
||||
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
|
||||
compileOnly(de.robv.android.xposed.api)
|
||||
// Must be added when used as an Xposed Module, otherwise optional
|
||||
@@ -104,9 +103,80 @@ dependencies {
|
||||
}
|
||||
```
|
||||
|
||||
#### Version Catalog
|
||||
|
||||
Add repositories in your project's `build.gradle.kts`.
|
||||
|
||||
> Kotlin DSL
|
||||
|
||||
```kotlin
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
// Must be added when used as an Xposed Module, otherwise optional
|
||||
maven("https://api.xposed.info/")
|
||||
}
|
||||
```
|
||||
|
||||
Add dependency in your project's `gradle/libs.versions.toml`.
|
||||
|
||||
> 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 `build.gradle.kts` or `build.gradle`.
|
||||
Add repositories in your project's `build.gradle.kts`.
|
||||
|
||||
> Kotlin DSL
|
||||
|
||||
@@ -115,26 +185,11 @@ repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
// Must be added when used as an Xposed Module, otherwise optional
|
||||
maven { url("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/") }
|
||||
maven("https://api.xposed.info/")
|
||||
}
|
||||
```
|
||||
|
||||
> Groovy DSL
|
||||
|
||||
```groovy
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
// Must be added when used as an Xposed Module, otherwise optional
|
||||
maven { url '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
|
||||
|
||||
@@ -145,16 +200,7 @@ plugins {
|
||||
}
|
||||
```
|
||||
|
||||
> Groovy DSL
|
||||
|
||||
```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`.
|
||||
Add dependencies in your project's `build.gradle.kts`.
|
||||
|
||||
> Kotlin DSL
|
||||
|
||||
@@ -162,6 +208,9 @@ Add dependencies in your project `build.gradle.kts` or `build.gradle`.
|
||||
dependencies {
|
||||
// Basic dependency
|
||||
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
|
||||
compileOnly("de.robv.android.xposed:api:82")
|
||||
// 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 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
|
||||
|
||||
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
|
||||
|
@@ -4,22 +4,22 @@ The following are the related functions, Xposed Frameworks, Hook Frameworks and
|
||||
|
||||
> 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` |
|
||||
| ART Dynamic Method Hook | ✅ | Stable use in multiple scenarios |
|
||||
| Xposed Resources Hook | ❗ | Supported, but will be deprecated on `YukiHookAPI` `2.0.0` |
|
||||
| ART Dynamic Method Hook | ✅ | Stable use in multiple scenarios |
|
||||
| Xposed Resources Hook | ❗ | Supported, but will be removed on `YukiHookAPI` `2.0.0` |
|
||||
|
||||
> Extended Functions
|
||||
|
||||
| Name | ST | Description |
|
||||
| -------------------------------------------------------------------------------------------------- | --- | ------------------------------------------------------------------------------------------------------ |
|
||||
| [Reflection Extensions](../api/special-features/reflection) | ⭕ | Will be merge into [YukiReflection](https://github.com/HighCapable/YukiReflection) on `YukiHookAPI` `2.0.0` |
|
||||
| [Xposed Module Data Storage](../api/special-features/xposed-storage) | ✅ | Normal use |
|
||||
| [Xposed Module and Host Channel](../api/special-features/xposed-channel) | ✅ | 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 |
|
||||
| [Register Module Apps Activity](../api/special-features/host-inject#register-module-apps-activity) | ✅ | Normal use |
|
||||
| Name | ST | Description |
|
||||
| -------------------------------------------------------------------------------------------------- | --- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ~~[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 and Host Channel](../api/special-features/xposed-channel) | ✅ | 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 |
|
||||
| [Register Module Apps Activity](../api/special-features/host-inject#register-module-apps-activity) | ✅ | Normal use |
|
||||
|
||||
> 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.
|
||||
- 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.
|
||||
- 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.
|
||||
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
|
||||
|
||||
```kotlin
|
||||
loadApp(name = "com.android.browser") {
|
||||
ActivityClass.method {
|
||||
Activity::class.resolve().firstMethod {
|
||||
name = "onCreate"
|
||||
param(BundleClass)
|
||||
parameters(Bundle::class)
|
||||
}.hook {
|
||||
before {
|
||||
// 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.
|
||||
|
||||
::: 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)。
|
||||
|
||||
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: 简体中文
|
||||
link: /zh-cn/
|
||||
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
|
||||
Apache License Version 2.0
|
||||
|
||||
Copyright (C) 2019-2024 HighCapable
|
||||
Copyright (C) 2019 HighCapable
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (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.
|
||||
```
|
||||
|
||||
版权所有 © 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 中的异常,防止其阻断整个进程
|
||||
- 在自动处理程序中添加自动使用 "`" 来修复 Kotlin 关键字为包名的情况,感谢 [Fengning Zhu](https://github.com/zhufengning) 的 [PR](https://github.com/HighCapable/YukiHookAPI/pull/70)
|
||||
@@ -46,7 +55,7 @@
|
||||
- `constructor()` 的行为不再是 `constructor { emptyParam() }`
|
||||
- 新增 `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)
|
||||
- 移除 `Member` 的直接缓存功能并作废 ~~`YukiHookAPI.Configs.isEnableMemberCache`~~,保留 `Class` 的缓存功能
|
||||
@@ -55,7 +64,7 @@
|
||||
- 作废了 ~~`YukiHookAPI.Configs.isEnablePrefsBridgeCache`~~
|
||||
- 作废了 `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` 功能
|
||||
- 修复 `YukiHookPrefsBridge` 中的 `contains`、`all` 方法未判断 `native` 功能的问题
|
||||
@@ -64,7 +73,7 @@
|
||||
- 修改部分用于缓存的 `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)
|
||||
- 移除通过 Hook 或反射 API 内部方法、参数的检查功能
|
||||
@@ -84,7 +93,7 @@
|
||||
- 修改 `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)
|
||||
- 移动 `YukiHookAPI` 自动生成的入口类名称文件 `assets/yukihookapi_init` 到 `resources/META-INF/yukihookapi_init`
|
||||
@@ -98,7 +107,7 @@
|
||||
- 修复在 `PackageParam.AppLifecycle` 中可能存在多次注册生命周期的问题
|
||||
- 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` 不符的严重问题
|
||||
- 新增同一个进程多个包名的情况下未区分包名时,停止装载单例化的子 Hooker 并打印警告信息
|
||||
@@ -106,7 +115,7 @@
|
||||
- 修改 `MethodFinder`、`ConstructorFinder`、`ReflectionFactory` 中反射调用的方法参数名 `param` 为 `args`
|
||||
- 新增 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 进行了私有化处理
|
||||
@@ -148,7 +157,7 @@
|
||||
- 修复 `YukiHookLogger` 处理后的调试日志数据包名可能在 (Xposed) 宿主环境不正确的问题
|
||||
- 修复 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` 长达多个版本在 (Xposed) 宿主环境无法与模块通讯的问题
|
||||
@@ -158,7 +167,7 @@
|
||||
- `PackageParam` 中新增 `loadApp`、`loadZygote`、`loadSystem`、`withProcess` 的同名多参数方法
|
||||
- 修复了一些可能存在的 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 入口类名的致命错误
|
||||
- 添加 `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 待讨论
|
||||
|
||||
@@ -52,4 +54,4 @@ API 已经提供了 Xposed 原生 API 监听接口,你可以 [在这里](../co
|
||||
|
||||
- [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 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` 为最新版本以使用最新版本的功能。
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档,如遇到无法解决的问题,你可以通过 [联系我们](../about/contacts) 与我们联系。
|
||||
|
||||
:::
|
||||
|
||||
## 功能描述说明
|
||||
|
||||
> 功能描述主要介绍当前 API 的相关用法和用途。
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# YukiHookAPI <span class="symbol">- object</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# InjectYukiHookWithXposed <span class="symbol">- annotation</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# CurrentClass <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# GenericClass <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# HookClass <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# VariousClass <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# YukiMemberHookCreator <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# YukiResourcesHookCreator <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# ExecutorType <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# YukiHookPriority <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# BaseFinder <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# CountRules <span class="symbol">- class</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -2,6 +2,12 @@
|
||||
pageClass: code-page
|
||||
---
|
||||
|
||||
::: warning
|
||||
|
||||
由于维护成本,`YukiHookAPI` 从 `1.3.0` 版本开始将不再会对此文档进行更新且在 `2.0.0` 版本切换为 Dokka 插件自动生成的 API 文档。
|
||||
|
||||
:::
|
||||
|
||||
# ModifierRules <span class="symbol">- class</span>
|
||||
|
||||
```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