Migrate Vector to libxposed API 101 (Modern Interceptor Architecture)#586
Migrate Vector to libxposed API 101 (Modern Interceptor Architecture)#586JingMatrix merged 34 commits intomasterfrom
Conversation
Moreover, we add serval minor improvements.
|
@Spontini, @hyplant, @thoitiettxl-cyber, @DarthKnox, And attach logs if it is not working on you device with certain API 101 modules. |
Zygote crash, I remember it had already happened at the past |
|
Modules with required 101 not working |
|
@JingMatrix
dedLSPosed_2026-03-23T21_14_14.546616.zip |
|
The latest CI build should work now. I tested with Please continue to test and tell me if modules are working for you. |
Slicer's `CreateFullIr` and `CreateImage` operations are highly CPU-intensive and cause significant load latency for large DEX files. We hence introduce a fast-path optimization using `memmem` to perform a raw binary scan of the DEX buffer for target signatures prior to processing. If no matching signatures are found, the expensive IR parsing and image rebuilding phases are bypassed entirely, and the original file descriptor is safely returned.
|
@AbdulrahmanAlamodi Please test again the module punch-hole-download-progress, I am not sure if it can function for my devices. If it once worked for you with old versions or LSPosed-it (so that the module itself is good), but not for Vector, please tell us. Found a bug, fixing... |
This has always appeared but has no impact on the module's operation. |
- Split classloader hooking to correctly implement API 101 lifecycle phases and prevent AppComponentFactory <clinit> evasion. - Hook LoadedApk.createAppFactory to dispatch onPackageLoaded immediately before factory instantiation (API 29+). - Hook LoadedApk.createOrUpdateClassLoaderLocked to dispatch onPackageReady after the custom classloader is fully initialized. - Cache reflection targets using lazy delegates to eliminate redundant lookups during classloader updates.
|
@JingMatrix everything works fine now on the latest build These are additional logs if needed |
It is said as we have spent time to improve it. Now it is better to use third party library for module developers
|
Does it no longer support legacy modules? I try to install from CI, all api 101 modules I used work well, but the legacy module https://github.com/RichardLuo0/global-icon-pack-android does not work. |
|
@CoelacanthusHex No, legacy APIs will always be supported, please upload your debug logs to help locating the issue. |
|
|
In general, it will be stealthier to use randomized names.
|
Vector seems will stuck in infinitely recursive,
|
| override fun connect() { | ||
| check(!isClosed) { "JarURLConnection has been closed" } | ||
| if (!connected) { | ||
| jarEntry = | ||
| jarFile.getEntry(entryName) | ||
| ?: throw FileNotFoundException("URL=$url, zipfile=${jarFile.name}") | ||
| connected = true | ||
| } | ||
| } | ||
|
|
There was a problem hiding this comment.
| override fun connect() { | |
| check(!isClosed) { "JarURLConnection has been closed" } | |
| if (!connected) { | |
| jarEntry = | |
| jarFile.getEntry(entryName) | |
| ?: throw FileNotFoundException("URL=$url, zipfile=${jarFile.name}") | |
| connected = true | |
| } | |
| } | |
| override fun connect() { | |
| check(!isClosed) { "JarURLConnection has been closed" } | |
| if (!connected) { | |
| jarEntry = | |
| this@VectorURLStreamHandler.jarFile.getEntry(entryName) | |
| ?: throw FileNotFoundException("URL=$url, zipfile=${this@VectorURLStreamHandler.jarFile.name}") | |
| connected = true | |
| } | |
| } | |
Maybe we can let connect() access VectorURLStreamHandler.jarFile directly, just like the way in getJarFile(), so we can bypass the connect() call when accessing it through getJarFile() to avoid infinite recursion. I tested it on my device, and the issue disappeared.
There was a problem hiding this comment.
That is correct, thanks for the suggestion !
|
hi @JingMatrix thanoxLSPosed_2026-03-26T12_34_18.631214.zip thanks |
|
@Things22 Thanox is not written in API 101. |
oh, ok, but i didnt see any warining n vector manager |
|
@Things22 See my explanation here #587 (comment) |
|
XposedSmsCode Release: v3.2.4 api101 |



This PR comprehensively upgrades the Vector framework to support the modern libxposed API 101, replacing the legacy before/after callback model with a robust, OkHttp-style interceptor chain architecture.