Library / SDK
HighCapable/YukiHookAPI avatar
HighCapable/YukiHookAPI

YukiHookAPI: a Kotlin rebuild of the Xposed API for module authors

⛱️ An efficient Hook API and Xposed Module solution built in Kotlin.

2,186 stars158 forksKotlinApache-2.0

At a glance

What is it?
A Kotlin library that wraps the Xposed API with extensions, ships a KSP processor and a stub module, and is mid-transition from the classic Xposed API to libxposed.
Who is it for?
YukiHookAPI is a well-organised Kotlin layer over Xposed rather than a new hooking runtime, and its value shows up in the details: a compile-time KSP module, a stub for building against the framework, and a sample app paired with a sample module. The 1.3.0 release removed the rough edges that would have bitten anyone porting an older module, and 1.5.0 is aimed at libxposed rather than the API it grew up on.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 11 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A Kotlin layer over Xposed rather than a new runtime

The repository describes itself as an efficient Hook API and Xposed Module solution built in Kotlin, and that description is accurate in a specific way. This is not a new runtime that injects code into Android apps. It is a Kotlin layer sitting on top of the existing Xposed API, giving it Kotlin-shaped extensions for writing modules. The README calls it a rebuild based on the Xposed API, and the project has a lineage that explains the shape. It was formerly the Innocent Xposed API, used inside the fankes/TMore development learning project, before being renamed and open sourced under the HighCapable organization.

The name comes from a character rather than from a technical idea. The README credits Yuki Kurihara from the anime series it links. That detail is worth noting only because it tells you how the project presents itself: as a polished, self-branded library with its own documentation site, badge row and chat channels, not as a research prototype left on a shelf.

At 2,186 stars, 158 forks and 3 open issues, under Apache-2.0 with Kotlin as the primary language, this sits in the small group of Android hooking libraries that are still being maintained.

Three Gradle modules and a matched pair of samples

The repository tree is short and it carries most of the architecture. Three Gradle modules make up the library: `yukihookapi-core/`, `yukihookapi-ksp-xposed/` and `yukihookapi-stub/`. The names describe their jobs. The core module holds the API surface. The KSP module is a Kotlin Symbol Processing plugin, which is how a modern Kotlin project generates hook metadata at compile time rather than discovering members reflectively at runtime. The stub module exists so your code can compile against the hook framework without the framework being on the compile classpath, which is the normal arrangement for modules that load into a process where the real API classes are supplied by the runtime.

Alongside those sit `samples/demo-app/` and `samples/demo-module/`. A demo app paired with a demo module is the correct combination here, because you need an APK you control so the module has something to hook, and you need the module to show how a real entry point is declared. The root of the tree is conventional Gradle, with `build.gradle.kts`, `settings.gradle.kts`, `gradle.properties`, `gradlew` and `gradlew.bat`, plus `docs-source/`, which is the documentation site living in the repository rather than in a separate docs project.

Who is actually shipping modules on top of it

The adopters table is the most concrete evidence that the library survives outside the author's own projects, and the list is heavily weighted toward Chinese Android customization modules. It includes TSBattery for battery information, MIUI and ColorOS notification icon modules, and modules for forcing screen rotation, refusing forced brightness, enabling WebView debugging, suppressing MIUI gestures, restoring the splash screen, forcing landscape orientation and enabling NFC automatically. There are also reading-app modules such as QDReadHook, HXReadHook and WxRecordRead, and several ad removal projects including Fuck AD, Zuiyou ADFree and Dingda ADFree.

Two observations follow from that list. The recurring themes are manufacturer skin behaviours and deliberately locked features, which is the niche Xposed exists for and where no equivalent public API exists. Second, the same handful of developers appear across many entries, so the table demonstrates sustained use more convincingly than it demonstrates a broad independent ecosystem. The README and its Simplified Chinese counterpart are maintained in parallel, which fits where those adopters are.

For a reader deciding whether to adopt the library, the honest read is that the adopter list shows the library works on real devices against real vendor skins, and that its community is concentrated rather than diffuse.

The 1.3.0 release removed a pile of old constraints

Release 1.3.0, published on 2025-06-25, is the version to read first if you are porting an existing module, because it lifted several constraints at once. The project's own reflection API was deprecated in favour of KavaRef, a separate reflection library from the same author that the README describes as the driver behind YukiHookAPI's reflection handling. The old limitation on duplicate hooks was deprecated, so the same method can now be hooked repeatedly instead of being rejected as a conflict. The `ModuleAppActivity` and `ModuleAppCompatActivity` classes were deprecated in favour of `ModuleActivity`, which means a proxy Activity is your own subclass now. `YLog` accepts any object as its message and converts it to a string for printing, and `FreeReflection` was dropped in favour of AndroidHiddenApiBypass from the LSPosed project.

The two releases after it are smaller and read like maintenance. 1.3.1, from 2025-09-13, fixed Activity proxy issues on Android 9 and earlier, and fixed a case where return values were still being checked when a hook method's return type was `Object`. 1.3.2, published on 2026-05-30, moved the target SDK to 37, resolved dependency conflicts with BetterAndroid, and adjusted API code style without changing function signatures. The release notes themselves point to a changelog page on the documentation site for the detail rather than carrying it inline.

Two version lines running at once

The current development line is 1.5.0, and the README describes it as recruiting for public beta with one specific feature: building modules against the libxposed framework. The README gives an end point of around 2026.10 for the beta, after which the first official release is planned. That framing says something about the project's priorities. The Xposed API that YukiHookAPI wraps has been superseded by libxposed, and a hook library supporting only the older interface would be building against a shrinking target.

There is a second track running alongside it. The README points to a `2.x` branch where the version is being refactored, and says you can switch to that branch to see current progress. So the project maintains two lines simultaneously: a 1.x line being stabilised for libxposed, and a 2.x line undergoing structural change. The default branch is `master`. Anyone starting a new module today has to decide whether to target 1.5.0 when it ships or wait for 2.x, and the README does not settle that question. It only tells you both tracks exist.

Where the repository stops and the documentation site begins

The README is short by design, and unusually so for a library of this size. It contains no install command, no Gradle dependency snippet and no runnable code fence at all. That means the repository page cannot get you from clone to a compiling module on its own. What it does offer is a route: the documentation site at highcapable.github.io/YukiHookAPI holds the tutorials, and a separate supportive page is linked for the background material around them.

The documentation source is not kept somewhere else. `docs-source/` sits in the tree, so the site content is versioned alongside the code, and the release notes link to a changelog page on the same site. This split has a practical consequence for evaluating the project. The repository tells you the module layout, the release history, the deprecations, the branch strategy and the adopter list, which are exactly the things worth reading before committing to a library. It does not tell you how to declare a hook, how the KSP processor is configured in a build file, or what the 2.x architecture changes are. Those answers live on the site.

The last push recorded on the repository is dated 2026-09-26, and the project is not archived, which is consistent with a library in active development across both lines.

Editorial conclusion

YukiHookAPI is a well-organised Kotlin layer over Xposed rather than a new hooking runtime, and its value shows up in the details: a compile-time KSP module, a stub for building against the framework, and a sample app paired with a sample module. The 1.3.0 release removed the rough edges that would have bitten anyone porting an older module, and 1.5.0 is aimed at libxposed rather than the API it grew up on. The gap worth planning around is documentation, because the README carries no runnable example at all. Start with the module layout in the repository, then work through the 1.3.x migration guide if you are porting, and treat the 2.x branch as something to watch rather than something to build on.

Frequently asked questions

What is an Xposed module?

An Xposed module is an app that runs inside another app's process through the Xposed framework and replaces or wraps the behaviour of individual methods at runtime. YukiHookAPI is a library for writing those modules: it wraps the Xposed API in Kotlin extensions, adds a KSP processor for compile-time hook metadata, and ships a stub module so your code compiles without the framework on the classpath.

Which YukiHookAPI modules go into a module's build file?

The library is split into three Gradle modules: `yukihookapi-core` for the API surface, `yukihookapi-ksp-xposed` for the Kotlin Symbol Processing plugin, and `yukihookapi-stub` so code compiles without the framework present. The README does not print the dependency coordinates, so those come from the documentation site rather than the repository page.

What changed when moving from the old Innocent Xposed API to YukiHookAPI?

Version 1.3.0 is the migration point. It deprecated the built-in reflection API in favour of KavaRef, deprecated ModuleAppActivity and ModuleAppCompatActivity in favour of ModuleActivity, dropped FreeReflection in favour of AndroidHiddenApiBypass from LSPosed, and removed the old restriction on hooking the same method twice. A migration guide is linked from the documentation site.

Is YukiHookAPI being rebuilt for libxposed?

Yes, and that is the stated focus of 1.5.0. The README says a 1.5.0 public beta is recruiting, built around support for modules based on the libxposed framework, with the beta running until around 2026.10 before the first official release. Separately, a `2.x` branch is being refactored, and the default branch is still `master` on the 1.x line.

Official sources

  1. HighCapable/YukiHookAPI on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/highcapable-yukihookapi.svg)](https://hysenlabs.com/projects/highcapable-yukihookapi)