介绍

YukiReflection 是一个基于 Java 和 Android 平台的反射 API。

背景

这是一个使用 Kotlin 基于 Java 原生反射 API 重新打造的一套简洁、高效的反射 API。

YukiReflection 同时也是 YukiHookAPI在新窗口中打开 正在使用的核心功能。

名称取自 《ももくり》女主 栗原 雪(Yuki)在新窗口中打开

用途

YukiReflection 完全采用 Kotlin lambda 语法构建。

它能取代 Java 原生的反射 API在新窗口中打开,使用更加人性化的语言实现一套更加完善的反射方案。

语言要求

请使用 Kotlin,API 部分代码构成同样兼容 Java 但基础反射场景的实现可能完全无法使用

文档全部的 Demo 示例代码都将使用 Kotlin 进行描述,如果你完全不会使用 Kotlin 那你将有可能无法使用 YukiReflection

灵感来源

YukiReflection 最初是集成在 YukiHookAPI在新窗口中打开 项目中的核心功能,现在进行了解耦合,使得这套反射 API 可以在任何 Java 和 Android 平台的项目中使用。

现在,我们只需要编写少量的代码,就能实现一个简单的反射调用。

借助 Kotlin 优雅的 lambda 写法以及 YukiReflection,可以让你的反射逻辑更加美观清晰。

示例如下

"android.os.SystemProperties".toClass()
    .method {
        name = "get"
        param(StringClass, StringClass)
    }.get().call("ro.system.build.fingerprint", "none")
Class.forName("android.os.SystemProperties")
    .getDeclaredMethod("get", String::class.java, String::class.java)
    .apply { isAccessible = true }
    .invoke(null, "ro.system.build.fingerprint", "none")