docs: add milestone related plans & modify some documents

This commit is contained in:
2023-09-22 12:16:20 +08:00
parent ac316d1427
commit d6f83ffc3c
13 changed files with 178 additions and 119 deletions

View File

@@ -19,28 +19,11 @@
前身为 [开发学习项目](https://github.com/fankes/TMore) 中使用的 Innocent Xposed API现在重新命名并开源。
## 支持的功能
> 基本功能
- [x] Hook Framework 支持的基本 ART 动态方法 Hook 功能
- [x] Xposed 资源钩子 (Resources Hook) **(计划 2.x.x 版本作废)**
> Hook Frameworks API
- [x] [Rovo89 Xposed API](https://api.xposed.info)
- [ ] [Modern Xposed API](https://github.com/libxposed) **(计划 2.x.x 版本支持)**
## 扩展功能
- [x] 自动化 Xposed 模块构建 (完全无需自行创建 `assets/xposed_init`)
- [x] [New XSharedPreferences](https://github.com/LSPosed/LSPosed/wiki/New-XSharedPreferences#for-the-module)
- [x] DataChannel (宿主 ←→ 模块)
- [x] 混淆的字节码查找 & 反射 (由 [YukiReflection](https://github.com/fankes/YukiReflection) 提供支持)
## 开始使用
- [点击这里](https://fankes.github.io/YukiHookAPI/zh-cn/) 前往文档页面查看更多详细教程和内容。
[点击这里](https://fankes.github.io/YukiHookAPI/zh-cn/) 前往文档页面查看更多详细教程和内容。
有关支持性的相关信息,你可以直接 [点击这里](https://fankes.github.io/YukiHookAPI/zh-cn/guide/supportive) 进行查看。
## 合作项目

View File

@@ -20,29 +20,12 @@ The name is taken from ["ももくり" heroine Yuki Kurihara](https://www.bilibi
Formerly the Innocent Xposed API used in [Development Learning Project](https://github.com/fankes/TMore), now renamed and open sourced.
## Supports
> Basic Functions
- [x] Basic ART dynamic method hook functions supported by Hook Framework
- [x] Xposed Resources Hook **(Will be deprecated on 2.x.x)**
> Hook Frameworks API
- [x] [Rovo89 Xposed API](https://api.xposed.info)
- [ ] [Modern Xposed API](https://github.com/libxposed) **(Will be supported on 2.x.x)**
## Extensions
- [x] Automatic Xposed Module Build (No need to create `assets/xposed_init` by yourself)
- [x] [New XSharedPreferences](https://github.com/LSPosed/LSPosed/wiki/New-XSharedPreferences#for-the-module)
- [x] DataChannel (Host ←→ Module)
- [x] Obfuscated Bytecode Finding & Reflection by [YukiReflection](https://github.com/fankes/YukiReflection)
## Get Started
[Click here](https://fankes.github.io/YukiHookAPI/en/) go to the documentation page for more detailed tutorials and content.
For supportive related information, you can check it directly [click here](https://fankes.github.io/YukiHookAPI/en/guide/supportive).
## Cooperations
The following are projects that have collaborated and are using `YukiHookAPI`.

View File

@@ -5,6 +5,7 @@ const baseApiPath = '/api/public/com/highcapable/yukihookapi/';
const navigationLinks = {
start: [
'/guide/home',
'/guide/supportive',
'/guide/knowledge',
'/guide/quick-start',
'/guide/example',
@@ -127,10 +128,11 @@ export const navBarItems = {
text: 'Get Started',
children: [
{ text: 'Introduce', link: i18n.string(navigationLinks.start[0], 'en') },
{ text: 'Basic Knowledge', link: i18n.string(navigationLinks.start[1], 'en') },
{ text: 'Quick Start', link: i18n.string(navigationLinks.start[2], 'en') },
{ text: 'Usage Example', link: i18n.string(navigationLinks.start[3], 'en') },
{ text: 'Migrate from Xposed API', link: i18n.string(navigationLinks.start[4], 'en') }
{ text: 'Supportive', link: i18n.string(navigationLinks.start[1], 'en') },
{ text: 'Basic Knowledge', link: i18n.string(navigationLinks.start[2], 'en') },
{ text: 'Quick Start', link: i18n.string(navigationLinks.start[3], 'en') },
{ text: 'Usage Example', link: i18n.string(navigationLinks.start[4], 'en') },
{ text: 'Migrate from Other Hook APIs', link: i18n.string(navigationLinks.start[5], 'en') }
]
}, {
text: 'Configs',
@@ -176,10 +178,11 @@ export const navBarItems = {
text: '入门',
children: [
{ text: '介绍', link: i18n.string(navigationLinks.start[0], 'zh-cn') },
{ text: '基础知识', link: i18n.string(navigationLinks.start[1], 'zh-cn') },
{ text: '快速开始', link: i18n.string(navigationLinks.start[2], 'zh-cn') },
{ text: '用法示例', link: i18n.string(navigationLinks.start[3], 'zh-cn') },
{ text: '从 Xposed API 迁移', link: i18n.string(navigationLinks.start[4], 'zh-cn') }
{ text: '支持性', link: i18n.string(navigationLinks.start[1], 'zh-cn') },
{ text: '基础知识', link: i18n.string(navigationLinks.start[2], 'zh-cn') },
{ text: '快速开始', link: i18n.string(navigationLinks.start[3], 'zh-cn') },
{ text: '用法示例', link: i18n.string(navigationLinks.start[4], 'zh-cn') },
{ text: '从其它 Hook API 迁移', link: i18n.string(navigationLinks.start[5], 'zh-cn') }
]
}, {
text: '配置',

View File

@@ -2,7 +2,7 @@
> `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/fankes/YukiReflection) project, which can be used independently in any Android project.
The core part of this functionality has been decoupled into the [YukiReflection](https://github.com/fankes/YukiReflection) project, which can be used independently in any Java or Android project.
Now `YukiReflection` is integrated into `YukiHookAPI` as a core dependency.
@@ -151,6 +151,14 @@ Please note that the more the same type **Class** is matched, the slower the spe
:::
::: danger
After **YukiHookAPI** 2.x.x released, this function will be deprecated and will no longer be migrated to [YukiReflection](https://github.com/fankes/YukiReflection).
We welcome all developers to start using [DexKit](https://github.com/LuckyPray/DexKit), which is a igh-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.
:::
#### Get Started
Below is a simple usage example.

View File

@@ -105,7 +105,7 @@ object HookEntry : IYukiHookXposedInit {
```
:::
::: code-group-item Xposed API
::: code-group-item Rovo89 Xposed API
```kotlin
class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources {
@@ -163,24 +163,6 @@ class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInit
:::
::::
Yes, you read that right, just needing these codes can completely replace the Xposed API to achieve the same function.
Yes, you read that right, just needing these codes can completely replace the traditional Xposed API to achieve the same function.
Now, with the help of the efficient and powerful `YukiHookAPI`, you can implement a very simple Xposed Module.
## Suppored Hook Framework
The following are the `Hook Framework` and Xposed framework supported by `YukiHookAPI`.
| Hook Framework | ST | Description |
| --------------------------------------------------------- | --- | ----------------------------------------------------------------------------------------- |
| [LSPosed](https://github.com/LSPosed/LSPosed) | ✅ | Stable use in multiple scenarios |
| [LSPatch](https://github.com/LSPosed/LSPatch) | ⭕ | WIP after this project is improved |
| [EdXposed](https://github.com/ElderDrivers/EdXposed) | ❎ | Maintenance has stopped, no longer recommended |
| [Pine](https://github.com/canyie/pine) | ⭕ | Only available |
| [SandHook](https://github.com/asLody/SandHook) | ⭕ | Only available |
| [Whale](https://github.com/asLody/whale) | ⭕ | Need [xposed-hook-based-on-whale](https://github.com/WindySha/xposed-hook-based-on-whale) |
| [YAHFA](https://github.com/PAGalaxyLab/YAHFA) | ❗ | Need to implement the Xposed API yourself |
| [FastHook](https://github.com/turing-technician/FastHook) | ❗ | Need to implement the Xposed API yourself |
| [Epic](https://github.com/tiann/epic) | ❗ | Need [Dexposed](https://github.com/alibaba/dexposed) by yourself |
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | Only available for Xposed Module |
| [Xposed](https://github.com/rovo89/Xposed) | ⭕ | Recommended minimum system version is Android 7.0 |

View File

@@ -1,8 +1,12 @@
# Migrate from Xposed API
# Migrate from Other Hook APIs
> If you are familiar with Xposed API, you can refer to the same point below to quickly migrate your API to `YukiHookAPI`.
This document can help you quickly migrate from the Hook APIs you are familiar with to `YukiHookAPI` to become familiar with the related writing methods of `YukiHookAPI`.
## Migrate Hook Entry Point
## Rovo89 Xposed API
> If you are familiar with [Rovo89 Xposed API](https://api.xposed.info/), you can refer to the same point below to quickly migrate your API to `YukiHookAPI`.
### Migrate Hook Entry Point
> Migrated from `XC_LoadPackage.LoadPackageParam` to `PackageParam`.
@@ -52,7 +56,7 @@ override fun onHook() = encase {
```
:::
::: code-group-item Xposed API
::: code-group-item Rovo89 Xposed API
```kotlin
private lateinit var moduleResources: XModuleResources
@@ -67,7 +71,7 @@ override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
// Get the ApplicationInfo of the current Hook
lpparam.applicationInfo
// Get the system context object
// There is no ready-made calling method in the native Xposed API, you need to reflect ActivityThread to achieve it
// There is no ready-made calling method in the Rovo89 Xposed API, you need to reflect ActivityThread to achieve it
// Get the host Application lifecycle
AndroidAppHelper.currentApplication()
// Class Hook
@@ -97,11 +101,11 @@ override fun handleInitPackageResources(resparam: XC_InitPackageResources.InitPa
:::
::::
## Migrate Hook Method Body
### Migrate Hook Method Body
> Migrated from `XC_MethodHook.MethodHookParam` to `HookParam`.
### Before/After Hook
#### Before/After Hook
`YukiHookAPI` also implements the `lambda` method body `this` usage for `HookParam`, and the `HookParam` object can be obtained globally in the method bodies such as `beforeHook` and `afterHook`.
@@ -148,7 +152,7 @@ afterHook {
```
:::
::: code-group-item Xposed API
::: code-group-item Rovo89 Xposed API
```kotlin
override fun afterHookedMethod(param: MethodHookParam) {
@@ -188,7 +192,7 @@ override fun afterHookedMethod(param: MethodHookParam) {
:::
::::
### Replace Hook
#### Replace Hook
The `replaceHook` method is special, and the `YukiHookAPI` makes a variety of forms for it to choose from.
@@ -226,7 +230,7 @@ intercept()
```
:::
::: code-group-item Xposed API
::: code-group-item Rovo89 Xposed API
```kotlin
/// A method with no return value void
@@ -258,6 +262,6 @@ override fun replaceHookedMethod(param: MethodHookParam) = null
:::
::::
## Migrate Other Features
## Migrate More Functions Related to Hook API
`YukiHookAPI` is a complete rewrite of the Xposed API, you can refer to [API Document](../api/home) and [Special Features](../api/special-features/reflection) to determine some functional Migration and use.
`YukiHookAPI` is a brand new Hook API, which is fundamentally different from other Hook APIs, you can refer to [API Document](../api/home) and [Special Features](../api/special-features/reflection) to determine some functional Migration and use.

View File

@@ -299,7 +299,7 @@ Then, you can start writing Hook code.
For configuration details related to use as an Xposed Module, you can [click here](../config/xposed-using) to continue reading.
If you are currently using Xposed API, you can refer to [Migrate from Xposed API](../guide/move-to-new-api).
If you are currently using Hook APIs such as Rovo89 Xposed API, you can refer to [Migrate from Other Hook APIs](../guide/move-to-new-api).
### Use as Hook API
@@ -311,7 +311,7 @@ Create your custom `Application`.
Regardless of the **Hook Framework** you use, you need to add its docking Xposed dependency support.
If the target **Hook Framework** does not integrate Xposed API, you need to implement and connect **XposedBridge** by yourself.
If the target **Hook Framework** does not integrate Rovo89 Xposed API, you need to implement and connect **XposedBridge** by yourself.
:::

View File

@@ -0,0 +1,51 @@
# Supportive
The following are the related functions, Xposed Frameworks, Hook Frameworks and Hook APIs supported by `YukiHookAPI`.
> Basic Functions
| Name | ST | Description |
| -------------------------- | --- | ---------------------------------------------------------------------------------------------------------------- |
| Xposed Module Auto Builder | ✅ | Will use [New Xposed Module Config Plan](https://github.com/fankes/YukiHookAPI/issues/49) on `YukiHookAPI` 2.x.x |
| ART Dynamic Method Hook | ✅ | Stable use in multiple scenarios |
| Xposed Resources Hook | ❗ | Supported, but will be deprecated on `YukiHookAPI` 2.x.x |
> Extended Functions
| Name | ST | Description |
| -------------------------------------------------------------------------------------------------- | --- | ---------------------------------------------------------------------------------------------------- |
| [Reflection Extensions](../api/special-features/reflection) | ⭕ | Will be merge into [YukiReflection](https://github.com/fankes/YukiReflection) on `YukiHookAPI` 2.x.x |
| [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
| Name | ST | Description |
| ---------------------------------------------------- | --- | --------------------------------------------------------------------------- |
| [LSPosed](https://github.com/LSPosed/LSPosed) | ✅ | Stable use in multiple scenarios |
| [LSPatch](https://github.com/LSPosed/LSPatch) | ⭕ | Support, API support will be gradually added after the project is completed |
| [EdXposed](https://github.com/ElderDrivers/EdXposed) | ❎ | Maintenance has stopped and is no longer recommended |
| [Dreamland](https://github.com/canyie/Dreamland) | ⭕ | Theoretical support (not tested by developer) |
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | Hook functions normally (some functions have restrictions) |
| [Xposed](https://github.com/rovo89/Xposed) | ❎ | Maintenance has stopped and is no longer recommended |
> Hook Frameworks
| Name | ST | Description |
| --------------------------------------------------------- | --- | -------------------------------------------------------------------------------------------- |
| [Pine](https://github.com/canyie/pine) | ⭕ | Theoretical support (not tested by developer) |
| [SandHook](https://github.com/asLody/SandHook) | ❎ | The latests Android are not supported, you need to integrated the Rovo89 Xposed API yourself |
| [Whale](https://github.com/asLody/whale) | ❎ | The latests Android are not supported, you need to integrated the Rovo89 Xposed API yourself |
| [YAHFA](https://github.com/PAGalaxyLab/YAHFA) | ❎ | The latests Android are not supported, you need to integrated the Rovo89 Xposed API yourself |
| [FastHook](https://github.com/turing-technician/FastHook) | ❎ | Maintenance has stopped and is no longer recommended |
| [Epic](https://github.com/tiann/epic) | ❎ | Maintenance has stopped and is no longer recommended |
> Hook APIs
| Name | ST | Description |
| ------------------------------------------------- | --- | ---------------------------------------- |
| [Rovo89 Xposed API](https://api.xposed.info/) | ✅ | Stable use in multiple scenarios |
| [Modern Xposed API](https://github.com/libxposed) | ❎ | Will be supported on `YukiHookAPI` 2.x.x |

View File

@@ -2,7 +2,7 @@
> `YukiHookAPI` 为开发者封装了一套接近零反射写法的反射 API它几乎可以完全取代原生 Java 的反射 API 相关用法。
此功能的核心部分已被解耦合为 [YukiReflection](https://github.com/fankes/YukiReflection) 项目,它可以独立使用于任何 Android 项目中。
此功能的核心部分已被解耦合为 [YukiReflection](https://github.com/fankes/YukiReflection) 项目,它可以独立使用于任何 Java、Android 项目中。
现在 `YukiReflection` 作为核心依赖集成于 `YukiHookAPI`
@@ -135,6 +135,14 @@ var isExist = "com.demo.Test".hasClass(customClassLoader)
:::
::: danger
**YukiHookAPI** 发布 2.x.x 版本后,此功能将被标记为作废,且不再会迁移到 [YukiReflection](https://github.com/fankes/YukiReflection)。
我们欢迎各位开发者开始使用 [DexKit](https://github.com/LuckyPray/DexKit),它是一个使用 C++ 实现的 **Dex** 高性能运行时解析库,在性能方面比 Java 层更加高效与优秀,目前尚在开发阶段,欢迎提出宝贵建议。
:::
#### 开始使用
下面是一个简单的用法示例。

View File

@@ -105,7 +105,7 @@ object HookEntry : IYukiHookXposedInit {
```
:::
::: code-group-item Xposed API
::: code-group-item Rovo89 Xposed API
```kotlin
class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources {
@@ -163,24 +163,6 @@ class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInit
:::
::::
是的,你没有看错,仅仅就需要这些代码,就能完全取代 Xposed API 实现同样的功能。
是的,你没有看错,仅仅就需要这些代码,就能完全取代传统的 Xposed API 实现同样的功能。
现在,借助高效强大的 `YukiHookAPI`,你就可以实现一个非常简单的 Xposed 模块。
## 支持的 Hook Framework
以下是 `YukiHookAPI` 支持的 `Hook Framework` 以及 Xposed 框架。
| Hook Framework | ST | Description |
| --------------------------------------------------------- | --- | ----------------------------------------------------------------------------------------- |
| [LSPosed](https://github.com/LSPosed/LSPosed) | ✅ | 多场景下稳定使用 |
| [LSPatch](https://github.com/LSPosed/LSPatch) | ⭕ | 将在此项目完善后逐渐加入 API 支持 |
| [EdXposed](https://github.com/ElderDrivers/EdXposed) | ❎ | 已停止维护,不再推荐使用 |
| [Pine](https://github.com/canyie/pine) | ⭕ | 可以使用 |
| [SandHook](https://github.com/asLody/SandHook) | ⭕ | 可以使用 |
| [Whale](https://github.com/asLody/whale) | ⭕ | 需要 [xposed-hook-based-on-whale](https://github.com/WindySha/xposed-hook-based-on-whale) |
| [YAHFA](https://github.com/PAGalaxyLab/YAHFA) | ❗ | 需要自行实现 Xposed API |
| [FastHook](https://github.com/turing-technician/FastHook) | ❗ | 需要自行实现 Xposed API |
| [Epic](https://github.com/tiann/epic) | ❗ | 需要自行对接 [Dexposed](https://github.com/alibaba/dexposed) |
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | 可以作为模块使用 |
| [Xposed](https://github.com/rovo89/Xposed) | ⭕ | 建议最低系统版本为 Android 7.0 |

View File

@@ -1,8 +1,12 @@
# 从 Xposed API 迁移
# 从其它 Hook API 迁移
> 若你熟悉 Xposed API你可以参考下方的相同点将自己的 API 快速迁移到 `YukiHookAPI`。
此文档可以帮助你快速从你熟悉的 Hook API 迁移到 `YukiHookAPI` 来熟悉对 `YukiHookAPI` 的相关写法
## 迁移 Hook 入口点
## Rovo89 Xposed API
> 若你熟悉 [Rovo89 Xposed API](https://api.xposed.info/),你可以参考下方的相同点将自己的 API 快速迁移到 `YukiHookAPI`。
### 迁移 Hook 入口点
> 从 `XC_LoadPackage.LoadPackageParam` 迁移至 `PackageParam`。
@@ -52,7 +56,7 @@ override fun onHook() = encase {
```
:::
::: code-group-item Xposed API
::: code-group-item Rovo89 Xposed API
```kotlin
private lateinit var moduleResources: XModuleResources
@@ -67,7 +71,7 @@ override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
// 得到当前 Hook 的 ApplicationInfo
lpparam.applicationInfo
// 得到系统上下文对象
// 在原生 Xposed API 中没有现成的调用方法,你需要自行反射 ActivityThread 来实现
// 在 Rovo89 Xposed API 中没有现成的调用方法,你需要自行反射 ActivityThread 来实现
// 得到宿主 Application 生命周期
AndroidAppHelper.currentApplication()
// Class Hook
@@ -97,11 +101,11 @@ override fun handleInitPackageResources(resparam: XC_InitPackageResources.InitPa
:::
::::
## 迁移 Hook 方法体
### 迁移 Hook 方法体
> 从 `XC_MethodHook.MethodHookParam` 迁移至 `HookParam`。
### Before/After Hook
#### Before/After Hook
`YukiHookAPI` 同样对 `HookParam` 实现了 `lambda` 方法体 `this` 用法,在 `beforeHook``afterHook` 等方法体内即可全局得到 `HookParam` 对象。
@@ -148,7 +152,7 @@ afterHook {
```
:::
::: code-group-item Xposed API
::: code-group-item Rovo89 Xposed API
```kotlin
override fun afterHookedMethod(param: MethodHookParam) {
@@ -188,7 +192,7 @@ override fun afterHookedMethod(param: MethodHookParam) {
:::
::::
### Replace Hook
#### Replace Hook
`replaceHook` 方法比较特殊,`YukiHookAPI` 为它做出了多种形式以供选择。
@@ -226,7 +230,7 @@ intercept()
```
:::
::: code-group-item Xposed API
::: code-group-item Rovo89 Xposed API
```kotlin
/// 无返回值的方法 void
@@ -258,6 +262,6 @@ override fun replaceHookedMethod(param: MethodHookParam) = null
:::
::::
## 迁移其它功能
## 迁移更多有关 Hook API 的功能
`YukiHookAPI` 对 Xposed API 进行了完全重写,你可以参考 [API 文档](../api/home) 以及 [特色功能](../api/special-features/reflection) 来决定一些功能性的迁移和使用。
`YukiHookAPI` 是一套全新的 Hook API与其它 Hook API 存在着本质区别,你可以参考 [API 文档](../api/home) 以及 [特色功能](../api/special-features/reflection) 来决定一些功能性的迁移和使用。

View File

@@ -295,7 +295,7 @@ override fun onInit() = configs {
有关作为 Xposed 模块使用的相关配置详细内容,你可以 [点击这里](../config/xposed-using) 继续阅读。
若你目前正在使用 Xposed API你可以参考 [ Xposed API 迁移](../guide/move-to-new-api)。
若你目前正在使用 Rovo89 Xposed API 等 Hook API你可以参考 [其它 Hook API 迁移](../guide/move-to-new-api)。
### 作为 Hook API 使用
@@ -307,7 +307,7 @@ override fun onInit() = configs {
无论使用任何 **Hook Framework**,你都需要加入其对接的 Xposed 依赖支持。
若目标 **Hook Framework** 没有集成 Xposed API 你需要自行实现并对接 **XposedBridge**
若目标 **Hook Framework** 没有集成 Rovo89 Xposed API 你需要自行实现并对接 **XposedBridge**
:::

View File

@@ -0,0 +1,51 @@
# 支持性
以下是 `YukiHookAPI` 支持的相关功能、Xposed 框架、Hook Frameworks、Hook APIs。
> 基本功能
| Name | ST | Description |
| -------------------------------- | --- | ------------------------------------------------------------------------------------------------------------- |
| 自动化 Xposed 模块构建 | ✅ | 计划 `YukiHookAPI` 2.x.x 版本使用 [新的 Xposed 模块配置方案](https://github.com/fankes/YukiHookAPI/issues/49) |
| ART 动态方法 Hook | ✅ | 多场景下稳定使用 |
| Xposed 资源钩子 (Resources Hook) | ❗ | 支持,但计划 `YukiHookAPI` 2.x.x 版本作废 |
> 扩展功能
| Name | ST | Description |
| -------------------------------------------------------------------------------------- | --- | ---------------------------------------------------------------------------------------------- |
| [字节码与反射扩展](../api/special-features/reflection) | ⭕ | 计划 `YukiHookAPI` 2.x.x 版本合并到 [YukiReflection](https://github.com/fankes/YukiReflection) |
| [Xposed 模块数据存储](../api/special-features/xposed-storage) | ✅ | 正常使用 |
| [Xposed 模块与宿主通讯桥](../api/special-features/xposed-channel) | ✅ | 正常使用 |
| [宿主生命周期扩展](../api/special-features/host-lifecycle) | ✅ | 正常使用 |
| [注入模块资源 (Resources)](../api/special-features/host-inject#注入模块资源-resources) | ✅ | 正常使用 |
| [注册模块 Activity](../api/special-features/host-inject#注册模块-activity) | ✅ | 正常使用 |
> Xposed 框架
| Name | ST | Description |
| ---------------------------------------------------- | --- | --------------------------------------- |
| [LSPosed](https://github.com/LSPosed/LSPosed) | ✅ | 多场景下稳定使用 |
| [LSPatch](https://github.com/LSPosed/LSPatch) | ⭕ | 支持,将在此项目完善后逐渐加入 API 支持 |
| [EdXposed](https://github.com/ElderDrivers/EdXposed) | ❎ | 已停止维护,不再推荐使用 |
| [Dreamland](https://github.com/canyie/Dreamland) | ⭕ | 理论支持 (未经过开发者测试) |
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | Hook 功能正常 (部分功能有限制) |
| [Xposed](https://github.com/rovo89/Xposed) | ❎ | 已停止维护,不再推荐使用 |
> Hook 框架 (Hook Frameworks)
| Name | ST | Description |
| --------------------------------------------------------- | --- | -------------------------------------------------------- |
| [Pine](https://github.com/canyie/pine) | ⭕ | 理论支持 (未经过开发者测试) |
| [SandHook](https://github.com/asLody/SandHook) | ❎ | 不支持较新版本的 Android需要自行对接 Rovo89 Xposed API |
| [Whale](https://github.com/asLody/whale) | ❎ | 不支持较新版本的 Android需要自行对接 Rovo89 Xposed API |
| [YAHFA](https://github.com/PAGalaxyLab/YAHFA) | ❎ | 不支持较新版本的 Android需要自行对接 Rovo89 Xposed API |
| [FastHook](https://github.com/turing-technician/FastHook) | ❎ | 已停止维护,不再推荐使用 |
| [Epic](https://github.com/tiann/epic) | ❎ | 已停止维护,不再推荐使用 |
> Hook APIs
| Name | ST | Description |
| ------------------------------------------------- | --- | --------------------------------- |
| [Rovo89 Xposed API](https://api.xposed.info/) | ✅ | 多场景下稳定使用 |
| [Modern Xposed API](https://github.com/libxposed) | ❎ | 计划 `YukiHookAPI` 2.x.x 版本支持 |