需要自行编译
- 升级至 LibXposed API 102 规范:
- 弃用传统的
de.robv.android.xposed:api:82,全面迁移至现代io.github.libxposed:api:102.0.0。 - 入口类重构为继承
XposedModule,采用现代拦截器链模型(Hooker/Chain)。 - 新增标准元数据文件
META-INF/xposed/module.prop、java_init.list与scope.list。 - 清单文件中将
xposedminversion更新为102,并在 ProGuard 规则中加入官方保护指令。 - 支持模块热重载(Hot Reloading),更新配置或模块时无需频繁重启目标应用。
- 弃用传统的
- 推荐应用新增 Microsoft Edge:
- 在模块作用域列表(
scope.list及strings-notran.xml)中正式添加com.microsoft.emmx。 - Edge 浏览器现可与 Chrome 一样,在开启辅助服务的同时正常使用现代标签页分组与流移动画。
- 在模块作用域列表(
- 零开销直通路径:
- 优先通过底层
chain.proceed()嗅探系统无障碍状态,若系统未启用任何无障碍服务,直接返回false,完全跳过耗时的堆栈捕获。
- 优先通过底层
- Android 14+ (API 34+) 惰性堆栈遍历:
- 引入 JVM 级别的
java.lang.StackWalker,按需逐层惰性遍历栈帧,彻底消除全栈展开的 CPU 峰值与StackTraceElement[]堆内存频繁分配。
- 引入 JVM 级别的
- 动态栈帧定位(消灭硬编码):
- 对 Android 14 以下设备,摒弃此前硬编码
[3]/[4]极易失效的写法,单次抓取并动态查找AccessibilityManager后的真实调用方,既大幅降低多重克隆开销,又彻底解决了随 LSPosed 内部层级变动而失效的兼容问题。
- 对 Android 14 以下设备,摒弃此前硬编码
- 精准放行原生读屏:
- 维持对
android.、androidx.、com.android.以及 Chromium 内核读屏桥接层(org.chromium.content.browser.)的精准放行,确保 TalkBack 等真实读屏功能稳定可用。
- 维持对
- 升级 Gradle Wrapper 至
7.5.1,解决在 Java 17 / 21 环境下编译报错(Unsupported class file major version 61)的问题。 - 升级 Android Gradle 插件至
7.3.1,Kotlin 插件至1.7.10,适配 Android SDK 34。
起因:https://www.v2ex.com/t/826317
使用无障碍服务会被部分app特殊对待,
然而有可能使用了无障碍只是为了便利,并不希望被优待,
于是有了本项目,
针对chrome,假装自己没有使用无障碍服务,才可以使用新版的各种标签相关功能和动画,
- app 我残? 用于测试hook效果,打开时检测到无障碍服务就会提示,
- hook 非残! xposed模块通过hook负责查询无障碍的系统服务伪装成没有启用无障碍服务,
- 安卓8以上,不为啥,只是觉得没必要支持旧版,
- Riru-LSPosed 1.6.5以上,不为啥,只是因为我开发时在用的就是这个,
- 理论上对任何目标应用都有效,
- 手机解锁,
- 刷入Magisk,
- 刷入Magisk模块Riru和Riri-LSPosed,
- 安装“非残!”,IAmNotDisabled-hook.apk,
- 在LSPosed中激活非残并勾选需要隐瞒无障碍服务应用,比如chrome,
- 重启目标应用生效,
