Skip to content

v3.1

Latest

Choose a tag to compare

@Rove24 Rove24 released this 28 Sep 05:01

DarQ v3.1 Release Notes

本次更新是一次面向新系统的大版本:全面适配 Android 17,彻底根治 root 模式在新系统上的静默失效,并新增「扩展深色应用」与可开关的调试日志。


🚀 Android 17 全面适配

  • 彻底根治 Android 17 上 root 模式完全失效的问题:

    • 根因定位:android.app.IProcessObserver 这个 @hide AIDL 在 Android 15 新增了 onProcessStarted,而且是插在 onForegroundActivitiesChanged 前面(不是追加在末尾)。DarQ 以 compileSdkVersion 32 编译,object : IProcessObserver.Stub() 只实现了旧版的 3 个方法,但运行时继承的是设备 boot classpath 上那版声明了 4 个抽象方法的 Stub —— 匿名类天生不完整;
    • 为什么 15 / 16 能凑合用:enableProcessObserverBroadcastOnProcessStarted 这个 aconfig flag 当时默认关闭,系统压根不会调用 onProcessStarted,缺失的那个方法永远碰不到;
    • 为什么 17 直接崩:该 flag 打开后系统真的开始回调,缺失的方法抛出 AbstractMethodError。由于抛的是 Error 而不是 RuntimeException,Binder 那层的 catch (RemoteException | RuntimeException) 接不住 —— root 服务静默死亡,不弹窗、无日志、getprop 也看不出任何异常;
    • 修复:补齐 AIDL 的 onProcessStarted 声明并改为 oneway 对齐 AOSP,DarqService 的 observer 补上对应空实现。
  • 属性写入加入回读校验:debug.hwui.force_dark 的写入原先异常被全部吞掉,写失败完全无感知。现在每次写入后回读校验,失败会明确记录。


🌙 全新「扩展深色应用」(Android 17+)

  • 对接 Android 17 新增的 force invert color 机制:

    • 与旧版 Force Dark 不同,扩展深色无视应用自身的 opt-out,对浅色应用直接反色,覆盖更彻底;
    • 主页「强制深色应用」下方新增独立卡片,Android 17 以下自动隐藏;
    • 复用同一个应用选择器,标题与列表按用途自动区分,两个列表互相独立。
  • 实现思路与强制深色完全一致:

    • 扩展深色的全局开关和 debug.hwui.force_dark 一样是全局的,DarQ 复用已有的前台应用监听,在每次前台切换时重算一次「当前应用该不该用扩展深色」,因此只对勾选的应用生效;
    • 勾选的应用同时写入系统的「强制启用」名单,让不符合系统启发式的应用也能被反色;
    • 额外优势:ViewRootImpl 注册了 force-invert 状态监听,开关变化会立刻触发深色重算,不需要等待窗口重建,切换比强制深色更跟手。
  • 已知限制:图片与视频内容无法被反色,应用内的商品图、封面图等仍会保持原色,这是反色机制的固有限制。


📋 可开关的调试日志

  • 开发者选项 → 服务信息下方新增「调试日志」开关:

    • 打开后输出 root 服务的关键节点:绑定模式(Root / Shizuku)、Shell.rootAccess() 结果、属性写入回读、前台应用切换、白名单同步;
    • 关闭时每次调用只有一次布尔判断,几乎零开销;
    • 抓取方式:adb logcat -s DarQService:v DarQServiceProvider:v AndroidRuntime:E。
  • 新增的日志设施 DarqLog 让这类「静默失效」问题不再需要改代码重新编译才能定位。


🎨 细节修复

  • 开关样式统一:开发者选项新增的开关改用模块自带的 MD3 实现,清除主题 Tint 干扰,与主页总开关样式完全一致。
  • 服务连接层日志补全:输出绑定模式与实际失败原因,便于排查 Root / Shizuku 模式切换问题。
  • 前台检测链路日志:前台回调、包名反查、observer 注册失败都会留下记录,不再静默。

📦 下载与安装说明

  • 推荐直接下载下方 Assets 中的安装包进行更新。
  • 本版本全面兼容 Android 10 ~ Android 17,支持 LSPosed 模块模式、Shizuku 免 Root 模式及传统 Root 模式运行。
  • 「扩展深色应用」需要 Android 17(API 37)及以上,低版本系统会自动隐藏该卡片。