11# Xpler
22
3-
4-
53Xposed Kotlin 开发模板,更适合Kotlin编码风格。
64
7- 将本项目作为 ` module ` 引入项目,然后正常Xposed编写流程操作即可。
8-
95` Xpler ` 在原 ` Xposed Api ` 基础上进一步封装,使其支持Kotlin的DSL特性,更简洁的编写Hook逻辑。
106
117注意:使用本模板,你仍需要手动创建和配置 ` xposed_init ` 、` application meta-data ` 。
128
13-
14-
159## Xpler Api
1610
17- 作为原 ` Xposed Api ` 的封装项目,` Xpler ` 提供了部分基本Api。
18-
11+ 作为原 ` Xposed Api ` 的封装项目,` Xpler ` 提供了部分基本Api。[ ![ xpler] ( https://img.shields.io/github/v/release/ThatWorld/xpler )] ( https://central.sonatype.com/artifact/io.github.thatworld/xpler )
1912
13+ ``` txt
14+ implementation("io.github.thatworld:xpler:<version>")
15+ ```
2016
2117### HookEntrance.kt
2218
@@ -53,8 +49,6 @@ Xposed Kotlin 开发模板,更适合Kotlin编码风格。
5349
5450 而如果,你只是需要一个简单的Hook,并不需要复杂操作,可以试试 ` DefaultHookStart ` 接口。
5551
56-
57-
5852- DefaultHookStart
5953
6054 ``` kotlin
@@ -70,8 +64,6 @@ Xposed Kotlin 开发模板,更适合Kotlin编码风格。
7064
7165 该接口提供的 ` loadPackage ` 方法就是原始的 ` handleLoadPackage ` 操作。
7266
73-
74-
7567> 记得修改` xposed_init ` 中的入口类,如上述的入口类名为:` com.example.module.HookInit ` 。
7668>
7769> 还有,如果有混淆优化,记得保留 ` HookInit ` 入口类。
@@ -81,14 +73,10 @@ Xposed Kotlin 开发模板,更适合Kotlin编码风格。
8173> -keep class com.example.module.HookInit
8274> ```
8375
84-
85-
8676### HookState.kt
8777
8878该类汇总了框架状态,如果你想要判断模块是否生效、框架类型,可使用该类。
8979
90-
91-
9280### KtXposedHelpers.kt
9381
9482区别于原 `XposedHelpers` 该类提供了更符合Kotlin的编码风格:
@@ -173,8 +161,6 @@ Xposed Kotlin 开发模板,更适合Kotlin编码风格。
173161
174162 ` onUnhook{hookMethod, callback -> ..} ` 属于选写(可写/可不写)方法,当它被书写之后,该Hook 方法都会在执行一次之后被立即解开(即Hook逻辑至少被执行一次);或许你并未在 ` onUnhook ` 作用域内书写任何代码,但只要它出现了都会立即解开Hook,而 ` KtXposedHelpers ` 为 ` onUnhook ` 提供的作用域只是为了善后处理,仅此而已。
175163
176-
177-
178164- ` KtXposedHelpers ` 的其他操作:
179165
180166 获取模块中的Layout:
@@ -191,11 +177,9 @@ Xposed Kotlin 开发模板,更适合Kotlin编码风格。
191177
192178 更多:` getString ` 、` getColor ` 、` getAnimation ` 等,请自行阅读方法注释。
193179
194-
195-
196180### KtXposedMore.kt
197181
198- 得益于Kotlin的扩展特性,` Xpler ` 在部分类型的基础上增加系列扩展,以下是常用Api示例:
182+ 得益于Kotlin的扩展特性,` Xpler ` 在部分类型的基础上增加系列扩展,以下是常用Api示例:
199183
200184- 对 ` XC_LoadPackage.LoadPackageParam ` 类增加的扩展:
201185
@@ -225,18 +209,14 @@ Xposed Kotlin 开发模板,更适合Kotlin编码风格。
225209 val moduleDrawable = context.getModuleDrawable(R .drawable.module_background)
226210 ```
227211
228- - 对 ` Any ` 增加 ` lpparam ` 的扩展,可在任意对象中直接使用 ` lpparam ` 实例。
212+ - 对 ` Any ` 增加 ` lpparam ` 的扩展,可在任意对象中直接使用 ` lpparam ` 实例。
229213
230214- 其他扩展,请自行阅读方法注释。
231215
232-
233-
234216### XplerLog.kt
235217
236218在模块开发中更具通俗的Log工具类,与Log类的调用基本一致,支持LogCat面板等级输出日志。
237219
238-
239-
240220### HookEntity.kt
241221
242222为了更合适通俗的编码方式,对于需要被Hook的目标类及其方法 ` HookEntity ` 支持以传统类定义的方式来书写Hook逻辑,下称` Hook逻辑类 ` 。
@@ -319,8 +299,6 @@ class HMainActivity : HookEntity(){
319299
320300和前文一样 ` Xpler ` 提供的时机注解 ` @..Before ` 、` @..After ` 、` @..Replace ` ,中的 ` @..Replace ` 仍然会替换对应目标方法的逻辑,而这时对于 ` @..Before ` 、` @..After ` 则不会生效。
321301
322-
323-
324302## Live Template
325303
326304当大量的模板代码在代码中重复出现时,你可以很好的运用 Android Studio 的 ` Live Template ` 来快速生成它们的基础代码。
@@ -329,12 +307,6 @@ class HMainActivity : HookEntity(){
329307
330308![ xpler_live_template] ( images/xpler_live_template.png )
331309
332-
333-
334310你可以下载 [ xpler-templates.zip] ( https://github.com/GangJust/xpler/tree/master/docs/assets ) ,然后通过 Android Studio 菜单: File -> Manage IDE Settings -> Import Settings 导入该 ` Live Template ` 模板代码。
335311
336-
337-
338-
339-
340- > Xpler 在 [ FreedomPlus] ( https://github.com/GangJust/FreedomPlus ) 中被很好的实践运用,如果你想要更多示例,请点击 [ 这里] ( https://github.com/GangJust/FreedomPlus/tree/master/core/src/main/java/io/github/fplus/core/hook ) 。
312+ > Xpler 在 [ FreedomPlus] ( https://github.com/GangJust/FreedomPlus ) 中被很好的实践运用,如果你想要更多示例,请点击 [ 这里] ( https://github.com/GangJust/FreedomPlus/tree/master/core/src/main/java/io/github/fplus/core/hook ) 。
0 commit comments