Update README.md

This commit is contained in:
2022-02-14 12:09:55 +08:00
parent 0aba374b02
commit 9b6f108c22

View File

@@ -47,6 +47,70 @@
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | 可以作为模块使用 |
| [Xposed](https://github.com/rovo89/Xposed) | ❎ | 未测试,不再推荐使用 |
# Advantage
以前,我们在构建 Xposed 模块的时候,首先需要在 `assets` 下创建 `xposed_init` 文件。<br/><br/>
然后,将自己的入口类名手动填入文件中,使用 `XposedHelper` 去实现我们的 Hook 逻辑。
- 示例如下
```kotlin
class MainHook : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
if (lpparam.packageName == "com.android.browser")
XposedHelpers.findAndHookMethod(
Activity::class.java.name,
lpparam.classLoader,
"onCreate",
Bundle::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam?) {
// Your code here.
}
override fun afterHookedMethod(param: MethodHookParam?) {
// Your code here.
}
})
}
}
```
`Kotlin` 作为 Android 主要开发语言以来,这套 API 用起来确实已经不是很优雅了。<br/><br/>
有没有什么 <b>好用、轻量、优雅</b> 的解决办法呢?<br/><br/>
本着这样的想法,于是 `YukiHookAPI` 就这样诞生了,我们只需要编写少量的代码,一切时间开销和花费交给自动化处理。
- 示例如下
```kotlin
@InjectYukiHookWithXposed
class MainHook : YukiHookXposedInitProxy {
override fun onHook() = encase {
loadApp(name = "com.android.browser") {
ActivityClass.hook {
injectMember {
method {
name = "onCreate"
param(BundleClass)
}
beforeHook {
// Your code here.
}
afterHook {
// Your code here.
}
}
}
}
}
}
```
你没有看错,仅仅就需要这几行代码,就一切安排妥当。<br/><br/>
代码量少,逻辑清晰,借助高效强大的 `YukiHookAPI`,你就可以实现一个非常简单的 Xposed 模块。
# Get Started
- 你可以点击[快速开始](https://github.com/fankes/YukiHookAPI/wiki#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B),集成 `YukiHookAPI` 并开始使用。