Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR rolls the libxposed module API forward to version 102. It expands the public Java API with hot-reload lifecycle callbacks, hook identity/replacement, an entry-detach mechanism, and a new runtime property bit, while also moving the annotation and lint artifacts to externally-published io.github.libxposed modules (with snapshot publishing infrastructure). Gradle and AGP tooling are bumped along the way.
Changes:
- Add API 102: hot-reload callbacks (
onHotReloading/onHotReloaded),HookBuilder#setId/HookHandle#getId/replaceHook,XposedInterfaceWrapper#detach(), andPROP_RT_HOT_RELOAD; update Javadoc/package-info accordingly. - Switch
attachFrameworkto a 2-arg@InternalApiform that accepts a detach implementation, and dropvolatilefrom the wrapper'smBasefield. - Build / CI: bump Gradle to 9.5.1, AGP to 9.2.1, compileSdk/buildTools to 37; consume external
libxposed-annotation/libxposed-lint; add Sonatype-snapshot repo and publishing workflow; remove theconfirm == 'yes'gate on the Maven Central deploy workflow.
Reviewed changes
Copilot reviewed 13 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| api/src/main/java/io/github/libxposed/api/XposedInterface.java | Adds API_102, PROP_RT_HOT_RELOAD, HookHandle#getId/replaceHook, and HookBuilder#setId. |
| api/src/main/java/io/github/libxposed/api/XposedInterfaceWrapper.java | New detach() API; attachFramework gains detachImpl and is marked @InternalApi; mBase no longer volatile. |
| api/src/main/java/io/github/libxposed/api/XposedModuleInterface.java | Adds HotReloadingParam, HotReloadedParam, onHotReloading, onHotReloaded. |
| api/src/main/java/io/github/libxposed/api/XposedModule.java | Updates class-level Javadoc to reflect per-generation instantiation. |
| api/src/main/java/io/github/libxposed/api/package-info.java | Documents API 102 additions, hot-reload lifecycle, detach, and autoHotReload property. |
| api/build.gradle.kts | compileSdk/buildTools 37; new libxposed-annotation/-lint deps; snapshot publishing; version 102.0.0. |
| api/proguard-rules.pro | Adds -dontwarn for io.github.libxposed.annotation.**. |
| gradle/libs.versions.toml | Switches to androidx-annotation and adds libxposed-annotation/-lint versions; bumps AGP. |
| build.gradle.kts | Adds dependencySnapshot flag disabling changing-module cache. |
| settings.gradle.kts | Registers mavenLocal and Sonatype snapshots repo filtered to io.github.libxposed. |
| gradle/wrapper/gradle-wrapper.properties | Gradle 9.4.0 → 9.5.1. |
| gradlew.bat | Regenerated for new Gradle wrapper. |
| .github/workflows/snapshot.yml | New workflow publishing snapshots to Sonatype. |
| .github/workflows/deploy.yml | Removes the typed-confirmation gate on Maven Central deploys. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Hamammal
reviewed
May 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
libxposed API 102
This PR introduces API 102 across the libxposed module API, service API, annotations, and lint checks.
Module API
onHotReloading(HotReloadingParam)runs in old code and decides whether reload proceeds.onHotReloaded(HotReloadedParam)runs in new code and receives extras, saved state, and old hook handles.HookBuilder#setId(String)assigns a module/executable-scoped hook id.HookHandle#getId()exposes the assigned id.HookHandle#replaceHook(Hooker)atomically replaces an existing hook while preserving executable, priority, exception mode, and id.XposedInterfaceWrapper#detach(), allowing the current module entry to stop receiving subsequent lifecycle callbacks without disabling hooks or otherXposedInterfaceAPIs.PROP_RT_HOT_RELOADto report whether hot reload is currently permitted.de.robv.android.xposedAPIs.Service API
XposedService#getRunningTargets()XposedService#hotReloadModule(HookedTarget, Bundle, HotReloadCallback)HookedTargetwraps the AIDLHookedProcessand hides the opaque target id from module apps.HotReloadResultandHotReloadResult.Statusexpose asynchronous hot reload results.Annotations And Lint
@InternalApifor APIs reserved for framework implementations.XposedInternalApi, which reports module usage of APIs annotated with@InternalApi.@SinceApilint coverage for new API 102 service and module APIs.Framework Integration
XposedInterfaceWrapper#attachFramework(...)now accepts a per-entry detach implementation and is marked internal.attachFramework(...); modules must not call it directly.