mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Added "isExcludeSelf" param function of loadApp in PackageParam
This commit is contained in:
@@ -364,6 +364,18 @@ inline fun loadApp(vararg name: String, initiate: PackageParam.() -> Unit)
|
|||||||
fun loadApp(name: String, vararg hooker: YukiBaseHooker)
|
fun loadApp(name: String, vararg hooker: YukiBaseHooker)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```kotlin:no-line-numbers
|
||||||
|
inline fun loadApp(isExcludeSelf: Boolean, initiate: PackageParam.() -> Unit)
|
||||||
|
```
|
||||||
|
|
||||||
|
```kotlin:no-line-numbers
|
||||||
|
fun loadApp(isExcludeSelf: Boolean, hooker: YukiBaseHooker)
|
||||||
|
```
|
||||||
|
|
||||||
|
```kotlin:no-line-numbers
|
||||||
|
fun loadApp(isExcludeSelf: Boolean, vararg hooker: YukiBaseHooker)
|
||||||
|
```
|
||||||
|
|
||||||
**Change Records**
|
**Change Records**
|
||||||
|
|
||||||
`v1.0` `first`
|
`v1.0` `first`
|
||||||
@@ -376,9 +388,13 @@ fun loadApp(name: String, vararg hooker: YukiBaseHooker)
|
|||||||
|
|
||||||
新增两个方法,可以同时装载多个 APP 与子 Hooker
|
新增两个方法,可以同时装载多个 APP 与子 Hooker
|
||||||
|
|
||||||
|
`v1.1.5` `modified`
|
||||||
|
|
||||||
|
新增三个方法,可以使用参数 `isExcludeSelf` 排除模块自身
|
||||||
|
|
||||||
**Function Illustrate**
|
**Function Illustrate**
|
||||||
|
|
||||||
> 装载并 Hook 指定包名的 APP。
|
> 装载并 Hook 指定、全部包名的 APP。
|
||||||
|
|
||||||
`name` 为 APP 的包名,后方的两个参数一个可作为 `lambda` 方法体使用,一个可以直接装载子 Hooker。
|
`name` 为 APP 的包名,后方的两个参数一个可作为 `lambda` 方法体使用,一个可以直接装载子 Hooker。
|
||||||
|
|
||||||
@@ -416,6 +432,19 @@ loadApp {
|
|||||||
loadApp(hooker = CustomHooker)
|
loadApp(hooker = CustomHooker)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
若要在全部可被 Hook 的 APP 中过滤掉模块自身,你只需加入 `isExcludeSelf = true`。
|
||||||
|
|
||||||
|
> 示例如下
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
// 使用 lambda
|
||||||
|
loadApp(isExcludeSelf = true) {
|
||||||
|
// Your code here.
|
||||||
|
}
|
||||||
|
// 使用 Hooker
|
||||||
|
loadApp(isExcludeSelf = true, hooker = CustomHooker)
|
||||||
|
```
|
||||||
|
|
||||||
若想要同时装载多个需要 Hook 的 APP,可以直接使用如下方式。
|
若想要同时装载多个需要 Hook 的 APP,可以直接使用如下方式。
|
||||||
|
|
||||||
> The following example
|
> The following example
|
||||||
|
@@ -356,6 +356,18 @@ inline fun loadApp(vararg name: String, initiate: PackageParam.() -> Unit)
|
|||||||
fun loadApp(name: String, vararg hooker: YukiBaseHooker)
|
fun loadApp(name: String, vararg hooker: YukiBaseHooker)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```kotlin:no-line-numbers
|
||||||
|
inline fun loadApp(isExcludeSelf: Boolean, initiate: PackageParam.() -> Unit)
|
||||||
|
```
|
||||||
|
|
||||||
|
```kotlin:no-line-numbers
|
||||||
|
fun loadApp(isExcludeSelf: Boolean, hooker: YukiBaseHooker)
|
||||||
|
```
|
||||||
|
|
||||||
|
```kotlin:no-line-numbers
|
||||||
|
fun loadApp(isExcludeSelf: Boolean, vararg hooker: YukiBaseHooker)
|
||||||
|
```
|
||||||
|
|
||||||
**变更记录**
|
**变更记录**
|
||||||
|
|
||||||
`v1.0` `添加`
|
`v1.0` `添加`
|
||||||
@@ -368,9 +380,13 @@ fun loadApp(name: String, vararg hooker: YukiBaseHooker)
|
|||||||
|
|
||||||
新增两个方法,可以同时装载多个 APP 与子 Hooker
|
新增两个方法,可以同时装载多个 APP 与子 Hooker
|
||||||
|
|
||||||
|
`v1.1.5` `修改`
|
||||||
|
|
||||||
|
新增三个方法,可以使用参数 `isExcludeSelf` 排除模块自身
|
||||||
|
|
||||||
**功能描述**
|
**功能描述**
|
||||||
|
|
||||||
> 装载并 Hook 指定包名的 APP。
|
> 装载并 Hook 指定、全部包名的 APP。
|
||||||
|
|
||||||
`name` 为 APP 的包名,后方的两个参数一个可作为 `lambda` 方法体使用,一个可以直接装载子 Hooker。
|
`name` 为 APP 的包名,后方的两个参数一个可作为 `lambda` 方法体使用,一个可以直接装载子 Hooker。
|
||||||
|
|
||||||
@@ -408,6 +424,19 @@ loadApp {
|
|||||||
loadApp(hooker = CustomHooker)
|
loadApp(hooker = CustomHooker)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
若要在全部可被 Hook 的 APP 中过滤掉模块自身,你只需加入 `isExcludeSelf = true`。
|
||||||
|
|
||||||
|
> 示例如下
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
// 使用 lambda
|
||||||
|
loadApp(isExcludeSelf = true) {
|
||||||
|
// Your code here.
|
||||||
|
}
|
||||||
|
// 使用 Hooker
|
||||||
|
loadApp(isExcludeSelf = true, hooker = CustomHooker)
|
||||||
|
```
|
||||||
|
|
||||||
若想要同时装载多个需要 Hook 的 APP,可以直接使用如下方式。
|
若想要同时装载多个需要 Hook 的 APP,可以直接使用如下方式。
|
||||||
|
|
||||||
> 示例如下
|
> 示例如下
|
||||||
|
@@ -215,25 +215,25 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
|
|||||||
inline fun onAppLifecycle(initiate: AppLifecycle.() -> Unit) = AppLifecycle().apply(initiate).build()
|
inline fun onAppLifecycle(initiate: AppLifecycle.() -> Unit) = AppLifecycle().apply(initiate).build()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 装载并 Hook 指定、全部包名的 APP
|
* 装载并 Hook 指定包名的 APP
|
||||||
*
|
*
|
||||||
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
||||||
*
|
*
|
||||||
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
||||||
* @param name 包名 - 不填将过滤除了 [loadZygote] 事件外的全部 APP
|
* @param name 包名
|
||||||
* @param initiate 方法体
|
* @param initiate 方法体
|
||||||
*/
|
*/
|
||||||
inline fun loadApp(name: String = "", initiate: PackageParam.() -> Unit) {
|
inline fun loadApp(name: String, initiate: PackageParam.() -> Unit) {
|
||||||
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) initiate(this)
|
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) initiate(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 装载并 Hook 指定、全部包名的 APP
|
* 装载并 Hook 指定包名的 APP
|
||||||
*
|
*
|
||||||
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
||||||
*
|
*
|
||||||
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
||||||
* @param name 包名数组 - 不填将过滤除了 [loadZygote] 事件外的全部 APP
|
* @param name 包名数组
|
||||||
* @param initiate 方法体
|
* @param initiate 方法体
|
||||||
*/
|
*/
|
||||||
inline fun loadApp(vararg name: String, initiate: PackageParam.() -> Unit) {
|
inline fun loadApp(vararg name: String, initiate: PackageParam.() -> Unit) {
|
||||||
@@ -242,20 +242,20 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 装载并 Hook 指定、全部包名的 APP
|
* 装载并 Hook 指定包名的 APP
|
||||||
*
|
*
|
||||||
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
||||||
*
|
*
|
||||||
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
||||||
* @param name 包名 - 不填将过滤除了 [loadZygote] 事件外的全部 APP
|
* @param name 包名
|
||||||
* @param hooker Hook 子类
|
* @param hooker Hook 子类
|
||||||
*/
|
*/
|
||||||
fun loadApp(name: String = "", hooker: YukiBaseHooker) {
|
fun loadApp(name: String, hooker: YukiBaseHooker) {
|
||||||
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) loadHooker(hooker)
|
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) loadHooker(hooker)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 装载并 Hook 指定、全部包名的 APP
|
* 装载并 Hook 指定包名的 APP
|
||||||
*
|
*
|
||||||
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
||||||
*
|
*
|
||||||
@@ -263,11 +263,57 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
|
|||||||
* @param name 包名 - 不填将过滤除了 [loadZygote] 事件外的全部 APP
|
* @param name 包名 - 不填将过滤除了 [loadZygote] 事件外的全部 APP
|
||||||
* @param hooker Hook 子类数组
|
* @param hooker Hook 子类数组
|
||||||
*/
|
*/
|
||||||
fun loadApp(name: String = "", vararg hooker: YukiBaseHooker) {
|
fun loadApp(name: String, vararg hooker: YukiBaseHooker) {
|
||||||
if (hooker.isEmpty()) error("loadApp method need a \"hooker\" param")
|
if (hooker.isEmpty()) error("loadApp method need a \"hooker\" param")
|
||||||
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) hooker.forEach { loadHooker(it) }
|
if (wrapper?.type != HookEntryType.ZYGOTE && (packageName == name || name.isBlank())) hooker.forEach { loadHooker(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装载并 Hook 全部 APP
|
||||||
|
*
|
||||||
|
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
||||||
|
*
|
||||||
|
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
||||||
|
* @param isExcludeSelf 是否排除模块自身 - 默认否 - 启用后被 Hook 的 APP 将不包含当前模块自身
|
||||||
|
* @param initiate 方法体
|
||||||
|
*/
|
||||||
|
inline fun loadApp(isExcludeSelf: Boolean = false, initiate: PackageParam.() -> Unit) {
|
||||||
|
if (wrapper?.type != HookEntryType.ZYGOTE &&
|
||||||
|
(isExcludeSelf.not() || isExcludeSelf && packageName != YukiHookBridge.modulePackageName)
|
||||||
|
) initiate(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装载并 Hook 全部 APP
|
||||||
|
*
|
||||||
|
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
||||||
|
*
|
||||||
|
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
||||||
|
* @param isExcludeSelf 是否排除模块自身 - 默认否 - 启用后被 Hook 的 APP 将不包含当前模块自身
|
||||||
|
* @param hooker Hook 子类
|
||||||
|
*/
|
||||||
|
fun loadApp(isExcludeSelf: Boolean = false, hooker: YukiBaseHooker) {
|
||||||
|
if (wrapper?.type != HookEntryType.ZYGOTE &&
|
||||||
|
(isExcludeSelf.not() || isExcludeSelf && packageName != YukiHookBridge.modulePackageName)
|
||||||
|
) loadHooker(hooker)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装载并 Hook 全部 APP
|
||||||
|
*
|
||||||
|
* 若要装载 APP Zygote 事件 - 请使用 [loadZygote]
|
||||||
|
*
|
||||||
|
* 若要 Hook 系统框架 - 请使用 [loadSystem]
|
||||||
|
* @param isExcludeSelf 是否排除模块自身 - 默认否 - 启用后被 Hook 的 APP 将不包含当前模块自身
|
||||||
|
* @param hooker Hook 子类数组
|
||||||
|
*/
|
||||||
|
fun loadApp(isExcludeSelf: Boolean = false, vararg hooker: YukiBaseHooker) {
|
||||||
|
if (hooker.isEmpty()) error("loadApp method need a \"hooker\" param")
|
||||||
|
if (wrapper?.type != HookEntryType.ZYGOTE &&
|
||||||
|
(isExcludeSelf.not() || isExcludeSelf && packageName != YukiHookBridge.modulePackageName)
|
||||||
|
) hooker.forEach { loadHooker(it) }
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 装载并 Hook 系统框架
|
* 装载并 Hook 系统框架
|
||||||
* @param initiate 方法体
|
* @param initiate 方法体
|
||||||
|
Reference in New Issue
Block a user