Template + walkthrough for building a custom Xposed module.
# Install LSPosed framework first (via Magisk)
# Then grab the LSPosed API
git clone https://github.com/LSPosed/LSPosed-Xposed_New_API.git
# or just the API JAR from releasesMyModule/
βββ build.gradle
βββ src/main/
β βββ AndroidManifest.xml
β βββ assets/xposed_init
β βββ java/com/example/mymodule/
β βββ HookEntry.kt
β βββ MainActivity.kt
βββ module.prop
id=my_example_module
name=My Custom Module
version=1.0
versionCode=100
author=YourName
description=Does something cool with LSPosed
updateJson=https://raw.githubusercontent.com/.../update.jsonpackage com.example.mymodule
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HookEntry : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
if (lpparam.packageName != "com.example.app") return
// Hook a method
XposedHelpers.findAndHookMethod(
"com.example.app.MainActivity",
lpparam.classLoader,
"onCreate",
android.os.Bundle::class.java,
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
XposedHelpers.callMethod(
param.thisObject,
"setTitle",
"Hooked!"
)
}
}
)
}
}./gradlew build
# Output: build/outputs/apk/release/app-release.apk
# Install as Magisk module
adb install app-release.apk
# Open Magisk β Modules β Install from storage
# Select APK, rebootEnable logcat output in your hook:
import de.robv.android.xposed.XposedBridge
XposedBridge.log("DEBUG: Method called with $param")Then view:
adb logcat | grep "DEBUG:"