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

@@ -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 |
现在,借助高效强大的 `YukiHookAPI`,你就可以实现一个非常简单的 Xposed 模块。

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 版本支持 |