From d6f83ffc3c66ba46b36da8e43c909c26fb4762fd Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Fri, 22 Sep 2023 12:16:20 +0800 Subject: [PATCH] docs: add milestone related plans & modify some documents --- README-zh-CN.md | 23 ++------- README.md | 21 +------- docs-source/src/.vuepress/configs/template.ts | 19 ++++--- .../src/en/api/special-features/reflection.md | 10 +++- docs-source/src/en/guide/home.md | 24 ++------- docs-source/src/en/guide/move-to-new-api.md | 28 +++++----- docs-source/src/en/guide/quick-start.md | 4 +- docs-source/src/en/guide/supportive.md | 51 +++++++++++++++++++ .../zh-cn/api/special-features/reflection.md | 10 +++- docs-source/src/zh-cn/guide/home.md | 24 ++------- .../src/zh-cn/guide/move-to-new-api.md | 28 +++++----- docs-source/src/zh-cn/guide/quick-start.md | 4 +- docs-source/src/zh-cn/guide/supportive.md | 51 +++++++++++++++++++ 13 files changed, 178 insertions(+), 119 deletions(-) create mode 100644 docs-source/src/en/guide/supportive.md create mode 100644 docs-source/src/zh-cn/guide/supportive.md diff --git a/README-zh-CN.md b/README-zh-CN.md index 7430f5f8..e9fe5ec8 100644 --- a/README-zh-CN.md +++ b/README-zh-CN.md @@ -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) 进行查看。 ## 合作项目 diff --git a/README.md b/README.md index 8b54a5a7..68978583 100644 --- a/README.md +++ b/README.md @@ -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`. diff --git a/docs-source/src/.vuepress/configs/template.ts b/docs-source/src/.vuepress/configs/template.ts index be37adfc..79ad5167 100644 --- a/docs-source/src/.vuepress/configs/template.ts +++ b/docs-source/src/.vuepress/configs/template.ts @@ -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: '配置', diff --git a/docs-source/src/en/api/special-features/reflection.md b/docs-source/src/en/api/special-features/reflection.md index d580066d..d27c3397 100644 --- a/docs-source/src/en/api/special-features/reflection.md +++ b/docs-source/src/en/api/special-features/reflection.md @@ -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. diff --git a/docs-source/src/en/guide/home.md b/docs-source/src/en/guide/home.md index 0b06a309..e10ea570 100644 --- a/docs-source/src/en/guide/home.md +++ b/docs-source/src/en/guide/home.md @@ -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 | \ No newline at end of file +Now, with the help of the efficient and powerful `YukiHookAPI`, you can implement a very simple Xposed Module. \ No newline at end of file diff --git a/docs-source/src/en/guide/move-to-new-api.md b/docs-source/src/en/guide/move-to-new-api.md index 714f2644..91bd3b98 100644 --- a/docs-source/src/en/guide/move-to-new-api.md +++ b/docs-source/src/en/guide/move-to-new-api.md @@ -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. \ No newline at end of file +`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. \ No newline at end of file diff --git a/docs-source/src/en/guide/quick-start.md b/docs-source/src/en/guide/quick-start.md index edce1e70..a95a8174 100644 --- a/docs-source/src/en/guide/quick-start.md +++ b/docs-source/src/en/guide/quick-start.md @@ -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. ::: diff --git a/docs-source/src/en/guide/supportive.md b/docs-source/src/en/guide/supportive.md new file mode 100644 index 00000000..dddbd60a --- /dev/null +++ b/docs-source/src/en/guide/supportive.md @@ -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 | \ No newline at end of file diff --git a/docs-source/src/zh-cn/api/special-features/reflection.md b/docs-source/src/zh-cn/api/special-features/reflection.md index b66a3460..b065d3e4 100644 --- a/docs-source/src/zh-cn/api/special-features/reflection.md +++ b/docs-source/src/zh-cn/api/special-features/reflection.md @@ -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 层更加高效与优秀,目前尚在开发阶段,欢迎提出宝贵建议。 + +::: + #### 开始使用 下面是一个简单的用法示例。 diff --git a/docs-source/src/zh-cn/guide/home.md b/docs-source/src/zh-cn/guide/home.md index 0016f581..e03e4617 100644 --- a/docs-source/src/zh-cn/guide/home.md +++ b/docs-source/src/zh-cn/guide/home.md @@ -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 | \ No newline at end of file +现在,借助高效强大的 `YukiHookAPI`,你就可以实现一个非常简单的 Xposed 模块。 \ No newline at end of file diff --git a/docs-source/src/zh-cn/guide/move-to-new-api.md b/docs-source/src/zh-cn/guide/move-to-new-api.md index 8b857975..4d93b7ba 100644 --- a/docs-source/src/zh-cn/guide/move-to-new-api.md +++ b/docs-source/src/zh-cn/guide/move-to-new-api.md @@ -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) 来决定一些功能性的迁移和使用。 \ No newline at end of file +`YukiHookAPI` 是一套全新的 Hook API,与其它 Hook API 存在着本质区别,你可以参考 [API 文档](../api/home) 以及 [特色功能](../api/special-features/reflection) 来决定一些功能性的迁移和使用。 \ No newline at end of file diff --git a/docs-source/src/zh-cn/guide/quick-start.md b/docs-source/src/zh-cn/guide/quick-start.md index 568baac3..39ed5ebb 100644 --- a/docs-source/src/zh-cn/guide/quick-start.md +++ b/docs-source/src/zh-cn/guide/quick-start.md @@ -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**。 ::: diff --git a/docs-source/src/zh-cn/guide/supportive.md b/docs-source/src/zh-cn/guide/supportive.md new file mode 100644 index 00000000..25c5a3b1 --- /dev/null +++ b/docs-source/src/zh-cn/guide/supportive.md @@ -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 版本支持 | \ No newline at end of file