mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-05 18:25:28 +08:00
Modify add allMembers function param type and add class MembersType in ReflectionFactory
This commit is contained in:
@@ -8,6 +8,62 @@
|
|||||||
|
|
||||||
> 这是自定义 `Member` 和 `Class` 相关功能的查找匹配以及 `invoke` 的封装类。
|
> 这是自定义 `Member` 和 `Class` 相关功能的查找匹配以及 `invoke` 的封装类。
|
||||||
|
|
||||||
|
### MembersType [class]
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
enum class MembersType
|
||||||
|
```
|
||||||
|
|
||||||
|
**变更记录**
|
||||||
|
|
||||||
|
`v1.0.93` `新增`
|
||||||
|
|
||||||
|
**功能描述**
|
||||||
|
|
||||||
|
> 定义一个 `Class` 中的 `Member` 类型
|
||||||
|
|
||||||
|
#### ALL [enum]
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
ALL
|
||||||
|
```
|
||||||
|
|
||||||
|
**变更记录**
|
||||||
|
|
||||||
|
`v1.0.93` `新增`
|
||||||
|
|
||||||
|
**功能描述**
|
||||||
|
|
||||||
|
> 全部 `Method` 与 `Constructor`。
|
||||||
|
|
||||||
|
#### METHOD [enum]
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
METHOD
|
||||||
|
```
|
||||||
|
|
||||||
|
**变更记录**
|
||||||
|
|
||||||
|
`v1.0.93` `新增`
|
||||||
|
|
||||||
|
**功能描述**
|
||||||
|
|
||||||
|
> 全部 `Method`。
|
||||||
|
|
||||||
|
#### CONSTRUCTOR [enum]
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
CONSTRUCTOR
|
||||||
|
```
|
||||||
|
|
||||||
|
**变更记录**
|
||||||
|
|
||||||
|
`v1.0.93` `新增`
|
||||||
|
|
||||||
|
**功能描述**
|
||||||
|
|
||||||
|
> 全部 `Constructor`。
|
||||||
|
|
||||||
### ~~hookClass [field]~~ <!-- {docsify-ignore} -->
|
### ~~hookClass [field]~~ <!-- {docsify-ignore} -->
|
||||||
|
|
||||||
**变更记录**
|
**变更记录**
|
||||||
|
@@ -230,12 +230,12 @@ injectMember {
|
|||||||
|
|
||||||
`v1.0.93` `作废`
|
`v1.0.93` `作废`
|
||||||
|
|
||||||
请使用 `constructor().all()` 来取代它
|
请使用 `allMembers(MembersType.CONSTRUCTOR)` 来取代它
|
||||||
|
|
||||||
#### allMembers [method]
|
#### allMembers [method]
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
fun allMembers()
|
fun allMembers(type: MembersType)
|
||||||
```
|
```
|
||||||
|
|
||||||
**变更记录**
|
**变更记录**
|
||||||
|
@@ -237,11 +237,11 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
|
|||||||
*
|
*
|
||||||
* - ❗此方法已弃用 - 在之后的版本中将直接被删除
|
* - ❗此方法已弃用 - 在之后的版本中将直接被删除
|
||||||
*
|
*
|
||||||
* - ❗请现在转移到 [MethodFinder]
|
* - ❗请现在转移到 [MethodFinder] 或 [allMembers]
|
||||||
* @param name 方法名称
|
* @param name 方法名称
|
||||||
* @return [ArrayList]<[MethodFinder.Result.Instance]>
|
* @return [ArrayList]<[MethodFinder.Result.Instance]>
|
||||||
*/
|
*/
|
||||||
@Deprecated("请使用新方式来实现 Hook 所有方法", ReplaceWith(expression = "method { this.name = name }.all()"))
|
@Deprecated(message = "请使用新方式来实现 Hook 所有方法", ReplaceWith(expression = "method { this.name = name }.all()"))
|
||||||
fun allMethods(name: String) = method { this.name = name }.all()
|
fun allMethods(name: String) = method { this.name = name }.all()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -249,11 +249,14 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
|
|||||||
*
|
*
|
||||||
* - ❗此方法已弃用 - 在之后的版本中将直接被删除
|
* - ❗此方法已弃用 - 在之后的版本中将直接被删除
|
||||||
*
|
*
|
||||||
* - ❗请现在转移到 [ConstructorFinder]
|
* - ❗请现在转移到 [ConstructorFinder] 或 [allMembers]
|
||||||
* @return [ArrayList]<[ConstructorFinder.Result.Instance]>
|
* @return [ArrayList]<[ConstructorFinder.Result.Instance]>
|
||||||
*/
|
*/
|
||||||
@Deprecated("请使用新方式来实现 Hook 所有构造方法", ReplaceWith(expression = "constructor().all()"))
|
@Deprecated(
|
||||||
fun allConstructors() = constructor().all()
|
message = "请使用新方式来实现 Hook 所有构造方法",
|
||||||
|
ReplaceWith(expression = "allMembers(MembersType.CONSTRUCTOR)", "com.highcapable.yukihookapi.hook.factory.MembersType")
|
||||||
|
)
|
||||||
|
fun allConstructors() = allMembers(MembersType.CONSTRUCTOR)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查找并 Hook [hookClass] 中的全部方法、构造方法
|
* 查找并 Hook [hookClass] 中的全部方法、构造方法
|
||||||
@@ -263,11 +266,14 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
|
|||||||
* - ❗警告:无法准确处理每个方法的返回值和 param - 建议使用 [method] or [constructor] 对每个方法单独 Hook
|
* - ❗警告:无法准确处理每个方法的返回值和 param - 建议使用 [method] or [constructor] 对每个方法单独 Hook
|
||||||
*
|
*
|
||||||
* - ❗如果 [hookClass] 中没有方法可能会发生错误
|
* - ❗如果 [hookClass] 中没有方法可能会发生错误
|
||||||
|
* @param type 过滤 [Member] 类型 - 默认为 [MembersType.ALL]
|
||||||
*/
|
*/
|
||||||
fun allMembers() {
|
fun allMembers(type: MembersType = MembersType.ALL) {
|
||||||
members.clear()
|
members.clear()
|
||||||
hookClass.instance?.allConstructors { _, constructor -> members.add(constructor) }
|
if (type == MembersType.ALL || type == MembersType.CONSTRUCTOR)
|
||||||
hookClass.instance?.allMethods { _, method -> members.add(method) }
|
hookClass.instance?.allConstructors { _, constructor -> members.add(constructor) }
|
||||||
|
if (type == MembersType.ALL || type == MembersType.METHOD)
|
||||||
|
hookClass.instance?.allMethods { _, method -> members.add(method) }
|
||||||
isHookMemberSetup = true
|
isHookMemberSetup = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -51,6 +51,20 @@ internal typealias MethodCondition = MethodFinder.() -> Unit
|
|||||||
/** 定义 [ConstructorFinder] 方法体类型 */
|
/** 定义 [ConstructorFinder] 方法体类型 */
|
||||||
internal typealias ConstructorCondition = ConstructorFinder.() -> Unit
|
internal typealias ConstructorCondition = ConstructorFinder.() -> Unit
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定义一个 [Class] 中的 [Member] 类型
|
||||||
|
*/
|
||||||
|
enum class MembersType {
|
||||||
|
/** 全部 [Method] 与 [Constructor] */
|
||||||
|
ALL,
|
||||||
|
|
||||||
|
/** 全部 [Method] */
|
||||||
|
METHOD,
|
||||||
|
|
||||||
|
/** 全部 [Constructor] */
|
||||||
|
CONSTRUCTOR
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前 [Class] 是否有继承关系 - 父类是 [Any] 将被认为没有继承关系
|
* 当前 [Class] 是否有继承关系 - 父类是 [Any] 将被认为没有继承关系
|
||||||
* @return [Boolean]
|
* @return [Boolean]
|
||||||
|
Reference in New Issue
Block a user