mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Added NameConditions function
This commit is contained in:
@@ -60,6 +60,8 @@
|
||||
|
||||
[filename](public/ModifierRules.md ':include')
|
||||
|
||||
[filename](public/NameConditions.md ':include')
|
||||
|
||||
[filename](public/HookClass.md ':include')
|
||||
|
||||
[filename](public/VariousClass.md ':include')
|
||||
|
@@ -114,6 +114,24 @@ fun name(value: String): IndexTypeCondition
|
||||
|
||||
!> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。
|
||||
|
||||
### name [method]
|
||||
|
||||
```kotlin
|
||||
inline fun name(initiate: NameConditions.() -> Unit): IndexTypeCondition
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置 `Field` 名称条件。
|
||||
|
||||
!> 若不填写名称则必须存在一个其它条件,默认模糊查找并取第一个匹配的 `Field`。
|
||||
|
||||
!> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。
|
||||
|
||||
### type [method]
|
||||
|
||||
```kotlin
|
||||
|
@@ -158,6 +158,24 @@ fun name(value: String): IndexTypeCondition
|
||||
|
||||
!> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。
|
||||
|
||||
### name [method]
|
||||
|
||||
```kotlin
|
||||
inline fun name(initiate: NameConditions.() -> Unit): IndexTypeCondition
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 设置 `Method` 名称条件。
|
||||
|
||||
!> 若不填写名称则必须存在一个其它条件,默认模糊查找并取第一个匹配的 `Method`。
|
||||
|
||||
!> 存在多个 `IndexTypeCondition` 时除了 `order` 只会生效最后一个。
|
||||
|
||||
### paramCount [method]
|
||||
|
||||
```kotlin
|
||||
|
191
docs/api/public/NameConditions.md
Normal file
191
docs/api/public/NameConditions.md
Normal file
@@ -0,0 +1,191 @@
|
||||
## NameConditions [class]
|
||||
|
||||
```kotlin
|
||||
class NameConditions
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 这是一个模糊 `Member` 名称匹配实现类
|
||||
|
||||
可对 R8 混淆后的 `Member` 进行更加详细的定位。
|
||||
|
||||
### equalsOf
|
||||
|
||||
```kotlin
|
||||
fun equalsOf(other: String, isIgnoreCase: Boolean)
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 完全字符匹配。
|
||||
|
||||
### startsWith
|
||||
|
||||
```kotlin
|
||||
fun startsWith(prefix: String, startIndex: Int, isIgnoreCase: Boolean)
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 起始字符匹配。
|
||||
|
||||
### endsWith
|
||||
|
||||
```kotlin
|
||||
fun endsWith(suffix: String, isIgnoreCase: Boolean)
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 结束字符匹配。
|
||||
|
||||
### contains
|
||||
|
||||
```kotlin
|
||||
fun contains(other: String, isIgnoreCase: Boolean)
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 包含字符匹配。
|
||||
|
||||
### matches
|
||||
|
||||
```kotlin
|
||||
fun matches(regex: String)
|
||||
```
|
||||
|
||||
```kotlin
|
||||
fun matches(regex: Regex)
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 正则字符匹配。
|
||||
|
||||
### thisSynthetic0
|
||||
|
||||
```kotlin
|
||||
fun thisSynthetic0()
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 标识为匿名类的主类调用对象。
|
||||
|
||||
### onlySymbols
|
||||
|
||||
```kotlin
|
||||
fun onlySymbols()
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 标识为只有符号。
|
||||
|
||||
### onlyLetters
|
||||
|
||||
```kotlin
|
||||
fun onlyLetters()
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 标识为只有字母。
|
||||
|
||||
### onlyNumbers
|
||||
|
||||
```kotlin
|
||||
fun onlyNumbers()
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 标识为只有数字。
|
||||
|
||||
### onlyLettersNumbers
|
||||
|
||||
```kotlin
|
||||
fun onlyLettersNumbers()
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 标识为只有字母或数字。
|
||||
|
||||
### onlyLowercase
|
||||
|
||||
```kotlin
|
||||
fun onlyLowercase()
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 标识为只有小写字母。
|
||||
|
||||
在没有其它条件的情况下设置此条件允许判断对象存在字母以外的字符。
|
||||
|
||||
### onlyUppercase
|
||||
|
||||
```kotlin
|
||||
fun onlyUppercase()
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.0.88` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 标识为只有大写字母。
|
||||
|
||||
在没有其它条件的情况下设置此条件允许判断对象存在字母以外的字符。
|
@@ -245,6 +245,86 @@ Test::class.java.method {
|
||||
|
||||
!> 当前查询的 `Method` 除非指定 `superClass` 条件,否则只能查询到当前 `Class` 的 `Method`。
|
||||
|
||||
### 模糊查询
|
||||
|
||||
如果我们想查询一个方法名称,但是又不确定它在每个版本中是否发生变化,此时我们就可以使用模糊查询功能。
|
||||
|
||||
假设我们要得到 `Class` 中的 `doTask` 方法,可以使用如下实现。
|
||||
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
// 假设这就是这个 Class 的实例
|
||||
val instance = Test()
|
||||
// 使用 YukiHookAPI 调用并执行
|
||||
Test::class.java.method {
|
||||
name {
|
||||
// 设置名称不区分大小写
|
||||
equalsOf(other = "dotask", isIgnoreCase = true)
|
||||
}
|
||||
param(StringType)
|
||||
}.get(instance).call("task_name")
|
||||
```
|
||||
|
||||
已知当前 `Class` 中仅有一个 `doTask` 方法,我们还可以判断方法名称仅包含其中指定的字符。
|
||||
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
// 假设这就是这个 Class 的实例
|
||||
val instance = Test()
|
||||
// 使用 YukiHookAPI 调用并执行
|
||||
Test::class.java.method {
|
||||
name {
|
||||
// 仅包含 oTas
|
||||
contains(other = "oTas")
|
||||
}
|
||||
param(StringType)
|
||||
}.get(instance).call("task_name")
|
||||
```
|
||||
|
||||
我们还可以根据首尾字符串进行判断。
|
||||
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
// 假设这就是这个 Class 的实例
|
||||
val instance = Test()
|
||||
// 使用 YukiHookAPI 调用并执行
|
||||
Test::class.java.method {
|
||||
name {
|
||||
// 开头包含 do
|
||||
startsWith(prefix = "do")
|
||||
// 结尾包含 Task
|
||||
endsWith(suffix = "Task")
|
||||
}
|
||||
param(StringType)
|
||||
}.get(instance).call("task_name")
|
||||
```
|
||||
|
||||
通过观察发现这个方法名称中只包含字母,我们还可以再增加一个精确的查询条件。
|
||||
|
||||
> 示例如下
|
||||
|
||||
```kotlin
|
||||
// 假设这就是这个 Class 的实例
|
||||
val instance = Test()
|
||||
// 使用 YukiHookAPI 调用并执行
|
||||
Test::class.java.method {
|
||||
name {
|
||||
// 开头包含 do
|
||||
startsWith(prefix = "do")
|
||||
// 结尾包含 Task
|
||||
endsWith(suffix = "Task")
|
||||
// 仅包含字母
|
||||
onlyLetters()
|
||||
}
|
||||
param(StringType)
|
||||
}.get(instance).call("task_name")
|
||||
```
|
||||
|
||||
更多用法可参考 [NameConditions](api/document?id=nameconditions-class)。
|
||||
|
||||
### 静态字节码
|
||||
|
||||
有些方法和变量在 `Class` 中是静态的实现,这个时候,我们不需要传入实例就可以调用它们。
|
||||
|
Reference in New Issue
Block a user