ONPatch
4.92K subscribers
47 photos
88 files
33 links
@NPatch 的测试发布频道
Download Telegram
NPatch-v1.0.7-748-release.apk
6.4 MB
fix(manager): 优化分卷 APK 与大型 APKS 解析,支持多签名方案及载入进度提示
1. 分卷 APK 独立解析与校验 (ApkInstallSet):
- 使用轻量 AXML 解析器读取各分卷 splitName,仅对 base.apk 调用一次系统 PackageManager
- 彻底解决 Android 无法独立解析 Config Split 抛出 null 导致流程中断的问题

2. 签名解析升级为毫秒级随机存取 (ApkSignatureHelper):
- 采用 Google 官方 ApkVerifier 读取签名区块,完整支持 v1/v2/v3/v3.1/v4 方案
- 解决无 v1 签名的 split_delivery.apk 触发全包解压挂起数十秒与解析失败问题
- 统一使用证书 DER 字节计算 SHA-256 Hash,解决分卷签名比对永远不相等的问题

3. 解压与包管理适配 (NeoPackageManager):
- 正确设置 publicSourceDir 与 splitSourceDirs
- 扩展 isApksArchive 支持 .apks, .xapk, .apkm, .zip 等格式

4. 载入进度条与错误反馈体验 (NewPatchScreen):
- 在解压与解析大型 APKS 期间增加 isAnalyzing 状态与 InfiniteProgressIndicator 进度指示
- 异常时通过 activityScope 弹出提示,消除空白卡顿与静默失败


perf(loader): 优化 API 101/102 现代生命周期分发
在 dispatchModernLifecycle 中提取并使用 mDefaultClassLoader 分发 onPackageLoaded

Co-Authored-By: JingMatrix <jingmatrix@gmail.com>


feat: 实现集成模式与管理模式下的 libxposed XposedService
- 升级 NPatchRemoteStore 远程存储底层为 SQLite configs 表,对齐 Vector daemon 序列化机制,完整支持复杂数据类型跨进程读写与实时 Diff 变更通知
- 增强模块 Companion App 交付:优先 Shizuku 提权激活,并支持免 Root 标准 ContentProvider 异步推送(pushToCompanionsAsync)
- 补充集成模式(Embedded)进程内服务反射交付(XposedServiceHelper.onBinderReceived),使单体模块在免管理器环境下也能正常读写配置
- 新增 NPatchProcessChannel 宿主端热重载通道,在后台线程安全驱动 VectorModuleManager 换代

Co-authored-by: JingMatrix <jingmatrix@gmail.com>



feat(manager): 支持检测已修补应用并自适应提取内置原包重新修补
https://t.me/NPatch/1003

chore(core): rebase to upstream Vector canary-3096 and track LoadedApk
- core: rebase onto Vector canary-3096 (9d6d44c1)
- patch-loader: register pre-built LoadedApk with Startup.trackLoadedApk
❤14🔥3😭1
NPatch-v1.0.7-755-release.apk
6.5 MB
chore(core): 更新 core 子模块并统一规范框架版本号

feat(patch): 恢復並重寫註入加載器功能

fix(patch): 修正 --injectdex 注入逻辑与 TargetSdk 36+ 隐藏 API 豁免

feat(ui): 在簽名衝突提示對話框新增「無視風險,繼續安裝」選項

chore(core): 更新 core 至 35b510cb、升級 Gradle 9.7.0 及子模組依賴

feat(patch): 支持在修補時啟用 HTTP 明文流量

feat(patch): 支持在修補時覆寫 targetSdkVersion
❤9👍6
08-19 01:01:43.306 10206 10206 W top.nkbe.npatch: Throwing OutOfMemoryError "Failed to allocate a 268435468 byte allocation with 100597760 free bytes and 376MB until OOM, target footprint 242265360, growth limit 536870912" (VmSize 9953512 kB)

第一次遇到緩衝區炸了的問題,也沒見到過反餽,下下個版本解決
❤7
NPatch-v1.0.7-757-release.apk
6.5 MB
修復調用 Shizuku 的安裝問題
修復安裝提示對話框出不來的問題
新增三個安裝設定
❤18👍3
NPatch-v1.0.7-762-release.apk
6.5 MB
一、 免后台运行与动态重连机制深度重构
缓存并行准备与零延迟本地秒开
摒弃了传统需等待管理器连接超时才读取本地配置的串行逻辑。修补应用在发起管理器连接的同时,主线程并行解析本地模块缓存。若管理器在后台被系统清理或未能及时响应,应用将以零延迟直接切换至本地模式启动,彻底告别启动白屏、卡顿与以「无模块」状态运行的问题。
动态重连与热重载通道自动复苏
重构底层 Binder 服务绑定,引入原子线程锁(Atomic Switch Lock)屏障。当应用在离线模式启动后,若管理器随后被拉起或手动打开,连接通道将在后台自动建立并无缝切换,实时同步最新模块配置与远端数据,并自动恢复热重载通信通道。
5 分钟连接生命周期保护
后台重连等待机制增加了 5 分钟上限保护。若超时管理器仍未启动,应用将主动释放系统服务连接,避免无休止占用系统 Binder 与 IPC 资源,兼顾续航与系统性能。
Shizuku 守护与全自动唤醒
在授予 Shizuku 权限时,Shell 守护服务可在发现管理器离线时自动将其拉起并同步状态;在未授权 Shizuku 的设备上,应用同样能依靠增强的本地并行缓存机制实现极速稳定的纯免后台运行。


二、 智能检测已修补应用并自适应提取原包
多框架已修补应用智能识别
支持深度识别由 NPatch、LSPatch、FPA 打包的修补应用,以及包含 assets/origin.apk 或内嵌插件的单体 APK。在选择应用界面与修补流程中,能够准确呈现修补状态与标签。
自适应提取内置原包并重新修补
当用户选取已修补的应用或带有内嵌原包的 APK 时,系统将主动弹出提示对话框,建议提取内置的原版 APK 重新进行修补,避免多层外壳嵌套打包导致的应用闪退与兼容性问题;同时支持直接修补外壳 APK 作为备用选项。
智能回退解压支持
重构了原包提取引擎,除匹配各框架标准路径外,新增自动扫描 assets/ 目录下内嵌 APK 的回退检索机制,确保自命名或非标准结构的内嵌原包亦能顺利提取。


三、 安装器与大型文件打包支持优化
解决内嵌 APK 误识别为 App Bundle 问题
优化了安装包格式判定逻辑。对于包含 assets/origin.apk 或内嵌插件的单体独立 APK,不再将其误判为 APKS/XAPK 分卷进行解包;在解析安装包分卷时主动过滤 assets/、res/、lib/、META-INF/ 等内部资源目录,避免打包与安装异常。
大文件与 APKS 高吞吐打包优化
重写了 APKS 生成与文件导出流程,全面采用 64KB 高吞吐缓冲流配合无压缩存储策略,有效杜绝大型游戏与数 GB 级别分卷安装包打包时的内存溢出(OOM)与写入瓶颈。
系统安装超时自动状态回查
为所有系统安装器调用及 Shizuku 会话等待设置了精准的超时机制。当系统广播丢失或超时未响应时,程序将主动向底层包管理器回查目标应用的实际安装与卸载状态,彻底消除安装进度条无限卡死的问题。
👍26❤12🌭3🔥1
NPatch-v1.0.7-769-release.apk
6.5 MB
feat(patch): optimize packaging pipeline with v1/v2/v3 signing and split apk sync
- Add full V1 + V2 + V3 signing support in apkzlib and patcher
- Synchronize manifest attributes across split APKs in app bundles
- Fix patched app detection and eliminate false positives on asset plugins
- Optimize XposedLogPrinter with asynchronous bounded queue
- Standardize APKS internal entry naming
👍29❤8🔥3🕊1🍌1👻1😡1
NPatch-v1.0.7-780-release.apk
8.8 MB
NPatch-v1.0.7-780-release.apk
❤20😭3🔥1
NPatch 的在線倉庫來自于 FunProject 的分發倉庫,再次致謝👍
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍3
NPatch-v1.0.7-783-release.apk
8.8 MB
chore: remove Firebase SDK
build: remove unused ProGuard obfuscation dictionary
fix(patch): Optimize split APK determination and inject isSplitRequired
feat(manager): Comprehensive optimization of gesture synchronization, selection contrast, and page safe margins for the liquid floating bottom bar
refactor(patch): Refactor sequential number allocation for --injectdex and dual-layer exemption for hidden APIs in Android 16
fix(loader): Improve cache integrity verification, atomic writing, and multi-process locking mechanism for origin.apk (fix #147)
👍17❤3🔥3
NPatch-v1.0.7-789-release.apk
8.8 MB
NPatch-v1.0.7-789-release.apk
❤11🍌4👍1
NPatch-v1.0.7-792-release.apk
8.8 MB
在打包端方面,首先實裝了 ABI 感知的 SO 頁面對齊分流機制,將 64 位元架構(arm64-v8a、x86_64)對齊 16KB 以適配 Android 15 規範,32 位元則回退至 4KB 對齊,兼顧規範與安裝包體積。其次調整了 DEX 注入時序,改在複製來源 APK 其餘檔案前優先注入引導 DEX,確保 classes.dex 位於 ZIP 最前端以利系統解析;啟用 --injectdex 時,改由遍歷來源 APK 取得最大序號後遞增命名(classes{N+1}.dex),防止 DEX 排序混亂。此外,內嵌模組加入了基於 LinkedHashSet 的包名去重保護,自動忽略重複傳入的模組;同時移除 Split APK 中多餘的 minSdkVersion 設定,並將 AXML 的布林屬性顯式宣告為 Boolean.TRUE 物件,避免屬性映射異常。

在載入器方面,修復了 disableProfile 在讀取 splitNames 時因未校驗陣列長度與 null 所引發的空指標異常(NPE)。針對簽名繞過情境下原應用可能遺失原生庫的問題,新增了宿主路徑注入機制,透過 context.getPackageCodePath() 取得真實安裝 APK 路徑,並利用反射呼叫 ClassLoader 或 DexPathList 的 addNativePath 將 SO 路徑動態補入載入器。同時,路徑引用統一改由參數顯式傳遞 installedApkPath,避免靜態欄位引發重入問題;快取層面則新增對舊版 cache/native/host 目錄的清理邏輯。最後,在釋放 native bootstrap 檔案後追加了唯讀屬性防止意外篡改,並在 JNI 攔截白名單中忽略 libCrashGuard.so,避免簽名繞過模組與防崩潰組件互相干擾引發死鎖。
❤22👍7🎉4🤔2
ONPatch
NPatch-v1.0.7-792-release.apk
部分模組功能生效有問題,暫時不建議更新。
😡18🤔5❤4😭4🍌3
NPatch-v1.0.8-808-release.apk
8.9 MB
新功能和修復測試
👍23❤5😭2😡2
NPatch-v1.0.8-809-release.apk
8.9 MB
優化去簽穩定性,折疊進階選項
👍13❤5😡2🤔1
jar-v1.0.8-813-release.jar
9.5 MB
Benchmark:
測試樣本:Bilibili v9.13.0(典型 200MB+ 超大型複合 APK)
打包耗時:~70s ➔ 5s(14x 效能躍升)

核心成果
代碼極致瘦身:淨刪除 14,897 行(106 個檔案,+329 / -15,226)。
依賴單純化:拔除 vendored 的 apkzlib 與 apksigner submodule,簡化為單一依賴 implementation("top.nkbe:NeoApk:1.0.1"),免除 submodule update。

速度躍升 14x 的背後原因
線性串流管線(消滅中繼 I/O):以 ZipFile + ZipMaker 替代舊 ZFile 的隨機讀寫與 LRU 暫存塊機制,徹底抹平大檔案打包時的反覆磁碟寫入。
原包零拷貝內嵌(Zero-Copy):origin.apk 免重新 Deflate 直接透傳封裝,大包內嵌與去簽還原幾乎無計算開銷。
壓縮與簽名解耦:打包完成後交由 V2V3SchemeSigner 一次性簽名,杜絕生命週期回呼的耦合等待。
簽名 API 收斂:多方案校驗收斂為 ApkSignatureReader.getApkSignatures() 一行呼叫,邏輯更輕、維護更省力。
👍27❤8