mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-09 12:04:07 +08:00
docs: add milestone related plans & modify some documents
This commit is contained in:
@@ -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 层更加高效与优秀,目前尚在开发阶段,欢迎提出宝贵建议。
|
||||
|
||||
:::
|
||||
|
||||
#### 开始使用
|
||||
|
||||
下面是一个简单的用法示例。
|
||||
|
@@ -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 模块。
|
@@ -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) 来决定一些功能性的迁移和使用。
|
@@ -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**。
|
||||
|
||||
:::
|
||||
|
||||
|
51
docs-source/src/zh-cn/guide/supportive.md
Normal file
51
docs-source/src/zh-cn/guide/supportive.md
Normal 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 版本支持 |
|
Reference in New Issue
Block a user