docs: update some functions

This commit is contained in:
2023-09-22 21:59:20 +08:00
parent 98b1c0556e
commit 7a62fc2894
11 changed files with 256 additions and 47 deletions

View File

@@ -118,6 +118,8 @@ var isExist = "com.demo.Test".hasClass(customClassLoader)
::: warning
**此功能仅适用于 Android 平台。**
目前 **DexClassFinder** 的功能尚在试验阶段,由于仅通过 Java 层实现查找功能,在当前 APP **Class** 过多时性能可能不能达到最佳水平,如果发生查找不到、定位有误的问题欢迎向我们反馈。
由于是反射层面的 API目前它只能通过**类与成员**的特征来定位指定的 **Class**,不能通过指定字节码中的字符串和方法内容特征来进行定位。
@@ -126,6 +128,14 @@ var isExist = "com.demo.Test".hasClass(customClassLoader)
:::
::: danger
**YukiHookAPI** 发布 2.x.x 版本后,此功能将被标记为作废,且将会直接从 **YukiReflection** 中移除。
我们欢迎各位开发者开始使用 [DexKit](https://github.com/LuckyPray/DexKit),它是一个使用 C++ 实现的 **Dex** 高性能运行时解析库,在性能方面比 Java 层更加高效与优秀,目前尚在开发阶段,欢迎提出宝贵建议。
:::
#### 开始使用
下面是一个简单的用法示例。

View File

@@ -1,6 +1,6 @@
# 介绍
> `YukiReflection` 是一个基于 Android 平台的反射 API。
> `YukiReflection` 是一个基于 Java 和 Android 平台的反射 API。
## 背景
@@ -24,7 +24,7 @@
## 灵感来源
`YukiReflection` 最初是集成在 [YukiHookAPI](https://github.com/fankes/YukiHookAPI) 项目中的核心功能,现在进行了解耦合,使得这套反射 API 可以在任何 Android 平台的项目中使用。
`YukiReflection` 最初是集成在 [YukiHookAPI](https://github.com/fankes/YukiHookAPI) 项目中的核心功能,现在进行了解耦合,使得这套反射 API 可以在任何 Java 和 Android 平台的项目中使用。
现在,我们只需要编写少量的代码,就能实现一个简单的反射调用。

View File

@@ -4,7 +4,7 @@
## 环境要求
- Windows 7 及以上/macOS 10.14 及以上/Linux 发行版(Arch/Debian)
- Windows 7 及以上/macOS 10.14 及以上/Linux 发行版 (Arch/Debian)
- Android Studio 2021.1 及以上
@@ -16,35 +16,90 @@
- Gradle 7.0 及以上
- Jvm 11 及以上
- Java 11 及以上
## 项目要求
项目需要使用 `Android Studio``IntelliJ IDEA` 创建且类型为 Android 项目并已集成 `Kotlin` 环境依赖。
项目需要使用 `Android Studio``IntelliJ IDEA` 创建且类型为 Java 或 Android 项目并已集成 `Kotlin` 环境依赖。
## 集成依赖
### 集成依赖
**(可选)** 在你的项目 `build.gradle` 中添加依赖。
我们推荐使用 Kotlin DSL 作为 Gradle 构建脚本语言并推荐使用 [SweetDependency](https://github.com/HighCapable/SweetDependency) 来管理依赖。
#### SweetDependency 方式
在你的项目 `SweetDependency` 配置文件中添加存储库和依赖。
> 示例如下
```yaml
repositories:
# MavenCentral 有 2 小时缓存,若无法集成最新版本请添加
sonatype-oss-releases:
libraries:
com.highcapable.yukireflection:
api:
version: +
...
```
添加完成后运行一次 Gradle Sync所有依赖版本将自动装配。
接下来,在你的项目 `build.gradle.kts` 中部署依赖。
> 示例如下
```kotlin
dependencies {
implementation(com.highcapable.yukireflection.api)
// ...
}
```
#### 传统方式 (不推荐)
在你的项目 `build.gradle.kts``build.gradle` 中添加存储库。
> Kotlin DSL
```kotlin
repositories {
google()
mavenCentral()
// MavenCentral 有 2 小时缓存,若无法集成最新版本请添加此地址
maven { url("https://s01.oss.sonatype.org/content/repositories/releases/") }
}
```
> Groovy DSL
```groovy
repositories {
google()
mavenCentral()
// MavenCentral 有 2 小时缓存,若无法集成最新版本请添加此地址
maven { url "https://s01.oss.sonatype.org/content/repositories/releases" }
maven { url 'https://s01.oss.sonatype.org/content/repositories/releases/' }
}
```
在你的 app `build.gradle` 中添加依赖。
在你的项目 `build.gradle.kts` `build.gradle` 中添加依赖。
> 示例如下
> Kotlin DSL
```kotlin
dependencies {
implementation("com.highcapable.yukireflection:api:<yuki-version>")
// ...
}
```
> Groovy DSL
```groovy
dependencies {
// 基础依赖
implementation 'com.highcapable.yukireflection:api:<yuki-version>'
// ...
}
```
@@ -52,13 +107,31 @@ dependencies {
::: danger
如果你的项目目前正在使用 [YukiHookAPI](https://github.com/fankes/YukiHookAPI),请不要重复集成 **YukiReflection**,因为 **YukiHookAPI** 已经包含了其中的功能且存在针对相关功能的改动,重复集成会造成功能性冲突引发异常,此时你应该前往 **YukiHookAPI** 的 [文档](https://fankes.github.io/YukiHookAPI/zh-cn/) 查看对应使用教程。
如果你的项目目前正在使用 [YukiHookAPI](https://github.com/fankes/YukiHookAPI) 的 1.x.x 版本,请不要重复集成 **YukiReflection**,因为 **YukiHookAPI** 已经包含了其中的功能且存在针对相关功能的改动,重复集成会造成功能性冲突引发异常,此时你应该前往 **YukiHookAPI** 的 [文档](https://fankes.github.io/YukiHookAPI/zh-cn/) 查看对应使用教程。
**YukiHookAPI** 将在 2.x.x 版本完全分离 **YukiReflection**,届时你可以同时与 **YukiHookAPI** 使用。
:::
在你的 app `build.gradle` 中修改 `Kotlin` 的 Jvm 版本为 11 及以上。
#### 配置 Java 版本
> 示例如下
在你的项目 `build.gradle.kts``build.gradle` 中修改 Kotlin 的 Java 版本为 11 及以上。
> Kotlin DSL
```kt
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
}
```
> Groovy DSL
```groovy
android {

View File

@@ -9,5 +9,32 @@ actions:
- text: 更新日志
link: /zh-cn/about/changelog
type: secondary
features:
- title: 轻量优雅
details: 拥有一套强大、优雅、人性化、完全使用 Kotlin lambda 打造的 API可以帮你快速实现字节码的查找以及反射功能。
- title: 可跨平台
details: 不仅仅是 Android 平台,它与 Java API 高度兼容,可使用在任何 Kotlin on JVM 的项目上,有 Java 的地方就可以使用。
- title: 快速上手
details: 简单易用,不需要繁琐的配置,不需要十足的开发经验,搭建环境集成依赖即可立即开始使用。
footer: MIT License | Copyright (C) 2019-2023 HighCapable
---
---
### 来吧!让反射也变得诗情画意
```java
public class World {
private void sayHello(String content) {
System.out.println("Hello " + content + "!");
}
}
```
```kotlin
val newWorld = World()
classOf<World>().method {
name = "sayHello"
param(StringClass)
type = UnitType
}.get(newWorld).call("YukiReflection")
```