ColorOS 唤语

在 ColorOS 国内版上还原 AOSP 的数字助理行为。

国内固件把「唤醒数字助理」的三个入口改写成了自家小布助手,并让这些路径绕开 AOSP 的助理分派:长按电源键固定启动小布,长按手势条固定触发小布识屏,屏幕底部角落内滑干脆不派发。本模块不替换系统的助理栈,只在被改写的那几个分派点上把请求交还给系统当前设置的默认助理应用(Settings.Secure.assistant 指向的应用)。

它不是一个新的助理应用。安装并启用后,你仍然使用原来习惯的那三个入口。

能做什么

  • 长按电源键、长按手势条、屏幕底部角落内滑,三个入口都唤醒系统当前设置的默认助理。
  • 每个入口可以单独选择目标:跟随系统默认助理、一圈即搜、小布识屏、小布助手,或自定义组件。
  • 每个入口也可以单独关闭;关闭后连 OEM 自己的调用一起压掉,不再偷偷唤起小布。
  • 为长按手势条补齐国内固件缺失的一圈即搜系统服务链路。
  • 解除设置等页面的底角手势限制,这些页面也能用底角内滑。
  • 长按手势条时不再白唤醒一次小布识屏服务。
  • 在系统冻结决策处豁免 Google 应用,减少「派发成功但屏幕没反应」。
  • 长按电源键的震动反馈保持开启,与 OEM 原始行为一致。

环境要求

  • ColorOS 国内版固件,已在 ColorOS 16(V16.1.0,机型 PJZ110)上验证。
  • KernelSU 或 Magisk 等 Root 方案。
  • LSPosed 等支持 libxposed API 102 的框架。

安装

  1. 安装本页 Release 里的 APK。
  2. 在 LSPosed 中启用「ColorOS 唤语」,作用域勾选 system、com.android.systemui、com.android.launcher、com.google.android.googlequicksearchbox 四项,缺少任意一项对应功能不会生效。
  3. 重启设备。
  4. 打开「ColorOS 唤语」,在「入口」页确认模块状态为已生效,再按需调整三个入口。

使用

  • 「入口」页显示模块状态、当前系统默认助理(点击可直接跳转系统助理设置)、三个唤醒入口和一个总开关。
  • 「唤醒目标」页按入口分页,每个入口独立设置唤醒谁。
  • 「高级」页可以跳过识屏服务预绑定、解除页面级手势限制(仅 ColorOS 16,ColorOS 17 上灰显)、开启 Google 应用机型伪装。
  • 「高级」页还可以把双击电源键改成打开系统快捷钱包界面(Google 钱包刷卡),替代 ColorOS 钱包快捷刷卡(默认关,需保持系统「双击电源键唤起快捷服务」开启)。

注意

  • 系统的语音交互会话同一时刻只认一个助理应用,这是平台本身的约束,所以「自定义组件」能否弹出界面取决于目标应用自身。
  • 同一手势不要与其它接管类模块(例如 Oplus-Assistant-Hook)同时启用,先接管的一方会直接返回。
  • 如果日志里出现派发记录但屏幕没有任何反应,通常是助理进程被系统冻结或回收,把该应用设为允许后台运行、关闭权限自动回收后再试。

源码、构建说明与排错细节见 ColorOS-Assistant-Restore。

Releases

10/12/2026, 10:51:56 AM

ColorOS 唤语 v1.0.7 (versionCode 9)

在 ColorOS 国内版上还原 AOSP 数字助理行为:长按电源键、长按手势条、底角内滑各自独立唤醒所选助理。

中文

  • 适配 ColorOS 17(Android 17,V17.0.0.103):助理派发链路(AssistManager.startAssist$1 / startAssistInternal(Context, ...))、桌面底角手势规则(ab.n.c)与一圈即搜 AIDL(ContextualSearchConfig)按新签名解析。
  • 「解除页面级手势限制」在 Android 17 上灰显:系统不再提供页面级屏蔽位,此项仅在 ColorOS 16 生效。
  • 新增「双击电源键改用 Google 钱包」(默认关):双击电源键打开系统快捷钱包界面(Google 钱包刷卡),替代 ColorOS 钱包;需保持系统「双击电源键唤起快捷服务」开启。

English

  • ColorOS 17 (Android 17, V17.0.0.103) support: assistant dispatch (AssistManager.startAssist$1 / startAssistInternal(Context, ...)), the launcher corner-gesture contract (ab.n.c) and the Circle to Search AIDL (ContextualSearchConfig) now resolve against the new signatures.
  • “Unblock page-level gestures” is greyed out on Android 17, where the system no longer applies that block; the option remains for ColorOS 16.
  • New option “double-press power uses Google Wallet” (off by default): the double press opens the system quick-access wallet screen (Google Wallet) instead of the ColorOS wallet; keep the system “double press for quick service” switch on.

Changes since v1.0.6

No previous tag 'v1.0.6' found; listing the most recent 30 commits.

  • feat: ColorOS 17 support and Google Wallet double-press (0b6be6b)
  • fix(handle): give the gesture bar its own strip back to the nav bar window (121ba8a)
  • ci: put the preinstalled SDK tools on PATH (43cf442)
  • ci: stop using android-actions/setup-android (62c1182)
  • feat(handle): keep the gesture-handle long press with a hidden bar (3ab9898)
  • feat(icon): redesign AssistRestore launcher artwork (bfe4602)
  • ci(release): tag the LSP mirror as versionCode-versionName (7e1d549)
  • ci(release): mirror each release to the Xposed-Modules-Repo metadata repository (bb9c479)
  • refactor!: move the module to io.github.andrea_lyz.assistrestore (54814b7)
  • perf(release): enable R8 and resource shrinking (c33a63f)
  • fix(ci): vendor the libxposed API sources so the repository builds on its own (0c9ddd3)
  • Initial release: ColorOS 唤语 (AssistRestore) v1.0.0 (e1fa38d)

Requirements

ColorOS 国内版固件,KernelSU 或 Magisk,LSPosed 等 libxposed API 102 框架。作用域需勾选 system、com.android.systemui、com.android.launcher、com.google.android.googlequicksearchbox。

Verification

AssistRestore_v1.0.7.apk
sha256: 74df45d2820678cbab0756a73c7e8885dcee8d0775db5c6adb6ae9440cd54fb3

Assets

2

10/12/2026, 11:16:02 AM

ColorOS 唤语 v1.0.8 (versionCode 10)

在 ColorOS 国内版上还原 AOSP 数字助理行为:长按电源键、长按手势条、底角内滑各自独立唤醒所选助理。

中文

  • 吸收社区 PR #3(@zopulus)的 ColorOS 17 补充修复:Build final 字段改用 jdk.internal.misc.Unsafe 写入(Android 17 拒绝普通反射写入,且静态字段接口已从 sun.misc.Unsafe 移除);Google 应用身份伪装覆盖整包所有进程;ContextualSearchManagerService.isContextualSearchAvailable 对可信调用方放行;隐藏手势条启动时补写按压范围,重启后无需重新开关一次;voice_interaction_service 为空时按声明补全。

English

  • Additional ColorOS 17 fixes ported from community PR #3 by @zopulus: Build final fields are written through jdk.internal.misc.Unsafe (Android 17 rejects plain reflective writes and the static-field natives left sun.misc.Unsafe); the Google app identity spoof now covers every process of that package; ContextualSearchManagerService.isContextualSearchAvailable answers true for trusted callers; the gesture handle bootstraps its press range when the bar was hidden at boot, so no re-toggle is needed after a reboot; an empty voice_interaction_service is filled from the VoiceInteractionService the assistant package declares.

Changes since v1.0.7

  • fix(cos17): port the remaining upstream fixes from community PR #3 (2f40230)

Requirements

ColorOS 国内版固件,KernelSU 或 Magisk,LSPosed 等 libxposed API 102 框架。作用域需勾选 system、com.android.systemui、com.android.launcher、com.google.android.googlequicksearchbox。

Verification

AssistRestore_v1.0.8.apk
sha256: 67a18c256404568001998531b1490cb491df33686d452d7739ca06b0b0075ac0

Assets

2

9/15/2026, 10:22:11 AM

ColorOS 唤语 v1.0.4 (versionCode 6)

在 ColorOS 国内版上还原 AOSP 数字助理行为:长按电源键、长按手势条、底角内滑各自独立唤醒所选助理。

本次更新

  • 长按手势条只触发助理,页面不再同时长按。 国内固件的手势条不是可触摸窗口:OplusNavigationHandle 只是画线的 View,导航栏窗口的 touchableRegion 为空,底部这条按压实际被页面收走;页面自己的长按 500ms 就触发,而手势条 800ms 才判定,于是助理和页面长按会同时发生。模块现在把这一条交还导航栏窗口:用 ViewRootImpl.setTouchableRegion 把可触摸区设为手势条自身(约 480×88px,尺寸取自 OEM 的 navigation_gesture_view_width 与 bottom_gesture_area_height),页面不再收到这条区域里的按压。
  • 隐藏手势条时同样生效。 隐藏手势条会让 OEM 把该窗口 alpha 置 0,WindowManager 会把完全透明的窗口剔除出输入分发(inputConfig=NOT_VISIBLE),区域随即失效。模块在窗口参数生成与实时开关两处把 alpha 保持为 0.01:窗口留在输入链路里、画面上依然不可见。
  • 输入法弹起时这一条会交还键盘,底部那排按键不受影响。

已在真机(ColorOS 16 / PJZ110)验证:手势条显示与隐藏两种状态下,底部中央 1.8 秒长按的分发目标都是 NavigationBar_displayId_0,应用窗口不在触摸列表里;同一次按压助理照常触发,从手势条往上滑回桌面也仍然正常。

What's changed

  • Holding the gesture handle only summons the assistant. The bar is not a touchable window on China builds: OplusNavigationHandle is a plain View, the navigation bar window ships an empty touchable region, and the page received the press and fired its own long press at 500 ms while the bar only decides at 800 ms. The module now hands that strip back to the navigation bar window through ViewRootImpl.setTouchableRegion, sized from the OEM's own navigation_gesture_view_width and bottom_gesture_area_height (about 480x88 px).
  • It also holds with the gesture bar hidden. Hiding the bar sets that window's alpha to 0, and WindowManager drops a fully transparent window from input dispatch (inputConfig=NOT_VISIBLE), which made the region useless. Both places that write that alpha now keep it at 0.01, so the window stays in the input pipeline while remaining invisible on screen.
  • While the keyboard is up the strip goes back to the keyboard, so its bottom row keeps receiving touches.

Verified on a real device (ColorOS 16 / PJZ110) with the bar shown and hidden: a 1.8 s press at the bottom centre is routed to NavigationBar_displayId_0 and the app window is not a touch target, the assistant still fires for that press, and swiping up from the bar still reaches home.

Changes since v1.0.3

  • fix(handle): give the gesture bar its own strip back to the nav bar window (121ba8a)

Requirements

ColorOS 国内版固件,KernelSU 或 Magisk,LSPosed 等 libxposed API 102 框架。作用域需勾选 system、com.android.systemui、com.android.launcher、com.google.android.googlequicksearchbox。

Verification

AssistRestore_v1.0.4.apk
sha256: f0840f785dd06367a01b10c5cf25dc734317a6cedcbbda2e166f1a949fb8394f

Assets

2

9/14/2026, 10:01:59 PM

ColorOS 唤语 v1.0.3 (versionCode 5)

在 ColorOS 国内版上还原 AOSP 数字助理行为:长按电源键、长按手势条、底角内滑各自独立唤醒所选助理。

本次更新

  • 隐藏手势条后长按依然可用。 ColorOS 隐藏手势条时会顺带把手势条从触摸链路里摘掉:SideGestureDetector 只在 !NavBarUtils.isSideGestureBarHide() 时才把底部中央的触摸转发给 OplusNavigationHandle,于是长按完全没有反应,绑在手势条上的助理入口一起失效。模块现在只对这一个调用方把该判定回答为 false,手势条的隐藏状态、导航栏窗口透明度,以及 QS 特殊模式、截屏采样区域等其它读同一标志的功能都保持原样。「高级」页新增「隐藏手势条时保持长按」,默认开启;该入口选择「小布识屏」或「全部关闭」时不生效,保持 OEM 行为。
  • 「高级」页新增「隐藏桌面图标」。 桌面入口改到 activity-alias 上,入口 Activity 保留 MAIN + INFO 过滤器——也就是没有桌面入口时 getLaunchIntentForPackage 解析到的那一个,因此隐藏图标后仍可从 LSPosed 模块页或系统设置的应用详情打开本应用。默认关闭。

已在真机(ColorOS 16 / PJZ110)验证:隐藏手势条后,底部原位置长按照常唤出配置的目标(日志 hidden_gesture_bar_handle_unblocked → gesture_handle_long_press)。

What's changed

  • The gesture-handle long press survives hiding the gesture bar. ColorOS removes the handle from the touch chain as soon as the bar is hidden: SideGestureDetector forwards the bottom-area touch to OplusNavigationHandle only while !NavBarUtils.isSideGestureBarHide(), so the long press went dead and every assistant entry bound to the handle with it. The module now answers that single caller with false; the bar stays hidden, the navigation-bar window stays transparent, and the QS special-mode provider, the sampling-region check and every other reader of the flag keep the OEM value. New switch on the advanced page, on by default; skipped when the handle entry is set to OEM screen recognition or fully off.
  • New "hide the launcher icon" switch on the advanced page. The launcher entry moves to an activity alias, and the entry activity keeps a MAIN + INFO filter - the one getLaunchIntentForPackage resolves when no launcher entry is enabled - so the app stays reachable from LSPosed and from the system app-info page from while the icon is hidden. Off by default.

Verified on a real device (ColorOS 16 / PJZ110): with the gesture bar hidden, the long press at the usual bottom position still wakes the configured target (hidden_gesture_bar_handle_unblocked followed by gesture_handle_long_press).

Changes since v1.0.2

  • ci: put the preinstalled SDK tools on PATH (43cf442)
  • ci: stop using android-actions/setup-android (62c1182)
  • feat(handle): keep the gesture-handle long press with a hidden bar (3ab9898)

Requirements

ColorOS 国内版固件,KernelSU 或 Magisk,LSPosed 等 libxposed API 102 框架。作用域需勾选 system、com.android.systemui、com.android.launcher、com.google.android.googlequicksearchbox。

Verification

AssistRestore_v1.0.3.apk
sha256: b6c301a17aa29acc7cbd27a9362bbb7e51aae5215cadfd0f35dc5227ee96cd22

Assets

2

9/14/2026, 9:26:16 AM

ColorOS 唤语 v1.0.2

中文

本版本为 ColorOS 唤语(AssistRestore)更新启动器图标资源;助理入口行为、配置项、LSPosed 作用域和兼容性要求保持不变。

更新内容

  • 采用活力清新的开放助理入口、返回信号带和珊瑚色星芒图标。
  • 更新 Android 自适应图标、圆形图标、Material You 单色图标及五档密度回退资源。
  • 标准图标资源 ZIP 发布在上游项目 Release。

兼容与安装

  • ColorOS 国内版固件;已知验证基线为 ColorOS 16 / V16.1.0 / PJZ110 / regionmark=CN。
  • 需要 KernelSU、Magisk 或其他 Root 方案,以及支持 libxposed API 102 的 LSPosed 等框架。
  • 在 LSPosed 中启用模块并勾选 system、com.android.systemui、com.android.launcher、com.google.android.googlequicksearchbox。

验证

  • GitHub Actions run 34827723382 完成正式 Release 构建和镜像资产校验。
  • 正式签名 APK 校验通过。
  • APK SHA-256:484c548f2ef55a9998a2c9e021ef52aa85b39176a634d88d3abffe786eb83db7
  • 本次未进行新增设备行为验证;功能行为沿用 v1.0.1。

发布资产

  • AssistRestore_v1.0.2.apk:正式签名模块 APK。
  • AssistRestore_v1.0.2.apk.sha256:APK SHA-256 校验文件。

English

This release updates the ColorOS AssistRestore launcher artwork. Assistant behavior, settings, LSPosed scopes, and compatibility requirements remain unchanged.

Changes

  • Added a lively, fresh icon combining an open assistant gateway, a returning signal ribbon, and a coral spark.
  • Updated the Android adaptive icon, round icon, Material You monochrome icon, and five density fallback sets.
  • The standard icon resource ZIP is available from the upstream project release.

Compatibility and installation

  • China-region ColorOS firmware; the known validation baseline is ColorOS 16 / V16.1.0 / PJZ110 / regionmark=CN.
  • Requires KernelSU, Magisk, or another root solution and an LSPosed-class framework supporting libxposed API 102.
  • Enable the module in LSPosed and select system, com.android.systemui, com.android.launcher, and com.google.android.googlequicksearchbox.

Verification

  • GitHub Actions run 34827723382 completed the formal release build and mirror-asset verification.
  • The release APK signature verification passed.
  • APK SHA-256: 484c548f2ef55a9998a2c9e021ef52aa85b39176a634d88d3abffe786eb83db7
  • No new on-device behavior validation was performed for this release; runtime behavior carries over from v1.0.1.

Release assets

  • AssistRestore_v1.0.2.apk: formally signed module APK.
  • AssistRestore_v1.0.2.apk.sha256: APK SHA-256 checksum file.

Assets

2

9/14/2026, 8:50:06 AM

ColorOS 唤语 v1.0.1 (versionCode 3)

在 ColorOS 国内版上还原 AOSP 数字助理行为:长按电源键、长按手势条、底角内滑各自独立唤醒所选助理。

中文

  • 包名变更为 io.github.andrea_lyz.assistrestore。这是一个新的应用身份,不会原地覆盖旧版:请在 LSPosed 中为新包重新勾选作用域,旧的 io.github.andrealtb.assistrestore 可以停用或卸载。模块自身的配置也会从零开始。
  • 新增 Xposed-Modules-Repo 元数据仓库,并在发布流程中自动镜像:本版同时发布到 LSP 仓库。
  • 功能与 1.0.0 相同:长按电源键、长按手势条、底角内滑三个入口各自独立唤醒所选助理,支持一圈即搜、页面级手势放开、Google 应用冻结豁免,安装包保持 R8 压缩后的体积。

English

  • The package is renamed to io.github.andrea_lyz.assistrestore. That is a new app identity, so it does not upgrade over the previous install: enable the scope for the new package in LSPosed and disable or uninstall the old io.github.andrealtb.assistrestore. The module settings start from scratch.
  • Added the Xposed-Modules-Repo metadata repository and automatic mirroring in the release workflow, so this version is published to the LSP repository as well.
  • Same behaviour as 1.0.0: the power-button long press, gesture-handle long press and bottom-corner swipe each wake the assistant you choose, with Circle to Search, page-level gesture unblocking and a Google app freeze exemption, at the same R8-reduced download size.

Changes since v1.0.0

  • ci(release): tag the LSP mirror as versionCode-versionName (7e1d549)
  • ci(release): mirror each release to the Xposed-Modules-Repo metadata repository (bb9c479)
  • refactor!: move the module to io.github.andrea_lyz.assistrestore (54814b7)

Requirements

ColorOS 国内版固件,KernelSU 或 Magisk,LSPosed 等 libxposed API 102 框架。作用域需勾选 system、com.android.systemui、com.android.launcher、com.google.android.googlequicksearchbox。

Verification

AssistRestore_v1.0.1.apk
sha256: 0374f0b6d11c5b0e995958c3a2b81b83edf98be5055d595a08f9396baf54e29d

Assets

2