跳转至

EVCC 用户手册

最后更新:

EVCC — 车辆工程控制台 (Ecarx Vehicle Control Console)

官网:coauto.cc 适用平台:已适配的 FlymeAuto 系统车型(需 Root 权限) 当前参考版本:v3.1.6(实际最新版本以应用内更新页和官网下载页为准) 本手册最后按源码集中校对:2026-09-04

本软件仅在"技术共创星球"群内免费提供,仅限群成员使用。

在线版:https://evcc.coauto.cc/docs/generated/user-guide/

相关专题:


第一章 概述与首次使用

1.1 EVCC 是什么

EVCC 是一款运行在龙鹰一号/双龙鹰一号芯片 FlymeAuto 系统车机上的工程控制台应用。它提供:

  • 自定义控制台 — 拖拽式组件布局,可绑定大量隐藏车辆属性,按钮/开关/滑块一键操控
  • 自动化引擎 — 触发器 + 条件 + 动作的可视化规则系统,属性变化、定时、开机等多种触发方式,比车机自带的场景助手强大得多
  • 音乐小窗桥接 — 将汽水音乐、网易云等第三方 App 的播放信息无缝桥接到车机原生小窗,支持歌词同步、桌面歌词、模拟蓝牙歌词和 L7 HUD 歌词,还能方向盘控制、语音控制
  • HUD 小窗投屏 — 将导航地图投射到 HUD 窗口,基于自带地图 App 的保留活动组件投放,能同步自带地图状态
  • 仪表投屏 — 将任意内容投放到仪表物理屏幕(龙鹰一号等支持的车型)
  • VHAL + APVP + AIDL + CAPI + AdaptAPI + SOA 六源诊断 — 六条属性链路可独立开关,覆盖常规 CarProperty、底层信号、服务属性及带语义名称的适配属性
  • Frida 动态注入 — 内置脚本库和守护模式,支持 EAS 鉴权绕过、DPI 逐应用修改、HUD 控制等高级 Hook 场景
  • 远程控制 — 钉钉/Telegram/飞书三平台机器人,远程查看状态、执行命令、管理服务
  • 悬浮工具栏 — 可拖拽的悬浮快捷按钮,自定义功能、主题跟随、透明度可调
  • 小窗应用 — 将任意 App 以小窗形式投射到主屏或副屏,支持自由拖拽、缩放、旋转和多窗口同屏
  • 终端面板 — 一键执行内置/自定义 ADB 命令,支持云端命令同步
  • 应用管理器 — 六类分组浏览,支持对系统/用户应用的启停、卸载、禁用等操作,专为龙鹰车机定制
  • 下载站 — 按分类和文件夹下载软件,自动优选线路,支持后台下载及安装、旧软件下载站内容和 EVCC 最新版本
  • 文件管理 — 浏览本地文件、EVCC 软件下载站和远程网盘/协议目录,支持安装 APK、图片查看、视频/音频播放、编辑文本、批量复制/移动/删除和扫码输入
  • 云端配置同步 — 属性元数据、ADB 命令、Frida 脚本、模板/规则商店均支持云端下发和版本管理
  • STR 休眠防护 — 通过定时写入 VHAL 属性阻止车机进入深度休眠,方便进行远程操控
  • DPI 调节 — 按应用独立调整界面缩放(目前不太稳定,不建议长期使用)

1.2 PCHCC(SaaS 定制版)

PCHCC 是默认预置银河 E5 连接方案的 SaaS 客户端,包名为 com.pch.pchcc。它根据 APK 构建类型执行 SaaS 策略:即使设备使用普通授权,也会获取 SaaS profile、控制台模板和自动化配置。标准 EVCC APK 不受这些限制。

首次启动的设置向导只显示语言选择,顺序为跟随系统、English、Español、简体中文。选择后会自动写入银河 E5 / LOONG_E5_A7 预设:Root、VHAL、自动化引擎和音乐转发桥接开启,ADB 连接、APVP、AIDL、CAPI、AdaptAPI、SOA 和 Frida 关闭。向导不能跳过,不再询问车型、Frida、音乐桥接或界面缩放。

SaaS 客户端的应用和文件菜单默认隐藏。管理员可在后台“SaaS 版管理”中按设备 ID 或 VIN 同时开放这两个菜单,时长可选本次运行、5 分钟、10 分钟或 24 小时。授权在下一次心跳生效,管理员撤销、服务端返回无授权或本地到期时会立即隐藏。“本次运行”在 App 重启后失效;定时授权在到期前可于重启后联网重新取得,无法联网时默认隐藏。菜单显示后,应用管理和文件管理功能可正常使用。

SaaS 版只保留一个标准控制台。云端导入的组件为只读,不能编辑、删除、拖动、缩放或替换;本地只能添加按钮,动作限于启动应用、触发自动化、开关自动化、设置音量、播放/暂停、上一曲、下一曲和语音播报。自动化页只能开关云端预置规则和查看执行日志。

Shell 页不显示 IP、端口、二维码和自由命令入口,只能执行内置的安全诊断动作。SaaS 版不提供下载站、属性页、Lua/脚本编辑、内容商店、U 盘 APK 检测安装、配置备份和版本更新。服务页保留音乐转发桥接、主悬浮窗、音量组、AVM 限速解除和 Tailcat 远程通道;音乐桥接不再提供车型选择、桌面歌词或模拟蓝牙歌词。

PCHCC mini 与主应用共享当前有效的 SaaS 授权,配套安装包内置于主应用,由主应用安装或更新,无需单独激活。小窗控制台由管理员固定配置,主控制台和 Mini 的配置分开保存;应用页支持增删、排序和显示设置。应用启动仅允许用户安装的应用及 Spotify,系统应用即使经过更新或属于预装应用,也受此规则约束。详细操作见 Mini 使用手册。

SaaS 后台可设置主控制台、自动化和 Mini 的全局默认分享码,并为自行添加的车型分别覆盖;空白覆盖继承全局,明确禁用则不下发该类别。旧 EX5 配置沿用为全局默认,不自动创建车型。Mini 预设由管理员管理。SaaS 协作者可在专用页面输入设备 ID 直接激活 SaaS 版,原生成激活码入口保留;重复提交不重复收费,设备归属和已有版本冲突会显示原因。

1.3 软件适用平台与支持车型

适用平台:已适配的 FlymeAuto 系统车型,设置向导会按车型方案自动选择对应连接链路。

设置向导车型方案: - 银河 E5 / A7 - 26 款星舰 7 - 老款领克 07/08 - 其它龙鹰通用 - 银河 L6/L7 竖屏 - 其它 8155 通用 - 高通 8295 通用 - 25 款星舰 7 - 其它 E02 通用

各方案默认属性链路(完成基础服务配置后写入;SOA 与 AIDL 按向导方案显示,云端显式配置优先): - 龙鹰通用 / 老领克 / 未知方案:开启 VHAL、APVP;关闭 AIDL、CAPI、AdaptAPI - 8155 方案:开启 AIDL、CAPI;关闭 VHAL、APVP、AdaptAPI;并走无线调试授权 - 高通 8295 通用:开启 VHAL、APVP;关闭 AIDL、CAPI、AdaptAPI;不走无线调试授权 - E02 方案:开启 APVP、CAPI;关闭 VHAL、AIDL、AdaptAPI - E06 方案:开启 CAPI、AdaptAPI、SOA;关闭 VHAL、APVP、AIDL。E06 由云端精确匹配推荐,不在通用车型手动列表中;已识别的两款 E06 若仍保留旧向导的 VHAL/APVP 默认组合,更新后会修正为 E06 组合 - 除 E06 外,其余方案的 SOA 开关默认关闭;需要该属性源时再手动开启

属性源显示规则:SOA 只在 E06 方案或高手模式下默认显示;AIDL 只在银河 L6/L7 竖屏、其它 8155 通用或高手模式下默认显示。高手模式就是身份页的“跳过向导”(原“我是高手”)入口。VHAL、APVP、CAPI、AdaptAPI 默认显示。车型的云端显式开关可以覆盖上述规则,隐藏时会停止对应连接。SOA 与 AIDL 的云端全局默认项为“不下发”,即由本地向导决定;已有车型专属配置继续有效。

注意:EVCC 不支持极氪车型。若云端识别到当前车型暂不支持,设置向导会直接显示“不支持此车型”,不会继续自动配置。

1.4 安装

本软件需使用 ADB 安装在车机上,因此需要你的车辆已经可以打开 ADB。请自行上网搜索你的车机是否可以打开 ADB。

建议打开 ADB 后,使用应用管家安装。本软件安装后,可在软件内部进行一键更新,后续更新无需手动下载 APK 安装。

也可以使用 EVCC 安装器。安装器只负责下载并安装/更新 EVCC、打开已安装的 EVCC、上传安装错误日志;已安装 EVCC 时不会进入维护模式,也不再提供本地 APK 安装或应用启动器。多用户车机会自动尝试兼容安装,无需手动选择用户。安装器会直接下载“最新版”通道的 EVCC。

如果安装器提示网络连接失败,优先关闭热点后重试;仍失败再切换网络或上传错误日志。

1.5 激活

“恢复后台任务”仅在存在因功能限制暂停、原有开关仍开启且当前授权允许恢复的任务时显示。确认后恢复这些任务;原来未开启的功能不会因为升级自动启动。

为避免软件滥用、传播,软件首次启动后所有功能页面处于锁定状态,需要先完成激活。

自动激活(推荐): 1. 点击顶部栏的设备名称/设备 ID 2. 把弹出的设备 ID 发送给软件管理员 3. 管理员进行授权后软件会自动激活

自助激活:

也可以直接在 EVCC 待激活页面的二维码及网址下方,在“请输入激活码”输入框中填写购买的自助激活码,点击右侧“激活”按钮。作者版权说明位于应用信息的构建时间下方。软件自动使用当前设备 ID,无需手动输入设备 ID 或验证码;需要保持联网。简洁版或功能升级会在页面内显示确认说明,再次点击“确认激活”后才兑换。正在提交时按钮暂时禁用,失败后可重试;同一码已成功兑换到当前设备时,重试不会重复收费。车型限制、黑名单和现有购买规则保持不变。

使用网页时: 1. 打开 EVCC 功能导航里的"EVCC 本体激活",或直接访问 EVCC 本体在线激活页:https://evcc.coauto.cc/activate-evcc 2. 输入 EVCC 锁屏/首页显示的设备 ID、购买到的激活码,并完成页面验证码 3. 提交成功后回到 EVCC,并保持联网,软件会通过原有自动激活流程获取授权

自助激活码格式通常为 XXXXX-XXXXX。粘贴时多出的空格、缺少横杠或横杠位置不对,一般会自动按标准格式识别。一个激活码只能绑定一台设备,一旦绑定不能换到其他设备;后续换机请使用 EVCC 的"设备迁移"功能。若在线激活页配置了购买入口,可直接点击"去购买激活码"跳转到发卡网站;未配置时页面不会显示购买按钮。

在线激活页支持在网址里带激活码参数,例如 https://evcc.coauto.cc/activate-evcc?code=ABCDE-23456,打开后会自动预填激活码;也支持 activation_code 或 c 作为参数名。

管理员也可以在服务端仪表盘快捷生成一个 EVCC 本体自助激活码;生成后后台会显示激活码、https://evcc.coauto.cc/activate-evcc 和一段可直接复制给用户的引导文案。该文案可在服务端"自助激活 → EVCC · 设置"里修改。快捷发码和批量发码均提供管理员专属的“解除限制激活”选项,默认不勾选;勾选后,本次生成的每个激活码都不受车型激活限制。激活码列表和管理员导出的 CSV 会标明此项,代理不能设置。

如果在线激活页提示"云端还没有发现这个未激活设备",请先打开 EVCC 并保持联网,等服务器记录到该设备 ID 的未激活状态后再回来激活;完全没被云端发现过的设备 ID 不能直接绑定激活码。

如果在线激活页提示设备仍在"心跳异常"列表中,请先联系管理员处理异常;管理员忽略或删除对应异常后,才能继续自助激活。

车型激活限制:管理员可在后台侧栏“限制激活”中填写需要限制的车辆型号,每行一项,保存后生效。型号按包含文字匹配,忽略大小写和多余空格;例如填写 Geely EX5,也会限制 GEELYGALAXY Geely EX5。页面中的“检查型号”可预览已保存规则是否命中。删除对应行并保存即可解除该项限制;清空全部规则需要勾选确认。

车辆 XDSN 信息:EVCC 3.2.4 起会在心跳中上报车辆可读取的 XDSN。管理员可在“最近心跳”和“设备管理”中查看,也可通过对应的 CSV 导出;未读取到时留空,已有设备记录不会因一次读取失败被清除。

命中规则的车型不能使用普通激活码自助激活,也不能由代理手动注册,会提示“该车型不支持激活,请联系管理员。”被拒绝时不会消耗自助激活码或产生成功注册记录。管理员可以从后台手动激活,或在发码时勾选“解除限制激活”进行放行;未勾选的管理员激活码和已有激活码仍遵循限制。

启用车型限制后,尚未获取型号的设备需要先打开 EVCC 并联网,再进行代理注册或使用普通激活码自助激活。“解除限制激活”的码也允许尚未获取型号的设备兑换,但设备仍须先被云端发现,并通过原有的黑名单、心跳异常、激活码有效性和授权版本检查;该选项不会修改全局限制规则,也不会让设备以后的所有购买自动放行。已激活设备继续正常使用;新增购买或功能升级仍按本次所用激活码检查限制,重复提交同一已兑换激活码不会重复计费。限制规则不用于收回已经签发的离线授权。

设备 ID 始终显示在顶部栏,方便提供给管理员进行激活。激活前的锁屏界面会展示官网入口、官网网址下方的“作者/版权所有@四十六”声明,以及设备信息卡片;设备信息卡片会显示设备 ID(可长按复制)、SN、品牌/型号/设备代号、Android/SDK 版本、应用版本和构建时间。

标准版与简洁版(v3.1.0+)

EVCC 使用同一个主安装包。标准版左上角显示“EVCC”,简洁版显示“EVCC 简洁版”。简洁版开放哪些菜单、功能和设置向导步骤,由管理员按车型或设备配置;被隐藏的功能也会停止运行。日常使用可以离线,联网恢复后会同步管理员的调整。设备信息和升级入口始终可以从左上角设备信息打开。

首次自助激活简洁版时,页面会再次说明仅开放少量功能,请确认后再激活。仅购买简洁版或单个功能包、尚未拥有标准版权益的设备,仍可点击设备信息中的“功能升级”,或点击名称下方、设备名称和 ID 右侧的“功能升级”按钮,扫描二维码前往原购买页面;按钮采用与控制台 EVCC mini 快捷入口一致的圆角描边样式,并跟随昼夜主题;二维码使用后台 EVCC 自助激活设置中的“购买链接(发卡网站)”,链接未配置时会提示联系销售方。手动输入激活码仍保留在设备 ID 连续点击 7 次的隐藏入口中。

功能升级一和功能升级二可以分别购买。单独升级一档时,在当前简洁版规则上开放该档配置的项目;两档齐全后,直接获得标准版权限。也可以直接购买标准版激活码完成升级。原有独立付费功能仍需符合其授权要求。仅含功能升级的激活码需要先有简洁版授权;同时勾选“激活简洁版”的组合码可以首次一次完成激活。含有已购项目的其他激活码不会被消耗,重复提交已兑换的同一码不会重复收费。

拥有标准版权益时切换使用版本(v3.1.2+):保持联网,点击左上角 EVCC/设备信息 → 切换版本。按当前需要选择使用版本,完整标准版权益始终保留,可随时联网免费切回标准版。

  1. 页面按“简洁版”“标准版”“简洁版 + 功能包一”“简洁版 + 功能包二”的顺序显示四个选项,当前版本高亮并标注“当前版本”。
  2. 选择其他可用版本后查看确认说明,再点击“确认切换”。显示“暂未开放”的版本暂时不能选择。
  3. 切换后,已保存的配置不会丢失,但目标版本不支持的已开启功能开关会自动关闭。以后切回支持这些功能的版本时,按需自行重新开启;切回不会自动恢复这些开关。
  4. 无法获取版本信息时,检查网络后点击“重试”。如果提示暂时无法确认结果,请重新打开此页面核对当前版本,再决定下一步。

免费切换使用版本不会消耗激活码,也不改变已拥有的标准版权益。原本只购买简洁版或单个功能包的设备继续使用“功能升级”购买流程,不能通过此入口取得尚未购买的标准版权益;独立付费功能仍遵循各自的授权规则。

管理员可以在“云端配置 → 简洁版配置”维护默认模板、独立车型规则、批量规则和设备覆写。“勾选”表示隐藏;设备覆写可选择继承或覆写,页面同时显示最终状态和来源。车型从现有适配车型中选择,新建规则从默认模板初始化;未配置车型使用默认模板。新增功能在旧规则中默认隐藏,简洁版不能开放正常车型适配已限制的功能。下面的“功能升级一”和“功能升级二”分别设置额外开放项;这些页面“勾选”表示开放,未勾选继承简洁版规则,最终仍受标准版适配和所属菜单限制。各配置及对应售价确认后才能签发。

简洁版配置支持独立管理 AIDL、SOA 连接入口和诊断探针采集总开关。基础简洁版默认不额外隐藏 AIDL、SOA、诊断探针和系统诊断日志上传;是否显示或执行仍取决于正常车型适配,AIDL、SOA 的“跟随向导”行为保持不变,不会因此自动开启连接。内核提权默认隐藏,管理员可以在简洁版模板、车型规则、设备覆写或单档功能升级中单独开放,最终仍受正常车型适配限制;两档齐全或获得标准版授权后,按正常车型适配开放。

内核提权未开放时,简洁版上传系统诊断日志保留普通收集和上传流程,不提供“同时执行提权”选项。涉及提权的主动探针模式也不会执行;可回收既有诊断记录的路径仍可用于排查。未开启的诊断采集不会因购买版本变化自动开启。首次更新到包含这些控制项的客户端时,旧有效离线授权保留原有 AIDL、SOA 和诊断开关行为;同步新授权后遵循明确的配置。

配置表中“新手引导”的“功能”列会显示对应的车机页面标题,并在下方说明页面内容和显示条件。例如“部署 Frida 引擎”对应提供部署或跳过按钮的页面,“基础服务配置”对应连接进度页面,“EVCC 用户服务协议”对应阅读协议并点击“我知道了”的页面。“ADB 连接授权”仅在 8155 方案中出现;“新手推荐配置问答”的标题和问题由云端设置,未配置时自动跳过。全局模板、车型规则、批量配置、设备覆写和两档功能升级配置使用相同的页面说明。

注册设备、快捷发码及批量发码可选择“激活简洁版”“功能升级一”“功能升级二”,全部不勾选表示标准版。设备管理的“授权版本”列仅管理员可见,按当前状态显示标准版、简洁版、升级一、升级二、升级 1+2;升级 1+2 的功能等同标准版,但保留组合购买记录。该列不再显示同步标签。每行“重新生成”左侧的“版本切换”仅管理员可用,不新增收费,联网后生效。拥有标准版权益的用户如需调整使用版本,可从车机“切换版本”免费选择,无需再购买功能包。后台为尚未拥有相应权益的设备单独办理功能升级一、二时,仍按对应项目计费并保留购买记录;请选择功能升级项,不要同时勾选“激活简洁版”。自助激活仍会检查历史购买,不重复出售已拥有的完整授权。迁移和重新生成保留当前版本与已购升级项目。

“付费总览”分别设置简洁版、功能升级一和功能升级二的售价,三组设置横屏并排一行、竖屏分为三行,各自保存;组合码的各购买项目独立计费,兑换不重复计数,免费管理切换不改变收费历史。用户管理中“允许代理激活简洁版”默认关闭;开启后,该代理可以注册简洁版设备和生成简洁版激活码,不能办理功能升级一、二。简洁版分成按标准版比例计算,例如标准版售价 100 元、代理分成 30 元,简洁版售价 30 元时分成为 9 元。每日注册日历和本期人数会在注册数量后显示“(简洁+数量)”。“代理结算”中的“我自己”按实际收费统计:管理员及 SaaS 管理账号生成的激活码只有在实际兑换后才计费,未使用码不计费;普通代理仍在生成激活码时计费。系统保留已有自营结算作为切换基线,避免此前已结算的码在后来兑换时重复收费。已完成结算记录保持不变。

管理员可在“用户管理”的“补充权限”中,为单个账号勾选一个或多个一级菜单并保存;添加账号时也可一并勾选。可选菜单包括总览、收费与激活码、设备管理、下载站、灯语商店、壁纸商店、内容商店、风控与诊断、云端配置、SaaS 版、EVCC Mini、运营工具和系统,授予所选菜单下完整的页面及管理操作权限。原来的代理、协作者或 SaaS 协作者身份保留,操作归属、激活和记账仍记录原身份;其他账号不受影响。单独补充内容商店不会扩大代理在财务或设备等其他菜单中的数据范围;补充收费与激活码或设备管理时,可管理所选组的完整数据。系统权限包含用户管理及为其他账号分配权限。取消勾选后保存可撤销对应补充权限,原角色已有权限仍然保留,保存后的下一次页面或操作请求即按新设置检查。

每日注册日历将“注册”“功能升级”“拉黑”分行显示。功能升级按成功办理次数统计,包含功能升级一、二及购买标准版升级,同一次组合升级计一次;首次使用简洁版与功能升级的组合码时,分别计一次注册和一次功能升级。免费管理切换和未兑换激活码不计入功能升级,拉黑同一设备只计一次。管理员查看全部记录,代理只查看自己办理的记录及所属设备的拉黑情况。

管理员可从“设备管理”下方打开“注册审计”,按设备信息、来源、激活版本和日期筛选,并导出全部筛选结果。每一行对应一次成功的后台注册或自助兑换;组合码在同一行列出简洁版、功能升级一、功能升级二等实际购买项目。迁移、发码、重新生成、免费版本切换和重复同步不增加注册事件。设备 ID、来源、型号、软件版本、激活版本与时间保留事件发生时的状态,VIN、SN、备注实时关联设备管理中的最新信息。历史记录只补录已有成功事件,历史中未保存的型号或软件版本显示为“—”。

注册审计中的“注册金额”“分成”“应收”对应付费审计中同一笔发码或后台购买时锁定的金额,应收为注册金额减分成,后续调整售价或代理分成不改变历史。注册审计与付费审计导出的 CSV 均包含“激活码生成时间”“激活码批次”;自助激活按该次记录对应的激活码填写,同一设备多次激活或升级分别匹配各自的码。后台直接购买及缺少原始码信息的历史记录,这两列留空;这两个字段不增加到页面列表中。

管理员限制运行功能时保留原配置。重新开放后,需要在设备信息中点击“恢复后台任务”并确认,才会恢复此前开启且开关仍开启的后台任务;请先检查自动化等任务保存的动作。用户主动切换版本后自动关闭的功能,则需按需手动重新开启。关闭命令执行时,文件管理提供受限的固定操作,文件写入限于普通存储和 U 盘,不能改写程序、授权、其他应用数据或系统程序;受限解压支持 ZIP。内容商店和 EVCC mini 也可能被管理员关闭。

1.6 EVCC 用户服务协议

EVCC 首次进入设置向导时会先显示独立的 EVCC 用户服务协议 页面。协议会说明 EVCC 主要用于个人技术研究与学习、涉及 Root/ADB/车辆属性读写/自动化/Frida/投屏/日志诊断等高级能力,以及激活授权、设备信息、日志上传、实验功能和用户责任等风险边界。

首次阅读协议时,底部 "我知道了" 按钮会先显示 10 秒倒计时,倒计时结束后才可点击确认;确认后再次打开设置向导仍会先显示协议页面,但不会再倒计时,可直接点击 "我知道了" 继续。

1.7 设置向导

首次安装并激活后,软件会自动启动设置向导,分步引导你完成基础配置:

步骤 说明
开始 — 用户服务协议 阅读并确认 EVCC 用户服务协议,首次确认前会有 10 秒倒计时
开始 — 身份选择 选择"设置向导"进入完整向导,或选择"跳过向导"直接结束
1 — 选择车型 云端可按车机型号精确匹配并推荐方案,也可手动从 9 个车型方案中选择
2 — ADB 连接授权 (8155 方案专用) 尝试自动完成加密 ADB 授权、证书注入和无线调试配置;失败后再提示手动指令
3 — 基础服务配置 自动连接 RootService 和核心服务
4 — Frida 引擎 说明 Frida 的适用功能和风险,可选择部署或跳过
5 — 系统白名单 配置保活白名单,提升后台存活率
6 — 音乐桥接 询问是否开启音乐转发桥接;选择开启时会按车型方案自动选择桥接车型
7 — 推荐配置 若当前车型配置了云端推荐问题,会在基础服务、Frida、白名单和音乐桥接选择处理完成后显示问题、说明和选项,按"是/否"自动应用推荐配置;未配置时会直接跳过
8 — 完成 设置完成,提示重启车机使配置生效

向导支持中途退出,已完成的配置会自动保存,下次启动时可从中断处继续。如需重新运行向导,可在设置页面点击"设置向导"按钮;新安装默认控制台也会提供"如果您未完成设置向导,可点击此处重新完成引导"组件,点击可直接进入向导,后续可在编辑控制台时删除。系统白名单步骤会按当前车型配置显示或跳过;若云端未下发匹配结果,向导不会自动选中车型,需要用户手动选择。推荐配置只在云端为当前车型配置了有效问题时出现,并且会等前面的车型方案、服务开关、Frida、白名单和音乐桥接选择处理完成后再应用;音乐桥接会在推荐配置前单独询问,选择开启后会打开"音乐桥接"开关,并按车型方案选择桥接车型:龙鹰和未知车型默认使用龙鹰通用,8155 与 E02 方案使用银河 L6 / L7,老领克07/08 使用同名方案。悬浮窗等其它能力仍可由推荐配置中的分享码按车型和问题选择按需套用。选择"是"后会按推荐分享码应用控制台、EVCC mini 控制台、自动化、音乐桥接、悬浮窗或配置包等内容,遇到脚本、危险自动化或高风险配置时仍会弹出安全确认;单个分享码失败不会中断整个向导,结果会显示在问答页。设置向导不再主动引导进入控制台模板商店,需要模板时可在完成向导后从控制台或内容商店自行进入。完整走完设置向导后,主界面仍会继续弹出界面缩放调整,界面缩放会显示云端下发的当前车型默认 DPI,并提醒修改 DPI 可能导致控制台或软件界面显示异常,建议保持默认;随后会显示主界面功能引导,覆盖控制台、内容商店、服务、属性、终端、自动化、应用管理、文件、脚本和设置等入口。

提示:如果 ADB Shell 连接总是异常,请使用应用管家"永久打开无线ADB"。并且确认应用管家右上角显示已连接,若应用管家也连不上,先解决该连接问题。

1.8 界面概览

软件采用顶部标签页 + 左右滑动/点击切换的布局,下载站开放时共 10 个标签页:

序号 标签名 功能简述
1 控制台 自定义仪表盘,实时显示/控制车辆属性
2 属性 VHAL/APVP 属性浏览、搜索、读写、监控
3 服务 音乐桥接、HUD小窗投屏、悬浮窗、STR 防护、应用 DPI 调节、远程控制等
4 终端 ADB / Root Shell 命令面板,一键执行内置/自定义命令
5 自动化 自动化规则引擎,触发器+条件+动作
6 应用 应用管理器,查看/卸载/启停应用
7 下载站 浏览、下载、安装和分享应用
8 文件 本地/远程文件管理、APK 安装、媒体预览、文本编辑、批量操作
9 脚本 Frida 动态注入和 Lua 编程脚本
10 设置 所有功能的启动状态管理、保活白名单配置、日志、版本更新

在设置页"配色方案"下方点击"调整一级菜单顺序",可以打开排序弹窗。拖动左侧把手重新排列后点击"保存顺序",顶部标签会立即按新的顺序显示;点击"恢复默认"可回到官方默认顺序。右侧的"EVCC 自身 DPI"可直接调整主界面缩放,作用等同服务页 DPI 调节卡片中的 EVCC 自身 DPI 调整。

银河 E8 主界面会自动为底部车机栏留出空间,无需手动开启;字号与界面缩放保持原设置,其他车型布局不变。系统未提供底部栏高度时,会按屏幕高度估算避让空间;若仍有遮挡或留白偏大,请上传当前日志并附上主界面照片。

常用界面与横竖屏(v3.1.1+)

设置页和服务页可以点击“收起日志”扩大内容区,再点击“展开日志”恢复;两页分别记住选择。日志展开时,设置页横屏保持配置与日志约 2:3,竖屏约 1:1。服务卡片的展开/收起入口在标题右侧:带有总开关的卡片将按钮放在开关左侧,没有总开关的卡片保持原位置。点击标题行也可展开或收起;功能开关仍单独控制功能。

音量组调整采用紧凑的分组卡片,同屏可查看更多音量组;滑杆两端保留操作空间,较长列表可上下滚动。仪表投屏在横屏并排显示预览与参数,竖屏上下排列。表单、密码键盘、文件选择器和底部操作区按可用窗口适配,日间与夜间保持清晰可读。

系统进程页面以紧凑表格显示进程名称、PID、CPU 与内存,顶部保留搜索、当前进程数和采样时间;点击进程仍可查看详细信息。

1.9 多语言

EVCC 支持简体中文、繁体中文、英语、俄语、西班牙语、越南语、马来语,并可选择“跟随系统”。语言选项以有间距的圆角按钮显示,当前语言高亮,无需先切换到其他语言。配色方案使用图标与名称标识,直接点击即可切换,窄窗口自动分行。

设置页和新手引导均为每行四项、共两行:第一行是“跟随系统、简体中文、繁體中文、English”,第二行是“Русский、Español、Tiếng Việt、Bahasa Melayu”。语言名称使用各自的文字,“跟随系统”随当前界面语言显示;较长名称可换行。选择后立即应用,mini 同步主程序的语言设置。下载站会随语言更改自动切换:中国站对应简体及繁体中文,国际站对应其他语言,仍可手动切站。

1.10 主题

支持白天/夜间/自动三种主题模式。自动模式跟随系统暗色模式切换。

1.11 皮肤系统(v2.3.6+)

EVCC 支持一整套皮肤自定义:配色、图表色、卡片圆角 / 边框 / 阴影 / padding、全局字号、页面背景(纯色 / 线性渐变 / 径向渐变)、以及每个 widget 单独的样式覆盖,日间和夜间可以各配一套,也可以共用一套。

规则、模板、组件、脚本和配置商店会独立加载完整车型分类,不受当前分页或搜索结果影响。首次进入时,匹配本车的车型排在最前并自动选中,列表从该车型的前 100 条开始加载,继续滚动可加载更多;没有匹配车型时显示全部内容。可手动多选其他车型,或取消全部选择查看所有车型;搜索、排序和刷新会保留手动选择。车型栏默认折叠为一行,点击“展开”查看全部车型,点击“收起”恢复一行;展开区域可上下滚动。各商店采用统一的卡片宽度、标题字号和操作按钮布局,并根据窗口宽度调整列数。皮肤商店不按车型分类。

内容商店的模板、组件和皮肤采用独立卡片网格:标准横屏 1.6 倍缩放时每行四张,1440×1920 竖屏 1.4 倍缩放时每行三张,窄窗口自动减少列数;最后一行不足时保持相同卡宽。分享码位于卡片右上方,名称独立居中,说明和操作按相同轴线排列。模板以 16:9 的预览区域完整容纳截图,可点击放大;组件显示紧凑信息卡。官方皮肤没有截图时,以约 2:1 的预览区域显示实际日夜配色,并标注“配色示意 · 非截图”。模板的应用、提取组件和导出在空间足够时同排,窄窗口会自动换行。脚本和配置卡片保持标准横屏至少三列、标准竖屏至少两列的布局。

快速上手 — 从皮肤商店挑一个

控制台顶部独立的"皮肤"入口 → "🏪 浏览皮肤商店"会进入内容商店;"模板"、"组件"和"皮肤"不再共用同一个菜单。顶部可在规则商店 / 模板商店 / 组件商店 / 皮肤商店 / 脚本商店之间切换;皮肤商店里有 9 款官方预置(赛博朋克 / 极简白 / 车载仪表 / 海洋蓝 / 复古绿 / 特斯拉极简 / 曜石金 / 晨雾 / 极光)以及社区上传,点一下"应用"就装上。"我的上传"旁边的"恢复初始皮肤"可清除当前控制台皮肤并回到 EVCC 默认外观。

官方预设分别提供完整的日间与夜间配色,按钮、开关、辅助文字及仪表刻度随皮肤协调呈现。已应用的皮肤保存在本机;官方优化后,从皮肤商店重新点击“应用”即可使用新版,不会自动覆盖自己修改过的皮肤,也不改变控制台组件布局。

上传自己做的皮肤到商店:打开"🏪 浏览皮肤商店"后,右上角有一个「📤 上传当前皮肤」按钮。先通过 Web 编辑器 / 粘贴 JSON / 导入文件其中一种方式把皮肤应用到本机,再点"上传当前皮肤",填写名称和简介即可提交到公共商店;勾选「隐私上传」时不会进入公开商店审核/上架,只能通过分享码分享;上传署名在内容商店顶部"我的署名"统一设置。上传后会生成数字分享码,审核上架前或隐私上传时也可以把分享码发给别人,让对方在内容商店顶部点"输入分享码"后确认下载。皮肤本身支持 imageDataUrl 这类自包含背景图;如果皮肤 JSON 引用本地图片 / 音频 / 视频等资源,上传时也会一起保存,别人应用时会自动下载并关联到本机路径。

用 Web 皮肤编辑器自己调

控制台"模板"菜单 → "📱 打开 Web 皮肤编辑器 (扫码)",用手机 / 平板 / 电脑扫弹出的二维码(或复制链接 https://evcc.coauto.cc/static/skin-editor/ 到别的设备)。车机屏幕太小操作不便,所以不直接跳转,而是扫码到别的设备上编辑。

编辑器功能: - 三栏布局:左侧可视化面板(色板 / 形状 / 背景 / 图表 / 信息),中间实时预览,右侧 JSON 代码 - 预览界面切换:控制台 / 设置 / 自动化 / 属性 / 对话框 5 种主界面都能预览皮肤效果 - 样板间 vs 真实布局:样板间展示所有 9 种 widget + 8 种图表;点"上传控制台 JSON"可以导入你的布局,在真实布局上看效果并点任意 widget 单独改它的样式(覆盖圆角 / 描边 / 背景 / accent / chart 色等) - 日夜两套独立:顶部"🌞 日间 / 🌙 夜间"切换。勾"日夜共用"则夜间复用日间配置 - 随机数据动画:看配色在动态场景下的表现 - 预设方案:色板 tab 顶部有一键套用的 5 种预设(第一个"空白起点"是从零开始的模板) - 📖 AI 说明书:顶部按钮打开完整 DSL 规范,一键复制给 ChatGPT / Claude,让 AI 帮你根据风格描述写皮肤 JSON(比如"海洋蓝 + 珊瑚橙 accent + 大圆角")

编辑完应用到车机 — 三种途径任选: 1. 编辑器点"导出皮肤"下载 .evccskin 文件,传到车机,控制台菜单 → "📂 导入皮肤文件" 2. 编辑器右侧 JSON 视图点"复制",到车机控制台菜单 → "📋 粘贴皮肤 JSON 代码",粘贴即应用 3. 上传到皮肤商店让别人也能用(编辑器里"上传"功能)

控制台菜单 — 皮肤相关入口汇总

控制台顶部"模板" → "控制台皮肤" 分类下: - 🏪 浏览皮肤商店 - 📱 打开 Web 皮肤编辑器 (扫码) - 📋 粘贴皮肤 JSON 代码 — 直接丢一段 JSON 就应用 - 📂 导入皮肤文件 (.evccskin) - ⬇️ 导出当前皮肤 — 把现在用的皮肤存到 Download/EVCC/skins/ - ❌ 移除当前皮肤 — 恢复默认配色

皮肤作用范围

皮肤作用于整个主 UI 的所有界面(控制台 + 设置 + 自动化 + 属性 + 对话框...):配色全局生效;皮肤的卡片圆角 / 边框 / 阴影设置同样作用于设置页等主界面卡片,全局字号(fontScaleMultiplier)则在设置页等可滚动界面同步生效,一套皮肤即可统一控制台与主界面观感。悬浮窗、HUD、AVM 等用独立主题系统的模块不受皮肤影响(保留原配色)。


1.12 公告通知(v3.1.5+)

主界面右上方的“公告”入口可查看通知,入口旁会显示未处理数量。列表分为“未处理”和“历史记录”,可主动刷新或重新打开已读内容。

  • 联网后,进入 EVCC 主界面时最多自动显示一条通知;多条通知按优先级依次留到后续进入时展示。已有引导或弹窗结束后才会显示,不会在后台覆盖其他应用。
  • 点击“我知道了”确认当前通知,普通公告确认后不再自动弹出;仅打开或阅读不会确认。
  • 点击“稍后提醒”或返回键,当前通知延后一小时,之后再次进入主界面时才会提醒。点击弹窗外不会关闭。
  • 个别提醒可能由管理员再次发送。新收到的提醒需要分别处理,之前的确认或稍后提醒不代表后续新提醒已处理。
  • 正文支持排版、图片和视频。图片可点击放大,视频需点击播放;切到后台或关闭弹窗会暂停。链接通过浏览器打开。
  • 临时断网时可查看本机已经保存的内容;确认和稍后提醒先保存在本机,联网后再同步。没有联网核验的通知不会自动弹出。
  • 已撤回的通知保留记录,但无法再查看正文。通知显示效果跟随主界面的白天/夜间主题。
  • 管理员可从设备管理或最近心跳列表最后的“操作”列创建定向通知,系统会自动带入设备 ID、SN、VIN、机型、地区、IP 和 APK Cert 等已知条件;创建后仍需在公告通知页面编辑、预览并发布。

第二章 控制台(仪表盘)

控制台是 EVCC 的主界面,用于展示和操作车辆属性的可视化仪表盘。

2.0 EVCC mini(独立小窗 APK · 增值服务)

v2.4.0 起,原"系统小窗控制台"被拆分成一个独立 APK —— EVCC mini(包名 com.kooo.evcc.mini)。独立 APK 利用 Flyme Auto 的 only_windowmode 声明让图标每次点击都稳定进入小窗形态,零闪烁。

v2.4.4 起 EVCC Mini 转为增值服务:首次使用需先在主 EVCC 里开启 7 天试用或输入激活码。主 EVCC 本体功能不受影响。

两个 APK 的分工: - com.kooo.evcc (主 EVCC) — 所有配置、根服务、VHAL/APVP/AIDL/CAPI/AdaptAPI/SOA 订阅都在这里;图标不变 - com.kooo.evcc.mini (EVCC mini) — 极简小窗壳,点图标即小窗形态启动,无 root 依赖,通过 ContentProvider/AIDL 向主 EVCC 请求数据和动作路由

何时显示 mini 入口:主 EVCC tab 栏 + 右侧的圆圈按钮(类似老款 iPhone Home 键)仅当检测到 EVCC mini 已安装时才出现。卸载 mini 会自动隐藏入口,无需重启。

进入 mini 编辑器:点击圆圈按钮 → 首次使用会弹出授权卡片(见 2.0.0) → 授权后进入编辑器,顶部出现页面 tab 栏 + 预览区 + 列数/DPI/模板/授权状态等操作条。

2.0.0 授权激活(v2.4.4+)

点击圆圈按钮进入 mini 编辑器时会检查授权状态。四种可能:

状态 编辑器行为
从未使用 弹出授权卡片,二选一:「开始 7 天试用」(立即解锁)或「我已有激活码」(跳到输入界面);用户必须选一项才能进入编辑器
试用中 直接进入编辑器,顶部 toolbar 显示「试用 X天Y小时」chip;点 chip 可随时升级为永久激活
已激活 直接进入编辑器,toolbar 显示「已激活」chip
试用已结束 弹出「试用已结束」对话框,必须输入有效激活码才能继续

激活码格式:XXXXX-XXXXX(10 个字符,不区分大小写,粘贴时带或不带 - 都能识别)。

激活流程: 1. 输入激活码 → 点「下一步」 2. 二次确认对话框显示设备 ID 和激活码,提示「激活码将与此设备 ID 永久绑定,不可在其他设备使用」 3. 点「确认激活」后网络请求服务端校验,成功后 Toast 提示「已激活」,editor 立刻放行

试用期规则: - 倒计时从首次点「开始 7 天试用」瞬间起算,共 7×24 小时 - 没有点过「开始试用」的设备不占用任何试用期额度,第一次进入时仍可正常申请试用 - 试用结束后必须激活,否则 mini 小窗不会显示任何数据(主 EVCC 本体不受影响)

设备迁移:如果要把车机换成另一台设备,使用主 EVCC 「设备迁移」功能迁移,EVCC Mini 授权会跟随迁移到新设备——试用剩余时长、已激活状态、绑定的激活码都会转移。试用已结束的迁移不会重新给 7 天。

离线使用: - 已正式激活:断网 30 天内可正常使用;超过 30 天需联网一次重新校验 - 试用期中:倒计时按真实时间走,不给离线宽限

激活失败常见原因: | 提示 | 含义 | 对策 | |---|---|---| | 激活码无效 | 码不存在或格式错 | 检查拼写,复制粘贴时勿带多余字符 | | 激活码已被使用 | 已被其他设备绑定 | 找管理员确认或要一个新码 | | 激活码已被撤销 | 管理员撤回 | 联系管理员 | | 失败次数过多,请稍后再试 | 公开激活入口每小时 20 次、每天 50 次触发限流 | 按提示等待后重试 | | 设备未注册 | 当前设备 ID 还没登录过 | 先让主 EVCC 完成首次激活(可由管理员授权,也可使用 EVCC 本体自助激活页) |

如何获取激活码:打开在线激活页时可点「去购买激活码」跳转购买;若群内管理员另有发放方式,以群内说明为准。 若在线激活页未显示购买按钮,说明管理员暂未配置购买入口,请按群内说明获取。

未激活时 mini 的表现:打开 mini 小窗会显示「EVCC Mini 小窗快控为增值服务,请在 EVCC 主程序里开始 7 天免费试用或输入激活码」占位页,不会看到任何 widget 或音乐。

2.0.1 多页面滑动切换(v2.4.4+)

mini 支持多个页面左右滑动切换。新用户默认就是三页:控制台、音乐控制、应用菜单;老用户已有页面配置不会被覆盖。页面类型分三种:

类型 用途
控制台 / 仪表 (DASHBOARD) 传统控制台,拖拽组件、绑属性、按钮/开关/滑块
音乐 (MUSIC) 全屏音乐页:模糊封面 + 歌词 + 歌名/歌手 + 进度 + 三键控制;对标 Flyme AutoMediaControl 官方小窗的 1:1 复刻,不需要配 widgets
应用菜单 (APP_MENU) 只显示用户自己添加的常用 App,可从 mini 小窗里直接启动,也可用虚拟屏幕方式投射到下一页

在编辑器顶部的 tab 栏里:

操作 效果
点击 + 弹出对话框,选"仪表"、"音乐"或"应用菜单"并命名
点击某个 tab 切换到该页;DASHBOARD 页展示网格预览,MUSIC 页展示占位文案,APP_MENU 页展示已添加应用数量
长按某个 tab 弹出菜单:重命名 / 删除 / 上移 / 下移
删除最后一页 Toast 阻止(至少保留一个页面)

保存页面变更后,mini 端 ContentObserver 立刻感知,ViewPager 热更,不需要退出重进 mini。

老用户首次进入新版本:原有的 mini widgets 自动包装成第一页"仪表",数据无损迁移。

如果某个 EVCC mini 控制台页没有任何组件,mini 小窗里会显示"还没有配置控制台"引导卡片。优先点击"拷贝组件",会打开主 EVCC 的 mini 编辑器并直接进入组件选择,可从已有主控制台多选复用;也可以点击"选择布局"打开模板商店并自动搜索 [小窗] 模板。应用模板后会直接写入 EVCC mini 控制台,mini 会自动刷新出新组件。

2.0.2 仪表页能做什么

  • 网格大小可调:列 2~6 × 行 4~10(默认 3×6 竖窗),每页独立保存 widgets
  • 支持所有组件(信息卡/开关/按钮/滑块/下拉/按钮组/图表/音乐)除了分区标题
  • 拷贝组件:从任意主控制台 tab 多选勾选 widget 一键拷贝过来(自动分配新 ID,超尺寸的缩减到小窗网格上限)
  • 模板按钮:保存/加载本地模板、浏览模板商店、上传共享 —— 小窗生成的模板自动加 [小窗] 前缀区分主控制台
  • 空白引导:控制台页没有组件时,优先从主控制台拷贝组件,也可进入 [小窗] 模板商店选择布局,完成后自动刷新
  • DPI 按钮:运行时统一等比放大 (0.8× ~ 3.0×),字/按钮/间距同步变化,不影响布局计算

2.0.3 应用菜单页能做什么

应用菜单页用于把常用 App 做成 mini 小窗里的启动面板。页面本身不会默认展示系统所有应用,只显示用户手动添加过的 App;最后一个图标位是"添加"按钮,点击即可继续加入 App。

  • 虚拟屏幕模式:默认模式。点击 App 后会临时在该应用菜单页后面插入一个虚拟屏幕页,并自动跳转过去;mini 按当前小窗可见区域创建虚拟屏幕,主 EVCC / RootService 负责把目标 App 启动到该 display。每个 App 可单独设置是否开启沉浸式状态栏;开启时会优先请求目标 App 自身的系统装饰 / 状态栏背景,车机系统不支持时会保留顶部 Flyme caption / 状态栏避让,并用目标 App 顶部颜色填充避让区;关闭时内容会保守避让顶部 Flyme caption / 状态栏。不再露出左右/底部边框。mini 只保留一个应用菜单虚拟屏 display:如果同一个 App 已经在虚拟屏幕中,再次点击会直接切回原虚拟屏幕页,不会重新启动;如果点击不同 App,会在同一个 display 上直接启动新 App,不会释放旧 display 或把上一个 App 迁回 Display 0。点 Flyme 小窗右上角放大按钮会直接全屏唤醒当前虚拟屏幕里的 App。
  • 直开模式:点击 App 后由 EVCC mini 直接启动目标 App,让目标 App 继承当前 Flyme 小窗状态,并会尝试显示目标 App 的 Flyme 小窗放大按钮;适合地图、音乐、设置等需要稳定小窗入口的场景。
  • 全屏开启模式:点击 App 后通过主 EVCC 的全屏 task 代为启动目标 App,不继承 EVCC mini 的小窗状态;适合希望临时退出 mini 小窗、直接全屏使用的 App。
  • 单 App 配置:长按 App 不移动会打开设置,"启动方式"会打开选择菜单,可选直开 / 虚拟屏幕 / 全屏开启;DPI 可手填,也可点 160 / 200 / 240 / 280 / 320 / 360 / 420 / 480 预设;也可调整虚拟屏幕沉浸式状态栏或删除;长按后直接拖动会进入桌面式排序状态,图标轻微晃动,拖完点"完成"退出。
  • 添加应用:添加弹窗会先打开界面再后台读取系统应用,支持搜索,并以图标网格展示可添加 App。
  • 排版规则:应用菜单页有独立的"每行应用数量"、"显示行数"和"图标大小"设置,长按 App、长按添加按钮或在主 EVCC 编辑器里都可调整;列数范围 2-6 列,默认 4 列;行数范围 4-8 行,默认 6 行;图标大小可选超小 / 小 / 默认 / 大 / 超大,超大约为默认的 2 倍。
  • 主题适配:长按菜单、DPI 弹窗和添加应用弹窗跟随 mini 的白天 / 夜间主题,不再使用系统默认浅色弹窗。
  • 生命周期:虚拟屏幕页是运行时页面,只在虚拟屏幕模式启动 App 后出现;左右滑走不会销毁虚拟屏幕,当前虚拟屏 display 会继续保留,再启动其他 App 时会复用该 display。mini 会记住当前停留的普通页面,长按修改应用菜单配置或重启后不会无故切回第一页。手动关闭虚拟屏幕页会立即释放;如果没有 App 继续占用该 display,空闲一段时间后也会自动释放并从 ViewPager 中移除。
  • 作为目标屏幕:主 EVCC 的启动应用、APP 投屏、HUD/小窗投屏、悬浮窗和自动化目标屏幕选择器中可选"EVCC mini 虚拟屏幕"。它在内部使用占位 display id -10,选择后会按需打开 EVCC mini 并创建真实虚拟屏幕。

直开模式和全屏开启模式无法强制修改目标 App 自身 DPI;虚拟屏幕模式可为每个 App 单独设置 DPI,但依赖主 EVCC 和 RootService 的特权启动链路。

2.0.4 音乐页能做什么

完全基于"服务 → 音乐桥接"的同一套数据源(见 4.1 节),不需要额外配置。默认使用新版大封面样式,也可在 mini 编辑器的「EVCC mini 设置」里切回旧版封面卡片:

  • 封面视图:封面从顶部延伸铺满上半区,底部渐变融入模糊背景
  • 歌词视图:全屏模糊封面铺底 + 暗化 scrim 保证文字可读
  • 顶部 28sp 大标题 + 22sp 歌手名
  • 中部滚动歌词支持渐进模糊和更舒展的字距/行距,跨行切换带淡入淡出
  • 底部可拖动进度条 + 当前时间/总时长;支持 seek 的音乐 App 可直接拖动调整播放位置
  • 最下方 74dp 播放键 + 50dp 上一首/下一首,间距 28dp
  • 歌词位置和进度显示走本地 tick 外推,平滑不卡顿
  • 点击标题区 → 拉起上次使用的音乐 App
  • 点 Flyme 小窗右上角放大按钮 → 全屏打开当前正在播放的音乐 App;控制台页仍会放大为主 EVCC
  • 未连接音乐源时显示"未连接音乐源 · 点击启动",点击自动唤起音乐 App

想体验音乐页:先开"服务 → 音乐桥接"并等桥接生效(重启车机后约 60 秒);然后在 mini 编辑器点 + 加一个"音乐"页保存。左右滑动就能看到。

2.0.5 数据联动与持久化

  • 每页配置以多页数据结构(mini_pages_v1)保存在主 EVCC 的 SharedPreferences
  • 主 EVCC 通过 ContentProvider 暴露给 mini 进程(URIs: mini_pages、mini_grid、mini_settings)
  • mini 实时值订阅走 AIDL (IEvccBridge);用户操作以 DashboardAction 回传主 EVCC,由 ActionRouter 路由到真实的 VHAL/APVP/AIDL/CAPI/AdaptAPI/SOA/Root/自动化
  • 主 EVCC 保存任何 mini 配置后 notifyChange,mini 端 ContentObserver 立即触发 refresh,ViewPager 热更
  • 应用菜单页的每行数量、显示行数、图标大小、App 列表、启动方式、DPI 和单 App 沉浸式状态栏设置保存在该页的 configJson;mini 端长按修改后通过 Bridge 写回主 EVCC,再由 Provider 热刷新
  • 虚拟屏幕页不持久保存,只由 mini 运行时插入;应用菜单虚拟屏在 mini 生命周期内复用同一个 display,手动关闭或 display 空闲一段时间后再移除;特权 DPI 准备、按 display 启动 App、触控 / 按键注入由主 EVCC / RootService 执行
  • mini 独立于主控制台,widgets 在不同命名空间不互相影响;但两边共享同一套属性订阅、变量、自动化引擎、音乐桥接,实时数据完全一致
  • 音乐页和主控制台的 MUSIC widget 使用同一个 MusicSourceRegistry,同步毫秒级一致

2.0.6 MC 卡片直开 EVCC mini

在 mini 编辑器左侧/顶部的「EVCC mini 设置」卡片里,可以开关「MC 卡片直开 EVCC mini」。开启后,首次点击屏幕左下角 Flyme 音乐控制卡片时,会直接打开 EVCC mini,而不是进入 Flyme MC 界面;如果 2 秒内再点一次,会保留 Flyme 官方音乐窗,不再继续唤起 EVCC mini,已经在路上的 mini 唤起也会被取消。虚拟屏幕的沉浸式状态栏不是全局开关,而是在应用菜单中按单个 App 长按配置。

触发方式有两种: - 无障碍方式(默认):通过无障碍服务识别 SystemUI 的音乐卡片点击,支持当前的隐藏/再次拉起等行为。大多数车型建议使用这个方式。 - Log 监测方式(旧车型兼容):监听 Flyme SmartBarMediaController.openMusicWindow 日志触发,逻辑更接近早期版本;如果某些车型无障碍方式不生效,可以切换到这个方式。选择无障碍方式时,EVCC 不会启动这条 Log 监测。

2.1 组件(Widget)类型

仪表盘由一个个"组件"组成,每个组件可以:

  • 信息卡片 (INFO):绑定车辆属性 ID,实时显示当前值。可配置运算公式转换显示(如 x * 0.1 将原始值缩放)、值映射表(如 0=关闭, 1=开启)、小数位数
  • 按钮 (BUTTON):点击执行设定的操作
  • 开关 (TOGGLE):切换开/关,分别写入不同的属性值
  • 滑块 (SLIDER):通过连续数值调整车辆属性、自动化变量或车机音量组;支持负数、小数步进及独立的输出/状态公式
  • 下拉选择 (DROPDOWN):从预设选项中选择值写入
  • 按钮组 (BUTTON_GROUP):多个按钮组合,每个按钮对应一个值
  • 时间/日期卡片 (TIME):显示当前时间/日期,格式字段使用 Java SimpleDateFormat 模式(如 HH:mm, yyyy/MM/dd)
  • 音乐控制 (MUSIC):与"音乐小窗桥接"共享数据源,展示当前歌曲的封面、歌名、歌手、进度和歌词,提供上一首/播放暂停/下一首三键控制。最小 2×2,尺寸越大呈现越丰富:
  • 2×2:封面全幅 + 歌名 + 中央播放键
  • 3×2 / 2×3:左封面 + 右歌名/歌手 + 可拖动进度条 + 三键
  • 3×3 / 4×2+:封面 + 歌名/歌手 + 可拖动进度条 + 三键 + 1 行当前歌词
  • 4×3+:沉浸式,封面模糊铺底 + 居中封面 + 可拖动进度条 + 三键 + 3 行滚动歌词

点击卡片默认打开当前音乐 App,编辑时可改为"切换播放/暂停"或"不响应"。支持 seek 的音乐 App 可直接拖动进度条调整播放位置。依赖"服务 → 音乐小窗桥接"已开启;未桥接时卡片显示"未连接音乐源 · 点击启动",点击会唤起上次使用的音乐 App

2.1.1 滑块动作与数值公式

新增或编辑滑块时,可在“执行动作”中选择以下连续数值动作:

动作 需要配置 实际效果
写入属性 读取属性 ID / 区域 ID;需要时开启读写分离并填写写入目标 把滑块计算结果写入车辆属性;读取目标继续负责当前状态回显
设置变量 变量名 把滑块计算结果写入同名自动化变量,变量变化也会刷新滑块位置
设置音量 车机音量组 把滑块计算结果作为所选音量组的绝对音量

音量动作只接受整数结果;如果输出公式得到小数,EVCC 会拒绝执行,不会把无效结果当成 0。当前音量组还没有作为滑块的实时状态源:重新进入页面或从车机其它入口改变同组音量后,滑块位置不会主动回填;属性和变量滑块则会继续跟随各自状态源刷新。

“最小值 / 最大值 / 步长”均可填写负数和小数。例如最小值 -1、最大值 1、步长 0.1 会保留一位小数,不再取整;范围无法被步长整除时,最大端点仍可到达。滑块默认在松手时执行一次动作,拖动预览本身不会连续写入。拖动过程中,后台返回的数值不会把滑块拉回;手势被取消时不会执行动作。

已启用 CAPI 时,进入控制台会自动检查连接,并在连接恢复后刷新组件数值。若操作时提示车辆连接正在恢复,请等待恢复并确认当前状态后再操作;先前失败的操作不会在恢复后自动补发。

滑块提供两个彼此独立的公式,均使用 x 表示当前输入值:

  • 输出公式:滑块位置 → 实际动作值。默认 x 原样写入;例如 x * 10 可把界面的 0~100 转换为属性的 0~1000,100 - x 可反向控制,也可引用 $变量名 或 $prop(属性ID,区域ID)。
  • 状态公式:读取值 → 滑块位置。默认 x 原样显示;若上例属性回读范围为 0~1000,可填写 x / 10。设置变量时会对同名变量的当前值应用此公式;音量动作在接入实时状态源前暂不使用这个方向的公式。

EVCC 不会尝试自动推导反向公式。需要双向缩放时,请分别填写输出公式和状态公式;范围或步长无效时会阻止保存,公式无法得到有效有限数值时会拒绝执行,避免把错误结果写入车辆。旧版本已经创建的属性滑块会继续按原配置工作。

2.2 支持的动作类型

控制台组件可以绑定以下动作,自动化也复用其中大多数动作:

动作类型 说明
设置属性 写入 VHAL 车辆属性值(最常用)
执行命令 以 Root 权限执行 Shell 命令(比较常用)
触发自动化 触发指定自动化规则
开关自动化 启用、禁用或切换指定自动化规则
启动应用 启动指定包名的应用(比较常用)
APP投屏 将指定应用启动到目标屏幕,或勾选"投放当前前台应用"把当前前台 task 迁移到目标屏幕
关闭应用 强制停止指定应用,或勾选"杀死当前前台应用"一键关掉当前可见的应用
修改 Settings 写入系统 Settings (Global/Secure/System)
设置系统属性 setprop 设置系统属性
截屏 截取一次主屏画面并直接保存到相册的 EVCC 文件夹
录屏 打开可拖动的录屏控制窗,可开始、结束录屏或随时截屏
发送广播 发送 Android 广播 Intent
HTTP 请求 发送 HTTP GET/POST 请求
设置音量 调整系统音量
播放声音 播放提示音,可通过拖动条以 5% 步进设置播放音量/增益(0-300%,100 为原始音量);通过文件选择器选择本地音频或在选择器中手动填写路径并确认时,都会先保存音频副本;读取受限且 RootService 可用时自动尝试备用读取,失败会保留选择窗口并提示原因,减少共享存储权限变化导致的播放失败
媒体控制 播放/暂停/上一首/下一首;其中"播放/暂停"动作可选择"切换 / 播放 / 暂停",也可勾选"全局媒体键模式"改由系统向当前音频焦点发送媒体键,适合 CarPlay 盒子、蓝牙盒子等不响应默认音乐桥接控制的来源。控制台、悬浮窗和自动化中的媒体动作共用 EVCC mini 音乐页同一套默认控制链路
设置变量 设置自动化变量
TTS 语音播报 文字转语音播报
循环属性写入 定时循环写入属性值
显示 Toast 显示提示信息
发送通知 发送系统通知
BLE 广播 发送 BLE 蓝牙广播,可自定义厂商 ID、数据载荷和广播时长
小窗应用 打开/关闭/切换/隐藏小窗应用,可指定目标应用和屏幕
延迟等待 延迟指定毫秒后继续执行后续动作。支持变量/公式:除直接填数字外,也可写 $myVar(读用户变量)、{x*1000}(数学表达式)、$prop(123)(读属性值)等动态决定等待时长
返回桌面 执行 Home 键返回桌面
应用退到后台 将指定应用退到后台,可选择回到桌面或切回上一个应用,或勾选"退出当前前台应用"自动作用于当前可见应用
停止规则 立即终止当前规则的全部后续动作
条件中断 普通/最终动作判断主条件;放在分支动作里时判断当前命中的分支条件,不满足时停止当前分支后续动作,最终动作仍会继续
发送远程消息 通过已配置的远程机器人(钉钉/Telegram/飞书)发送消息
打断语音助手 抢夺音频焦点以打断车机语音助手
EVCC 卡片动作 一键开关 EVCC 自身服务卡片下的功能(v2.4.6+),见下方说明
EVA 联动 发送 EVA 动作编组,可编排表情、转头、延迟、TTS、循环和结束动作
米德宝联动 开启米德宝 BLE 直发模式后发送动作编组,可编排基础控制、表情、音乐律动、延迟、连续动作和自定义 HEX
热点控制 打开 / 关闭 / 切换 / 仅配置系统热点,可同步设置热点名称、密码、安全类型、频段、信道和隐藏名称
设置向导 打开设置向导,仅用于主控制台按钮

截屏与录屏:这两个动作都可用于控制台按钮、悬浮窗按钮和自动化。执行“截屏”会立即截取一次主屏并保存到 DCIM/EVCC;执行“录屏”会打开一个可拖动的小控制窗,点击“开始”后录制主屏,点击“结束”后生成 MP4 并加入相册,控制窗内的“截屏”也会直接保存图片。录屏过程中关闭控制窗只会隐藏控制窗,不会结束录制;再次执行“录屏”动作即可恢复控制窗。当前录屏只录制主屏画面,不包含声音;截屏/录屏需要 RootService,录屏控制窗还需要悬浮窗权限。

选择“触发自动化 / 触发其他自动化”或“开关自动化”时,规则列表按自动化页面的编组顺序排列,未编组规则单独显示;每张卡片只显示规则名称和简要,已选目标显示规则名称。

“开关自动化”位于自动化动作、控制台组件动作和悬浮窗组件动作的“变量与自动化”分类。先选择目标规则,再选择“启用”“禁用”或“切换”(启用变禁用,禁用变启用)。操作会保存规则的开关状态;启用规则后仍需满足原有触发条件,不会立即执行它的动作,也不会打开自动化总开关。禁用用于阻止后续触发,不会中断已经开始执行的动作。开关组件的高级配置中,开启动作与关闭动作可以分别选择目标规则和操作方式。

使用目标 App 图标:控制台按钮组件、悬浮窗按钮在选择「启动应用 / APP投屏 / 关闭应用 / 应用退到后台 / 小窗应用 / 系统小窗」等需要固定包名的动作后,按钮图标行的「选择...」旁会出现「使用App图标」。先填写包名或点「浏览应用」,再点击/勾选此项即可把按钮图标换成目标 App 图标;如果动作选择的是当前前台应用,因为没有固定包名,这个选项会自动隐藏。

米德宝联动动作(v2.9.44+)

开启米德宝联动卡片的 BLE 直发模式后,自动化、控制台组件和悬浮窗按钮都可以选择"米德宝联动"动作。动作编辑器顶部是已规划动作,可上移、下移或删除;下方除基础控制、表情和音乐律动外,还提供直接动画、语音动作、动作音效、迎宾/行车场景屏效和音乐表情。点击任意动作会加入已规划动作,并立即发送一次,方便现场确认机器人反应。

延迟动作可直接选择 0.5 秒或 1-10 秒,也可输入任意秒数。打开"连续动作"后再点击任意动作,会弹出次数和间隔设置,用于一次性发送重复动作。自定义 HEX 只需要填写一个字节,例如 F0 或 06,EVCC 会自动按米德宝控制格式发送。优先级默认是"高":高优先级动作会打断低优先级动作;同优先级默认忽略新的触发,"实时"优先级可相互打断,适合手动测试按钮。

EVCC 卡片动作(v2.4.6+)

让自动化、组件、悬浮窗按钮直接操作 EVCC 自身服务卡片的开关 / 数值 / 按钮,等价于"自动帮你去服务卡片里点开关"。无需打开 EVCC 主界面。

配置方式(三处通用):动作类型选「EVCC 卡片动作」→ 选卡片(1 级)→ 选项目(2 级)→ 设置值(开/关/切换 或 数值/选项)。

已支持的卡片(持续补充): - 仪表投屏:总开关 / 切换主屏预设(动态枚举已保存的预设)/ 关再开(深睡唤醒后用,内置 1.5s 延迟)/ 重启信息卡 session - HUD 投屏:总开关 / 画面透明度 0~100(同时写白天和夜间两组配置) - HUD 直投:VHAL 激活(第 1 步)/ 绑定 CastService(第 2 步)/ 发起 HUD 投屏(第 3 步)/ 停止投屏。一条龙 = 串这 3 个动作中间各加 1 秒「延迟等待」 - 悬浮窗:主屏总开关 / 副屏开关 - 媒体桥接:总开关 / 桌面歌词 / 冷启动获取桥接焦点 / EAS 鉴权绕过 - STR 防护:总开关 - 声浪模拟:总开关 - BLE 信标:总开关(关时立即停止全部正在广播的信标) - AVM 限速解除:应用解除(数值参数 0~200 km/h,0 = 完全解除)/ 恢复原厂限速;执行时会按需准备系统分区写入权限 - 蓝牙增强(按车型显示):查询状态 / 全量增强 / 恢复原厂;执行增强或恢复时会按需准备系统分区写入权限,并重启蓝牙进程。全量增强会提示风险,建议只用于对比测试 - 远程控制 (MQTT):总开关 - DPI 缩放:总开关 - 仪表车模颜色(实验):总开关(开启前会提示风险)/ 颜色选择 / 立即应用 - 5GHz 热点增强:总开关

典型用法: - 开始导航 → 自动开启仪表投屏(条件触发自动化 + 此动作) - 夜间 → 自动关闭副屏悬浮窗 - 到达某地 → 开 STR 防护;离开 → 关 STR 防护 - 自带音乐打开 → 关闭媒体桥接;第三方音乐打开 → 开启媒体桥接或桌面歌词 - 开机后 → 仪表投屏关再开(避免深睡唤醒后画面卡死)

三态值:开 = 强制开启;关 = 强制关闭;切换 = 根据当前状态翻转。自动化里推荐用"开/关"明确动作,组件按钮可以用"切换"简化操作。

后续版本会继续补充更多服务卡片和参数。

热点控制

让自动化、控制台组件、悬浮窗按钮直接操作车机系统热点。它和"5GHz 热点增强"不同:热点控制负责开关和修改原生热点配置;热点增强负责在热点已经开启后优化速率参数。

配置方式(三处通用):动作类型选「热点控制」→ 选择「切换热点 / 打开热点 / 关闭热点 / 仅更新配置」→ 按需填写热点名称、密码、安全类型、频段、信道、是否隐藏名称。

参数说明: - 名称、密码、频段、安全类型、信道均可留空;留空时保留系统当前配置,只执行开关动作。 - 选择"开放网络"时不需要密码;选择 WPA2 / WPA3 / WPA2-WPA3 时建议填写 8 位以上密码。 - 频段可选自动、2.4GHz、5GHz、6GHz;信道填 0 表示交给系统自动选择。 - 频段、信道、隐藏名称是否完全生效取决于车机系统 ROM 暴露的热点接口。如果系统拒绝某个参数,动作会失败并在日志中显示原因。

2.3 编辑模式

  1. 点击右上角"编辑"按钮进入编辑模式
  2. 编辑模式下可以:
  3. 拖拽排序:长按组件拖动调整位置
  4. 调整大小:拖拽组件边缘调整宽度和高度
  5. 编辑组件:点击组件打开编辑器,修改名称、图标、颜色、绑定属性、动作等
  6. 复制组件:点击组件右上角的复制按钮,快速生成一份相同配置;副本会自动脱离原编组并放入当前页面空位
  7. 删除组件:点击组件右上角的删除按钮,确认后删除
  8. 编辑完成后点击"完成"保存

控制台编辑模式的字号入口提供“减小字号”和“增大字号”,每次调整一个档位。先用“编组”选中组件,可以只调整选中项。右上角的“模板”“组件”“皮肤”是三个独立入口:“模板”管理布局模板,“组件”直接打开组件商店,“皮肤”管理控制台外观。

2.4 添加组件

  • 点击"+"按钮 → 打开组件编辑器 → 配置组件参数后保存
  • 也可通过"组件商店"从云端下载预设组件

涉及车辆属性时,“监听属性变化…”旁提供“已收藏属性”。它与“属性”页共用收藏记录,打开后直接汇总当前已连接且可见的各属性源收藏项,无需等待属性变化;可切换来源并搜索属性名称、ID 或说明。点击一项即可按当前组件的原有方式回填属性与区域,保留来源和通道。写入类配置只列出可写的收藏项;收藏的只读属性仍可用于信息展示和状态读取。

2.5 多页/分组

仪表盘支持多个页面/标签,可以按功能分组组织组件(如"驾驶信息"、"灯光控制"、"空调控制"等)。

2.6 模板系统

点击模板按钮可以:

操作 说明
保存当前为模板 将当前仪表盘布局保存为本地模板
加载模板 从本地模板新增一个控制台页
删除模板 删除已保存的本地模板
模板商店 从云端浏览和下载其他用户分享的模板
上传到模板商店 将当前布局截图并上传到云端共享,车型由云端按设备自动匹配
恢复默认 将仪表盘恢复为出厂默认布局

商店支持按名称、车型、署名、简介或分类搜索;右上角可点"时间 / 名称 / 评分 / 下载量"切换排序,默认按最新上传显示,各商店都提供刷新按钮。规则、模板、组件、皮肤、脚本和配置现在统一进入内容商店,顶部菜单可直接切换;主控制台应用模板后会新增一个控制台页并自动切换过去,不会覆盖当前控制台,小窗模板仍会写入 EVCC mini 控制台;组件、规则应用成功后会留在商店页并弹出结果提示。组件卡片的"测试"会打开一个临时组件弹窗,可直接点击按钮、开关、滑块或选项验证动作;顶部"输入分享码"可输入别人给的数字码,确认内容信息后直接下载或应用,对方内容尚未审核上架或设为隐私上传时也有效;顶部"我的上传"会进入当前商店自己的"我的上传"页,可复制分享码、重命名、删除,或直接下载应用到本机,自己上传的内容即使还没审核上架也可以这样使用;"我的上传"会显示已上架、待审核、隐私上传或已驳回状态;需要管理其他类型时,先切到对应商店再进入"我的上传";旁边的"我的署名"可保存到云端,署名需要唯一,保存后会同步到该设备此前上传和后续上传的内容,设备 ID 迁移时署名和内容归属也会一起迁移。上传模板、组件、规则、皮肤时只填写名称和简介,脚本上传可继续填写版本、权限等脚本专用信息;配置商店可把多项控制台、自动化、皮肤、脚本和服务页配置打成一个配置包,上传和下载时都可以按条目勾选,只会覆盖选中的配置项,包里没有或未勾选的本机配置会保留;服务页配置会尽量按服务页功能板块展示,地图投屏和主屏地图美化可分别勾选;上传规则、模板、组件、皮肤、脚本或配置包时可勾选「隐私上传」,云端不会把它放入公开审核/上架流程,也不会出现在公开商店列表,只能通过分享码分享;风险 Shell 和敏感内容检测仍会执行,云端管理员仍可删除或忽略异常内容。配置包上传时会默认排除密码、token、远程服务凭据等敏感字段。上传成功后,公开列表和"我的上传"都会显示该内容的分享码;分享码默认从 4 位数字开始,码段用尽后会自动扩展为更多位。商店列表会按当前屏幕列数补齐占位,少量搜索结果或上传内容也会正常显示;模板、组件、规则和皮肤列表会优先显示上次成功加载的本地快照,再刷新云端数据。上传模板、组件、规则或配置包时不再手动填写车型,云端会按设备 ID 匹配当前车型并显示为后台适配配置里的备注车型名。模板商店、组件商店和配置商店上传/下载时会自动携带配置中引用的本地图片、音频、视频等资源,导入后路径会改成本机可用的资源副本;例如"播放声音"动作里选的本地音频不用再单独拷贝。如果组件或模板里的动作绑定了"触发自动化",上传时会连同被引用的自动化规则一起提交;配置包中的控制台和自动化也会保留它们之间的关联。商店管理页提供"重新匹配车型"按钮,可按当前云端车型配置重新计算现有条目的车型备注;内容商店上报的品牌前缀会先归一化,之后只按精确车型键命中,不再做包含式模糊匹配。云端后台的"全部内容"和各独立商店页都会显示分享码,并支持按分享码搜索;全部内容、规则、模板、组件、皮肤、脚本和配置后台都采用统一分页筛选,输入名称、车型或分享码时会在服务端筛选后只展示当前页;新增"内容审阅"页会集中显示所有待审核内容,可勾选后批量通过,脚本和配置可进入详情页查看源码或完整配置包;后台可将单条内容标记为「锁定」,锁定后上传者不能再从 App 端改名或删除该内容,管理员仍可在后台处理。配置包详情页会显示配置项摘要、完整 JSON 和 AI 风险审核意见。皮肤后台的用户上传预览会优先加载缩略图,点开后再查看原图。旧内容的分享码只在服务端启动时一次性回填,之后新上传内容会在上传时直接生成。商店卡片会显示下载次数、评分和分享码,用户可点"♥"点赞;同一设备对同一条内容只保留一个点赞状态,再次点击会取消点赞。管理员标记为"优质"的内容会始终优先靠前显示,不受排序方式影响。

公开内容每次最多加载 100 条,继续向下滚动会自动加载下一页;切换排序后会从第一页按新顺序重新加载。

云端后台“全部内容”可按当前类型、状态、车型和搜索条件导出全部匹配项,导出不受当前分页限制;管理员可选择只导出表格信息,或额外附带规则、模板、组件、皮肤、脚本与配置包的具体 JSON / 源码数据。皮肤商店在客户端实际获取完整皮肤内容时会更新下载次数,后台只读预览和批量导出不会增加下载量。

2.7 确认执行

组件可以配置"确认执行"选项,开启后点击按钮会弹出确认对话框,避免误操作。建议对高风险操作(写入属性、执行命令)开启此选项。

2.8 网格列数

仪表盘支持 5~12 列网格配置,可根据屏幕大小和显示密度调整。

2.9 显示表达式与值映射

显示表达式(运算公式):用公式对原始属性值进行转换后显示。公式中 x 代表当前属性的原始数值。

示例: - x * 0.1 — 原始值除以 10 显示 - map(x, 0, 255, -40, 215) — 将 0~255 映射为温度 -40~215°C - round(x / 3.6) — km/h 转 m/s 并取整 - if(x == 0, -1, 1000 / x) — 避免除零

值映射表:将特定值映射为文字。旧版 valueMap 按原始值精确匹配;新版"数值映射规则"会先计算显示表达式,再按规则顺序判断。

示例: - 0=P档, 1=R档, 2=N档, 3=D档 - 0=关闭, 1=开启

数值映射规则支持"等于 / 不等于 / 大于 / 小于 / 区间 / 直接成立 / 兜底"。其中"直接成立"不判断数值,执行到这一条就直接使用它的映射文本,常放在最后作为显式默认值。映射文本可以留空;如果没有配置"直接成立/兜底"且前面的规则都未命中,就显示原始或公式处理后的数值。

小数位数 (decimalPlaces):公式结果显示的小数位数。使用 pad() 格式化时会跳过此设置。

完整的公式语法请参见第九章。


第三章 属性(诊断)

属性页用于浏览、搜索、监控和写入车辆属性。这些属性基本上等同在车机上能够检测到、控制的所有车辆功能,包括最基本的空调、灯光、车门状态等,以及更底层的电池电压电流甚至压差等信息。切换 VHAL、APVP、AIDL、CAPI、AdaptAPI 或 SOA 时,当前搜索词会保留,并直接用于筛选新数据源。

3.1 数据源

顶部有多个数据源标签:

数据源 说明 默认端口
VHAL Android Vehicle HAL 属性,通过 gRPC 连接 40004
APVP 底层 APVP Transfer 协议信号,更底层的车辆信号 40005
AIDL AIDL 绑定服务属性 -
CAPI 自定义 API 属性 -
AdaptAPI 从当前车机适配层动态发现的语义属性,属性名与支持范围随车型而变 -
SOA 独立的车辆服务属性源,目录、区域与读写能力以当前车机返回为准 -

该用哪个数据源?

想找什么 首选数据源 说明
空调、灯光、车门、车窗等常见功能 VHAL 大部分日常功能都在 VHAL,读写权限清晰
电池单体电压、电流、温度等底层数据 APVP 原厂工程信号,颗粒度最细
方控按键、座椅记忆等服务型功能 AIDL 经过 Service 封装,适合事件型
仪表显示、HUD 内容等自定义通路 CAPI 车型定制的私有 API
希望用直观名称补充或交叉验证现有属性 AdaptAPI 语义 ID 与名称成套提供,可能与其它源读取到同一底层车辆状态

同一个功能可能在多个数据源都有一份值(例如车速),优先选择当前车型上名称清楚、读写稳定的一路。

AdaptAPI 会自动识别已有接口与 3.x 接口,继续共用一个 AdaptAPI 开关,无需手动选择版本。3.x 的兼容信息与车端支持状态共同决定可展示的属性;没有确认类型的项目不会尝试读写。车机公开枚举名称时会显示对应名称,没有公开时保留原始数值。暂时不可用的值会标为不可用,不能当作有效的 0。

SOA 有独立连接、缓存、监听和开关。打开后可在属性页查看,并用于控制台、自动化、悬浮窗、mini、仪表卡片、Lua、开放 API、远程组件和已有设备联动。纯写属性只用于写入;复杂对象暂不支持通用文本写入。区域 ID 按车端原值使用,不要把非零区域改为 0。

E06 的 SOA 与 AdaptAPI 区域显示原生数字及位置说明;香氛区域显示槽位编号。自动化、控制台的普通区域继续填写十进制整数,全部区域可显示及填写 ALL,保存和调用时仍为原生数字 -2147483648,仅匹配目录实际报告的全部区域。0 是独立区域,不能替代 ALL。

属性说明按精确车型匹配,当前 E06 说明覆盖 E06_E335-A1 与 E06_E281-LITE。AdaptAPI 3.x 的枚举保留 SDK 完整编码,例如自动灯光为 537136643;菜单显示的 SDK 枚举仍须由当前车辆支持。氛围灯带符号整数颜色会补充 ARGB 说明,指定颜色集合显示 UTF-8 JSON 预览,原始值保持可见。未确认含义的特殊数值会明确标注;普通负数不会统一视为无效。

连接状态:每个数据源顶部有绿/红色指示灯。未连接时在“连接”页打开对应开关。SOA、AdaptAPI 默认关闭,都需要 RootService 正常连接;关闭时不初始化对应车端接口。卡片是否显示与连接开关是两回事,显示规则见 1.3。云端不提供车辆属性目录。

3.2 属性列表

属性以表格形式展示,包含以下列: - ID:属性 ID(十六进制) - 名称:属性名称 - 描述:属性说明 - 模块/分组:所属模块 - 区域 (Area):区域 ID - 访问类型:只读 / 只写 / 读写 - 数据类型:Int32 / Float / Boolean / String / 字节数组等 - 当前值:实时值

点击表头可按该列排序(升序/降序切换)。值变化时会自动高亮。

CAPI 名称优先使用该车型配置的系统常量名称,并在本地缓存;未配置或没有对应名称时由云端补齐,仍未知的属性显示 PROP_0x…。名称变化不改变属性 ID 和已保存的绑定;系统别名、云端名称及 VIN、XDSN、车速、里程、动力电池电量的少量关键旧名称可用于接口或脚本查找。需要重新获取名称时,在连接页连续点击 CAPI 标题五次,可清除名称、云端映射和读取缓存。

CAPI 区域名称会按车端报告的区域类型显示座位、车窗、车门、车轮或后视镜位置,组合区域显示多个位置。原生区域 -2147483648 显示为「全部区域(ALL)」;0 则按类型显示「不分区」或「未指定位置」。未知编码保留原生数字与十六进制,区域 ID、读写和订阅仍使用车端原值,组合区域不会拆分成多次操作。CAPI 区域输入继续使用原生十进制整数。

3.3 搜索与过滤

过滤方式 说明
搜索框 按名称、ID、描述模糊搜索(支持中英文、十六进制 ID)
仅变化属性 只显示值发生过变化的属性(进入页面后首次值不算变化)
仅可写属性 只显示有写入权限的属性(找"控制类"属性时最有用)
仅收藏 只显示已收藏的属性
模块筛选 (APVP/AdaptAPI/SOA 模式) 按信号或属性所属模块过滤,减少列表干扰
回避探测 隐藏"已经变化过"的属性,让下一次操作的新变化更显眼

常用搜索关键词:

你要找的 关键词
大灯 / 近光 / 远光 headlight / high beam / low beam / 大灯
转向灯 turn / signal / indicator / 转向
空调 hvac / ac / temperature / 空调
车窗 window / 车窗
门锁 door lock / 门锁
电量 battery / soc / 电量
车速 speed / vehicle speed / 车速
胎压 tire pressure / 胎压

属性名称由云端 AI 翻译提供,可能有偏差。实在搜不到就用属性监视器法:触发一次动作看哪些属性变了(见 6.5)。

3.4 属性操作

操作 方法
写入属性值 点击属性值 → 弹出写入对话框 → 修改值并写入
收藏 标记常用属性,方便快速查找
备注 为属性添加自定义笔记
自定义描述 编辑属性描述文本
属性配对 (APVP/AIDL) 将读写属性配对分组

不同数据类型有不同的编辑方式: - Boolean:开关切换 - 枚举:下拉选择;APVP 枚举属性会优先显示车辆下发的枚举项,直接选择即可写入对应值 - Struct:APVP 结构体属性会按字段分别填写,写入时自动按字段类型编码 - Bytes/Mixed:列表中只显示轻量摘要;点开后会按需读取当前原始值,优先尝试显示为图片,其次按 UTF-8/UTF-16/GB18030 等编码显示文本;短二进制值会显示为十进制,无法识别时再显示 HEX 预览 - APVP transfer mode:APVP 写入弹窗可勾选 REAL 或 DEBUG 指定写入前切换的 transfer mode;APVP 的 R/RX 属性也会直接显示为可点击写入框,不勾选时自动按 TX=REAL、RX=DEBUG 处理;RX/只读属性写入属于 DEBUG 模拟写入,弹窗会明确提示。输入框、选项和快捷按钮会使用带底色/边框的主题样式,日夜模式都能更清楚地看出可点区域 - Int32/Float:数字键盘输入 - 字符串:文本输入

3.5 导出 CSV

支持将当前属性列表导出为 CSV 文件,保存到设备存储 /data/media/11/Download/EVCC/exports/properties/ 目录下。CSV 包含 21 列完整属性信息。

3.6 MCU 日志查看器

特定属性(如 MCU 日志属性)的值可以打开实时日志查看器。


第四章 服务

服务页集成了音乐桥接、投屏、悬浮窗等多种高级功能。左侧功能卡片统一使用标题前状态圆点:灰色表示未运行或无独立运行状态,绿色表示对应功能已启动。

4.1 音乐小窗桥接

将第三方音乐 App(如汽水音乐、网易云音乐等)的播放信息桥接到车机小窗、大卡片、仪表盘等位置,同时实现系统级方向盘切歌和语音控制。ICCOA 和 HUAWEI 手机互联音乐如果已由系统媒体中心上报歌词,EVCC 也会识别并用于桌面歌词等歌词显示。使用伪装注册源时由原车链路负责仪表显示,EVCC 不再重复推送。

操作步骤: 1. 打开"音乐桥接"开关 2. 软件自动连接 MediaCenter 并监听 MediaSession 3. 音乐播放时,歌曲信息(标题、歌手、封面、歌词)自动推送到车机小窗;ICCOA / HUAWEI 手机互联音乐有歌词时也会被识别;银河 L6/L7 在注册源选择 EVCC 音乐时会同步推送到仪表 DIM 显示链路 4. 小窗上的播放控制会同步回音乐 App

重要:使用需写入媒体中心白名单的车型时,完成配置后请重启一次车机;启动后等待约 1 分钟,让媒体中心和注册源白名单载入。银河 E8 的音乐桥接不走这条白名单链路,按所选音乐来源连接适配服务。

领克车型如果音乐桥接状态显示“领克授权异常”,表示车机媒体中心返回 401 授权失败。领克音乐桥接依赖 Frida 注入,建议先重启车机,等待约 1 分钟后再播放音乐验证。

对已经由 MediaCenter 原生接管的音乐 App,EVCC 会优先让 App 自己走原生 MC 通道,并通过 MediaCenter 反向读取状态;只有未被原生 MC 接管的 App 才走 Android MediaSession 桥接。

子选项:

车型下方同一行左侧提供桌面歌词开关和样式设置,右侧提供 EAS 鉴权绕过开关及实际 Frida 注入状态。其他车型的注册源提供“添加自选”和“强制上送”;银河 E8 的注册源只提供酷我、酷狗和 GC 三项,不显示这两个按钮。

选项 说明
车型 选择当前音乐桥接方案,包括银河 E8、8295 及其他现有车型。银河 E8 使用所选音乐来源的适配服务,不依赖 EAS/FAS 注册;新龙鹰测试会按车机提供的媒体服务选择兼容链路;双龙鹰方案需按界面提示准备 Frida
桌面歌词 开启后在所选显示屏显示桌面歌词,默认底部居中、单行、无底色;仅在音乐桥接运行、正在播放且有有效歌词时出现,暂停后短暂保留并淡出;ICCOA / HUAWEI 手机互联音乐由系统上报歌词时同样支持
桌面歌词样式 可在悬浮窗和原生状态栏之间切换。悬浮窗模式可选择显示屏、歌词偏移、位置、旋转、锁定、宽度、字号、透明度、描边、阴影、行数与底色;原生状态栏模式可选择左右位置、固定或自适应宽度、单排或双排、独立字号、点击打开当前音乐 App,以及高级槽位 ID / rank / 强制右侧。原生模式还提供默认关闭且彼此独立的状态栏通知队列加速、AIDL 直推 View 与 Universal Icon 扩宽实验。两种模式共用歌词偏移与配色,但分别保留自己的布局参数
EAS 鉴权绕过 开关随车型显示当前配置,并在下方显示 Frida 已注入、未注入或连接异常等实际状态。只有用户手动切换车型时,开关才恢复为该车型默认值;初始化、页面恢复等过程会保留现有选择。手动修改会显示强提醒,建议通过切换车型调整策略;银河 E8 不使用该链路,开关不可用
注册源 其他车型选择 EVCC 在 MediaCenter 中使用的注册身份,一般保持默认;只有所选注册源会同步到白名单。银河 E8 的列表固定为酷我、酷狗、GC,默认酷我,并与其他车型的选择分开保存;切换后只启用所选来源。酷我、酷狗用于原厂音乐小窗,GC 保留桌面音乐卡片链路;小窗仍以所选来源名称显示歌曲,不会把每个音乐 App 单列为音源
添加自选 在现有注册源之外添加自定义包名和显示名称,添加后会出现在注册源列表中;只有被选中时才会上送白名单
强制上送 立即把当前选中的注册源补写到媒体中心白名单,并等待系统媒体组件重启后重新推送,同时刷新注册源列表
冷启动获取桥接焦点 仅影响冷启动、深度睡眠恢复后没有当前播放状态时,是否用上次音乐状态恢复桥接焦点。正常获取 = 按原逻辑恢复上次音乐;仅第三方 = 上次音乐为第三方 App 时恢复,原生音乐不主动补焦点;不获取 = 没有当前播放状态时不恢复上次音乐。已有真实播放状态时仍优先跟随当前播放
音乐桥接范围 管理哪些 Android MediaSession 和 MediaCenter 回读来源会被 EVCC 接管。默认“自动桥接”保持现状;“排除所选 App”可屏蔽视频等不需要桥接的 App;“仅桥接所选 App”只接管勾选 App,留空时不桥接任何 Android MediaSession,只从 MediaCenter 反向读取状态;“忽略 MediaCenter 视频类源”默认开启,已手动保存过该选项的用户保持原设置
使用全局媒体键控制 关闭时默认走定向播放控制,优先控制当前音乐 App;开启后改用系统全局媒体键,由 Android / 车机系统决定接收者。全局媒体键播放无响应时仍会按“拉起等待”尝试恢复,但只要 3 秒内检测到任一 Android MediaSession 播放过,就不会再拉起上次音乐 App。新版本升级后默认关闭,不沿用旧开关状态
播放时不拉起音乐 App 前台 开启后,点击仪表盘或音乐控制组件的播放按钮时只向上次音乐 App 发送后台播放信号,不再自动把 App 拉到前台;关闭时仍按默认策略前台兜底拉起
拉起等待 默认 3 秒。关闭“播放时不拉起音乐 App 前台”时,后台播放信号发出后若仍未检测到播放,会按该秒数等待后再拉起音乐 App 前台
模拟蓝牙歌词 开启后播放中会将当前歌词行临时伪装成歌名推送给车机,暂停时恢复原歌名,适合只读取歌名字段显示歌词的仪表盘 / 悬浮窗。关闭则始终显示原歌名
歌词时间偏移 仅在模拟蓝牙歌词开启后显示并生效,范围 -10~+10 秒,0.5 秒步进;提前会更早切换歌词,延后会更晚切换
L7 HUD 歌词(实验) 仅在匹配的 L7 车型上显示,此功能为实验测试功能。开启后会把当前歌词行写入 DIM 导航信息接口的“下一引导点名称”,并固定随歌词发送导航有效状态和 ETA 刷新信号,这是当前实测确认的 HUD 刷新条件。EVCC 会尽量通过根服务读取原车导航 ETA,读取可用时复用原车 ETA 触发刷新,不再显示原车导航状态调试信息,也不再提供候选字段、触发信号或转向箭头动画测试选项。模拟下一引导点距离可单独开关,开启后会随歌曲播放进度从 100 递减到 0,对应播放百分比 0%~100%。关闭、暂停或无歌词时默认会清空歌词并发送 END / 未导航状态,等待原车地图后续持续推送恢复;“歌曲暂停时清空导航状态”可关闭。支持独立的 HUD 歌词偏移,范围 -10~+10 秒,0.5 秒步进;“长歌词分段显示”会把较长歌词拆成短片段,并按当前歌词行时长动态安排刷新,尾部单字短片段会自动并入前一段,英文单词尽量按词切分,减少 HUD 慢速滚动导致的未读完或漏片段问题

音乐转发卡片会在歌曲信息下方显示当前歌词行;服务页音乐桥接状态会在识别到新歌后立即查询云端 BPM 库,命中后把 BPM 显示在当前歌曲信息后面。云端提供高精分段结果时,这里会随播放位置显示当前分段 BPM,分段未覆盖的位置自动显示整曲 BPM;高精分析结果没有分段时,表示歌曲速度基本恒定,整首显示同一个 BPM。云端明确无结果时显示“BPM:无”,并在本机缓存最多 3000 首结果。开启米德宝 BLE 直发音乐律动时,歌词上方会额外显示米德宝是否正在律动、当前动作指令、速度指令档位和上次发送指令,方便确认机器人指令状态。支持 seek 的音乐 App 可通过 EVCC mini 音乐页或 MUSIC 组件拖动进度条调整播放位置。ICCOA / HUAWEI 手机互联音乐如果由系统提供当前歌词,也会进入同一条歌词显示链路。开启模拟蓝牙歌词后,卡片歌词行和车机标题都会按歌词时间偏移同步提前或延后;L7 HUD 歌词使用同一条当前歌词行,播放中写入,暂停、无歌词或关闭开关后清空。如果当前音乐 App 没有广播歌词,会先提示 EVCC 正在联网搜索歌词;确认未搜索到后,再以橙色提示。

音乐桥接已启动但尚未连上媒体中心时,状态显示“正在连接…”;近期多次推送播放信息未被接受时,显示“播放状态同步失败”。“运行中”表示桥接正在监听音乐,不代表车机已经出声。暂停候选会话或切换到原生音源时,EVCC 可能暂不注册,这本身不作为故障提示。离开服务页面会继续保留后台桥接,手动关闭开关才会停止。

音乐桥接范围中的应用列表会自动学习:只要某个 App 出现在 Android MediaSession 扫描或真实 MediaCenter 回读中,就会记录到“已发现的媒体会话 App”里,显示应用名、包名、来源和最近状态,方便勾选;也可以点“选择 App”从已安装应用中手动加入包名。EVCC 的伪装注册源和托管占位包不会加入这个列表。该功能不改变注册源白名单;“忽略 MediaCenter 视频类源”默认开启,未保存过该选项时视频类回读来源不会被当作音乐来源接管。

桌面歌词按行定位,不做逐字卡拉 OK。若歌词和实际声音略有不同步,可在“样式设置”中用“桌面歌词偏移”微调;未锁定时可直接拖动歌词,也可在“样式设置”中用水平 / 垂直位置滑条精确调整,位置滑条支持 -20% 到 120%:0% 到 100% 对应屏幕内位置,-20% 可向左 / 向上局部越界,120% 可向右 / 向下局部越界;桌面歌词开关也可通过自动化、控制台组件和悬浮窗组件里的“EVCC 卡片动作 → 媒体桥接 → 桌面歌词”控制。位置锁定只在设置弹窗中控制,锁定后会触控穿透,不影响地图、音乐 App 和系统手势。桌面歌词按目标显示屏真实密度绘制,和状态栏信息卡一样不受 EVCC 软件 DPI 设置影响。最大宽度控制长歌词的换行和省略范围,底色框会按当前歌词内容收紧为居中的胶囊,不再铺满整个宽度;描边强度和轻微阴影可按背景明暗调节,阴影也可以关闭。固定颜色提供白、黑、暖白、暖黄、冷白、银灰、薄荷、天青等低饱和选项;自定义日夜配色可分别设置白天和夜间的文字、描边、底色,既可以点预设色块,也可以用 RGB 滑条输入任意颜色,跟随状态栏和跟随白天/夜间模式都会使用这两套配色。若车机有副屏或虚拟屏,可在“样式设置”的显示屏选择中指定目标 display;右上角“恢复全部默认设置”会保留桌面歌词开关,只重置样式和位置配置。

选择“原生状态栏”后,桌面歌词不再创建悬浮窗,也不需要悬浮窗权限,只在主屏 Flyme 状态栏注册一个歌词槽位。默认进入头像之后的左侧组,也可以排到 EVCC 可控制图标组的最右端;宽度范围为 96–720dp。“根据歌词长度自适应宽度”默认关闭,此时始终使用所设固定宽度;开启后,所设宽度改为最小宽度,歌词更长时才自动加宽,最多 720dp,宽度变化使用约 500ms 的平滑过渡,超过后仍按当前字号直接截断,绝不缩小字体。“双排显示”会绘制当前歌词和下一句,默认仍为当前单排。切歌时 EVCC 会短暂合并加载态和首句变化,正常播放中仍只在实际可见歌词、宽度或样式变化时刷新;连续收到相同内容不会重复发送。所有原生状态栏更新共用限速队列,歌词优先于隐藏巡检,减少 SystemUI 串行处理造成的延迟。自动左侧槽位会稳定保持“头像 → 歌词 → 信息卡 → EVCC”的内部顺序,不再因歌词或信息卡重建而互换。开启“点击歌词打开当前音乐 App”后会尝试拉起实际播放来源;关闭后歌词槽位不执行点击操作。高级“自定义槽位 ID / rank”会分别覆盖 EVCC 的自动编号和排序;“强制进入右侧图标组”会直接修改 Flyme 槽位方向,不再只依赖 rank。自定义配置可能与系统或第三方图标冲突,也可能让点击行为失效,建议仅在明确知道目标值时使用。

原生歌词新增独立的“状态栏通知队列加速到 100ms(实验)”,默认关闭,与 AIDL 直推无关。只要原生歌词或原生状态栏信息正在运行,开启后会把 SystemUI 的全局状态图标通知队列从 400ms 调为 100ms,因此同一时刻的所有系统和第三方状态图标也会受影响;关闭开关、关闭最后一个原生功能或切回悬浮模式后恢复 400ms。另有“AIDL 直推 SystemUI View(实验)”和“放大 Universal Icon(实验)”:开启直推后,通知只负责首次注册与结构变化,歌词内容实际变化时改由 AIDL 更新已有目标 View,相同歌词不会重复推送,宽度改变时由 SystemUI 直接执行平滑过渡;日志出现 AIDL direct render active owner=lyric 表示目标 View 已实际接收首帧。Universal Icon 只作用于关闭自适应宽度后的固定宽度歌词,会尝试放大内部 ImageView,以同时保留自由宽度、原生日夜变色和点击能力,自适应歌词仍使用 RemoteViews。三项均建议逐项实车验证。

封面会优先使用可获得的高清源;汽水音乐播放过的歌曲会尝试读取其本地队列缓存里的原始封面地址,成功时可让 mini 音乐页和 MUSIC 组件显示更清晰的大封面。

默认关闭“使用全局媒体键控制”时,仪表盘播放键、EVCC mini 小窗或 MUSIC 组件会优先走定向播放控制,尽量直接控制当前音乐 App;开启后才改用系统全局媒体键,由 Android / 车机系统决定当前接收者。如果这次播放键已经进入 EVCC,但上次音乐 App 没有恢复播放,EVCC 仍会按“拉起等待”做前台兜底,并在拉起后继续发起播放操作;只要 3 秒内检测到任一 Android MediaSession 播放过,或 EVCC / MC / MediaSession 已确认其他播放器正在播放,就不会再抢回上次音乐 App。开启“播放时不拉起音乐 App 前台”后,则只发后台播放信号,不做前台拉起。新版本升级后该选项默认关闭,不沿用旧开关状态。

如需对比排查封面短暂显示后消失、旧封面不刷新等问题,可在服务页音乐桥接的注册源下方开启"不获取高清封面"。该选项对所有车型生效。默认情况下 EVCC 不再创建、清理或写入 MC 私有封面缓存目录;如需临时验证这条旧链路,可长按任一车型按钮打开"音乐桥接调试选项",再开启"写入 MC 封面缓存"。同一调试框中保留 SDK 注册,以及领克专用的本地文件拷贝模式和 MC 数据目录覆盖选项;EAS 鉴权绕过改由车型下方的可见开关控制。其中 MC 数据目录覆盖只用于领克封面本地文件调试,不会改变注册源白名单文件路径,白名单路径始终按车型固定。

自选注册源:旧版“媒体源白名单”不再作为独立配置项使用。需要额外注册源时,点击“添加自选”,填写包名和显示名称,添加后再从“注册源”列表里选中它。只有当前选中的注册源会被自动写入 MediaCenter 白名单;切换注册源时,EVCC 会立即上送白名单并尝试运行时应用,不再主动重载媒体中心。手动“强制上送”会等待系统媒体组件自启后自动重启音乐桥接,确保 EVCC 白名单重新推送,并刷新注册源列表。

占位包伪装源(实验):其他车型在内置白名单音乐源未安装、未禁用且 EVCC 内置了对应占位包时,列表会标记“推荐 · 占位包伪装”。目前支持酷狗车机、吉利音乐、酷我车机和网易云音乐车机注册源。选择后 EVCC 会先弹窗说明用途,确认后尝试安装占位包,仅用于让媒体中心识别该白名单源;真实播放、控制和放大按钮仍会指向当前桥接的音乐 App。切换到其他注册源后,EVCC 会在后台卸载自己安装的旧占位包,并定期清理残留。从配置商店套用包含占位源的音乐桥接配置时,EVCC 也会自动补装缺失的占位包;安装失败时不会切换注册源。

银河 E8 音乐来源:酷我和酷狗沿用同名占位包的安装资源,但在银河 E8 方案启用时提供系统音乐数据和播放控制;用于其他车型时仍只承担占位和打开当前音乐 App 的作用。E8 默认酷我,也可从同一个“注册源”下拉列表改选酷狗或 GC。首次启用酷我、酷狗时,EVCC 会尝试安装所选适配包;如果车上已有同包名的原厂应用,则会提示冲突,不会覆盖它。GC 适配包需单独安装。切换来源时,旧适配包即使仍在设备上,也不会继续发送桥接歌曲。

注册源提示:注册源列表会在名称前用图标和文字提示推荐程度。EVCC 音乐显示“默认 · 推荐使用”;手动添加的来源显示“自选 · 手动添加”;EVCC 可安装占位包的来源显示“推荐 · 占位包伪装”;已安装的原车内置来源显示“不推荐 · 自带包伪装”;类型不符、未安装或已禁用的来源显示“无法使用 · 类型不符 / 未安装 / 已禁用”。一般保持 EVCC 音乐即可。银河 L6/L7 旧版本中若沿用了酷我作为默认注册源,升级后会自动恢复为 EVCC 音乐;确需占位包或自带包伪装时仍可手动切换。切换到某个真实包作为注册源后,该包自身的回读状态也会被视为注册反射,避免和当前真实播放 App 抢占音乐控制。

隐藏 AI 音乐律动悬浮窗

部分车机在前台使用音乐类 App 时,会自动显示"AI 音乐律动"悬浮窗,误触后可能修改氛围灯颜色。服务页的"隐藏 AI 音乐律动悬浮窗"开关用于隐藏这个系统悬浮窗。

操作: 1. 服务页找到"隐藏 AI 音乐律动悬浮窗" 2. 打开开关 3. 按提示重启车机系统后生效

重启期间车机屏幕会短暂不可操作,请停车后再执行。

4.2 HUD 投屏 (Overlay Cast)

将指定 Activity 投射到悬浮窗口,常用于投射导航地图到 HUD 或小窗。

基本操作: 1. 打开"小窗投屏"开关 2. 配置参数: - 目标 Activity:手动输入组件名,或勾选"自动探测地图"自动查找导航应用。也可选择"纯黑色块"作为遮挡用途 - 显示器:目标显示器 ID(可选择投放到仪表投屏;选 EVCC DashCast 后会自动跟随对应虚拟屏生命周期 —— 目标投屏关闭时 HUD 会软暂停,重开后 HUD 自动重挂,不用再手动启动一次) - 投屏模式:EVCC DashCast 直投会跳过中转画面层;如果使用缩放、裁切、旋转或位置偏移,EVCC 会自动切回虚拟屏投屏,让这些画面参数生效 - 虚拟屏分辨率:投屏的虚拟屏幕宽高 - 缩放比例:百分比缩放 - 裁切:上下左右裁切像素 - 旋转:0/90/180/270 度 - 位置偏移 (X/Y):微调投屏位置 - 透明遮罩:启动或恢复地图投屏时先投放透明画面,等待导航 HUD 起稳后淡入,避免看到重启空窗;投到 EVCC DashCast 且使用 BGRA+LZ4 时支持真透明,H.264 模式无 alpha 会退回黑色遮挡 3. 点击"启动"开始投屏 4. 运行中点击"更新"实时调整参数 5. 点击"停止"结束投屏;旁边的"重启地图"会强制停止地图,投屏时按当前模式恢复 HUD,未投屏时重新打开主屏地图。

配置层级与运行模式:

卡片依次显示基础设置、尺寸与位置、运行模式、Frida 强化和色彩后处理。运行模式在左侧下拉框选择;选用独立 HUD 后,右侧显示策略下拉框。投地图、指定 Activity、色块、透明遮罩和尺寸设置属于全局配置,两个运行模式共用。未保存过尺寸时,默认目标屏 1、旋转 180°、虚拟屏 550×550、缩放 55%、左右各裁切 50 px、上下不裁切、位置 X=0/Y=60;已有保存值不受影响。

  • 兼容模式:保持先停止地图、启动 HUD、等待后返回桌面的原有流程。主屏地图会重启一次;原有配置不会自动切换到新模式。
  • 独立 HUD(新配置默认使用主屏资源隔离):先确认 Frida 主屏保护就绪,再单独启动 HUD。地图被强杀后重新确认新进程的保护,再恢复 HUD;不主动重启仍在运行的主屏地图。需要启用并部署 Frida 17.23.3,当前适配 Geely 地图的内部接口。
  • 独立 HUD 的 主屏资源隔离 只隔离主屏 Context 和共享资源尺寸,保持主屏布局与圆角。
  • 独立 HUD 的 Flyme 适配 把地图内部的 isFlyme 实际配置设为 true,并调整对应皮肤策略。它还会影响导航恢复、车标及充电搜索等内部行为;已运行进程不会重新执行应用初始化。停止后恢复原配置。

更改运行模式会先结束当前投屏,新设置在下次启动时生效。独立 HUD 手动停止后,本次运行期间不会被后台检查重新启动;再次点击启动,或重新打开 EVCC 后,按已保存的投屏开关恢复。主屏保护或 HUD 首帧未就绪时会提示失败,可手动选择兼容模式。兼容模式停止投屏后自动重载桌面地图,独立 HUD 不重载;不再单独提供重载开关。已有明确保存的运行模式继续保留。

色彩后处理下方以“白天配置/夜间配置”文字显示当前采用的配置,自动模式随系统昼夜切换;关闭总开关时显示已关闭。

Frida 强化:标题旁的总开关只控制 HUD 效果,下面保留 HUD 夜间、焦点修复、效果增强和注入。关闭后保留详细配置,也不关闭主屏地图美化。

效果增强与预设:2D/3D 预设位于“效果增强”内,都会选中“新版本” Hook,只更新 HUD 效果增强及其详细参数,保留基础尺寸、运行模式和色彩配置。两种预设都会开启 HUD 深色底图、纯黑背景和小路使用深色,并将车标设为地图自带二维箭头,默认开启 10 帧控制;2D 预设不固定缩放且不启用地图视角,3D 预设固定缩放并启用俯仰视角。地图 Hook 分为“新版本”和“旧版本”,分别使用原 2.5 与 2.3 及以下的处理方式;版本名称并不完全代表内部接口,有些标记为 2.3 的地图也可使用新版。已有手动选择会保留,原自动选择按当前有效分支迁移一次。

HUD 控制(通过 Frida 注入导航应用实现):

  • 夜间模式:强制导航使用夜间配色
  • 焦点修复:修复投屏时导航失去焦点
  • 效果增强:可选择隐藏或调整多项地图元素(部分调整可能效果不好或不起作用,通常开启默认调整即可);顶部“视觉优化”集中放置深色底图、纯黑背景、小路深色、隐藏建筑与绿色地块、路线对比度/高亮、车标样式与缩放、固定缩放和地图视角。路线箭头与文字大小仍在其他对应分类。“指定车标样式”中 0 为地图自带二维箭头、2 为 3D 车标、3 为车速车标。“HUD 深色底图”保留夜间背景,单独使用日间的浅色道路与路况颜色;“纯黑背景”配合深色底图,将地面与区域填充改为纯黑,保留道路、路况和车标;建筑轮廓仍可通过“隐藏建筑与绿色地块”单独隐藏。“小路使用深色”和“隐藏建筑与绿色地块”仅在深色底图开启时生效;同时开启纯黑背景时,它们使用黑底颜色,自定义道路颜色仍按用户选色。纯黑指 HUD 地图的原始输出,色彩后处理中的反色、亮度等仍会改变最终颜色。上述效果只作用于投屏到 HUD 的地图画面,不影响主屏地图
  • 内置"HUD 模式"预设:一键只保留道路和路况

色彩处理管线:白天、夜间颜色预设前的“色彩处理”是总开关。关闭后立即使用原始投屏颜色并保留预设参数;再次打开时恢复所选配置,不影响主屏视觉美化。

支持白天/夜间两套独立配置,可调节:

参数 说明
亮度 整体亮度
对比度 明暗对比
饱和度 颜色鲜艳程度
黑电平/白电平 色阶控制
RGB 通道增益 红/绿/蓝单独增减
色相偏移 整体色相旋转
色温/色调 暖色/冷色偏移
RGB 通道偏移 通道偏移
羽化 边缘渐暗效果
透明度 整体透明度
反色 颜色反转

预设配置:原始、HUD 暗、HUD 反、极简、暖色。

自动模式:跟随系统暗色模式自动切换白天/夜间配置。

主屏地图美化(服务页的主屏地图增强配置):

  • E245 地图 2.3 和 2.5 共用同一套美化配置,3D 视角会自动适配地图版本;其他美化项是否生效仍取决于地图自身支持。
  • "强制3D倾斜"及普通 3D 视角保持选项与车道级增强同时生效,不因车道级状态暂停;全览、选路线时仍会临时放行。推荐增强的"内部就绪状态"默认设为 2(暂停)。
  • 车道级增强里有两个俯仰相关开关:"车道级定时回拉俯仰=70"是旧的 3 秒补偿式回拉,可能和车道级导航自身视角产生拉锯;"车道级强锁俯仰=70"会在车道级激活时从源头阻止俯仰角偏离 70 度,更适合需要稳定固定俯仰角的车道级导航场景。
  • 推荐预设默认启用"车道级强锁俯仰=70",一般不需要同时开启旧的定时回拉。
  • 如果发现车道级视角跟随或车头朝前行为异常,优先只保留强锁开关,关闭普通 3D 的"锁定视角参数"和旧的"定时回拉俯仰"做对比。

参数导入/导出: - 导出二维码:生成投屏参数二维码 + JSON,可复制分享 - 导入参数:粘贴 JSON 导入配置 - 恢复默认:一键重置

4.3 仪表投屏(Dashcast)

将任意内容投放到仪表物理屏幕。适用于龙鹰一号、双龙鹰一号等支持的车型。

功能特点: - 支持两种编码模式:BGRA+LZ4(真 alpha 透明,像素完美)和 H.264 RTP(带宽更省) - 可叠加信息卡片到仪表屏(如车速、时间、温度、电量等) - 支持形状遮罩、羽化效果、圆角、梯形变换(用来贴合仪表屏非矩形显示区域) - 可视化编辑器直接拖动调整信息卡位置 - 信息卡刷新会自动合并重复值并降低高频刷新压力,只开启信息卡、不投屏时也会尽量减少仪表端卡顿 - 横屏(sw≥600dp)自动切换双栏布局

首次启用流程

  1. 服务页找到"仪表投屏"卡片,打开主开关
  2. 软件自动扫描 198.18.44.0/24 网段探测 CP 节点(龙鹰车型默认地址为 198.18.44.2)
  3. 连接成功后状态指示变绿,并显示 CP 侧 dashcastd 守护进程版本号
  4. 选择要投屏的"源 Activity"(如悬浮窗桥接、HUD 组件、纯黑遮挡、Dashcast 专用活动)
  5. 勾选"开机自启动"后,车机重启后会自动重连 CP 并恢复投屏

若连不上 CP:用 ADB 面板的 ping 198.18.44.2 先确认网络通,不通时需检查车机 USB-C 调试线(或者车机侧以太网桥接)是否接好。

信息卡片编辑

打开"卡片编辑器"后可直接在仪表屏预览图上拖拽:

操作 说明
添加卡片 右侧工具栏点击"+"选择数据源(VHAL / APVP / AIDL / CAPI / AdaptAPI / SOA / 系统 / 变量 / 当前时间)
拖拽定位 按住卡片移动到目标位置,支持吸附到屏幕边缘与对齐线
调整大小 四角手柄拖拽缩放
调整字号 侧栏滑块,可一键"全部同步"统一字号
不透明度 单独调节每个卡片透明度(默认 100%)
显示表达式 对原始值做公式转换(如 x * 0.1 缩放)
形状遮罩 可选矩形/圆角矩形/圆形,配合羽化参数实现边缘过渡
梯形变换 用于适配车型仪表"弯曲"视角(上/下/左/右边收缩百分比)

数据断连处理:某路数据源断开时,卡片保留最后一次值 10 秒,超时后整体变灰,方便驾驶员识别数据不再刷新。

编码模式选择

模式 带宽 画质 适用
BGRA+LZ4 较高 像素完美 + 真 alpha 透明 静态/半透明卡片叠加(推荐)
H.264 RTP 较低 存在压缩伪影,无透明 需要全屏动态画面(如视频播放)

默认用 BGRA+LZ4。只在明显卡顿或带宽不足时才切到 H.264。

排错速查

现象 检查点
开关一开就跳回 CP 节点没连上,检查 ping 198.18.44.2
连上但仪表屏空白 源 Activity 没有启动,或投屏分辨率和仪表屏真实分辨率差异过大
画面撕裂 / 闪烁 切换编码模式、降低刷新率或缩小虚拟屏分辨率
重启车机后不自动恢复 确认已勾选"开机自启动",同时自动化引擎也需开机自启

4.4 悬浮窗

在车机界面上显示可自定义的悬浮工具栏,跨应用常驻。

启用步骤: 1. 打开"悬浮窗"开关 → 系统会弹授权对话框,允许"显示在其他应用上方" 2. 授权后悬浮窗自动显示在屏幕上,可长按拖动到任意位置 3. 点击悬浮窗上的"齿轮"按钮(或服务页"管理按钮")即可调整按钮清单

基本设置:

选项 说明
透明度 20%~100%,低透明度适合常驻但怕遮挡的场景
大小 50%~150%,按屏幕 DPI 等比缩放
方向 水平排列 / 垂直排列,会自动调整拖拽吸附行为
主题 白天 / 夜间 / 自动(自动模式跟随系统暗色)
管理按钮 打开按钮编辑器,新增 / 删除 / 排序按钮;默认的 EVCC 启动按钮也可改图标、改功能或删除,但列表至少保留一个按钮
展开后点击自动收起 在"悬浮窗设置"中开启后,展开的多行悬浮窗点击任意动作图标会自动恢复折叠;默认关闭
导入配置 粘贴他人分享的 JSON 配置,一键套用按钮布局
导出配置 导出当前布局为 JSON / 二维码,方便跨车分享

按钮类型(在"管理按钮"中新增):

类型 说明
控制台按钮桥接 直接复用控制台某个按钮的动作
设置属性 按已连接的数据源顺序写入指定车辆属性值
执行命令 以 Root 权限执行 Shell
启动应用 打开指定包名(可直接选已装应用)
APP投屏 将指定应用或当前前台应用投放到目标屏幕
杀死应用 强制停止指定包名,或勾选"杀死当前前台应用"一键停掉当前可见应用
退出应用 把指定应用退到后台 / 回主屏,或勾选"退出当前前台应用"作用于当前可见应用
小窗应用 打开 / 切换 / 关闭小窗
触发自动化 触发指定规则,目标按编组排列,只显示名称和简要
开关自动化 启用、禁用或切换指定规则,目标按编组选择
EVA 联动 发送 EVA 动作编组
米德宝联动 发送米德宝动作编组,可设置优先级、连续动作和自定义 HEX
回到桌面 模拟 Home 键
截屏 / 录屏 截图直接存入相册;录屏动作打开独立控制窗,可开始、结束或随时截屏
音乐控制 播放 / 暂停 / 切换 / 上一首 / 下一首;选择"播放/暂停"动作后可在播放模式里指定"切换 / 播放 / 暂停",媒体动作也可勾选"全局媒体键模式"来兼容只响应系统媒体键的 CarPlay 盒子或蓝牙盒子
热点控制 打开 / 关闭 / 切换 / 仅配置系统热点,可同步设置热点名称、密码、安全类型、频段、信道和隐藏名称
自定义图标 从图标库选 Material 图标 + 自定义颜色;开关可分别选择“关闭图标”和可选的“开启图标”,未选择开启图标时两种状态共用关闭图标;APP 操作里有固定包名时,可在按钮图标行直接勾选"使用App图标"

悬浮窗和控制台是互补关系:控制台是"停车时打开的大屏",悬浮窗是"开车时也能快速点"。建议把最常用的 3~6 个按钮放进悬浮窗。

4.5 状态栏信息

在状态栏显示自定义信息卡片,实时展示车辆属性。主屏可在“悬浮显示”和“原生注册”之间随时切换;副屏继续使用独立的悬浮显示配置。

配置步骤: 1. 服务页打开"状态栏信息"开关 2. 点击"管理状态栏信息"进入编辑器 3. 悬浮显示模式点击"+ 添加信息卡";原生注册模式点击"+ 添加信息卡 / 按钮 / 开关"并选择组件类型。信息卡可填写: - 图标:从图标库选 - 数据源:VHAL / APVP / AIDL / CAPI / AdaptAPI / SOA / 变量 / 时间 - 属性 ID 或变量名 - 运算公式(可选):对原始值做转换,如 x * 0.1 - 值映射(可选):如 0=P,1=R,2=N,3=D - 单位后缀:如 °C、km/h 4. 保存后状态栏立即刷新

信息卡列表在两种主屏模式之间共用:添加、编辑、删除和排序会同时生效;坐标、间距、透明度等悬浮设置与原生字号、宽度、位置和点击设置分别保存,来回切换不会互相覆盖。

原生注册模式: - 打开“管理状态栏信息”旁的“原生注册模式”后,不再创建主屏状态栏悬浮窗,而是把每张信息卡、按钮或开关注册成一个独立 Flyme 原生状态栏槽位;该模式无需悬浮窗权限。按钮和开关切回悬浮显示时会保留配置,但只在原生模式显示 - 原生按钮点击后直接复用悬浮窗的动作分发;原生开关会按当前状态执行打开或关闭动作,并订阅同一车辆属性或高级状态源来纠正状态,不会打开 EVCC 状态栏面板。控制图标采用与 EVCC 主图标接近的视觉尺寸;APP 动作勾选“使用 App 图标”后会实际绘制对应应用图标,并自动改走 RemoteViews 以保留图标原始颜色。开关可分别选择关闭、开启图标;开启图标留空时始终使用关闭图标,相同状态或相同有效图标不会重复占用原生刷新队列 - 原生卡默认在上方显示数值和小字号单位、下方显示名称;关闭“显示名称”后只保留数值并上下居中。可调整上下偏移、数值字号 22–40sp 和标题字号 9–18sp - “自由宽度”默认关闭,此时 INFO 卡自动使用当前 Flyme SystemUI 的原生槽宽,全局与单卡宽度控件均不可调整;E245 通常为 96dp,G636 通常为 80dp。开启时会先提示颜色跟随与点击限制,确认后才可在 48–240dp 调整默认宽度,并在列表中为每张卡选择跟随默认值或单独宽度 - “统一额外间隔”只会在系统自带卡间距上增加留白,不改变文字可用宽度。自由宽度超过当前系统原生槽宽后会改用 RemoteViews 实际宽度,EVCC 会跟随 Flyme 当前状态栏颜色重绘,但切换时可能有短暂延迟,面板点击也可能失效;因此建议优先保持界面显示的系统默认宽度 - 每张卡的宽度按钮中还可勾选“强制使用 RemoteViews”或“强制使用 Universal Icon”。两项互斥且只作用于当前卡:RemoteViews 即使在默认 96dp 也走自由内容路径,可能影响自动变色或点击面板;Universal Icon 则强制走原生图标路径并放大内部 ImageView。若旧配置或手工配置使两项同时为真,RemoteViews 始终优先 - 每张卡的宽度按钮左侧提供高级“ID/R”设置,可分别启用自定义状态 ID 与 rank,并可勾选“强制进入右侧图标组”;自定义值会覆盖该卡的自动槽位规则,强制右侧则直接修改 Flyme 槽位方向。与系统或其他应用重复可能覆盖图标,自定义 ID 也可能使 EVCC 点击面板失效 - 关闭“置于 EVCC 图标左侧”时,信息卡按列表顺序使用 rank 1000 起的靠后区间;打开后,未自定义 rank 的卡按创建顺序进入左侧组。默认左侧顺序为头像、歌词、信息卡、EVCC,EVCC 仍保持在 Flyme 通知图标左侧;右侧歌词使用比信息卡更靠后的区间。状态 ID 与 rank 相互独立,默认不会复用盯盯车的 132 - “点击打开 EVCC 面板”默认开启且只控制 INFO 信息卡;宽度不超过当前系统原生槽宽时,点击信息槽位会打开和 EVCC 主图标相同的面板;关闭开关或把卡片宽度调得更宽后以实际宽度优先,不再保证面板可用。按钮和开关始终使用自己的直接动作 PendingIntent,不受该选项影响 - 每张普通信息卡可选择“普通数值 / 播放时间 / 倒计时”。默认路径中,当前时间数据使用 SystemUI TextClock;播放时间和倒计时会把格式化后的数值按秒解释并交给 SystemUI Chronometer,EVCC 只在时间基准确实变化时校正,不再每秒发送通知。若全局或单卡强制选择 Universal Icon,时间类卡片也会改为 Bitmap 图标路径并按可见值更新;强制 RemoteViews 的优先级更高,会继续使用 TextClock / Chronometer。普通信息卡按格式化后的可见结果去重,数值未变或变化后显示结果相同时不会占用刷新队列。长内容不再自行缩小字号,宽度不足时会按当前字号省略;需要加宽时先开启“自由宽度” - 原生管理页的“状态栏通知队列加速到 100ms(实验)”“AIDL 直推 SystemUI View(实验)”和“放大 Universal Icon(实验)”默认均关闭,三者彼此独立。通知队列加速仅在原生歌词或原生信息卡运行时把 SystemUI 全局状态图标队列从 400ms 调为 100ms,会影响所有状态图标,关闭最后一个原生功能或关掉开关后恢复 400ms。开启直推后,通知只负责首次注册和槽位结构变化,卡片的可见内容变化才经 AIDL 更新目标 View;日志出现 AIDL direct render active owner=info 表示目标 View 已实际接收首帧。开启 Universal Icon 后,普通数值、当前时间、播放时间和倒计时都会优先尝试放大内部 ImageView,以同时获得自由宽度、原生变色和点击面板。单卡“强制 RemoteViews”优先级最高,其次是“强制 Universal Icon”,再其次才是全局 Universal Icon;SystemUI 未确认直推成功或无法定位目标 View 时,EVCC 会自动切回普通通知刷新 - 原生模式最多按列表顺序注册前 6 个信息卡、按钮或开关,三种类型共同占用该上限;更多组件仍会保存。空白间隔只对悬浮模式生效,在原生管理页中保留为灰色只读项

副屏独立配置: - 副屏使用自己的信息卡和布局设置,不跟随主屏的原生注册模式 - 副屏配置仅在检测到副屏(乘客屏、Dashcast 虚拟屏)时生效

原生状态栏空间有限。虽然 EVCC 支持 6 个组件槽位,仍建议只保留驾驶时最重要的数据与操作,并避免把高风险动作放到容易误触的位置。

EVCC 会自动探测不同 Flyme SystemUI 的插件 ClassLoader、状态栏布局接口、原生槽宽和左右区域容量;E245 继续沿用原有链路,G636 会使用其独立加载器与布局结构,无需在界面手动选择车型。若某个实验直推链路在当前系统上没有收到成功回执,只影响该实验路径,信息卡和歌词仍会自动回退到通知更新。

EVCC 原生状态栏面板

服务页"悬浮窗"板块还提供独立的"原生状态栏注册"主图标功能。它与上面的“状态栏信息 → 原生注册模式”互相独立:主图标可以关闭而信息槽位继续显示,也可以只保留主图标和面板。

点击状态栏 EVCC 图标后,弹层会以接近 Flyme 通知管理的 APP 图标列表展示:每一项都是左侧图标、标题和类型提示,右侧按控件类型显示开关、"执行"按钮或当前值;顶部小屋图标可直接打开 EVCC。

使用方式: 1. 打开"原生状态栏注册" 2. 进入"管理状态栏控件",可手动添加项目,也可从控制台导入已有组件,并用上下按钮调整显示顺序 3. 首次启用或修改控件后,可点击卡片内的"重启 SystemUI"让状态栏重新扫描插件并显示;也可以重启车机 4. 如需隐藏系统或第三方状态栏图标,点击"状态栏图标隐藏",可同时勾选头像、通知、热点、网络、时间、盯盯车 132 等已知槽位,也可添加多个自选 ID

图标隐藏提供两种可单选或同时启用的方式,并在弹窗中显示当前 SystemUI 是否已经回报执行成功: - SystemUI 插件进程控制:直接在 SystemUI 内拦截槽位更新。收到当前 SystemUI 的成功回执后会标记为“已验证,推荐”;安装新版后若仍显示“待验证”,先用卡片内按钮重启一次 SystemUI,让系统重新加载插件代码 - 伪造相同 ID 的状态通知:在进程控制尚未验证时标记为当前推荐的兼容方案。EVCC 会监听带状态栏槽位信息的源通知,哪个图标被原应用刷新就只补发哪个图标;无法观察且进程控制未验证时才启用低频巡检。停用后第三方图标内容可能要等待原应用再次刷新或重启 SystemUI 才完全恢复

“隐藏 EVCC 自己的状态栏图标”会让 EVCC 的 131 槽位保持注册但强制隐藏,避免后续内部刷新把它重新显示;该选项开启后即使关闭“原生状态栏注册”主开关也会保留隐藏注册,需回到隐藏设置取消勾选才释放。其他图标隐藏仍随主开关启停并保留配置。

这是实验功能;如果状态栏没有出现,先确认卡片状态是否提示"已注册,请重启车机或 SystemUI 后生效"。

4.6 小窗应用(Mini Window)

将任意 Android 应用以小窗形式显示在主屏或副屏上。应用运行在虚拟显示区中,通过 TextureView 投射到可拖拽的浮窗内,可实现多应用同屏显示。需要 Root 权限。

打开方式(三种): - 悬浮窗按钮:添加"应用小窗"按钮 - 仪表盘组件:添加小窗类型组件 - 自动化规则:添加小窗动作

配置参数:

参数 说明
目标应用 指定固定包名,或勾选"前台应用小窗"自动使用当前前台应用
目标屏幕 主屏 (Display 0) 或副屏 (Display 1/2 等,如副驾屏)
窗口宽高比 竖屏 9:16、3:4、9:19.5;横屏 16:9、4:3;正方形 1:1;或自定义
分辨率 (短边) 320~800px,影响清晰度与性能
DPI 160~420,影响字体与控件缩放
旋转角度 不旋转 / 90° / 180° / 270°
标题栏 显示或隐藏

手势操作:

手势 效果
标题栏左侧 1/3 点击 全屏展开
标题栏右侧 1/3 点击 关闭小窗并结束应用
标题栏中间单击 返回键;快速三击:重置位置
上滑超过顶部 30% 隐藏到后台(应用保持运行)
下滑超过底部 40% 全屏展开
双指拖拽 移动小窗
双指 pinch 缩放大小
左下角/右下角拖拽 调整宽度(保持比例)

吸附行为:小窗拖拽结束时,靠近其他小窗或屏幕边缘(约 60dp 内)会自动吸附对齐,多窗口会智能避开重叠。

小窗动作类型:

动作 说明
toggle 已有则隐藏/显示,否则打开新窗口
open 始终打开新窗口
close_all 关闭所有小窗
hide_all 隐藏所有小窗到后台,不退出应用

如果不需要悬浮小窗,而是要把应用 task 直接切到另一块屏幕,使用动作类型"APP投屏";它和"启动应用"类似,额外支持勾选"投放当前前台应用"。

### 4.7 STR 休眠防护

防止车机进入 STR (Suspend to RAM) 深度休眠。

原理:通过 VHAL 定时写入特定属性值告知 MCU 有活跃任务。

操作: 1. 打开"STR 防护"开关 2. 配置参数: - 属性 ID:按当前车型适配填写 - 写入值:按当前车型适配填写 - 刷新间隔:10~600 秒,默认 120 秒 - 电量属性 ID:用于检测电池电量 - 电量阈值:低于此电量自动暂停防护 3. 修改后点击"保存"

4.8 电量保护

设置电量阈值,低电量时自动停止耗电服务(如 STR 防护),避免耗尽电池。

4.9 DPI 调节

EVCC 自身缩放:首次使用、尚未激活时,主界面和设置向导会按屏幕自动选择倍率。部分已适配屏幕使用固定推荐值,其他屏幕按分辨率与系统密度计算;无法读取有效参数时使用内置 1.6 倍。完成激活后不再自动改变大小,已有用户更新应用也会保留原来的倍率。手动设置始终优先。

云端填写的 DPI 值只覆盖推荐值,不会自动改变当前大小;留空使用屏幕推荐值。设置或服务页可手动调整 0.3–3.0 倍,预设为 0.5、0.8、1.0、1.2、1.4、1.6、1.8、2.0、2.5;“恢复默认”会应用当前推荐值,之后仍可手动调整。设置向导结束后仍会显示缩放调整选项。

服务页 DPI 卡片包含两部分:EVCC 自身 DPI 用于调整 EVCC 主界面缩放;Frida DPI 调节用于动态修改指定应用的显示 DPI。设置页"配色方案"下方也提供 EVCC 自身 DPI 快捷入口。

注意:该功能目前并不稳定,不建议长期使用。 使用前需先部署 Frida,并在"连接"页打开 Frida 开关;否则打开开关或注入时会提示先处理 Frida。

操作: 1. 打开"DPI 调节"开关 2. 点击"添加应用"→ 选择目标应用 → 输入目标 DPI 值 - 常用值:120(ldpi) / 160(mdpi) / 240(hdpi) / 320(xhdpi) / 480(xxhdpi) / 640(xxxhdpi) 3. 点击"注入全部"→ 启动守护模式,自动注入所有已配置应用(守护模式下目标应用重启时自动重新注入) 4. 点击"停止全部"→ 停止注入,重启应用后恢复默认

4.9.1 音量组调整

服务页"音量组调整"用于临时查看和手动调整车机音量组。点击"打开音量组调整"后,EVCC 会自动查询全部音量组,并按每个组的最小值、最大值和当前值生成滑条。

拖动某个音量组的滑条并松开后会立即写入该组音量;也可以点击该组的"测试"按钮播放短测试音,辅助判断它对应车机里的哪一路声音或哪个位置。若车机未提供该音量组的音频用途映射,测试按钮会显示失败原因。

4.9.2 L7 三指飞屏解除

银河 L7 可通过原厂三指滑屏把当前应用飞屏到副驾屏。该卡片用于解除原厂应用白名单限制,让已安装且可启动的应用也能参与三指飞屏。

使用前提: - 仅面向银河 L7 / CSD 车型开放,EVCC 会按车型标识自动显示/隐藏该卡片 - 需 RootService 正常连接,并已部署 Frida、打开 Frida 开关 - 不绕过原厂 P 挡限制;非 P 挡下仍按原厂逻辑拦截

操作: 1. 服务页找到"L7 三指飞屏解除" 2. 打开开关,等待状态显示"守护中 · 已注入" 3. 在主屏打开目标 App,使用原厂三指滑屏手势飞屏到副驾屏 4. 如需恢复原厂白名单行为,关闭开关即可

关闭开关会停止后续守护;相关系统界面刷新后会完全恢复原厂行为。如果状态显示"已保护性暂停",说明相关系统界面短时间内异常重启过快,EVCC 已停止继续重试;关闭开关后再重新开启可清除保护状态。

4.10 远程控制

通过即时通讯平台机器人远程控制车机。

支持平台:钉钉 / Telegram / 飞书

配置步骤: 1. 选择平台 → 填入凭据(如机器人 Token、App Key/Secret) 2. 可开启"自启动",应用启动时自动连接 3. 点击"保存"保存配置,"连接"手动连接

远程命令:

命令 说明
状态 / status 查看设备状态
帮助 / help 显示帮助信息
exec <命令> 执行 Shell 命令
重启 / reboot 重启设备(需二次确认)
日志 / log 获取最近日志
服务 / services 查看运行中的服务
ping 测试连通性

小程序 MQTT 上报

服务页"远程控制"卡片下方可能按云端适配显示"小程序"卡片,用于把指定车辆属性和变量值上报到小程序服务端。当前只做状态上报,不开放远程控车。

配置步骤: 1. 在小程序服务端完成手机号快捷登录,获取 MQTT 用户名和密码 2. 打开小程序卡片右侧开关,展开配置区;未填写配置时也可以先打开 3. 默认模式由当前车型适配决定,未配置时使用"预设配置";预设配置下填写 MQTT 用户名和密码即可,Broker 地址、端口、全量兜底间隔和上报项列表按当前车型预设处理;如果页面显示引导文案,按文案完成小程序侧绑定 4. 如需上传车辆定位,单独打开"上传定位信息";默认不上传定位 5. 如需自己填写 Broker、端口、全量兜底间隔或上报项列表,点击"自定义"后再编辑;自定义模式不会自动预填上报项,属性写十进制或 0x 十六进制 ID,带区域的 VHAL 属性可写成 属性ID/区域ID,也可点击"选择属性区域"从已知区域中选一个;变量写 $time、${trip_fuel_last} 或 var:trip_fuel_last,定位信息仍通过独立开关控制;上报项列表右下角的"放大"图标可打开大输入框,适合编辑较长列表 6. 点击"保存配置"保存;需要立即上报时点击"启动",停止上报时点击"关闭";自定义模式下如需重新使用默认列表,可点击"恢复默认" 7. 如需车机启动后自动连接,可勾选"开机自动启动小程序上报"

小程序默认模式可由云端车型适配决定,未配置时为预设配置;旧版本升级后,如果本机还没有保存过模式选择,会先进入当前车型的默认模式。定位信息默认不上传。预设配置下,上报项列表会按当前车型使用云端适配值;即使云端把该值作为默认项下发,EVCC 在预设模式也会直接使用它。切到自定义后,Broker 地址、端口、全量兜底间隔和上报项列表均以本机填写内容为准,不再跟随云端预设;本机没有保存过自定义上报项时,列表会保持空白,启动前需要填写至少一个上报项或手动点击"恢复默认"。列表支持换行、空格或逗号分隔,重复项会自动去重;属性只需要填写 ID,不需要填写属性名称。旧的纯 ID 上报项无需修改:区域 0 不可读时会自动尝试已知的 VHAL 区域。一个属性 ID 的 MQTT topic 只代表一个区域;同一 ID 有多个区域时,建议明确选择需要上报的区域。

Geely AIDL/CAPI 的纯数字 ID 会在已有属性源未占用该 ID 时,自动匹配唯一的来源、通道和请求区域,例如 24576 自动定位 Geely AIDL 的 signal 通道、区域 1;定时和实时上报使用相同属性,数值 0 也正常上报,无需打开属性页。同一 ID 有多个 Geely 区域时可直接填写 24576/1;来源或通道仍有歧义时使用完整引用,例如 geely_aidl:signal:0x6000/1,并在接收端订阅对应的完整引用 topic。无法唯一匹配或当前不可读的项目会计入缺失数量,纯数字 ID 的原有 MQTT topic 不变。

EVCC 会在连接成功后立即上报一次完整快照,之后属性或变量发生变化会实时增量上报,并按设置间隔周期全量兜底。属性值发布到 evcc/<MQTT用户名>/<属性ID>/state,变量值发布到 evcc/<MQTT用户名>/var/<变量名>/state;meta 里会同时列出 properties、variables 和完整 items。状态和设备元信息会保留在 MQTT 服务器,具体上报值和心跳不保留;找不到或当前数据源未返回的属性、无法读取的变量会跳过,并计入心跳里的缺失数量。

建议 Broker 地址使用 ssl://。如果使用 tcp://,EVCC 设备 ID 和 VIN 可能以明文传输,请只在可信网络中使用。

该入口默认隐藏,仅由云端车型适配 service.show_mini_program 显式开放。云端关闭后,卡片会隐藏,并自动关闭启用和自启开关。

米德宝/AIDL 联动与 EVCC 开放 API(实验)

服务页按云端车型适配显示两套彼此独立的能力:实验功能警告之前是旧版“米德宝/AIDL 联动”组合卡,包含“米德宝 BLE 直发联动”“米德宝 AIDL 联动”和“旧版 AIDL 联动”;实验区内是新版“EVCC 开放 API”卡片,面向第三方开发者提供标准接口、应用授权与调试控制台。两张卡的云端显示开关、运行链路和授权记录彼此独立。

配置步骤: 1. 使用旧版联动时,在“米德宝/AIDL 联动”卡片中按需开启“米德宝联动”或“旧版 AIDL 联动”;开启米德宝联动后,还可分别选择“米德宝 BLE 直发联动”和“米德宝 AIDL 联动”。三种链路可以独立或同时开启,没有选择任何方式时不会启动联动。升级后原有开关、旧版调用方和共享数据配置继续保留在这张组合卡中 2. “米德宝 AIDL 联动”需先安装“银河悬浮窗歌词”;未安装时 EVCC 会取消该子开关,并提供咨询购买二维码和网址(http://z.tmyml.cn:3012/)。从 EVCC 3.1.3 起,开启后会自动向适配新版接口的银河悬浮窗歌词共享歌名、歌手、专辑、当前歌词、可获取的完整歌词、进度、BPM 和播放状态,无需添加音乐项目或修改 JSON。需同时开启 EVCC 的“音乐转发”;此开关不会替你开启音乐转发。音乐来源只提供当前一句时,不能提供整首歌词;无歌词或 BPM 未识别时也会明确告知银河。普通暂停保留歌曲并冻结进度,音乐转发关闭或音乐会话消失后清空共享内容;重新开启后自动恢复。音乐共享只对银河开放,不依赖旧版 AIDL 开关或车辆属性配置 3. “旧版 AIDL 联动”维持原接口的兼容语义:打开后外部应用可以读取旧版快照;要开放属性写入,请进入“旧版接口配置 → 开放权限的应用”,选择明确可信的 App。EVCC 会固定包名和签名;不选应用时仅保持读取能力 4. 点击“旧版接口配置”会打开非全屏弹窗。原来的管理属性、修改配置 JSON、导入 JSON、导出 JSON、恢复默认和旧版“开放权限的应用”都集中在这里。数据配置由米德宝 AIDL 与旧版 AIDL 联动共用,在任一入口修改都会同步生效 5. 旧版 AIDL 新增或修改属性时,填写显示名称、取值来源、Area ID、可选值映射和实时推送开关;高级用户也可编辑完整 JSON。导入文件最大为 8 MiB,其中去除缩进、换行等格式空白后的有效配置最大为 5 MiB;只有完整有效的配置才会覆盖当前配置。导出目录为 Download/EVCC/exports/aidl_linkage/ 6. 点击实验区“EVCC 开放 API”卡片的“开放 API 控制台”进入新版调试页。横屏时左右区域各占一半,竖屏时上下区域各占一半;左侧提供连接状态、权限应用、能力/来源、目录、解析、读取、监听、写入、变量、动作、Shell、自检和目录导出,右侧显示结构化联动日志。此页使用真实公开 Binder 链路调试,不会把测试调用绕过到内部实现 7. EVCC 开放 API 的“开放权限的应用”支持按应用名或包名搜索、按全部/用户/系统分类,并显示图标、包名、复选框和权限管理。首次勾选会打开非全屏权限弹窗,未保存或取消时不会授权;以后可点击右侧“权限管理”调整。授权会绑定应用包名、独立 UID、当前签名证书和授权修订号,App 换签重装后必须重新授权,共享 UID 应用不支持 8. 权限预设分为“只读”“标准联动”“高级控制”和“自定义”。只读可查看目录、读取/监听属性和读取/监听变量;标准联动在此基础上增加属性写入、变量写入和安全动作,是默认预设;高级控制再增加高权限动作与系统设置;自定义可逐项选择。“实时全量扫描”和 Shell 永远需要单独勾选,系统写入还需要独立权限和每次车机端确认 9. EVCC 开放 API 只读取用户已经开启的数据源,不会偷偷开启关闭的来源。按 ID 或精确名称使用 AUTO 时会依次尝试 VHAL、APVP、车辆 AIDL、CAPI、AdaptAPI、SOA,并返回实际来源;未指定区域时优先区域 0,只有多个非零区域时会明确提示区域不唯一。属性目录会优先返回来源自身的说明和枚举定义,并用按真实名称精确匹配的 EVCC 元数据补齐可靠说明;用户备注与协议说明保持分离。读取优先返回已经初始化的缓存;订阅会先发送初始快照,再发送变化事件,不再用空字符串代表未知状态 10. EVCC 开放 API 会替第三方 App 管理绑定、属性初始化、来源短暂断线和按需订阅生命周期。客户端 SDK还会自动重绑、整批恢复订阅和处理事件序号缺口。APVP 新增按需订阅可能引发一次必要的链路更新,请一次提交完整订阅集合,不要短时间逐项频繁增加;实时全量扫描会临时扩大访问范围并有超时、限频和共享缓存,请只在开发诊断时使用 11. EVCC 开放 API 的 Shell 保留自由输入,但高危命令、二次解释、隐藏执行和常见绕过方式会被永久拒绝;最长执行 30 秒,限制输出和并发,并支持取消。通用文件修改工具和输出重定向始终禁止;即使已授予 Shell,涉及系统设置、应用或服务状态修改等受支持操作仍须额外授权并在车机上逐次确认 12. EVCC 开放 API 授权属于当前设备的安全状态,不随普通配置备份、恢复或配置商店迁移。旧版 AIDL 与 EVCC 开放 API 的协议和授权完全独立,开启或授权其中一个不会自动开放另一个。第三方开发者应阅读 https://evcc.coauto.cc/docs/ 的“EVCC 开放 API”板块,也可下载独立 Demo 源码,使用 SDK 模式与 Raw AIDL 模式对照调试

开放 API 音量组(v3.2.17+):第三方旋钮、滑条和控制面板可查询、读取、设置或增减系统音量组。在“开放权限的应用”中分别授予“音量组读取”和“音量组控制”;已有授权升级后不会自动增加权限。新授权的只读预设包含读取,标准联动包含控制。控制台的“音量组”入口可查询实际组号,设置返回下发目标,读取显示系统当前值;组号对应哪种声音由实际车机决定。开发者接入说明见 https://evcc.coauto.cc/docs/volume/。

开放 API 音乐共享:开启音乐转发后,可在“开放权限的应用”中为音乐显示类 App 授予“音乐读取”和“音乐监听”;需要播放控制时另外授予“播放控制”。可共享歌曲、歌词、封面和已有 BPM。已有应用授权不会在升级后自动增加音乐权限。开放 API 控制台新增“音乐与歌词”,可查看状态、歌词与封面,并测试播放控制。银河使用新版接入后也需要这样授权,不再依赖米德宝 AIDL 开关;旧版银河仍使用旧入口,停用时间另行通知。

米德宝 BLE 直发的其他配置:

  1. 如通过 MIBO 直发,先开启“米德宝联动”,再勾选“米德宝 BLE 直发联动”;“音乐律动联动”和“联动配置”两个入口会单独显示,不会隐藏或停用旧版接口配置。组合卡内的旧版开关不会关闭独立的 EVCC 开放 API;开启后会随 EVCC 开机或休眠恢复自动运行
  2. “音乐律动联动”默认开启(已保存的开关选择保持不变),可在此关闭或重新开启,并在“BPM 对照表”中为 F3/F5 的各速度档以及 F4/F6/F7 固定动作设置参考 BPM。普通 BPM 或高精分析没有真实分段时,EVCC 会在全部已启用项中选择差值最小的动作;高精分析有真实分段时,只会在 F3、F5 中按整首分段的持续时间和 BPM 综合选择更合适的一组动作,并在整首歌曲中保持该动作不变,再根据当前播放位置把速度实时调到最接近当前分段 BPM 的档位。歌曲开头尚未进入任何 BPM 分段时先使用 1 档,分段之间未覆盖的位置使用整曲 BPM。差值相同时选择参考 BPM 较低的一项,参考值也相同时选择表中靠前的一项。每项可以单独启停或恢复默认,也可以全部恢复;至少需要启用一个动作。BPM 未命中时的兜底动作仍可单独设置,默认是随机动作速度 3;云端明确无结果时直接使用兜底,5 秒仍未返回时先执行兜底动作,30 秒内如果延迟命中 BPM,会自动补切一次对应动作
  3. 音乐律动启用后,音乐桥接卡片歌词上方会显示米德宝是否正在律动、动作指令状态、当前速度档位和上次发送指令;高精分段歌曲播放、跳转或恢复后,会按当前位置更新卡片 BPM 和米德宝速度,相邻分段仍命中同一档时不会重复发送指令。切歌后的 3 秒稳定等待只用于避免米德宝重复发送指令,不会延迟 BPM 查询;正常切歌会优先按速度差量轻量调整并重启律动,固定速度动作期间会每隔几首歌低频无感归零,只有 EVCC 重启/米德宝直发重新打开、暂停超过 3 分钟、或长时间未归零时才会重新归零校准
  4. “联动配置”里可以发送 A 板 MAC 配置、灯光配置,调整 BLE 发送时长和间隔;下方按动作分类紧凑列出全部正式指令的测试按钮,并保留组合测试和动作速度档测试,方便逐条验证 A 板接收和米德宝反应
  5. 需要把米德宝加入场景时,先开启“米德宝 BLE 直发联动”,再在自动化、控制台组件或悬浮窗按钮中选择“米德宝联动”动作,编排基础控制、表情、音乐律动、直接动画、语音动作、动作音效、场景屏效、音乐表情、延迟、连续动作和自定义 HEX

默认参考 BPM 为:F3 速度 1–6 依次是 17 / 50 / 66 / 82 / 99 / 125,F4 是 151,F5 速度 1–7 依次是 30 / 64 / 88 / 115 / 144 / 172 / 210,F6 是 133,F7 是 21。

“米德宝/AIDL 联动”和“EVCC 开放 API”的云端开关默认开放,但管理员仍可按全局、车型或设备独立隐藏任意一项;旧版组合卡位于常规区域,EVCC 开放 API 暂时位于实验区。隐藏其中一项不会连带关闭另一项:隐藏旧版卡会停用米德宝 BLE、米德宝 AIDL 与旧版 AIDL 联动,隐藏开放 API 只会关闭 EvccApi 会话和入口。配置内容请按管理员、车型配置或开放 API 文档填写。

开发者远程协助

标准版在设置页左侧、上传诊断日志上方提供“开发者远程协助”,替代原 Debug 模式入口;EX5 SaaS 版在设置页“PCH CC Mini”卡片上方提供相同功能。原 Debug 模式开关已停用。 名称前的状态小点:绿色表示协助已开启,灰色表示未开启,红色表示请求失败、状态上报异常或运行状态暂无法确认。

点击右侧“请求协助”,卡片会显示请求、连接运行服务、检查更新、下载、部署和启动状态。未部署或运行组件需要更新时才进行部署,已部署且未变化时直接复用。EVCC 会先使用 RootService;RootService 异常时,若当前 ADB 配置已经授权 shell 会话,则改用 ADB shell 在独立目录部署并启动本次协助。降级不会请求 ADB root、修改 ADB 密钥、重启 adbd 或触发授权弹窗;RootService 和已授权 ADB shell 都不可用时,本次请求失败并可再次点击。

远程协助固定跟随 EVCC 的 ADB 连接,优先复用已成功握手的端口与 IPv4/IPv6 地址;原端点失效时,只读探查系统端口属性和本机监听端口,并验证对应的普通 ADB 或 TLS 协议,不修改 ADB 配置。电脑端仍通过 5555 连接,内部自动转发到实际端口。此规则不能关闭,也不受普通 Tailcat 的自定义端口影响。

启动时自动采用后台配置的开发者客户端身份,用户无需手工填写客户端公钥;不会修改普通 Tailcat 配置中保存的客户端列表。后台未配置开发者客户端时会提示联系开发者。

这是一次性开启:离开设置页或重启 EVCC 应用不会主动停止已经运行的 Tailcat 进程,车辆重启、进程关闭或进程被替换后本次协助结束,后续需要重新请求。请求协助会关闭 Tailcat 原有的持久启动开关;不会在开机、休眠恢复或检测到进程停止后自动重启本次协助。

卡片会显示“协助已开启”或“本次协助已结束”。已开启但状态上报失败时,通道继续运行并重试上报;暂时无法确认进程时,后台超过两分钟未收到新状态会显示“状态待确认”。Tailcat 连通与 ADB 授权、root 权限是不同的状态。

Tailcat 远程通道(实验)

服务页的“Tailcat 远程通道”用于通过端到端加密链路访问车机上的指定 TCP 端口。它会优先尝试点对点直连,无法直连时改用 DERP 中继,不再要求用户准备 frps 服务器、服务器 Token 或公网映射端口。默认勾选“跟随 EVCC 的 ADB 连接”,自动匹配 EVCC 实际使用的端口及 IPv4/IPv6 地址,电脑端统一使用 5555。取消勾选后可自定义本机 TCP 端口列表或范围,各个正在监听的端口自动选择可用的 IPv4/IPv6 地址,远端使用相同端口号。当前不支持 UDP、自定义端口改写或整网出口。

服务页的手动 Tailcat 运行组件不随 EVCC APK 安装,也不会在打开总开关、应用启动或休眠恢复时后台下载。“开发者远程协助”会在用户请求时检查并部署;手动流程仍需在服务卡片上明确点击“部署 Tailcat”;卡片会依次显示 RootService 连接、服务器检查、下载百分比、校验、部署和完成状态,并在成功后显示实际检测到的 Tailcat 版本。服务器上的同名组件更新后,可再次点击“检查更新”。下载完成后会检查运行组件格式及复制完整性,校验失败时保留车机上已有的可用版本。手动流程首次部署需要车机联网和可用的 RootService;开发者远程协助在 RootService 不可用时,如果 EVCC 已有可用的 ADB 授权,则可通过 ADB shell 在专用目录完成首次部署和启动。已有可用组件时,更新服务器暂时不可达不会阻止通道启动。

卡片直接显示当前进程实际使用的转发端口、目标地址及 IPv4/IPv6 类型,例如 5555 → 127.0.0.1:5555 (IPv4);状态无法确认时显示“待确认”,未运行时不展示旧端口为当前端口。电脑端的 5556、5557 等本地映射端口由电脑客户端分配,车机卡片显示的是远端入口与车机本地目标。

卡片上的总开关控制自启动:打开时会尝试启动,启动失败仍保留自启动设置,可以点击“启动”重试;进程已经运行时,打开总开关会复用现有进程。关闭总开关会中断当前进程并关闭自启动,之后仍可独立点击“启动”或“中断”。“启动”和“中断”位于“检查更新”旁,不更改总开关设置。手动中断后,心跳和深度休眠唤醒不会在本次 EVCC 运行期间重新拉起进程;点击“启动”、重新打开总开关,或下次重新启动 EVCC 后,按总开关设置恢复自动控制。总开关关闭时手动启动的进程,在保存配置、重置身份或更新运行组件后也会按原运行状态恢复。离开服务页不会停止已经运行的进程。

首次配置:

  1. 在可信电脑上安装与服务端兼容的 Tailcat 客户端,运行 tailcat genkey --client --key=client-default。命令会在电脑本地保存客户端私钥,并输出一行 nodekey:… 公钥;不要复制或上传私钥文件
  2. 进入 EVCC 的“Tailcat 远程通道” → “配置”,把输出的 nodekey:… 公钥粘贴到“允许连接的客户端公钥”;可添加多个公钥,每行一个
  3. 默认保持“跟随 EVCC 的 ADB 连接”勾选,无需填写 ADB 端口;需要访问其他服务时取消勾选,再填写本机 TCP 端口,例如 5555,8080,9000-9002,远端使用相同端口号。切换时保留已保存的自定义端口。探查范围仅限系统已报告的监听端口,不扫描全部 65535 个端口;发现受限或运行组件不支持必要映射时会明确提示
  4. 建议保持“允许未列入白名单的客户端”关闭。尝试开启此选项时 EVCC 会弹出风险二次确认;如果客户端公钥为空并直接打开 Tailcat 总开关,也会明确提示无白名单访问风险。确认后 EVCC 会同时允许未列入白名单的客户端并继续启动,取消则保持关闭。只有短时调试、且开放端口自身已有可靠鉴权时才应确认
  5. 保存配置后返回服务卡片,点击“部署 Tailcat”。等待进度走完并出现“已部署 · 版本号”;如果提示 RootService 未连接,先恢复 RootService 后再重试,部署失败不会自动打开总开关
  6. 确认版本已经显示后再打开总开关。Tailcat 会生成固定服务端身份和以 tc 开头的连接地址;点“复制地址”会复制完整地址并同时显示二维码,扫码得到的也是同一个完整地址,可发送到已授权电脑。后续重启和深度休眠恢复只会启动已部署组件,并沿用同一身份与地址,不会静默下载更新

从电脑连接:

  • 检查链路:tailcat ping <连接地址>,输出会说明当前经过直连还是 DERP
  • 连接某个原始 TCP 端口:tailcat <连接地址> 5555
  • 访问 HTTP 服务:tailcat socks <连接地址> curl http://server.tailcat:8080/
  • 客户端命令会自动使用上面生成的 client-default 私钥;如果公钥不在车机白名单中,连接会被拒绝

如果已经安装项目提供的 tailcat-adb 电脑端辅助工具,可以为不同车辆或用户保存独立名称:

  • tailcat-adb add <用户名> <连接地址>:添加或更新用户,不立即连接;用户名支持 1–32 位英文字母、数字、下划线和短横线
  • tailcat-adb users:列出已保存用户和脱敏后的地址,并标记当前用户
  • tailcat-adb <用户名> 或 tailcat-adb connect <用户名>:切换到指定用户并连接车机 ADB;本机默认使用 127.0.0.1:5556,如果端口已被其他程序占用,会从 5557 开始自动递增寻找空闲端口,实际地址可在连接结果、status 或 info 中查看
  • tailcat-adb <用户名> <本地端口>,例如 tailcat-adb mycar 5557:在指定本地端口连接该车,保留其他端口已有的受管理连接。使用 adb -s 127.0.0.1:5557 操作该车;tailcat-adb stop 5557 只停止这一条通道
  • tailcat-adb forget:清除当前选择并停止本地通道,但保留用户地址簿,之后仍可按用户名重新连接

完整连接地址保存在当前电脑的用户状态目录,不会写入辅助脚本本身。tailcat-adb info 和 tailcat-adb status 只显示脱敏地址;tailcat-adb address 会输出当前完整地址,复制或展示时应注意保密。

“DERP 地图地址”默认使用 Tailcat 公共地图。公共中继可能限流且不承诺可用性;有自建 DERP 地图时可填写自己的 HTTP/HTTPS 地址。更换 DERP 地图或点击“重置身份”都会生成新连接地址,旧地址立即失效。连接地址、服务端私钥和待处理的身份重置状态不会进入 EVCC 配置备份;服务端私钥只保存在车机受保护运行目录。

默认连接地址在正常使用中不会变化:重启车机、深度休眠恢复和升级 EVCC 都会复用原有服务端身份。只有主动点击“重置身份”、更换 DERP 地图,或清除 EVCC/Tailcat 的受保护运行数据后,才会生成新地址;因此可以把现有地址长期保存在已授权客户端,但仍应按敏感信息保管。

连接地址仍应按敏感信息保管。默认公钥白名单是主要访问控制,不要为了省步骤长期允许未列入白名单的客户端。升级到本版本后,旧 frpc 进程和运行文件会被停用、清理,旧 frpc 服务器与映射配置不会迁移到 Tailcat。

动态壁纸导入

服务页非实验区可能按云端适配显示"动态壁纸导入"卡片,位置在"热点增强"上方,用于把 MP4 视频或已经制作好的动态壁纸压缩包加入系统"我的壁纸"列表。卡片里的"制作壁纸包"会显示二维码,方便用手机打开在线制作工具生成更复杂的压缩包。

只有一个 MP4 视频时,直接点击"导入视频",EVCC 会自动生成普通动态壁纸包并导入。如果要制作日夜自动切换或点击互动壁纸,可以点击"制作壁纸包"扫码打开 E245 动态壁纸包制作工具,也可以在浏览器里访问:https://evcc.coauto.cc/static/dynamic-wallpaper-editor/index.html。该工具在本地浏览器打包素材,不上传视频文件;当前仅按 E245 动态壁纸结构制作单个循环视频包、日夜自动切换包和点击互动包,并可从视频自动截取封面图。

支持的压缩包: - 普通视频壁纸:压缩包内包含数字 ID 文件夹,例如 900001/900001.mp4 和 900001/900001.png - 交互视频壁纸:压缩包内包含数字 ID 文件夹,例如 900002/config.xml、900002/0.mp4、900002/900002.mp4、900002/900002.png,以及可选的 900002/900002.zip

操作: 1. 服务页找到"动态壁纸导入" 2. 只有 MP4 视频时,点击"导入视频",选择 .mp4 文件,EVCC 会自动生成封面和普通视频壁纸结构 3. 已有 zip 壁纸包时,点击"导入壁纸包",默认会打开 EVCC 自带的本机文件选择器,可在 Download 等目录选择已制作好的 zip 压缩包,也可以直接填写完整路径,例如 /sdcard/Download/900002.zip 4. 需要制作复杂壁纸包时,点击"制作壁纸包"并用手机扫码生成 zip 5. 导入完成后点击"打开系统壁纸",在系统壁纸列表中预览和设置 6. 如需移除 EVCC 导入的动态壁纸,回到该卡片点击"清理",会删除 EVCC 导入的记录和文件,不影响系统自带壁纸

该入口默认隐藏,仅由云端车型适配 service.show_dynamic_wallpaper_import 显式开放。内置文件选择器不依赖车机系统文件管理器;如需使用系统文件管理器,可在选择器中切换,拉起失败时会回到 EVCC 本机选择。导入视频仅支持 MP4;导入同一数字 ID 会覆盖旧文件;请只导入来源可信、结构完整的壁纸包。若提示压缩包无法解析或 MALFORMED[1],通常是 zip 文件名编码或包结构异常,建议用"制作壁纸包"重新生成,并确认压缩包内包含数字 ID 文件夹以及同名 mp4/png 文件。

系统底栏视觉调试(实验)

服务页实验区的"系统底栏视觉调试"用于临时测试车机底部系统栏的透明和毛玻璃效果。该入口是调试承载位,不属于"原生状态栏注册"功能,也不会管理状态栏插件按钮或信息卡。

该功能有独立总开关,升级后默认关闭。关闭时会收起下方所有测试按钮,并彻底关闭透明/毛玻璃底栏注册、开机自动应用和调试通道。

透明和毛玻璃会按下方"调试细项"组合执行;默认不释放系统底栏占位,避免普通 App 底部出现黑块。

调试按钮: 1. 先打开该卡片右上角总开关 2. 点击"启用调试通道"请求建立 EVCC 到 SystemUI 的调试通道 3. 点击"毛玻璃一次"或"透明一次"执行单次测试 4. 点击"毛玻璃 30s"或"透明 30s"以 500ms 间隔保持效果 30 秒 5. 点击"停止/关闭通道"停止持续刷新并关闭调试通道;需要重新加载 SystemUI 时可点击"重启 SystemUI"

调试细项: - "清除底栏背景":清掉底栏窗口和子 View 背景 - "关闭底栏自绘遮罩":压住底栏自身绘制的覆盖色和禁用态遮罩 - "窗口设为透明格式":把底栏窗口格式改为透明,减少系统合成层阻挡 - "释放底部占位":临时取消系统底栏提供的导航栏占位,让普通页面有机会铺到底部;若 App 界面底部变黑,先关闭此项 - "持续守卫防恢复":在 SystemUI 当前进程内持续压住自动恢复的背景,直到停止调试或重启 SystemUI

开机自动应用: - 勾选"开机自动应用"后,可选择"透明"或"毛玻璃" - 车辆开机、EVCC 进程启动或 SystemUI 重新加载后,调试通道连上会自动应用一次所选效果;切换透明/毛玻璃选项时,如果通道在线会立即覆盖当前效果 - 单次应用后通常会保持到 SystemUI 重启;如果手动重启 SystemUI,保持勾选即可再次自动应用

该入口仅用于开发调试。若提示调试通道未连接,先启用通道并重启 SystemUI,再重试透明或毛玻璃按钮。

领克08 恢复 1.4 音效(实验)

服务页实验区可能按车型适配显示"领克08 恢复 1.4 音效"卡片。卡片内提供"恢复 1.4 音效"和"还原"两个按钮,用于通过 RootService 调用车机功放音频 HIDL 的 setKTVOnOff(1/0)。

该入口默认隐藏,仅由云端车型适配 service.show_audio_ktv_mode 显式开放。修改后可能改变整车音效,必要时需要重置车机才能恢复车辆原始效果。实验区功能不提供技术支持及解答。

4.11 仪表车模颜色(实验)

服务页实验区可能按车型适配显示"仪表车模颜色"卡片,用于部分领克车型仪表侧车模颜色不跟随官方设置的问题。开启后,EVCC 会在开机或深度休眠恢复后自动注入 VHAL 车模颜色热修复,并写入所选颜色。

操作: 1. 服务页实验区找到"仪表车模颜色" 2. 选择需要的车模颜色 3. 确认属性 ID;默认是 557872603(也可填写 0x214075DB),修改后会保存到本机 4. 打开开关并阅读风险提示,确认后会自动执行一次;也可点击"立即应用颜色"手动执行一次

开启或手动应用前会提示:该功能可能会引发车机出现奇怪 BUG,例如自动放歌,空调、语音功能失灵等。如遇问题,请关闭该功能。

该功能需要 RootService 正常连接,并已部署 Frida、打开 Frida 开关。车型不匹配时可通过云端车型适配隐藏该卡片。实验区功能不提供技术支持及解答。

4.12 热点增强

车机原生热点存在一些限制(如客户端数量、带宽、自动关停),该模块通过系统调用突破限制。

操作: 1. 打开"热点增强"开关 2. 系统会自动调整热点相关系统参数(保持已配置的 SSID / 密码不变) 3. 可配合车机设置里的"便携式热点"一起使用

开启后如果热点仍异常,请检查车机本身是否启用了流量卡、APN 设置是否正确。

4.13 引擎声浪模拟

根据油门开度、车速、转速、档位、刹车等参数模拟引擎声音,给电车一点"机械感"。

操作: 1. 服务页打开"引擎声音"开关 2. 点击"载入声音包"选择 ZIP 格式声音包(内含分段采样 + 配置 JSON) 3. 点击"属性绑定"映射车辆属性: - 油门开度属性 - 车速属性 - 转速属性(部分车型无真实转速,用油门 + 车速换算) - 档位属性 - 刹车状态属性 4. 调整音频参数: - 主音量:整体响度 - 低频增益 / 高频增益:音色偏重低沉或高亢 - 怠速音量系数:静止时的背景音大小 - 动态范围:油门变化时的音量波动幅度 5. 测试:"挂 D 档 + 踩油门"听响应是否跟手

声音包来源:社区共享或官方声音包商店下载(飞牛分享链接见第十四章)。

4.14 BLE 广播台

自定义蓝牙 BLE 广播发送与调试,适合做"车辆状态向外广播"或联动 IoT 设备。

功能: - 创建和发送自定义 BLE 广播包(自定义厂商 ID、UUID、数据载荷、广播时长) - 支持 BLE、UDP、HTTP 三种传输方式(同一份数据可同时走多通道) - 动态载荷可引用自动化变量,车辆状态变化时广播自动更新 - 调试控制台查看实时收发日志

发送一条广播的步骤: 1. 服务页打开"BLE 广播台" 2. 点击"+ 新建广播任务" 3. 填写: - 名称 - 厂商 ID(2 字节 hex,如 05 A7) - 载荷数据(hex 字符串,或用公式 {$var} 引用变量动态生成) - 广播时长(秒,0 为持续广播) - 传输通道:勾选 BLE / UDP / HTTP,对应通道再填目标地址 4. 点击"发送"立即发射,或在自动化中用"BLE 广播"动作定时触发

广播内容在空中传播,请不要放置隐私信息(位置、账号、密钥)。

4.15 AVM 全景摄像头

显示车辆 360 度全景摄像头画面。

功能: - 全景拼接视图(鸟瞰全车) - 前/后/左/右单独视图切换 - 悬浮窗模式(全景可作为小窗常驻在主屏)

操作: 1. 服务页打开"AVM 全景"开关 2. 默认进入全景拼接视图 3. 点击视图下方的切换按钮选择单独方向 4. 点击"悬浮模式"将画面浮动到任意位置(可拖动、可缩放) 5. 再次点击关闭悬浮

前进 / 后退 / 左右转向时,部分车型摄像头会被系统强制征用,此时 AVM 画面可能闪断。

AVM 增强

服务页原“AVM 限速解除”卡片现名为“AVM 增强”。云端车型适配分别控制“显示 AVM 限速解除模块”和“显示 AVM 驻车取图开关”;驻车取图入口默认显示(云端可关闭),限速解除保留原配置。任一开放时显示卡片,只显示已开放的功能。显示入口不会自动打开车辆取图开关。

  • 限速解除:沿用原有车型方案、限速阈值、解除及恢复逻辑。这部分仍可能修改系统配置,需要 Root/remount,与驻车取图的运行时操作无关。
  • 驻车取图开关:连接具有 root 读取权限的运行服务后,先点击“检测”。EVCC 校验已适配的原厂 APK / 原生库版本,读取原生 camera_switch 的实际值,而不是读取历史日志、保存的偏好或上次命令结果。未适配固件或读取失败时不开放开关命令。
  • 检测成功后可点击“打开”或“关闭”,阅读作用和风险弹窗并确认。检测仅在当前页面、当前用户和原生进程内有效,有效期 60 秒,最多允许一次操作;执行前重新核对状态,执行后读回确认。再次操作必须重新检测;离开页面、状态变化或超时后原检测失效。失败或断连不会自动重试命令。

驻车取图仅单次设置运行状态,不保存目标状态,不开机重施加、不定时保持、不主动关闭整个 AVM、不修改 APK、服务定义、SELinux 或系统分区。打开可能增加后台图像处理与能耗;关闭可能影响远程拍照等原厂功能,并可能在 AVM 已退出且无泊车需求时减少图像处理和渲染。它不是摄像头总电源开关,也不能据此判断或保证数据停止上报。

原厂在休眠唤醒、原生服务重连、驻车取图属性更新,以及收到拍照请求时可能重新下发原厂值,因此检测与读回只代表采样当时状态,不代表持续保持。已测 E245 固件的正常 AVM 入口能恢复工作,但真实倒挡恢复尚未验证,不应作为行车安全保证;请停车操作,使用前确认 AVM 正常,需要时重新检测并打开。当前检测只支持已校验的 E245 固件指纹,其他版本须另行适配。

4.16 HUD 直投

直接将 Activity 投射到车辆 HUD 硬件显示器。

硬件要求: - 车辆配备 HUD 抬头显示器 - 车机系统包含 Flyme CastService

操作: 1. 服务页打开"HUD 直投"开关 2. 选择目标 Activity(和 HUD 小窗投屏类似) 3. 软件调用 Flyme CastService 将 Activity 直接投射到 HUD 硬件 4. 点击"停止"结束投射

与 4.2 HUD 小窗投屏的区别:HUD 直投走硬件通道,画质更好但可选 Activity 受限;小窗投屏是"任意 Activity 投到悬浮窗",再由用户自行对齐到 HUD。

4.17 异屏同显

将副屏(如乘客屏)的内容镜像到主屏悬浮窗,方便主驾观察副屏状态。

操作: 1. 服务页打开"异屏同显"开关 2. 软件自动检测已连接的副屏列表 3. 选择要镜像的显示器 ID 4. 主屏出现浮动窗口显示副屏内容,可拖拽、缩放、隐藏

典型用途: - 乘客在副屏看视频,主驾通过小窗余光确认没出问题 - 副屏正在导航时,主屏也能同步看

4.18 系统服务探索(API 调用)

高级诊断工具,用于调用 Android 系统服务的 Binder 接口。

启用:设置页 → "调试模式" → 勾选"API 调用"

使用: - 查询服务:输入服务名(如 activity、window、car_service),列出其全部 Binder 方法 - 列出所有服务:看系统里注册了哪些 Binder 服务 - 方法调用:选中某个方法后,按参数提示填写值 → 点击"调用"

⚠️ 误调用可能导致系统或应用崩溃,请仅在清楚方法含义时使用。

4.19 日志面板

服务页右侧面板实时显示运行日志:

颜色 级别 含义
白 INFO 正常状态/事件
橙 WARN 可恢复问题 / 降级路径
红 ERROR 不可恢复错误
灰 DEBUG 调试细节(需开启调试模式)

操作: - 自动滚动:默认开启,新日志到来时自动滚到底部 - 手动滚动:向上翻页时暂停自动滚动,回到底部重新启用 - 清空:点击右上角扫帚图标 - 复制:长按某条日志可复制单条到剪贴板 - 级别过滤:点击级别图标只显示对应级别

4.20 网络副屏(实验)

把车速、挡位、电量、胎压、音乐等车辆数据渲染成画面,通过车机 WiFi 推送到外接小屏(例如装了配套固件的 ESP32 小屏)实时显示。

该入口默认隐藏,仅由云端车型适配 service.show_network_screen 显式开放。云端关闭后,卡片会隐藏,网络副屏总开关会自动关闭,并停止正在发送的画面。

硬件要求: - 一块运行配套接收固件的网络小屏(默认按 320x820 竖屏设计) - 小屏与车机在同一网络(常见做法:小屏连接车机热点)

开启步骤: 1. 服务页实验区打开"网络副屏"总开关(总开关只是允许运行,关闭会立即停止发送) 2. 点击"打开配置"进入配置页 3. 连接区点击"扫描设备"自动发现小屏并回填 IP、端口和屏幕尺寸;也可手动填写 4. 选择主题:简约行车(大车速 + 挡位 + 电量环 + 续航/功率)或霓虹信息塔(时间 + 车速 + 电量/功率条 + 胎压 + 音乐) 5. 点击"开始发送",小屏几秒内出现画面

调试 / 背景: - 模拟数据:打开后不读取真实车辆属性,直接生成动态车速、挡位、电量、胎压和音乐数据,方便无车或离线调试主题、背景和小屏接收效果 - 图片背景:选择本地图片作为画面底图,EVCC 会复制到私有目录保存 - 视频背景:选择本地视频作为动态底图,发送时按时间循环抽帧 - 测试视频:使用 EVCC 内置的测试背景视频,可快速确认视频背景和文字叠加效果 - 清除背景:恢复主题默认纯色背景

横竖屏:宽高始终填屏幕的物理分辨率(如 320x820)。小屏横着安装时把"画面旋转"选为 90° 或 270°(两个方向对应左横装/右横装,选错就换另一个),两款主题都会自动切换为横版布局;屏幕倒装选 180°。

延迟观察:主题顶部时间默认带毫秒显示,可对照车机时间直观看出画面延迟;不需要毫秒时,在数据项里把 system.time 的表达式改为 HH:mm 即可。

数据项:配置页会列出当前主题需要的数据项和取值表达式(如 $prop(属性ID)),默认按常见车型预置;数值不对时可参考第九章公式与变量系统按自己车型修改,清空输入框恢复默认。音乐类数据来自音乐桥接,无需配置。

发送策略: - 帧率上限:默认 10,数据不变化时不会重复满帧发送 - 画质:JPEG 压缩质量,默认 80;小屏解码慢或花屏时可调低 - 分片间隔:每个网络分片之间的间隔毫秒数,默认 0.15;小屏丢包花屏时可略调大

状态说明:卡片和配置页显示"未配置 / 已停止 / 发送中";配置页运行区还会显示最近帧大小、实际帧率、累计帧数、错误计数和最后错误,用于排查网络问题。

画面静止时软件会每隔几秒重发一帧,小屏断电重启或短暂丢包后会自动恢复显示,无需手动重启发送。

修改配置后需重新点击"开始发送"才会生效。

4.21 MIBO 联动与车机仪表

MIBO 联动用于连接运行配套固件的外接板,可转发 BLE 广播,并通过“BLE 桥接”连接 HID 或自定义 GATT 设备,同时承载车机仪表、宠物和 TF 媒体。入口位于“服务 → MIBO 联动”常规区域;开启联动总开关后,主控制台会在“EVCC mini”右侧显示“MIBO”快捷按钮,点击即可进入联动详细设置。EVCC mini 已安装或 MIBO 已连接时,对应入口会使用与当前已选控制台相同的浅色底纹,日夜主题会自动适配。没有兼容硬件或配套固件时无需开启。

Main 和 Recovery 都支持两种连接方向,新安装默认由 MIBO 主动连接 EVCC。两套系统共用连接方向、同一套六特征服务和同一个连接管理器;两种方向的仪表、宠物、媒体和资源功能相同,只交换连接发起方及 GATT 读写/通知方向。三项通知订阅完成后还必须通过运行系统、双方方向和会话号握手,才会显示完整就绪。

服务页的 MIBO 卡片不会直接显示 MAC,只保留一个无文字开关和两个常用按钮:

  • 开关:启用或停用整个 MIBO 联动;关闭后会断开连接并停止自动重连,重新开启后按保存状态恢复搜索或连接
  • 连接 / 重启 GATT 服务:EVCC 主动连接时显示“连接”;MIBO 主动连接时显示“重启 GATT 服务”。MIBO 主动不要求地址或配对,启用后会直接开放服务等待 MIBO 接入
  • 详细设置:打开控制台、数据、页面和 Recovery 四个二级页面;各页按需加载,首次打开不再预先构建全部配置

详细设置顶部的二级菜单只能点击切换,不支持左右滑动;切换时直接显示目标页,不播放滑动动画。这样既能避免车机上误触换页,也能缩短“详细设置”窗口的首次打开时间。

新版 EVCC 只支持配套的 v4 MIBO Main/Recovery 固件,不提供旧服务或旧协议回退。链路已就绪时,EVCC 通过当前 GATT 连接发送带编号的方向请求,等待 MIBO 保存并确认后才切换自身;没有连接时不会发送方向广播或隐藏纠错,只在用户确认后修改 EVCC,并提示到 MIBO Main/Recovery 手动选择相同方向。

EVCC 本地的仪表、数据、页面偏好、媒体规则、宠物选择与气泡、Recovery 网络配置按硬件类型保存,不再按 BLE MAC 分开。更换同型号设备或其蓝牙地址后会继续使用同一套配置;BOX0 与原 MIBO/Waveshare 等不同屏幕类型各自保存,避免不兼容的页面与资源互相套用。MIBO 断联时仍显示最近连接板型的本地配置,不会切换到空白 default。真实连接、板端目录缓存和同步修订仍按物理设备识别,板载菜单产生的新修改也继续按下述双向同步规则覆盖 EVCC 本地值。

4.21.1 控制台

“控制台”把连接、基础控制、米德宝联动、音乐联动、仪表行为和诊断合并到一个页面。宽横屏左侧为可滚动控制区,右侧固定显示设备状态与板载菜单遥控;竖屏把设备状态也作为普通卡片纳入固定双列排列,不再单独占用顶部整行。MIBO 联动的总开关只保留在服务页卡片中,详细设置内不再出现第二个“启动 MIBO 联动”开关。

  1. 连接方向使用“EVCC 主动连接”和“MIBO 主动连接”两个互斥按钮,当前方向会高亮;新安装默认选择“MIBO 主动连接”。切换方向不重建页面,输入内容和滚动位置会保留。Main 与 Recovery 共用一个方向设置和同一套蓝牙服务。链路已完整就绪时,EVCC 会等待 MIBO 确认保存方向后才切换本机角色;链路未连接时会明确提示只修改 EVCC,并要求在 MIBO Main 或 Recovery 设置中手动选择相同方向。
  2. “MIBO 蓝牙 MAC”下方的三个按钮各自独立:
  3. EVCC 主动连接:地址可编辑;“保存地址”只保存输入,不中断连接;“重新扫描”会扫描 Main 与 Recovery 共用的服务并在多设备时显示名称、MAC、信号强度;“立即连接”使用输入框地址连接但不自动保存。自动扫描的新地址只有完成握手后才保存
  4. MIBO 主动连接:没有配对、设备候选或 MAC 白名单;即使没有地址,EVCC 也会直接开放服务,由第一台完成握手的 MIBO 连接。地址仅显示最近一次完整连接的设备,不能编辑,也不参与准入;页面隐藏保存和重新扫描,只保留“重启 GATT 服务”
  5. 重启 GATT 服务:立即断开当前会话,生成新的服务会话号并恢复开放广播;MIBO 发现会话号变化后会替换失效旧链路
  6. 延时连接:默认关闭;开启后可填写 1–300 秒。车机开机、从深度休眠恢复或系统蓝牙重新开启时,EVCC 会在倒计时结束后才创建 GATT 服务或主动搜索/连接 MIBO,两个连接方向都生效,可先把蓝牙资源留给手机互联
  7. 跨端互联避让:默认关闭,只作用于“MIBO 主动连接”。EVCC 检测到 Flyme Link/CarLink 界面进入前台或手机经典/双模蓝牙链路开始建立时,会暂时断开并停止 MIBO GATT 服务约 30 秒,随后自动恢复开放广播;“EVCC 主动连接”不受此开关影响
  8. 设备状态会显示 Main GATT、固件/协议、MTU、TF、机器人、当前页面、屏幕亮度和 Recovery 网络
  9. “机器人 BLE MAC”是唯一的米德宝机器人地址:点击“自动搜索”后由 MIBO 扫描,只有一个候选时会自动选中并保存;有多个候选时按 MIBO 屏幕提示选择。也可手动填写后“保存并连接”,无需选择公共或随机地址。该地址由 EVCC 保存;MIBO 恢复出厂或重刷后,下一次连接会自动恢复,不会用板端空值覆盖 EVCC
  10. 板载遥控把上、下、左、右和确认排成遥控器方向键:确认位于中央,四个方向键位于对应方向;“返回”可结束编辑或逐级退回,“打开板载菜单”和“保存并退出菜单”使用上方独立按钮。菜单未打开时,左右键与 MIBO 实体按键一致,可切换上一或下一主界面;菜单打开后上下键可连续跨列、跨页选择全部项目,左右键按画面方向移动,确认进入可编辑项后再用左右键调整数值
  11. MIBO 本机菜单中的“开机默认界面”可选择任一可用页面,也可选“未设置”;本机修改会保存到板端,EVCC 下次连接先回读该值,不会用旧缓存覆盖
  12. “基础配置与控制”可设置工作模式、屏幕开关、临时/持久亮度;其后的“BLE 桥接”提供独立启用开关和互斥的 HID、自定义 GATT、旋钮增强三种模式。HID 模式保留原配对、重连与 Report 转发;自定义 GATT 可按 MAC 或设备名称精确匹配,并设置 Service、RX、可选 TX UUID 与厂商 ID;旋钮增强使用固定的 StartX 设备协议,只等待 EVCC 根据当前活动旋钮发起有限时连接
  13. “米德宝联动”集中设置机器人 MAC、自动搜索、连接/重连和“测试”;不再提供清除按钮。BLE 发送时长和发送间隔位于同一行,影响广播发送及连续动作排队;GATT 直送不使用这两个参数
  14. 紧随米德宝联动的“音乐联动”是所有页面生效的全局设置,可选择“不联动 / 歌词 / TF 媒体音乐 / MIBO 宠物音乐”。选择 TF 或宠物时还可指定具体媒体套装或宠物文件,也可跟随对应页面的当前选择;音乐停止后可设置 3–30 秒退出延迟,全局联动结束时恢复进入前的页面
  15. 音乐联动“测试”与“保存”并排。弹窗可输入 1–999 BPM,或直接选择常用 BPM;“播放”会持续执行当前保存的全局目标,只有点击“停止”才结束,不会自动超时
  16. “设备状态与实时诊断”卡同时显示板端快照、自动重连、过滤规则、BLE 桥接与广播转发、通知失败和最近错误,“复制诊断”会复制卡片中的完整信息
  17. “手动切换后保持方式”有三档:“永久保持”会保存最后一次通过 MIBO 拨杆或板载遥控选中的页面,MIBO 重启后仍恢复该页;“重启后恢复默认”只在当前启动期间保持手动页,重启后回到所设开机默认页;“保持指定时间后回到默认页面”才会开放秒数输入,倒计时结束后回默认页。“立即显示”和新的页面自动化属于主动页面命令,会接管当前页面

BLE 桥接配置:选择 HID 模式时,目标、UUID、写入方式与厂商 ID 等仅供 GATT 使用的设置会隐藏,但已保存内容不会被清除,切回自定义 GATT 模式后会自动恢复。自定义 GATT 模式下 Service 与 RX(MIBO 向目标设备写入)必填,TX 可选;填写 TX 后可按需把通知交给“MIBO GATT 信号”触发器。写入方式可选“自动(优先有响应)/ 有响应 / 无响应”:自动档在目标支持时优先使用 Write With Response,否则使用 Write Without Response;强制档不受目标特征支持时会报错,不会静默换档。无响应适合较高频率的灯光更新,但不提供逐包确认。UUID 可输入标准 16、32 或 128 位格式,保存时会统一规范化。MAC 模式仍会先扫描目标以取得正确地址类型;名称采用精确匹配,发现多个同名设备时会显示候选列表,必须手动选择,不会随机连接。厂商 ID 默认 0x2819,0x2818 固定留给米德宝,不能用于 BLE 中转。

“旋钮增强”不填写目标和 UUID,也不会开机常驻连接。MIBO 先按自动化过滤器继续转发 StartX 广播;某台已配对旋钮出现有效操作,且该设备已开启“GATT 连接增强”时,EVCC 会先立即执行广播事件。按键操作会立即请求连接;连续旋转时继续使用广播,并在最近一次有效旋转后安静约 450 ms 再把最近活动旋钮的 MAC 与地址类型交给 MIBO。等待期间的新旋转会重新计时;一旦开始连接,后续广播仍会立即触发且不会取消或重建当前连接。MIBO 最多连接一台活动旋钮,新旋钮会替换旧旋钮;通知链路就绪后由 GATT 接管后续操作,默认约 60 秒后释放,断开后下一次广播仍会正常触发并可重新建链。若板端实际模式尚未同步为旋钮增强,广播仍由 MIBO 增强转发,而 StartX 的短时 GATT 改由 EVCC 本机建立。完整 BLE 桥接配置由 EVCC 保存并通过配置代数安全写入;板端恢复出厂、重刷或读回不同值时,EVCC 会在重连后恢复自己保存的模式和参数。

“保存、搜索设备、连接、重连、断开、清除”用于管理 HID 或自定义 GATT 目标;StartX 模式只需保存或断开,搜索、手动连接、重连和清除会隐藏。状态区会显示目标、搜索/连接阶段、RSSI、最近错误,以及发送、接收、重复和丢弃计数。目标断开、切换桥接模式或修改配置时会清空尚未发送的数据,重连后不会补发旧自动化动作。双功能模式的 MIBO 系统状态顶部固定按“EVCC、米德宝、BLE 桥接、双链路队列”排列;双链路队列仍只表示机器人命令 FIFO 和 EVCC 事件 FIFO,事件队列现为 64 项并保留 ACK/控制空间,无需用户配置。

EVCC 与 MIBO 仍会双向同步能在板端菜单直接修改的共有设置,包括仪表开关、手动停留、调试 HUD、音乐主题、启用页面与默认页、TF 媒体套装和当前宠物。机器人 BLE MAC 与完整 BLE 桥接参数不能在板端菜单完整编辑,因此固定以 EVCC 保存值为准:首次升级可从已有板端配置迁移一次,之后板端清空、恢复出厂或读回不同值都不会覆盖 EVCC,重连后会自动恢复。双方共有设置只有一侧实际设置过时采用该侧;板端重新刷机后仍是默认值时,不会覆盖 EVCC 已保存的选择;板端菜单有新修改而 EVCC 没有待同步修改时,则采用板端。若双方离线期间都修改了同一共有项,因无法可靠比较两台设备的本地时间,重连时固定采用板端并保留冲突记录;双方值相同时不会重复写入板端存储。

MIBO 本机“诊断测试”菜单依次放置工厂测试、机器人测试、增强测试,再放 G 值灵敏度、G 值校准、性能诊断和 DEBUG 模式(当前工作模式不支持的测试不会显示)。“DEBUG 模式”默认关闭;开启时会连续显示两次确认,明确提示不建议日常开启,以及可能影响流畅度和 TF 卡寿命。确认开启后,板端会把当前运行日志分批保存到 TF 卡,并低频增量同步给 EVCC;选择本机菜单“保存并退出”后才会持久开启,选择“放弃修改”则只在当前运行生效。排查完成后应及时关闭。

控制台提供四种板端工作模式,并会在模式切换成功后立即隐藏不适用的配置:

  • 米德宝:开启机器人桥接,关闭 BLE 广播增强与 BLE 桥接;EVCC GATT 连接仍然保留,连接就绪时米德宝扩展动作可直接通过 GATT 发送
  • 蓝牙增强:开启 BLE 广播转发,可按需开启 BLE 桥接并选择 HID、自定义 GATT 或旋钮增强,不连接米德宝机器人
  • 双功能:同时开启机器人桥接、BLE 广播增强和可选 BLE 桥接
  • 基础模式:只保留 EVCC GATT、仪表、宠物、媒体与本机功能,关闭机器人、BLE 广播增强、BLE 桥接和普通观察扫描;MIBO 主动连接时仍会识别 EVCC 的统一服务广播

米德宝模式下,MIBO 不会把扫描到的 BLE 广播作为增强事件转发给 EVCC;这不影响 EVCC 已建立的 GATT 控制连接。控制台中的机器人配置只在米德宝或双功能模式显示,广播增强与 BLE 桥接配置只在蓝牙增强或双功能模式显示。

Main GATT 连接后只同步固件内置页面信息和配置,不会抓取屏幕画面或遍历传输整套 TF 资源。资源文件本身仍通过 Recovery Wi-Fi 管理;页面与资源列表会保留最后一次有效缓存供离线查看。

控制选路: - GATT 已就绪时,EVCC 只发送 GATT 指令;即使随后写入失败,也不会再补发广播,避免 MIBO 重复执行同一操作 - GATT 未连接时,屏幕开关/亮度、机器人重连、上一页/下一页、系统/默认/宠物场景、TF 媒体、宠物互动和宠物背景可通过绑定到当前 MIBO MAC 的定向 BLE 广播发送 - 广播只调用 MIBO 上已经存在的页面和 TF 资源,不会同步目录或文件;新 TF 媒体、宠物页或背景首次使用前仍需先连接一次完成同步,或先部署到 TF 卡 - 运行模式、机器人/HID 配对、HID 设置、板载菜单、仪表配置/同步、诊断、恢复模式等仍只支持 GATT;离线点击时会提示先完成连接 - 自动化中的“切换宠物背景”填写 TF 宠物资源里的背景序号;“宠物背景自动轮换”可恢复板端自动选择

4.21.2 数据

“数据”页统一管理固件内置页面需要的车辆数据。顶部“MIBO 数据中心”是独立的全宽添加、导入、导出和恢复默认工具区,下面的数据卡使用统一尺寸和响应式网格。每张卡会显示内部标识、中文名称、取值公式、单位、小数位、映射、页面/组件绑定、当前原值和显示值。点击卡片后,编辑窗口会直接在可用画面中央出现;窗口会避开系统栏,长表单和键盘弹出时可在内部滚动,不会移出屏幕。

MIBO 数据默认值按车型来自云端“车型配置”中的“MIBO 数据默认配置”,后台可直接粘贴从 EVCC 导出的 JSON 或压缩字段。设备首次建立数据配置时优先采用当前车型默认值;已有手动修改或导入的配置不会被云端自动覆盖。点击“恢复默认”会用当前车型默认值替换整套本机数据配置并立即刷新联动;车型未配置或云端内容无效时安全回到 EVCC 内置默认值。

  • 固件页面目录声明的数据会自动加入;未修改且已经没有任何页面使用的自动项会自动消失
  • 手动添加、导入或修改过任一字段的数据会永久保留;没有页面使用时标为“未绑定”
  • 绑定由 MIBO 页面目录计算,不能手动修改
  • 公式语法与第九章一致;属性引用必须写成 $prop(属性ID[, Area ID])[下标],拼写或参数格式错误时会在保存前提示。修改公式后只重建当前数据订阅,不会重新同步整套页面目录
  • 内置档位直接把车辆原值映射为最终显示文字,例如 4=P、2=R、1=N、8=D;数据中心预览和 MIBO 画面显示相同内容,不需要配置内部档位代码
  • 打开数据页时只对当前可见数据增加 1 Hz 预览,离开后停止额外计算;在页面设置里更换数据后,数据中心会在首次切入时立即刷新。内置页面即使在板端目录中省略静态数据声明,也会按当前页面配置补齐,目录同步不会再删掉档位等已选数据

映射每行填写一条,使用第一个 = 分隔,例如:

0=P
1=R
2=N
3=D
*=未知
  • 没有 * 时,未命中的原值保持原样
  • *= 表示未命中的值显示为空
  • 重复键、多个 * 或缺少 = 时不能保存,提示中会指出错误行

点击“导出”可复制 evcc.mibo.data/1 JSON、压缩字段或显示二维码;导入时粘贴 JSON/压缩字段。相同标识会先展示字段差异,确认后整批提交;任一项无效时不会写入一半配置。“恢复默认”位于导出按钮右侧,执行前会再次确认。

“MIBO 自动亮度”是固定特殊卡,不能删除。它单独设置车辆属性 ID、Area ID、输入范围和屏幕输出范围,不使用普通映射。板载菜单打开时暂停联动,菜单关闭或 MIBO 重连后会补发最新亮度。

4.21.3 页面

“页面”页以当前 MIBO 固件发布的内置页面目录为准。连接时动态读取页面,离线时显示最后一次同步缓存并标为“离线”。

  • 页面在横屏和竖屏都采用左右各约一半的两个独立滚动栏:左侧选择页面,并可立即显示、启用/停用、设为默认或调整顺序;横屏左栏每行显示两个页面卡,右栏固定为所选页面的全部设置,不再逐张打开配置窗口。“我的页面”说明只保留为顶部紧凑提示,不会再占据半栏
  • 每个页面卡进入详细配置的按钮统一显示为“设置”,不再重复显示“系统状态”“极简仪表”等页面名称
  • 信息仪表的数据名称默认跟随所选数据自动更新;已经手动填写的自定义名称继续保留
  • 联动页始终跟随 EVCC“界面缩放”设置;语言切换、横竖屏变化或 Activity 重建后会重新应用相同比例,不应再出现文字偶发变小
  • “系统状态”右侧管理全局字体回退顺序;每个页面都可单独选择字体
  • “MIBO 宠物”右侧显示喂养、清洁、玩耍、招呼和背景操作,并从板端发现的宠物文件中单独选择一个;不再提供宠物日常播放编排、多文件轮播或轮换时间。还可开启“本页音乐联动”:仅在当前已是宠物页时优先于全局设置;音乐已经播放时再手动进入宠物页也会立即执行音乐动作。宠物文件没有音乐动作时不触发,也不会退回全局设置
  • 配套新版 Main 会在“MIBO 宠物”设置中显示“宠物文字气泡”。进入后直接点击像素、漫画或轻透预览卡选择样式,并选择安静、标准或活跃频率;可分别开启歌词、EVCC 本地手动操作、自动化 Toast、EVCC 前后台、EVCC 与 MIBO 连接、车辆数据源连接、充电开始/结束和低电量。总开关与来源默认按推荐组合初始化,但升级后总开关保持关闭。手动操作只在按钮、开关、选项最终提交或滑杆松手后提示,持续滑动、循环属性和长按连发不会产生气泡。音乐正在播放时只显示当前歌词,普通提示会直接丢弃且停止后不补播;不在宠物页时不会自动切页或缓存旧提示。气泡设置只在点击保存后写入当前硬件类型的 EVCC 配置,MIBO 重连时自动重放,不写板端 NVS;像素样式读取 TF 卡像素字体,其他样式读取当前 TF 系统字体,字体缺失时只停用气泡并给出一次中文提醒。EVCC 与 Main 需要同步升级到配套版本
  • 所有宠物包共用一份等级、XP、亲密度、养护值、奖励冷却和累计互动状态;切换宠物不会切换存档。EVCC 是成长主存储,MIBO 的 NVS 只保存低频灾备检查点。更换 MIBO、清空板端 NVS 或在 MIBO 恢复出厂后,只要原 EVCC 配置仍在,重新连接即可恢复完整状态;如果还要清除 EVCC 应用数据,请先执行“备份全部配置”
  • “音乐歌词”右侧只保留歌词页面本身的显示设置,可选择“经典歌词(默认)”“涟漪玻璃”“LED 灯牌”或“暗角玻璃”主题并调整背景动效强度;音乐联动目标和退出延迟统一在控制台设置
  • “TF 媒体”右侧可选择媒体套装并设置日常顺序/随机播放、随机内容插入概率或间隔;文件不再直接铺在轮播规则下面。“查看媒体文件详情”会打开大弹窗,按启动、日常、随机、场景、音乐等分类整齐显示标签;点击表情组名称会在 MIBO 上播放整组,点击具体文件标签会直接播放该文件
  • TF 媒体还可开启“本页音乐联动”。它仅在当前已是 TF 媒体页时优先;音乐已经播放时再手动进入 TF 页也会立即开始音乐媒体,不重复执行进入页面的启动动作
  • TF/宠物页未开启本页联动时使用控制台全局设置。全局设置可从任意页面切入歌词、TF 媒体音乐或宠物音乐,结束后只在联动仍持有该页面时恢复原页面;用户中途手动切页后不会抢回
  • 页面随固件版本增加或移除;EVCC 只保留当前固件认识的稳定页面 ID,旧外部页面配置会在迁移时清除
  • “开机默认界面”用于没有跨重启手动页时的启动兜底:有效默认页会直接成为首个可见画面;未设置、被停用或默认 ID 已不属于当前固件时显示“系统状态”。控制台若选择“永久保持”,最后一次手动页会跨重启恢复并优先于默认页;选择“重启后恢复默认”或定时模式时,重启仍以开机默认页为准
  • EVCC 连接时会读取 MIBO 当前默认页面,因此既可在这里点击“设为默认”或“取消默认”,也可直接在 MIBO 本机菜单修改
  • 页面卡不显示由 MIBO 抓取的静帧预览,连接和切页期间也不会通过 GATT 传输屏幕帧
  • MIBO 页面全部编译进固件,不支持从 TF 导入、同步或删除页面;电脑端开发预览器只存在于 MIBO 源码仓库,不进入 EVCC APK

4.21.4 Recovery

“Recovery”是一级页面,用于进入恢复模式、网络配置、Wi-Fi/AP 模式、固件下载与刷写、TF 文件管理、遥控板载 Recovery 菜单和返回 Main。横屏时左侧显示恢复模式连接,右侧依次显示固件操作与 Recovery 菜单遥控;竖屏时按连接、遥控、固件操作的顺序纵向排列。EVCC 不提供远程恢复出厂按钮,恢复出厂只能在 MIBO 本机 Recovery 菜单操作。MIBO 壁纸/页面制作器已经移除。

  • 可通知 Main 进入 Recovery;如果 MIBO 已在恢复模式,也可以直接连接。主固件连续启动失败时会自动进入 Recovery
  • Main 与 Recovery 使用同一蓝牙地址、同一个连接方向设置和完全相同的服务;新安装默认由 MIBO 主动连接 EVCC。Recovery 页与控制台观察同一连接状态,在任一处修改都会立即同步另一处;当前通道就绪时切换会等待确认,离线时需在 MIBO 本机手动同步
  • EVCC 通过握手识别当前运行的是 Main 还是 Recovery,并始终由同一个连接管理器维护会话;进入或离开 Recovery 不再切换到第二套蓝牙客户端。MIBO 主动连接时,车机冻结后台调度会保留原会话;强制结束并重开 EVCC 后会话号变化,Main 或 Recovery 会替换失效链路。两套系统使用同一心跳;Recovery 检测到心跳消失后会改回“未连接”并自动重新发现 EVCC,不提供旧服务或旧协议回退
  • Wi-Fi 名称、Wi-Fi 密码、AP 热点密码和 Recovery 默认网络模式按当前硬件类型保存;Main GATT、Recovery BLE 或 Recovery Web 任一连接可用时都可修改
  • 默认可选择“Wi-Fi 模式”或“AP 热点模式”。MIBO 的 Wi-Fi 模式仅支持 2.4 GHz,不支持 5 GHz 或 6 GHz,EVCC 会在选择 Wi-Fi 模式时显示提醒。Wi-Fi 缺少凭据或连接失败时仍保持 Wi-Fi 模式并继续等待/重试,不会自动回退 AP;需要热点时必须从 MIBO 本机或 EVCC 明确选择 AP。页面会显示 Wi-Fi 连接、RSSI、重试次数,或 AP 已连接设备数
  • 蓝牙负责控制和取得当前网络入口,不传输固件、媒体、字体包等大文件;大文件仍通过 Wi-Fi。当前测试期 GATT 不建立系统配对或链路加密,AP 模式依赖热点密码,STA 模式只应连接可信局域网
  • 系统若提示 MIBO 热点“无法访问互联网”,点击“登录网络/打开登录页”即可进入 Recovery Web;也可手动打开 http://192.168.4.1/。新版 Recovery Web/API 不再要求 token;连接 AP 的设备或 STA 同局域网设备均可访问,因此 STA 只应连接可信网络
  • MIBO 屏幕短按可打开中文 Recovery 菜单;“连接与网络”内固定提供 Wi-Fi、AP、EVCC 主动、MIBO 主动和返回,另有检测并刷写固件、恢复出厂设置、启动主系统等入口。Recovery 背光固定为 100%,不提供亮度设置。恢复出厂只能在这个 MIBO 本机菜单执行;EVCC Recovery 页面在两种方向下只提供打开、关闭、上下左右和确认遥控器,未就绪或指令超时会明确提示
  • 只有 Recovery 已连接且 Wi-Fi 文件会话有效时,“文件”页才会出现“MIBO TF”快捷按钮,固定进入 /mibo;Recovery 页“固件下载与刷写”区域的“管理 TF 文件”会直接切到文件页并打开该目录。仅开启 MIBO 联动不会显示快捷按钮,也不能在文件会话未就绪时跳转
  • 文件管理支持浏览、预览、新建目录、上传、下载、复制、移动、重命名和删除;不能删除 /mibo 根目录,也不能把目录移动到自身子目录
  • MIBO 本机 Recovery 菜单中的“恢复设置与配对”会清除 Main/Recovery 的设置和 BLE 配对;“彻底恢复(含 TF /mibo)”还会删除并重建受管的 /mibo 目录,但不会格式化整张 TF 卡,不会删除卡根目录的“资料库”,也不会擦除 Bootloader、分区表、Main 或 Recovery 固件

4.21.5 页面内资源与联动动作

独立“资源管理”页面已经移除。宠物和 TF 媒体的选择、规则与试听都放回“页面”中对应页面的设置;上传、移动、替换或删除实体文件仍通过 Recovery 文件管理完成。Main GATT 只同步资源目录与稳定 ID,不会抓取静帧或传输整套媒体文件。

  • MIBO 宠物:/mibo/资源/宠物 可放多个 .mibo-pet,文件名可使用中文;在“页面 → MIBO 宠物”中从中选择一个当前宠物文件
  • TF 媒体:/mibo/资源/媒体 下每个一级文件夹是一套可独立切换的媒体;套装内由 启动、日常、随机、场景、音乐 五个中文文件夹分类。启动 每次进入 TF 媒体页随机执行一组,日常 参与普通轮播,随机 按概率或间隔插入,场景 只供手动或自动化触发,音乐 跟随 EVCC 播放状态。MIBO 的 TF 媒体页长按 BOOT 3 秒,或在“页面 → TF 媒体”中选择“媒体套装”,即可切换当前套装;旧卡的扁平目录和 startup/daily/random/scene/music 仍可读取
  • 字体与页面通用资源:全局字体回退顺序在“页面 → 系统状态”设置,页面单独字体在对应页面设置;实体文件维护统一进入 Recovery

在控制台、自动化或悬浮窗中编辑 MIBO 联动动作时,动作类型会按“页面与导航、宠物动作、TF 媒体、设备控制”直接显示,不再使用下拉菜单。选择需要参数的动作后,会打开新的选择弹窗;页面、宠物状态等使用分类标签选择,数值使用独立输入弹窗。可用的设备控制包括开启或关闭 MIBO 联动总开关、屏幕开关、临时屏幕亮度、重新连接机器人和重新连接 HID,宠物动作还包括“庆祝自动化完成”。关闭总开关会停止 MIBO 连接扫描、GATT 服务广播和重连,并断开当前 GATT 会话;若当前由 MIBO 主动连接,还会关闭 EVCC 侧 GATT 服务。再次开启后会按已保存的连接方向和设备配置重新启动。

TF 动作统一使用“TF 媒体启动、TF 媒体结束、TF 媒体固定循环”,新规则不再提供旧版“播放 TF 媒体”。选择 TF 媒体时会打开较大的二级弹窗:上方先按媒体套装切换,再按套装内的启动、日常、随机、场景、音乐等目录切换;选择项只显示制作时填写的媒体名称,不显示 start、loop、end 数量。不同 BPM 实现属于同一个音乐媒体名称,只显示一次。已有旧版单文件规则仍能继续编辑和执行,不会在升级后丢失。

TF 媒体启动、固定循环以及喂食、清洁、玩耍、休息、招呼、庆祝等宠物动作都可选择“立即执行”或“排队执行”。立即执行会直接结束当前媒体或宠物动作并切换;MIBO 保留上一张完整画面,等新动作首帧完整就绪后再交接,因此不会先闪黑。排队执行只保留一个待执行动作,等待当前媒体或宠物动作自然结束后开始;旧规则继续使用升级前各动作的默认方式。有限的 TF 媒体和宠物互动动作结束后会恢复触发前的页面;用户中途手动切页时取消恢复。显示指定页面、上一页/下一页、系统页、默认页等明确的页面控制不自动返回。

资源目录连接后会先显示上次成功缓存,再在后台校验目录版本;内容未变化时不重复逐项传输。校验失败只自动完整重试一次,仍失败时保留上次可用清单并显示错误,不会因为一次异常就反复扫描 TF 卡。需要主动处理同名文件替换或疑似旧清单时,可在“页面 → MIBO 宠物”点击“重建宠物索引”,或在“页面 → TF 媒体”点击“重建 TF 媒体索引”;MIBO 会重新读取对应目录信息,完成后 EVCC 再获取完整清单。此操作不校验或传输媒体内容。通过 Recovery 上传、替换、移动或删除资源属于明确变更,返回 Main 后会自动重建受影响的索引,无需再手动点击。

新卡统一采用中文目录。Main 和 Recovery 会优先使用有内容的中文媒体树;如果中文树为空而旧英文目录有内容,则继续读取旧目录,避免插入旧卡后资源突然消失。同一套装也兼容英文 startup/daily/random/scene/music,但不要同时在中英文分类中放不同内容。

TF 媒体的套装名、具体文件名和宠物文件名都按 UTF-8 处理,可直接使用中文。需要让自动化在修改中文显示名后继续命中时,AVI 文件名应使用稳定 ASCII key,例如 idle__正常眨眼.avi 或 petting1__抚摸互动__loop01.avi;省略 key 时改名会生成新的表情 ID。媒体在同一套装的启动/日常/随机/场景之间移动可保留显式 key 的表情 ID,移到另一套装则视为另一项资源。

音乐 根目录直接放置的 AVI 表情组是默认兜底:歌曲没有 BPM 时只使用这里;歌曲有 BPM、但没有可用的数字档位或 auto 参考素材时也会回退到这里。普通数字档位仍放在 音乐/90、音乐/120 这类目录中:没有可用 auto 参考素材时选择差值最小的数字档位,差值相同取较低 BPM。

需要自适应速度时,在扁平的 音乐/auto 目录直接放入提前制作好的 24 FPS、320×816 MJPEG AVI,不再建立 BPM 子目录。每个动作可放一份 key__中文名__transition.avi,MIBO 会在开始和结束各按原速、同方向播放一次;只有中间 loop 按参考 BPM 制作多份,例如 key__中文名__loop_60.avi、loop_120.avi、loop_180.avi。需要不同开始/结束时也兼容固定的 start.avi、end.avi。歌曲有 BPM 时,MIBO 先检查最接近的普通数字档位:差值不超过 ±5 BPM 就按原速使用;否则选择“不低于歌曲 BPM 的最小 auto 参考值”,按“歌曲 BPM ÷ 参考 BPM”减速播放。源素材固定为 24 FPS,减速时实际显示帧率会同比降低且不插帧;不会运行时生成视频,也不会加速素材。歌曲 BPM 高于所有 auto 参考值时,为避免加速,会改用最接近的普通数字档位;两者都没有才用根目录兜底。

普通数字目录和扁平 auto 都只能直接放 AVI,不能继续嵌套。普通档位可放多组表情,同档随机选择并避免连续重复;auto 使用 transition/start/end 固定过渡和 loop_<BPM> 循环命名,同一 key 的中文显示名必须一致。auto 中所有文件都必须是 24 FPS;上传或生成校验索引时会拒绝其他帧率。当前套装针对歌曲 BPM 没有任何有效候选时,即使开关已打开也不会切入 TF 媒体页。

音乐停止后的退出延迟在控制台统一设置为 3–30 秒,默认 8 秒,用于覆盖切歌或短暂停顿。全局选择 TF 媒体时会先挂入音乐媒体再进入页面,因此不会额外执行普通“启动”动作;选择宠物时使用宠物文件内的音乐动作,缺少该动作就保持原页面不触发。歌词、TF 和宠物全局联动都只在仍持有目标页时恢复原页面,用户中途手动切页后不会抢回。测试入口也统一放在控制台音乐联动的保存按钮旁:测试使用当前已保存的全局目标和所选媒体/宠物文件,可输入多个不同 BPM 反复播放;不会自动结束,必须点击“停止”。

内置页面、媒体和宠物切换都会等新内容的第一张完整画面准备好后再切换。TF 卡顿、资源缺失或解码失败时保留上一完整画面,不显示黑帧、加载提示或半帧。

TF 卡目录:

路径 用途
/mibo/系统/layout.json TF 布局版本标记
/mibo/系统/字体/mibo_full_cjk.otf 当前唯一系统字体
/mibo/资源/媒体/<媒体套装>/启动 每次进入 TF 媒体页随机执行一次的表情组
/mibo/资源/媒体/<媒体套装>/日常 当前套装的日常媒体,按顺序或随机轮播
/mibo/资源/媒体/<媒体套装>/随机 当前套装中按设置概率或间隔插入的随机表情
/mibo/资源/媒体/<媒体套装>/场景 当前套装中仅供手动、自动化和临时场景触发的内容
/mibo/资源/媒体/<媒体套装>/音乐 音乐表情默认兜底;可增加一层纯数字 BPM 子目录
/mibo/资源/媒体/<媒体套装>/音乐/auto 直接放共享 transition 和多个 loop_<BPM>;24 FPS、320×816,只减速不加速
/mibo/资源/宠物 可放多个 .mibo-pet 的宠物目录
/mibo/固件 可放多个待选择刷写的 .mibo-fw 或兼容 .bin 固件;最终校验由 MIBO 执行
/mibo/日志/当前运行.log DEBUG 模式当前运行的分批日志,单段有容量上限
/mibo/日志/上次运行.log 本次创建 DEBUG 日志前保留的上一段运行日志
/mibo/传输/.临时 Wi-Fi 断点上传的临时文件
/资料库 固件不读取的旧版表情、主题、图片、视频和媒体源文件;恢复出厂不会删除

固件升级: 1. EVCC Recovery 页的“下载云端固件”会查询最新 Main 与 Recovery,也可选择手机本地固件;所选文件只传输到 TF 的 /mibo/固件,不会自动刷写。Recovery 管理网页不提供云端下载,只能把本地文件上传到该目录 2. 点击 EVCC 的“刷写固件”,或在 Recovery 网页、MIBO Main/Recovery 本机菜单中选择固件,会先扫描 /mibo/固件 并弹出文件列表;明确选中并点击“开始刷写”后才向 MIBO 下发刷写命令。主系统开机不会主动扫描或提示固件 3. EVCC 只负责下载、传输和发送命令,不在手机侧判断固件目标或代替设备校验。MIBO 会识别 Main/Recovery,检查板型、布局、容量、镜像摘要、签名和内嵌描述;校验不通过不会擦除目标分区 4. 无论当前运行 Main 还是 Recovery,都能选择 Main 或 Recovery 固件。需要写入当前运行分区时,MIBO 会先切到另一安全分区执行:Main 固件交给 Recovery 写入;Recovery 固件交给 Main 写入。传输与刷写进度弹窗不会自行消失:任务进行中可“隐藏到后台”,成功或失败结束后同一按钮会改为“关闭”;分区切换后仍可根据设备状态确认最终结果 5. 刷写过程中必须保持稳定供电。Main、Recovery 及 EVCC 的操作都只更新目标应用分区,不会清除 NVS 或 TF 卡

安全边界:运行中的分区不会自写自身,也不能通过网页或 EVCC 改写 Bootloader、分区表或执行全量 Flash。首次切换分区布局、两个应用分区均损坏或确需全量恢复时,才连接 USB 使用完整工厂镜像;开始前确认供电稳定。

媒体上传有稳定播放门槛:JPEG 最大 2 MB;MJPEG AVI 最大 512 MB,且每个画面不得超过 512 KB;JPEG 必须为 baseline。GIF、裸 MJPEG 和其他视频容器不接受;音乐目录只接受 AVI。 Recovery 会在替换正式文件前校验,不合格文件不会进入播放列表。

TF 卡是资源介质,不是启动必需品;未插卡或卡损坏时 MIBO 仍应能进入 Main/Recovery,但外部字体、媒体、宠物和界面不可用。“资料库”只是电脑端保留区,固件不会扫描。首次切换新分区布局仍需使用 USB 完整工厂镜像。

音乐同步:音乐标题、歌手、歌词、播放进度和页面配色来自音乐桥接。切歌或歌词更新较密集时,EVCC 会合并到最新状态再发送;连接中断后恢复时会重新同步当前内容。“经典歌词”沿用稳定的双行歌词布局并作为默认主题,“涟漪玻璃”显示歌名、当前/下一行歌词和底部进度,“LED 灯牌”使用 /mibo/系统/字体/主题/fusion-pixel-12px-proportional-zh_hans.otf 像素字体,“暗角玻璃”只在中央自适应显示当前歌词。主题选择会保存到 MIBO,重启后继续生效。

第一次配置建议停车后观察数据、页面切换、媒体播放和 Recovery 文件管理,确认链路稳定后再绑定真实车辆属性。自动亮度在重连后会进行有界重试,并补发首次成功读取到的车辆属性值。


4.22 灯语(L946)

服务菜单最下方的“灯语”卡片提供 EVCC 功能总开关、原车服务连接状态和控制台入口,默认关闭。服务卡片与自动化“灯语动作”仅在系统机型匹配 L946 时显示,其他车型直接隐藏,不使用云端适配开关。开启后,主控制台的 MIBO 旁边会增加“灯语”按钮,该入口也受相同车型门禁限制。第一版只适配 L946;新续播链路的真实节拍与前后灯效衔接仍待实车验收。

控制台随窗口宽度自适应:车机宽屏左右分栏,左侧是灯阵预览、播放按钮和播放参数,右侧是灯语库;窗口较窄时自动上下排列。顶部的“启用 EVCC 灯语”开关与服务卡片总开关相同,旁边的状态标签显示原车服务连接和播放状态。灯阵按真实比例显示两块点阵:前灯 364×28 为白色,后灯 246×8 为红色,深色灯壳在日间和夜间模式下保持一致。“实时预览”立即呈现当前素材和参数,只在屏幕上预览;点击“播放”才向原车提交资源。“同步查看”跟随 EVCC 发起的播放和原车状态回调,画面依据本地素材时间轴呈现,属于播放示意,不是灯控硬件的逐帧回读。第一版不读取原车自行触发的 NOA、迎宾等画面。官方项没有帧资源时显示名称和状态,注明画面不可用。

宽屏左右两栏等宽(1:1),右侧灯语卡片采用紧凑的留白与间距,随可用宽度自动增加每行数量,让预览时能同时看到更多素材;窄屏仍采用上下排列。控制台采用紧凑的字号和按钮高度,避免把整页控件大幅放大。前后灯阵始终保持各自比例,播放、停止与参数调节仍保留独立操作区域。

播放参数上方的“灯语类型”可选择自定义素材、文字、预设效果、歌词跟随、车速随动和官方灯语。文字可直接输入,不需要先制作视频,支持静态或滚动显示;文字与歌词默认使用前灯,也可选择后灯或前后同步,两侧分别按自己的点阵尺寸渲染。文字和预设可通过“保存为自定义灯语”保存到素材库,再用于自动化、导出或分享。后灯只有 8 行像素,长文字及复杂汉字的辨识度应在实车检查。

歌词跟随使用开关启停,仅处理已有音乐会话提供的歌词;完整时间轴按当前歌词段呈现,只有当前句时按句更新,没有歌词或音乐暂停时暂时恢复该侧的 EVCC 基础任务。手动或自动化播放临时覆盖对应侧跟随,正常完成后继续跟随;主动停止会结束所选灯阵的跟随,避免停止后马上再次出现。车速随动首版按用户填写的区间切换素材:先选择已经连接、可用的属性源,填写 $prop(ID, area) 或带来源、通道的属性引用,每行填写 下限,上限,素材 ID。区间左闭右开且不得重叠,单位使用所选属性的单位;区间变化才切换,不做连续高速注入。无数据时暂停跟随,不把缺失数值当作零。

前后灯在 EVCC 中属于两个逻辑任务,分别记录素材、参数、进度和剩余次数。仅操作前灯不会清空后灯任务,反之亦然。原车接口仍是整体播放与停止,因此替换不同素材或重新组合时可能短暂交接;另一侧保留逻辑进度,不承诺物理灯效完全没有间隙。暂停的基础任务保留进度,不将原车 NOA、迎宾或没有帧资源的官方项当作可任意混合的素材。没有 EVCC 任务的一侧使用全灭占位,不能借此保留或还原原车未知灯效。

主控制台的按钮组件和悬浮窗的按钮动作也可选择“灯语”,配置素材、直接文字、预设效果、跟随启停或按灯阵停止,使用与自动化相同的素材库、参数、变量和公式。动作入口仍按 L946 车型匹配;执行播放前须开启灯语总开关。

开启灯语总开关后,主控制台“添加组件”中提供“灯语实时预览”。组件同时显示 EVCC 当前播放的前后灯语及状态,点击可进入灯语控制台;官方灯语没有帧资源时显示名称和“画面不可用”。画面跟随本地播放时间轴,不是车辆灯阵逐帧回读,也不显示尚未提交的编辑预览。关闭灯语功能后组件隐藏,已保存配置保留,重新开启后恢复显示;离开页面会停止读取预览帧,不影响播放。该预览组件不提供给 Mini 页面。

自定义灯语的播放参数用步进器、滑块和分段按钮调整,长按加减键可连续调整:速度 0.25–4 倍(每步 0.25)、亮度 0–100%、播放次数、灯阵位置(前后灯 / 仅前灯 / 仅后灯),以及静态图显示时长(每步 0.5 秒,仅当所选灯语含静态图时出现)。播放次数旁的“∞”切换为无限循环,次数为 0 时持续循环,直到停止;关闭后恢复之前的指定次数。默认速度 1 倍、亮度 100%、一次、前后灯,静态图 5000 毫秒。“保存播放配置”保存这条素材的默认参数;官方灯语的参数区置灰。配置区显示预计内容时长、批次数、单份准备数据和包含复制及余量的存储需求;播放时显示应用估计的当前次数与剩余内容时长。这些估计不包含交接等待,也不是灯控 ECU 的实际计数。关闭控制台不会停止播放。

播放区域的按钮依次是“播放、循环、停止”,可删除的自定义素材右侧再显示“删除”。循环按钮与次数旁的无限循环配置同步,只改变下一次播放参数;需要点击播放才应用,不立即改变正在执行的任务。官方项和持续跟随类型不提供循环调整。删除弹窗会显示名称及引用灯阵,先停止引用它的任务;停止失败则保留素材。内置测试素材与官方项不提供删除。

单侧或相同周期组合的有限任务且资源较小时,EVCC 将完整次数合成一次原车播放,不在每次循环后重新请求。较长任务和可周期复用的无限组合使用预算内的批次资源,在自然结束前请求同类型交接,不反复转换或上传。前后周期或剩余次数不同时,按预算和下一个任务结束点分段,后续组合保留各侧逻辑进度,需要重新初始化和整体交接;不通过巨大共同周期展开素材。交接缓冲只保持末帧,不增加动画次数,准备完成前不覆盖原车正在读取的文件。有限批次任务会在剩余名义内容结束时请求停止,等待原车停止确认后报告完成。计时和停止调用可能产生几帧偏差;不承诺硬件级无缝衔接或逐帧精确计数。拒绝、提前结束、断连或错过续播窗口时明确报告失败或未知,不自动重播旧任务,也不关闭原车状态灯效开关。

“导入灯语”支持图片、GIF、可由系统解码的视频,以及专用 ZIP 灯语包。选择前灯、后灯或同时应用后,EVCC 将素材转成灯阵亮度帧;GIF 保留帧延时,视频保留帧时间。导入显示读取、解码、解包、校验和保存阶段,以及已处理数据、帧数或内容时长;只有已知总量时显示百分比,不伪造进度。“取消导入”中断可取消的处理并清理临时资源,替换取消时保留原有素材;已经完成保存的素材不会因取消而回滚。功能关闭后不继续准备新的导入资源。素材卡片显示前后灯缩略图、覆盖灯阵和时长,点击选中,右侧“⋯”或长按进入详情;用户素材可以重命名、确认删除或单独替换前后资源。替换播放中的素材会先停止引用它的任务,停止失败不继续替换。“刷新官方灯语”位于官方分区标题旁;库内容和连接状态变化后自动刷新。重命名保持自动化引用,删除后引用动作显示缺失。内置全灭、扫描、渐变和棋盘格资源不提供重命名、删除或替换,可以预览、导出和分享。

“官方灯语”通过原车接口获取和播放,使用原车速度和参数;部分项目会打开原车 TechLight 页面。没有对应接口的参数或停止操作不可用。新请求会尝试替换当前 EVCC 任务,原车拒绝或当前官方项无法停止时会显示实际结果。EVCC 不额外检查 P 挡、车速或原车灯语开关,播放和中止由原车链路决定。关闭 EVCC 总开关会取消待提交任务、停止能停止的 EVCC 播放并释放连接,不修改原车开关。

首版不提供官方项的可靠停止;原车 VR 停止命令依赖原车页面及其当前播放状态,命令返回不能证明已经停止。自定义灯语可以请求停止,EVCC 会等待原车结果。最后一批不足完整批次时,如果应用计时晚到一个完整名义周期,EVCC 会尝试停止并提示实际次数未确认,不将这次任务报告为按次数完成。

“停止”不受导入或准备任务的忙碌状态阻挡,资源准备中的待提交播放也可以取消。等待原车确认时显示“正在请求停止”;原车未确认时明确提示灯语可能仍在播放。关闭 EVCC 总开关仍会释放连接,但不会将停止失败伪装为已停止;无法可靠停止的官方项也会保留提示。尚未发起 EVCC 播放的资源准备不会发送车辆停止命令去影响其他灯效。

灯语包格式:ZIP 根目录包含 manifest.json 和声明的 front.bin / rear.bin;至少有一个灯阵资源。每帧行优先排列,每点一个字节且只能为 0–31,前灯每帧 10192 字节,后灯每帧 1968 字节,无文件头。描述文件格式版本为 1,例如:

{
  "version": 1,
  "name": "流光",
  "front": { "file": "front.bin", "frameCount": 40, "framePeriodMs": 40 },
  "rear": { "file": "rear.bin", "frameCount": 40, "framePeriodMs": 40 }
}

不同帧的延时可用 durationsMs 数组代替 frameCount 与 framePeriodMs;静态图可另标记 still: true,且只能含一帧。EVCC 导出的包包含上述时间信息及默认播放配置。导入会校验资源路径、重复文件、帧长度和亮度范围。原包时间信息不变,提交时按原车普通播放路径的 30 毫秒帧周期重采样。单段素材最长 120 秒,输入包和转换后的单次资源各不超过 160 MiB;播放工作资源以 32 MiB 为预算,单个较长周期可超过工作预算,但含交接缓冲后仍必须满足硬上限。次数增大不会无限扩大单次文件;较慢倍率仍可能使单个周期超限。准备前会预检本地和原车复制所需的存储空间,空间不足时明确提示。实际物理播放速度仍需车辆验收。

灯语自动化使用同一份素材库,参见《EVCC 自动化使用手册》的“灯语动作”。

自定义素材的“⋯”打开适应窗口大小的前后灯效果预览,可“分享至商店、导出到文件、删除”;非内置素材还可进入次级菜单重命名、替换前后资源。预览只读取本地帧,关闭后释放读取资源,不向车辆发送播放请求。“导入灯语”先选择目标灯阵,再打开 EVCC 本地文件选择器,读取受限时可转用系统选择器;路径按当前 Android 用户确定,不固定用户编号,也不要求 root。图片、GIF、视频及灯语包的校验与转换规则不变。

“灯语商店”位于导入入口旁;开启灯语总开关后,商店菜单也会在内容商店后显示第四类灯语商店。两个入口进入同一商店,沿用 L946 型号门禁。服务端未开放时显示商店暂未开放,并不代表车辆连接失败。商店下载后只加入灯语库,不自动播放;同一条目和版本避免重复导入,新版本不覆盖已有本地素材和自动化引用。

分享上传原始离线包及默认配置,不上传展开后的 50 次循环资源、歌词或车辆属性订阅。普通投稿经处理后等待审核,审核通过才上架。页面关闭不取消传输;灯语总开关关闭时暂停本地传输并保留断点,重新开启后在任务页手动继续,已经提交服务端的处理和审核不自动撤销。详见《EVCC 内容商店与分享手册》的灯语商店章节。


第五章 终端命令面板

提供便捷的 ADB/Shell 命令执行界面。

5.1 命令类型

  • adb 开头的命令:通过 ADB 协议执行(如 adb root、adb remount)
  • 其他命令:通过 RootService 以 root 权限直接执行

5.2 内置命令

预置多个常用命令,按分类折叠展示,点击即可执行:

分类 命令示例
系统信息 系统属性、进程列表、内存、CPU
硬件信息 磁盘、网络、WiFi、屏幕信息
应用信息 当前 Activity、已安装应用数
车辆服务 VHAL 服务状态、背光亮度
系统控制 Root、Remount、Shizuku授权、重启守护进程

内置命令列表可通过云端更新。

5.3 自定义命令

点击"+ 添加命令"→ 输入命令名称和内容 → 保存。自定义命令保存在本地,可删除。

5.4 直接输入

在底部输入框直接输入任意命令并执行。支持命令历史记录(最多 50 条)。

5.5 Logcat 功能

终端支持实时 logcat 日志捕获: - 开始/停止 logcat 流 - 按日志级别过滤(V/D/I/W/E/F) - 按包名过滤 - 输出语法高亮 - 复制输出到剪贴板

5.6 连接状态

顶部显示 RootService 连接状态。如未连接,会自动重试(最多 60 秒)。可手动点击"重连"。


第六章 自动化

自动化引擎是 EVCC 最强大的功能之一,支持基于触发器-条件-动作的规则系统。

6.1 引擎控制

  • 点击"启动引擎"/"停止引擎"控制运行状态
  • 在"连接"页可设置自动化引擎开机自启
  • 引擎运行时实时监听所有启用规则的触发条件

6.2 规则结构

每条规则由三部分组成:触发器(必需)→ 条件(可选)→ 动作(必需),也可以额外配置运行期中断器。 多个触发器之间是 OR 关系,任意一个触发器命中都会进入条件判断;触发器列表右侧的 ▲ / ▼ 可调整显示和保存顺序。

点击“添加触发器”“添加条件”或“添加动作”时,第一层只显示按分类排列的类型选择;选定类型后才打开对应编辑器,取消类型选择不会生成默认项目。条件分支和中断器中的新增入口使用同一流程;控制台与悬浮窗新增组件也会先选择组件类型,再进入该类型的详细配置。

触发器 (Trigger) — 定义何时触发

属性相关:

类型 说明
属性变化 指定属性值或可用状态真实变化时触发;底层重复上报和手动刷新当前值不会触发
属性等于目标值 属性值等于指定值时触发
属性大于/小于 数值比较触发
属性在范围内 值在 [min, max] 范围时触发
属性包含字符串 字符串包含子串时触发
属性双击变化 短时间内多次变化触发

定时相关:

类型 说明
定时器 (间隔) 按固定毫秒间隔周期触发
定时器 (定时) 在指定时间点触发 (HH:mm 格式)
日出触发 每日日出时触发,支持 ±N 分钟偏移
日落触发 每日日落时触发,支持 ±N 分钟偏移

日出/日落优先联网查询 sunrise-sunset.org,无网络时使用本地 NOAA 算法计算。

系统事件:

类型 说明
开机启动 系统或引擎启动时触发
屏幕开启/关闭 显示器开关时触发
蓝牙开关 蓝牙状态变化触发
应用进入前台 指定应用进入前台触发
广播接收 接收到定向发送给 EVCC 的指定 Android 广播触发
Logcat 关键词 匹配 logcat 日志行触发(支持正则捕获组提取变量)
音乐事件 当前音乐状态开始播放、暂停/停止、切歌、音乐 App 变化、检测到/失去音乐状态时触发
万能旋钮接管 接管 Flyme Auto 系统万能旋钮,并按 StartX 操作和功能触发;入口默认显示且可由车型云端配置隐藏

“音乐事件”依赖"服务 → 音乐桥接"的当前音乐状态。主规则和中断器都可以使用;启动自动化引擎或进入某次规则执行时只记录一次基线,不会因为已有歌曲正在播放而立即触发;进度刷新不会重复触发。可选填写音乐 App 包名,只让指定来源命中。

硬件输入:

类型 说明
BLE 设备信号 收到指定 BLE 设备广播时触发;“预设按钮”支持米家蓝牙 Mesh、极氪灵动贴、StartX 旋钮和 MIBO GATT 信号,后者用于米德宝或 BLE 桥接外设主动回传的数据
经典蓝牙设备连接 蓝牙设备连接时触发
方控按键 方向盘按键触发(支持单击/双击/三击/长按)

位置与变量:

类型 说明
进入区域 (Geofence) GPS 进入指定圆形区域触发
离开区域 (Geofence) GPS 离开指定圆形区域触发
变量比较 自定义变量值变化/等于/大于/小于时触发
手动触发 仅手动执行

地理围栏支持地图选点弹窗,可搜索地名、选择地图源(天地图/OSM/ESRI卫星图)、预览半径。有 10% 滞回和 30 秒冷却防边界抖动。

  • 属性变化、属性等于/大于/小于/范围/包含,以及变量比较触发器可勾选“取反”,对填写的变化或数值判断结果进行反转;规则列表会显示 [取反]。
  • “属性双击变化”不提供取反。“没有发生双击”必须等完整个双击时间窗后才能确定,不能把每次尚未凑成双击的普通属性变化直接视为命中。
  • 屏幕、应用前台、蓝牙开关和经典蓝牙设备连接使用“息屏时触发”“应用离开前台时触发”“蓝牙关闭时触发”“设备断开时触发”等明确的反向选项;其他事件型触发器仍不显示通用取反。

条件 (Condition) — 额外判断

类型 说明
属性等于/不等于 属性值比较
属性大于/小于 数值比较
属性包含 字符串包含
属性在范围内 值在指定范围
属性与前值比较 对比上次变化前的值
时间范围 当前时间在 HH:mm 到 HH:mm 范围内
应用在前台 指定应用当前在前台
变量比较 自定义变量等于/不等于/大于/小于
音乐状态 当前音乐是否播放中、暂停/停止、有音乐状态或无音乐状态
  • 多个条件支持 AND(全部满足)或 OR(满足其一)逻辑
  • 所有属性条件(包括属性与前值比较)和变量比较都可勾选“取反”,对当前所选比较结果再次反转;时间范围、应用在前台和音乐状态则显示语义明确的反向条件。当前音量和 StartX 功能条件仍不显示通用取反。
  • 规则编辑器里的"条件判定延迟(ms)"用于推迟条件和分支条件的最终判断,默认 0,可填 0-60000。当触发属性 A 和条件属性 B 几乎同时变化、但规则偶尔读到 B 的旧值时,可给该规则设置 100-300ms。它只延后条件判断,不要求触发器状态继续保持;需要持续保持仍使用触发器的"保持时间"。
  • 触发器里的"保持时间"只作用于当前触发器本身,不会要求同一规则里的其他触发器一起等待。
  • "条件判定延迟"不同于动作里的"延时 (Delay)":前者发生在条件通过之前,后者发生在条件通过并开始执行动作之后。

动作 (Action) — 触发后执行

动作支持所有控制台组件的动作类型(见 2.2 节),另外还支持:

额外动作类型 说明
延时 (Delay) 等待 N 毫秒后继续
条件停止 条件不满足时终止后续动作
停止规则 无条件终止当前规则
触发其他自动化 触发另一条规则
回到主屏 模拟 Home 键
BLE 广播 发送自定义 BLE 广播
属性调节浮窗 读取并调节车辆属性,同时用选择器或调节条显示结果;支持使用 StartX 旋钮的累计旋转步数
小窗启动 以悬浮窗启动应用
系统小窗 使用系统原生小窗
APP投屏 将指定应用或当前前台应用投放到目标屏幕
杀死应用 强制停止指定包名,或勾选"杀死当前前台应用"一键停掉当前可见应用
退出应用 把指定应用退到后台 / 回主屏,或勾选"退出当前前台应用"作用于当前可见应用
显示器镜像 镜像副屏内容
关闭语音助手 抢占音频焦点静音 TTS
Webhook 发送 HTTP POST
远程消息 发送到钉钉/Telegram/飞书

“截屏”和“录屏”与控制台、悬浮窗共用同一套行为:图片和视频位于相册的 EVCC 文件夹;录屏动作只负责打开控制窗,不会自动开始录制,需在控制窗中点击“开始”。

  • 多个动作按顺序执行
  • 可拖拽调整执行顺序
  • 选择"触发其他自动化"时,配置界面会同时显示目标规则名称和 ID,便于区分同名或相似名称规则
  • TTS 语音使用系统默认引擎时,如果车机引擎由系统语音设置统一管理,发音人会显示为"跟随车机语音设置";需要单条规则独立音色时可选择 Edge TTS 或阿里云 TTS
  • 启用条件分支后,规则的主条件仍是全局前置条件;主动作可在"兜底模式"和"最终模式"之间切换
  • 条件分支默认使用 IF ELSE IF 模式:从上到下判断,命中第一个分支后只执行这个分支;可切换为 IF IF 模式:从上到下判断并依次执行所有命中的分支
  • "兜底模式"下,主动作只在没有任何分支命中时执行;"最终模式"下,主动作会在分支动作执行后继续执行,没有分支命中时也会直接执行
  • 分支动作中的"条件中断"判断当前命中的分支条件;不满足时只停止当前分支剩余动作,"最终模式"下仍会继续执行最终动作
  • 主动作/最终动作中的"条件中断"判断主条件;不满足时停止其后的主动作/最终动作
  • 米德宝联动动作适合多个规则共用同一台机器人时设置优先级;例如安全提醒可用"高"或"实时",普通氛围动作可用"中"或"低"

BLE 广播的 MIBO 转发(v2.9.54+):开启“服务 → MIBO 联动”后,BLE 广播动作会显示“MIBO 转发”,可选“关 / 米德宝通道 / BLE 中转通道 / MIBO 代发广播”。米德宝通道固定使用厂商 ID 0x2818;BLE 中转通道使用 MIBO“BLE 桥接”中保存的厂商 ID,未配置时为 0x2819。即使选“关”,手工填写 0x2818 或当前 BLE 中转厂商 ID 也会按相同通道路由;关闭 MIBO 联动后选择框会隐藏但保留原值,此时动作恢复为普通 BLE 广播。

每次动作开始时只选择一次发送路径:EVCC 与 MIBO 的 GATT 已就绪时,只把原始数据交给 MIBO,后续写入失败也不会补发广播;未就绪时,EVCC 才在空中发送带滚动码和校验的离线包,同一广播时长内重复包会由 MIBO 去重。滚动码只属于外层传输封装,MIBO 转发给米德宝或自定义 GATT RX 的数据与用户填写内容逐字节一致。MIBO 转发的原始数据上限为 20 字节;普通 BLE 广播仍为 27 字节。转发模式下设备名称、Service UUID、MAC 模拟不参与发送并会在编辑器中禁用,广播时长仍用于决定离线包重复发送多久。

“MIBO 代发广播”是独立的广播增强通道:EVCC 先生成最终传统 BLE 广播数据,再通过已就绪的 MIBO GATT 链路交给 MIBO 发射。厂商 ID、数据载荷、Service UUID、设备名和广播时长继续有效;链路层发送地址固定使用 MIBO 地址,所以 MAC 模式会被禁用并保留原配置。此通道默认关闭,要求 Main 或 Recovery 固件明确支持;MIBO 未连接、固件不支持、数据超过传统广播上限、队列已满或执行失败时会直接报告失败,绝不回退为车机本地广播。

EVCC 最多顺序保存 16 个代发任务,MIBO 同时只执行一个。有限时长任务收到板端结束结果后再执行下一项;持续广播会在下一项任务、关闭联动、切换连接方向或重启 GATT 服务前先停止。GATT 会话丢失会清空当前和待发送任务,重连后不会补发旧动作。该模式使用 MIBO 自身的传统、不可连接、可扫描广播;它不能伪装车机 MAC,真实接收效果仍取决于接收设备是否接受 MIBO 的发送地址。

中断器 (Interruptor) — 运行期间停止本次执行

中断器用于处理"规则已经开始执行,但中途出现了更高优先级事件,需要立刻停掉这次执行"的场景。它只在某次规则触发后、动作执行期间监听;规则结束后自动停止监听。

  • 一条规则可以添加多个中断器,命中任意一个且条件满足后,会立即中断本次规则执行,后续动作不再继续。
  • 中断器可配置触发器、条件、AND/OR 条件逻辑和"条件判定延迟(ms)";不需要规则名称、动作、条件分支、冷却时间或执行超时。
  • 中断器的触发器/条件类型沿用主规则的编辑方式,但不提供"手动触发"这类没有运行中外部事件源的触发器。
  • 配置属性型中断器时,可在中断器编辑页使用"监听属性变化"从实时属性列表快速生成触发器或条件。
  • 如果中断器没有配置条件,只要触发器命中就会中断;如果配置了条件,会先等待中断器自己的条件判定延迟,再判断条件。
  • 同一条规则如果发生并发执行,每次执行的中断器彼此独立;一个中断器只会停止它所属的那次执行。
  • 第一版中断器只支持普通 APP 侧自动化;勾选"由 RootService 托管执行"时不能保存带中断器的规则。

RootService 托管执行(实验)

规则编辑器里可以勾选"由 RootService 托管执行"。适合锁车音这类场景:通过车辆属性变化触发,延迟后播放音频到指定 usage 或 bus。启用后,符合条件的规则会同步给 RootService;EVCC 主进程被系统杀掉时,只要 RootService 仍在运行,规则仍可按支持的触发、条件和动作继续执行。

该实验选项由云端车型适配控制,默认隐藏;如果规则编辑器里没有看到这个勾选项,说明当前车型或当前版本暂未开放 RootService 托管执行入口,普通自动化规则仍可正常使用。

支持范围: - 触发器:属性变化、属性等于、大于、小于、区间、包含、属性双击变化 - 条件:属性条件、属性前值、时间范围 - 动作:播放声音、延迟、无动作、停止规则、写属性 - 属性变化和属性双击只统计真实变化;底层重复上报或手动刷新当前值不会触发托管规则。

不支持范围:中断器、TTS、HTTP、通知、Toast、启动/杀死 App、BLE、脚本、变量触发、地理围栏、前台 App 判断、音乐事件、音乐状态等。勾选后如果当前规则不符合条件,编辑器会显示不支持原因。RootService 托管规则会在规则名左侧显示"RootService 托管"标签。

播放声音动作支持音量/增益拖动条:以 5% 步进调节,100 表示原始音量,低于 100 会衰减,超过 100 会优先使用软件解码放大,过高可能产生削波失真。通过文件选择器选择本地音频或在选择器中手动填写路径并确认时,都会先转存到 EVCC 私有目录;读取受限且 RootService 可用时会自动尝试备用读取,用户无需另行复制文件。音频文件如果来自 content://,保存规则时也会先转存,避免锁车瞬间依赖文件管理器授权或 EVCC 主进程。RootService 托管能力依赖 RootService 能监听到对应属性;如果某个锁车信号只存在于 VHAL gRPC/APVP 等 RootService 暂未接入的数据源,仍需继续使用普通自动化或等待后续适配。

RootService 托管规则同样支持"条件判定延迟(ms)"。设置后,RootService 会在触发器命中、保持时间/双击避让结束后,再等待指定毫秒读取最新属性并判断条件;条件属性变化只刷新内部缓存,不会单独触发规则。

RootService 托管的"写属性"动作仅支持 boolean / int / long / float / string 这类基础 CarProperty 类型;数组、bytes、mixed 等类型会显示为不支持。连续快速触发同一条托管规则时,RootService 会保留最新一次动作链,避免长延迟或重复播放堆积。

执行日志里,RootService 托管规则会尽量按普通自动化规则的粒度展示:例如"规则触发 (第3次)"、"延迟 500ms"、"设置属性 空调温度 = 22 (RootService)"、"播放声音 (2/3): lock.wav"。普通用户不需要理解底层配置同步、属性监听和队列细节;如果需要排查,使用"连接"页的日志上传,上传内容会包含完整 RootService 日志,管理员可在 RootService 日志中搜索 RS_AUTO 查看托管规则的原始事件链路。

常用触发器的配置要点

每种触发器选中后,编辑器下方会出现对应的参数字段,下表列出最常用几种需要填什么:

触发器 必填字段 可选字段
属性变化 属性 ID、区域 ID 防抖时间 (ms) —— 多次变化合并为一次
属性等于 / 大于 / 小于 属性 ID、目标值(或阈值) 区域 ID、"仅边界触发"开关(避免值抖动持续触发)
属性在范围内 属性 ID、最小值、最大值 进入 / 离开范围时哪个触发
属性双击变化 属性 ID、最大间隔 (ms)、目标次数 常用于"连续按两下远光灯拨杆"场景
定时器 (间隔) 间隔毫秒数 对齐到整分/整小时
定时器 (定时) 时间点 HH:mm 星期几(勾选多天)
日出 / 日落 (无,自动按设备地理位置计算) 偏移分钟数(负数提前,正数延后)
屏幕开启 / 关闭 (无) 指定显示器 ID(区分主/副屏)
应用前台 目标包名 是否进入时触发、离开时触发
广播接收 Action 字符串;发送方需定向到 com.kooo.evcc 当前按 Action 匹配,不做 Category / Extra 过滤
Logcat 关键词 正则表达式 捕获组变量名列表(详见 6.9)
音乐事件 事件类型(开始播放 / 暂停停止 / 切歌 / App 变化 / 检测到状态 / 状态消失) 音乐 App 包名;留空表示任意音乐来源
BLE 设备信号 预设按钮、学习或已配对设备 米家设备使用按键 ID、BindKey、点击方式;极氪灵动贴与 StartX 使用设备操作和可选功能标签(详见 6.11)
方控按键 按键码、点击方式 长按时长、多击间隔
进入 / 离开区域 中心经纬度、半径米 滞回比例、冷却秒数
变量比较 变量名、比较方式、目标值 比较方式选"变化"时可选填"变化前 / 变化后"过滤 (留空=不限制, 支持 ${var} 引用)

建议流程:先用属性监视器找到属性 ID → 再根据需求选择触发器类型 → 最后填字段。填完点"手动执行 ▶"验证动作部分没问题,再启用自动触发。

收到广播触发器用法:触发器里填写完整 Action 字符串,例如 com.carapp.speaker.kill,不要勾选"取反"。发送方必须把广播定向到 EVCC 包名;ADB 测试命令为 adb shell am broadcast -a com.carapp.speaker.kill -p com.kooo.evcc。普通不带包名的隐式广播不会触发 EVCC 自动化。

音乐事件触发器用法:适合做"音乐开始播放后打开歌词小窗"、"暂停后关闭氛围灯"、"切歌后刷新副屏音乐信息"这类联动,也可放进中断器用于运行中停止当前规则。命中后可在动作参数中使用 $music_title、$music_artist、$music_album、$music_app、$music_pkg、$music_playing、$music_available 等变量;如果只想把音乐状态当作前置判断或中断器条件,条件里选择"音乐状态"即可。

6.3 规则管理

没有规则时,规则区显示“新建规则”和“浏览规则模板”入口;创建或导入规则后恢复常规列表。添加和编辑变量采用独立名称、值输入行,值仍支持表达式与函数。

操作 说明
+ 新建规则 打开编辑器配置触发器、条件和动作
编辑规则 点击规则进入编辑
复制规则 复制现有规则
删除规则 删除规则
启用/禁用 带自动触发器的规则可单独控制开关;只有手动触发的规则不显示开关,只显示运行按钮
手动执行 ▶ 忽略触发条件手动执行一次
冷却时间 设置触发后的冷却间隔(秒),避免频繁触发

6.4 规则分组

  • 规则可以按组管理
  • 分组头部"⋯"菜单支持:一键启用/禁用/删除组内全部规则

6.5 属性监视器

编辑规则时可使用"监视属性变化"功能发现未知属性 ID。

基本流程: 1. 打开属性监视器(规则编辑器内点击"监视属性变化") 2. 在车上执行操作(如打转向灯、踩刹车) 3. 监视器实时显示正在变化的属性,每条记录带时间戳和"前值 → 新值" 4. 直接从列表选取属性,一键填入当前规则的触发器/条件/动作目标

“监听属性变化”旁的“已收藏属性”可直接选择已在“属性”页收藏的属性。默认汇总所有已连接且可见的来源,也可按来源切换或搜索;打开后即显示收藏项,不要求属性再次变化。触发器、条件、动作和中断器均沿用原有选取与添加逻辑,保留来源、通道和区域;添加写入动作时仅显示可写收藏项。

实战示例:找出"左转向灯"的属性 ID

  1. 打开属性监视器,选择 VHAL 数据源
  2. 点击"基准快照"把当前所有值作为基准
  3. 拨动左转向拨杆(不要踩刹车、不要动其他)
  4. 监视器会列出这几秒内值变化的全部属性(通常 2~5 个)
  5. 把拨杆回中位,再拨一次,重复 2~3 次观察哪些属性反复同步翻转
  6. 反复翻转的那条通常就是转向灯属性 —— 点击它,"添加为触发器的目标属性"

用法技巧: - 过滤模块:APVP 模式下可按模块过滤,先缩小范围再操作 - 回避探测:把已经识别的属性加入"忽略列表",避免它们持续刷新干扰识别 - 只看可写:找"控制类"属性(比如能开关大灯)时,勾上"仅可写" - 数据源区分:某些功能在 VHAL 有、APVP 也有,两者值域不同,尽量挑可读可写的那个 - 保存 CSV 对比:操作前后各导出一次 CSV,用表格工具对比"当前值"列差异

发现的属性 ID 建议同时加到"收藏"并备注含义,方便后续复用。

6.6 预设模板

5 个快速创建模板: 1. 属性通知:属性变化时发送通知 2. 定时命令:定时执行 Shell 命令 3. 条件联动:属性满足条件时联动写入其他属性 4. 媒体控制:应用启动时自动控制媒体 5. 开机启动:系统启动时自动执行操作

6.7 规则商店

操作 说明
浏览商店 从云端下载其他用户分享的规则
上传规则 分享规则到商店(填写名称、简介;可勾选隐私上传仅用分享码分享;车型由云端按设备自动匹配,署名使用内容商店顶部"我的署名")
分享二维码 生成规则二维码,扫码即可导入
导入规则 粘贴 JSON 或 EVCC: 压缩格式导入
搜索 按名称、车型、署名、简介或分享码搜索
测试 下载规则详情后直接执行可单独测试的动作

规则商店上传和下载时会自动处理规则里引用的本地资源,例如"播放声音"动作使用的音频文件。下载规则或规则组后,EVCC 会把资源保存到本机私有目录,并把规则里的路径改为新的本机路径。规则卡片会直接显示匹配到的车型、分享码、下载次数和评分;右上角可点"时间 / 名称 / 评分 / 下载量"切换排序,默认按最新上传显示;少量结果也会正常显示;可点"♥"点赞,同一设备对同一条规则只保留一个点赞状态,再次点击会取消点赞。规则卡片的"测试"会先下载规则详情再尝试执行动作;带多个动作分支时会让你选择要测试的分支,规则组、变量联动、条件中断、触发其它规则或依赖完整上下文的规则会提示原因,不会强行执行。管理员标记为"优质"的规则会始终优先靠前显示。

6.8 变量管理

  • 自定义变量使用 $变量名 语法在规则间传递数据
  • 变量通过 VARIABLE_SET 动作创建和更新
  • 变量值支持公式计算(如 $speed * 3.6)
  • 变量持久化存储,重启后保留
  • 在设置面板可查看和删除变量

极氪灵动贴和 StartX 旋钮触发规则时还会为本次执行提供一组临时变量。这些值会贯穿条件、分支、条件停止和动作,但不会写入全局变量,也不会串到并发执行的其他规则;其中旋转步数只在 StartX 旋转事件中为非零值:

变量 含义
$ble_rotation_steps StartX 当前有效旋转事件的刻度;右旋为正、左旋为负,非旋转事件为 0。疾速增强版还可用安全累计位置补回接收端漏掉的中间刻度
$ble_rotation 与 $ble_rotation_steps 相同的兼容名称
$ble_rotation_direction 只表示方向:右旋为 1、左旋为 -1、非旋转事件为 0
$ble_event 当前事件,如 single_click、rotate_left、rotate_right
$ble_function 当前功能选择器标签文字
$ble_function_id 当前功能标签的稳定 ID

6.9 Logcat 关键词触发 + 变量提取

Logcat 关键词触发支持正则表达式捕获组,自动提取匹配内容到变量:

LogRegex: "temperature=(\d+) humidity=(\d+)"
LogExtractVars: "temp,humidity"

捕获到的值存入 $temp 和 $humidity 变量,后续动作可直接使用。

6.10 执行日志

右侧面板实时显示规则执行日志: - 显示执行时间、规则名称、执行状态 - 按状态过滤:全部 / 成功 / 失败 - 可清空日志 - RootService 托管规则会显示"RootService 托管"来源标识,并展示接近普通规则的信息量,例如触发次数、延迟、写入的属性和值、播放声音轮次和失败原因 - 日志上传会同时带上完整 RootService 日志;管理员排查托管规则时可在 RootService 日志中搜索 RS_AUTO

6.11 BLE 预设按钮与设备配对

EVCC 可以把 BLE 按钮和旋钮变成车机“遥控器”。在“BLE 设备信号”触发器中选择“预设按钮”,可使用三种米家设备、极氪灵动贴或 StartX 旋钮。已保存设备组成一个跨规则共享的设备库,同一设备不需要在每条规则中重新录入。

MIBO GATT 信号

配套 MIBO Main 固件连接后,“预设按钮”还可选择“MIBO GATT 信号”。它监听的是 MIBO 已连接的 米德宝或自定义 BLE 桥接外设通过 Notify / Indicate 主动回传的数据,不包含 MIBO 与 EVCC 的日常 控制、状态和配置指令,也不包含 MIBO 扫描到的普通 BLE 广播。普通广播仍使用原有 BLE 触发器; 只有需要匹配这两条外设 GATT 链路的回传数据时才选择本预设。

  1. 开启 MIBO 联动并确认 MIBO Main 已连接;Recovery 和基础模式不提供此监听。
  2. 新建或编辑自动化,添加“BLE 设备信号”,在“预设按钮”中选择“MIBO GATT 信号”。
  3. 选择来源:“米德宝 + BLE 桥接”“仅米德宝”或“仅 BLE 桥接”。实际可用来源还受 MIBO 当前运行模式限制。
  4. 点击“查找信号”,操作目标设备。弹窗会持续显示来源、外设 MAC、特征句柄、Notify / Indicate、 重复次数和十六进制内容;可按 MAC、句柄或数据筛选,最多保留最近 200 种不同信号。
  5. 点选一条信号后选择匹配方式:
  6. 精确匹配:整条内容完全一致;
  7. 前缀匹配:从数据开头匹配所填字节;
  8. 包含匹配:数据任意位置包含所填字节;
  9. 掩码匹配:把可变化的字节改成 ??,保留的字节必须一致。
  10. 可勾选“绑定该外设 MAC”,只接受当前外设;不勾选则相同内容可由同一来源的其他外设触发。
  11. 默认 300 ms 内完全相同的信号只触发一次;把“重复过滤时间”设为 0 可关闭去重。

超过 MIBO 单帧采集上限的回传会标记为“已截断”,可用于排查但不能选作触发条件,避免用不完整 数据误触发。查找弹窗或启用规则存在时才会开启板端回传流;关闭弹窗、停用规则或停止自动化引擎后 会自动停止,不会常驻占用 MIBO—EVCC 链路。此功能不提供 Android 本机扫描回退;若 MIBO 离线、 固件过旧、连接 MTU 不足或当前模式没有所选来源,界面会直接提示不可用。

支持的预设按钮

预设 设备举例 可用按键
米家V5蓝牙Mesh 开关/键盘 采用米家 V5 多键广播格式的开关、键盘或遥控器 按键 1~8,支持单击 / 双击 / 长按
米家新协议蓝牙 Mesh 开关 型号 de1.remote.wjwx8 按键 1~8,支持单击 / 双击 / 长按;信号测试可显示长按松手
米家蓝牙 Mesh 旋钮 米家无线开关旋钮版 4 个物理按键 + 旋转事件($ble_rotation 带符号 ±1)
极氪灵动贴 极氪单键 BLE 设备 只暴露“点击”,广播与已连接设备通知会合并为同一业务动作
StartX 旋钮 StartX 多功能 BLE 旋钮 单击、双击、长按释放、旋转、左旋、右旋;“旋转”会自动接受两个方向,快速旋转会携带累计刻度

米家设备请选择带“米家蓝牙 Mesh”字样、非 ZigBee、非“带网关”的型号。极氪灵动贴与 StartX 旋钮不需要米家 BindKey。

配对极氪灵动贴或 StartX 旋钮

  1. 新建或编辑规则,添加“BLE 设备信号”触发器。
  2. 在“预设按钮”中选择“极氪灵动贴”或“StartX 旋钮”,点击“配对设备”。
  3. 按一下极氪灵动贴,或操作一次 StartX 旋钮。配对窗口会依次显示扫描、发现设备、连接、验证、读取信息和保存阶段;失败时会显示原因及重新扫描或重新连接入口。
  4. EVCC 只列出设备名称和广播协议都符合的候选设备,点选目标设备继续。
  5. EVCC 会短暂连接设备并验证设置通道,读取电量、固件版本、设备标识和 PSN;成功后自动保存。
  6. 如果设置通道验证失败,但设备名称和广播协议已经通过,可以在警告提示下选择“仅广播保存”。这种设备仍可作为自动化触发器,但暂时不能在设置页修改灯效或休眠。

极氪灵动贴和默认状态下的 StartX 都以 BLE 广播控制,不会为了日常操作主动连接。StartX 可按设备开启“GATT 连接增强”:开启时先弹出连接测试;只有 EVCC 本机或所选 MIBO 链路确实完成服务发现与通知订阅后才保存。此后每个有效广播在连接就绪前都立即触发规则。按键操作会立即在后台尝试建立有限时 GATT;连续旋转则保持广播,并在最近一次有效旋转后安静约 450 ms 再尝试连接,等待期间的新旋转会重新计时。连接一旦开始,后续广播继续生效,不会再取消连接、替换连接代数或重新计时;建连期间可能出现短暂无响应,通知链路就绪后以 GATT 作为该设备的唯一控制来源。连接断开后直接回到广播,既不丢失当前首包,也不在后台循环重连。

没有 MIBO 时由 EVCC 本机建立 StartX GATT;MIBO 已连接但板端实际 BLE 桥接模式不是“旋钮增强”时,MIBO 继续负责广播增强,短时 GATT 仍由 EVCC 本机建立;只有 MIBO 已确认该模式且固件声明支持时,才由 MIBO 连接当前活动旋钮。期望模式与板端实际模式不一致时,已配对设备会显示待同步或同步失败。多个 StartX 共用 MIBO 的一条下游链路,最后操作的旋钮优先。StartX 的连接时长使用设备设置中的 1–255 秒,选择设备默认值时增强链路采用约 60 秒;MIBO 会再保留很短的释放余量。此功能不做开机常驻连接,因此长时间静置后的第一下仍由广播响应。

配对或打开设备设置也会建立短时连接;极氪灵动贴空闲约 15 秒后自动断开,StartX 可在设备设置中将“GATT 设置连接保持时间”设为 1–255 秒,或使用设备默认值(普通设置连接约 15 秒)。打开设置、开始 OTA、连接验证失败或执行低功耗/休眠时,会先释放自动化的 GATT 增强会话,避免两条链路争用同一旋钮。

“已配对设备”会列出当前预设下保存过的设备。每个设备右侧提供:

设备名称下方会同时显示 MAC、固件版本、电量和 RSSI 信号。EVCC 每次收到该设备的有效广播时都会刷新这些状态;弹窗打开期间也会实时更新。广播尚未携带有效状态时显示“未知”,不会用旧数据冒充本次测量。

StartX 旋钮还会额外显示实时“GATT 增强”状态:未开启设备级增强时显示“未启用”;增强已开启但没有启用中的相关规则时显示“等待启用的自动化规则”;规则可用但尚未操作旋钮时显示“等待操作 · 广播可用”。旋转广播触发后显示“等待旋转停止 · 广播仍可用”,最近一次有效旋转安静约半秒后再显示“正在连接 · EVCC”或“正在连接 · MIBO”;按键操作则会直接进入连接。通知链路就绪后显示“已连接”及实际接管端,链路失败或结束会显示广播回退。MIBO 期望模式尚未写入板端时还会显示“配置待同步”或“同步失败”。这里仅表示自动化的 GATT 增强链路,打开设备设置或 OTA 所用的临时维护连接不会冒充增强已连接。

  • 添加:选到当前触发器;
  • 删除:确认框会显示受影响触发器数量,规则本身保留,但设备引用会清空;
  • 测试:实时信号测试;
  • 选择器:仅 StartX 显示,直接配置这台已配对旋钮自己的功能选择器,无需先把它添加到当前触发器;
  • 设置:米家设备可修改 MAC 和 BindKey;极氪灵动贴与 StartX 旋钮可读取电量、固件版本、设备标识、PSN 和当前灯效,设置关闭/点亮/呼吸/稳定亮灯效,以及进入低功耗或硬件关机。StartX 还可读取并清空最近旋转记录、设置 RGB 颜色与开关,将 GATT 设置连接保持时间设为 1–255 秒,并用“保持当前连接”立即刷新本次连接的倒计时;“GATT 连接增强”在触发器和已配对设备设置中共享同一设备级开关。

更新极氪灵动贴或 StartX 固件

极氪灵动贴和 StartX 固件都不再打包进 EVCC APK。打开设备设置时,EVCC 会从官方服务端获取签名固件目录;选择刷写后再按需下载完整文件。极氪灵动贴当前提供官方 1.0.9 原版,StartX 提供四种可选固件:

  • 原版(官方 1.1.4):官方应用中的未修改固件,也是恢复时的默认选择。
  • 高速增强版(设备版本 1.3.0):采用约 120 ms 的稳定累计窗口和更短广播间隔,在跟手程度与每帧被扫描到的机会之间取得平衡;不增加自定义累计字段。
  • 疾速增强版(设备版本 1.3.1):在高速增强版基础上增加安全的有符号累计位置。EVCC 先按硬件序号去重,再用相邻有效位置差补回接收端漏掉的刻度;字段异常、方向不符、跨度过大或时间过久时自动退回当前包的官方步数,不会凭累计值生成额外动作。
  • rapid seamless test(设备版本 1.3.2,测试版):基于疾速增强版,只用于验证 GATT 建立期间的短暂空窗。旋钮在 GATT 已连接但操作通知尚未启用时继续尝试通过原有广播发送旋转,通知就绪后再切到 GATT。该版本尚未完成真机验证,异常时请立即刷回疾速增强版或官方原版。

四种 StartX 固件都保持官方 OTA 格式和官方事件字段,但使用不同的设备报告版本:原版为 1.1.4,高速增强版为 1.3.0,疾速增强版为 1.3.1,GATT 过渡广播测试版为 1.3.2。前三种已知版本会直接显示固件名称;当前 EVCC 会把测试版报告为“1.3.2(未识别固件)”,这是为了避免在真机验证前将其误认成正式增强版,不影响刷写或协议解析。EVCC 仍会记录最近一次成功刷写的服务端固件 ID。其他旧实验固件不会出现在服务端目录中,也不会打包进 EVCC。

点击“选择并刷写固件”或“下载并刷写”前需要车机能够访问 EVCC 服务端。固件目录带有 EVCC 签名,下载路径、设备类型、长度和 SHA-256 都受签名保护;客户端下载完成后会再次核对长度和摘要,全部通过后才建立独立 OTA 连接并开始擦除。之后依次读取写入地址、擦除固件页、按协商 MTU 分包写入、提交对应固件 CRC 并发送重启命令。进度由前台服务保持,切到其他页面时仍会继续。下载或校验失败发生在擦除前,不会改变设备现有固件。

  • 已知电量低于 30% 时禁止开始;电量未知时可以继续,但建议先确认设备电量充足。
  • 更新期间保持设备靠近车机,不要关闭蓝牙、强退 EVCC、重启车机或切断车机电源。开始擦除后没有安全取消路径。
  • 完成提示表示固件已写入且重启命令已发送。设备重新开始广播后,已配对设备列表会用广播中的版本字段确认并更新显示。
  • 在四个 StartX 版本之间切换时都会完整擦除和写入。EVCC 只显示服务端签名目录中的文件,且不能把 StartX 固件写给极氪灵动贴;设备类型、固件 ID、下载路径、长度和摘要必须同时匹配。

设备设置中的“读取最近旋转记录”是诊断操作,对应硬件的读取并清空命令。读取后设备保存的最近方向和累计值会被清除,但不会影响正常 BLE 广播控制和 EVCC 自动化中的 $ble_rotation_steps。

获取 BLE KEY(BindKey)

每个米家设备都有一个 32 位十六进制的配对密钥(BindKey),由米家云端为你的账号绑定的设备生成。EVCC 用它解密设备的加密广播,否则按键事件无法识别。

获取步骤:

  1. 用手机米家 App 正常连接设备一次(配网入账号)。设备必须出现在你的米家账号设备列表里
  2. 在 PC / Mac / Linux 上安装开源工具 Xiaomi Cloud Tokens Extractor(GitHub 搜同名项目)
  3. 运行工具:输入米家账号邮箱/手机号 + 密码 + 服务器地区(中国大陆选 cn)
  4. 工具会登录米家云端并列出你账号下所有设备,每个设备展示:
  5. 名称、MAC 地址
  6. BLE key(或叫 bindkey)—— 就是我们要的 32 位 hex 字符串
  7. 复制对应设备的 BLE key(形如 a1b2c3d4e5f6...,全长 32 字符)

安全提示:BindKey 只在本地设备有效,不等于账号密码。但仍然建议用完就关闭工具,不要泄露给他人。

配置米家设备

  1. 打开 EVCC → 自动化 → + 新建规则
  2. 触发器类型选 "BLE 设备信号"
  3. 出现的配置面板逐项填:
  4. 预设按钮:按实际型号选择“米家V5蓝牙Mesh 开关/键盘”、“米家新协议蓝牙 Mesh 开关”或“米家蓝牙Mesh旋钮”;两种八键开关的事件格式不同,不能混选。切换预设不会清空已填写的 MAC、BLE Key 等参数,可直接来回测试
  5. 学习设备:点击此按钮进入学习对话框(见下一小节)
  6. BindKey (解密密钥):粘贴刚拿到的 32 位 hex(大小写不敏感,空格会被自动忽略)
  7. 按键 ID:下拉选"任意键"或具体按键(按键 1~8,旋钮预设还有"旋转")
  8. 点击方式:单击 / 双击 / 长按 / 自定义多击
  9. 配置动作(比如"设置属性"写入空调风量)
  10. 点击"手动执行 ▶"验证动作执行正确
  11. 保存规则,引擎运行中按米家按键即可触发

EVCC 会使用统一的无过滤 BLE 扫描通道接收自动化、学习和信号测试数据,再由规则本身判断是否触发。这样可以尽量避免车机蓝牙栈提前丢弃按键广播。支持蓝牙增强的车型可在服务页使用"全量增强"改善低延迟扫描,点击后会先提示风险,建议只用于对比测试。如果车机蓝牙栈出现扫描假活,EVCC 会先自动重启 BLE 扫描;连续空扫仍无结果时,会在后台恢复蓝牙栈并重新建立扫描。此内部恢复不会触发"蓝牙开关"自动化规则。

"学习设备"——自动识别 MAC 地址

学习对话框提供两种识别模式:

模式 操作 适用
单次按压识别 打开对话框 → 保持 3 秒静止(建立基准) → 在 10 秒扫描窗口内按一次按键 → 列表选中出现的设备 环境干扰少,周围没有别的米家设备
重复触发识别 打开对话框 → 30 秒内连续按同一键 6 次以上 → 自动判定为信号最强的那个 MAC 周围米家设备多,防止误识别

识别到的设备会以"名称 · MAC · RSSI · 厂商 ID"的格式显示,点击即可自动填入 MAC 字段。

信号测试(可选但强烈建议)

规则编辑界面提供**"信号测试"**按钮:

  1. 点击后进入实时监听窗口
  2. 按一下目标按键
  3. 窗口会显示解密后的按键事件编号(1~8 / 旋转角度)和事件类型(单击 / 双击 / 长按);新协议型号还会显示长按松手,但松手事件不单独触发规则
  4. 当前预设无法识别事件时,测试窗口会自动尝试其他加密预设;如果成功,会持续显示建议改用的预设名称,但不会自动修改已保存配置
  5. 看到正确事件 = 配对成功;如果窗口显示"短 FE95 帧,非按键事件",说明车机收到了目标设备广播,但这包本身不是可触发的按键事件;如果显示"解密失败",通常是 BindKey 不匹配,需要重新从米家云端获取

StartX 功能选择器

在 StartX 触发器中选定已配对设备后,可打开“StartX 功能选择器”;也可在“已配对设备”中直接点对应旋钮的“选择器”。选择器配置跟随设备保存,多条规则共享当前功能,EVCC 重启后仍沿用上次选中的标签。两个不同 MAC 的 StartX 会各自保存标签和当前功能;同一自动化可同时引用它们,不会互相覆盖配置。屏幕上仍只显示一个功能选择器,同时操作时由最后激活选择器的旋钮接管浮窗,前一个旋钮的状态会先保存并正常结束。

新建支持功能选择器的旋钮设备时,功能选择器默认启用;已有设备明确保存的开启或关闭状态保持不变。万能旋钮首次建立对应的虚拟 StartX 设备时也会默认启用一次,之后完全按该设备自己的设置保存。

  • 触发按键可选单击、双击或长按释放;该事件仍会照常触发配置了相同按键的自动化规则。选择器已经显示时,再按一次同一触发按键会立即关闭。
  • 功能标签按行编辑,可新增、重命名、删除和调整顺序;重复标签会提示并阻止保存,仍被规则引用的标签不能删除。保存后,触发器和“StartX 旋钮功能”条件的下拉列表会重新读取最新标签。
  • 每条 StartX 触发器可选择“全部功能(可在条件中选择)”或一个指定标签,只在对应功能处于选中状态时执行。规则含有 StartX 触发器时,普通条件和条件分支会额外提供“StartX 旋钮功能”,可选择对应旋钮及当前功能;这样可以让一个“全部功能”触发器按不同功能进入不同分支。
  • 选择器打开期间,左旋/右旋只切换功能,不触发普通旋转规则;按广播中的正负累计步数移动,一包右旋 N 步就向右切换最多 N 项,左旋同理反向切换;到达第一项或最后一项后停止,不会首尾循环。
  • 单击、双击或长按释放打开后,默认从最后一次旋转起 3.5 秒消失。
  • 可调整横排/竖排、位置、卡片尺寸、整体缩放、文字字号、透明度、日夜配色和消失时间;位置、尺寸等连续参数均使用滑块。横排时可在两组标签之间留一个空行,把后续标签放到第二行;空行只控制排版,旋钮切换顺序和触发器下拉中不会多出一个功能。整体缩放会连同卡片、间距和文字一起缩放,文字字号可单独微调标签大小。预览中的浮窗可直接拖动,配置中的位置滑块会同步更新;预览开启后也可转动所选 StartX 旋钮,按累计步数模拟切换标签,期间不会执行对应的旋转自动化,也不会保存模拟选择结果。正式浮窗和预览使用同一套短促、可中断的选中项过渡,快速旋转时会直接追随最新标签,不会排队播放旧步骤。
  • 编辑器底部提供“预览”“恢复默认”和“设为默认”。设为默认只保存方向、位置、卡片尺寸、整体缩放、字号、透明度、主题和消失延迟,标签、触发按键、启用状态、换行位置和当前功能仍按设备独立保存;以后新配对且尚未配置选择器的 StartX 会自动沿用这套视觉布局。点恢复默认会把当前编辑器恢复到最近保存的布局;长按则清除自定义默认并恢复 EVCC 内置布局。

万能旋钮接管(Flyme Auto)

在支持 Flyme Auto AutoKeyServer 的车机上,可以把系统万能旋钮作为一台 StartX 旋钮交给 EVCC 自动化使用:

  1. 新建或编辑普通 APP 侧自动化,在触发器的“系统事件”分类中选择“万能旋钮接管”。它是独立系统事件,不属于 BLE 或按键分类,执行日志也直接显示“万能旋钮”,不会出现“BLE …触发”。该入口默认显示,车型云端配置可以隐藏新建入口;已经保存的触发器不会因为入口隐藏而被删除。
  2. 保持“注册旋钮回调”勾选并保存规则。打开编辑器或切换勾选状态时会立即发起或撤销临时注册,因此醒目的绿色“✓ 注册成功”及最近刷新时间会实时更新,无需退出再进入。只要包含该触发器的普通自动化处于启用状态,EVCC 启动或重新载入规则时都会自动向 AutoKeyServer 注册;停用规则、取消勾选或删除最后一个需要注册的触发器后会撤销 EVCC 的注册。
  3. 如原车 SmartButton 服务仍占用同一旋钮回调,可点“禁用 SmartButton”;需要恢复原车服务时点“启用 SmartButton”。这两个按钮需要 RootService,并只修改 SmartButton 应用状态。EVCC 会等待并按最终包状态确认结果,不再把 pm 的空标准输出误报成失败。不要禁用 AutoKeyServer,否则 EVCC 和原车旋钮分发都会失去上游服务。SmartButton 重新启用后可能再次与 EVCC 竞争回调。
  4. 在同一个触发器里直接选择单击、长按释放、旋转/左旋/右旋。点“配置功能选择器”会打开与 StartX 相同的功能选择器;万能旋钮的激活按键只提供单击或长按释放,其余标签、当前功能、布局、预览和持久化规则一致。“规则功能”可选全部功能或某个指定标签,无需再额外添加“BLE 设备信号”触发器。

接管成功后,左旋和右旋会进入 StartX 的累计刻度逻辑,短按在抬起时立即按单击分发,长按则在释放时分发;功能选择器显示期间,旋转仍优先切换功能。AutoKeyServer 只提供按下/抬起原始事件,万能旋钮不再由 EVCC 软件合成双击,旧的万能旋钮双击配置会自动回落为单击。原车长按逻辑可能让 SmartButton 浮层重新注册同一个单槽回调,EVCC 会在原车长按阈值后主动夺回并补齐可能漏掉的长按释放;SmartButton 启用或状态未知时每 5 秒刷新一次回调所有权,确认禁用后降为每 60 秒一次。AutoKeyServer 连接断开或 EVCC 回调失效时,系统上游会回到自己的后备处理,因此是否真正屏蔽默认音量仍要以同一台车机上的实际旋转测试为准。

旋转累计步数

StartX 每个广播包只执行一次规则。慢速旋转通常每个刻度一包;快速旋转可能在一包中携带多个累计刻度,EVCC 不会把它重放成多次动作,而是把带方向的总刻度放到 $ble_rotation_steps(兼容名 $ble_rotation)中。例如右旋 5 步为 5,左旋 3 步为 -3;$ble_rotation_direction 则始终只提供 1 或 -1。触发器选“旋转”时会同时接受左右旋,变量仍保留正负方向;选“左旋”或“右旋”则只接受对应方向。数值动作和 StartX 功能选择器都会使用完整累计刻度:前者适合音量、温度等连续调节,后者会在驾驶模式等离散标签中向对应方向跨过最多相同项数,并在首尾边界停止。

StartX 旋转帧通过硬件序号去重后会直接按到包节奏进入规则,不再受普通规则冷却时间阻挡;单击、双击等非旋转操作的冷却则按“规则+旋钮+操作”分别计算,同一规则中的两个旋钮不会互相挡住。本机扫描、后台唤醒、MIBO 转发、MIBO HID 和已连接 GATT 通知进入同一条有序的自动化输入通道;协议去重只丢弃同一序号或同一身份的重复副本,真实的后续动作仍逐个保留。最先到达的有效链路负责本次执行,硬件序号记录会自动过期,避免旋钮重启后首包被旧记录挡住。疾速增强版的安全累计位置也在去重后、规则分发前统一计算:第一包只建立基线,后续有效旋转可一次补回漏收步数;旧包、重复包、缺失字段和异常跳变不会推进错误状态。配合“属性调节浮窗”或“音量调节浮窗”的“按旋转步数调节”,一包累计 N 步仍只执行一次动作并准确调节 N 格。

常见问题

现象 原因
学习列表里看不到设备 按键电池太弱、距离太远、设备已被其他手机占用,先用米家 App 确认设备在线
MAC 识别到但按键不触发 BindKey 没填或填错,信号测试可快速定位
偶尔触发偶尔不触发 RSSI 太低、距离车机太远,或按键电池快耗尽
一键按下触发了多次 米家固件会发送多帧相同事件,软件已用帧序号去重;如仍多次触发,关闭"自定义多击"或延长冷却时间
不同车之间迁移规则 单独分享规则不会携带本机设备引用或 BindKey;从规则商店下载时,EVCC 会主动列出目标车机中同预设的可用设备供迁移;完整 EVCC 配置备份会保留本机设备库

设备库会自动归档已有规则中有效的“预设按钮+MAC+BindKey”组合。单独分享或导出规则时不会带出本机设备引用和密钥,但会安全携带 StartX 功能选择器的标签、顺序、样式和激活方式。从规则商店、二维码、剪贴板或文件导入包含预设 BLE 触发器的规则或规则组时,EVCC 会按预设和来源设备合并触发器,并为每组弹出本机已配对设备列表;确认本机 StartX 后,还可选择“智能合并”“覆盖”或“保留现有”。推荐的智能合并会保留本机当前功能与外观,按同名标签复用并补齐缺少的标签;覆盖会使用导入配置;保留现有只匹配已有同名功能,未匹配项需自行配置。确认后,规则改用本机设备库中的 MAC、BindKey 或 StartX / 极氪灵动贴设备引用。若某类设备没有可用候选,导入前会明确提示:可取消并先完成配对后重新导入,也可继续保存规则;继续后对应触发器保持未配置,不会误用分享者的 MAC 或密钥。无预设的普通 BLE 学习规则不需要此迁移。使用 EVCC 的完整配置备份时,设备库会随备份保留。

6.12 属性调节浮窗

“属性调节浮窗”属于属性操作,可在自动化动作、控制台组件和悬浮窗组件中使用。属性、调节方式、浮窗样式和常用外观参数都直接显示在动作编辑窗口中,无需再打开第二层全屏配置页。它先读取当前属性,再计算并写入新值;浮窗立即显示本次计算目标,后台回读只用于确认写入,车辆属性缓存暂时仍是旧值时不会把浮窗或下一格调节拉回旧值。连续调节会复用同一个临时浮窗并重新计算消失时间。

默认情况下,“属性 ID / 区域 ID”同时用于读取当前值和写入新值。如果车型把状态读取与控制写入拆成两个属性,请勾选“读写分离(写入使用不同的属性)”,保留主属性 ID 作为读取属性,再填写“写入属性 ID / 写入区域 ID”。EVCC 会严格使用这里手动配置的两组 ID,不会按属性名称自动猜测配对;例如空调温度可读取状态属性、再向对应的控制属性写入新温度。自动化动作、控制台组件和悬浮窗组件采用相同规则。

调节方式

模式 结果
直接写入 写入“值/公式”的结果,公式可使用 $current 和本次自动化变量
数值变化 当前值+调整量;正数增加,负数减少
按旋转步数调节 当前值+$ble_rotation_steps × 每步调整量;自动化动作中始终提供,没有旋转步数的本次执行按 +1 步计算

自动化中新建“属性调节浮窗”时,无论添加动作和旋钮触发器的先后顺序,都默认选中“按旋转步数调节”;已有动作仍按各自保存的模式打开。控制台组件和悬浮窗组件不显示该模式,继续使用可用的普通调节模式。

自动化动作还会显示“连续旋转写入”;它只在实际收到 StartX 或万能旋钮旋转事件时参与协调,普通控制台按钮、悬浮窗按钮和非旋转事件始终立即写入,不受此设置影响。两种策略的首个旋转包都立即计算、刷新浮窗并真实写入,等待时间默认均为 500 ms:

  • 间隔写入:持续旋转时,浮窗和逻辑目标逐包立即前进,硬件最多按所设间隔写入一次累计后的最新值;停止后仍会补写最终目标。
  • 合并写入:首包写入后,后续旋转先逐包更新浮窗与逻辑目标;从最后一个旋转包开始静默达到所设时间后,只把最终目标写入一次。

若固件在一个广播包中上报累计 N 步,本包仍只计算一次,目标值会一次前进 N 格。同一属性 ID 和区域 ID 的真实写入会串行执行;尚未完成回读确认的目标值会继续作为下一次计算基线,避免车辆属性缓存更新较慢时重复从旧值开始。

选择器样式

  • 可按“每行 属性值=显示名称”建立有序映射,例如 0=关闭、1=节能、2=运动。
  • “按映射循环切换”会根据左右方向和累计步数循环选择;当前数值不在映射中时,从最近的数值项开始。
  • “公式 / 调节模式”按上面的计算方式写值;结果命中映射时显示名称,否则显示实际计算值。
  • 可选择横排或竖排;所有卡片尺寸一致,选中项只通过主题色区分,不再改变宽度。

调节条样式

  • 必须设置数值下限和上限,写入值会限制在范围内;进度条按车辆属性的原始值计算。
  • “显示换算公式”只改变浮窗上的显示,不改变实际写入值;公式中用 x 表示原始值,还可设置单位和小数位。即使公式保持默认 x,小数位数也会作用于预览和正式浮窗,例如设为 1 时 3.00 显示为 3.0。
  • 可从控制台图标库选择调节条图标,并填写可选文字。图标和文字都设置时按“图标在前、文字在后”显示;只设置其中一个时只显示该项。
  • 默认显示图标/文字区、进度条和值,适合音量、亮度、温度等连续数值;横排和竖排分别使用水平、垂直调节条,长度和厚度设置都会实际生效。

两种样式都可设置位置、长度、厚度、整体缩放、文字字号、透明度、白天/夜间/跟随系统配色以及消失延迟,连续外观参数均使用滑块调节。整体缩放会成比例改变浮窗、内部间距、图标和文字,文字字号可在此基础上单独调整。点“预览”可边修改边查看模拟值,也可直接拖动预览浮窗,位置滑块会同步更新;再点一次关闭,预览不会读取或写入车辆。若当前自动化关联了一个或多个 StartX 旋转触发器,编辑器会列出可用旋钮,预览打开后其中任一旋钮都可按正负累计步数和所填每步调整量改变模拟值;预览期间整条规则暂停,不会触发真实属性或其他动作。调节条进度和选择器选中项都使用很短的可中断过渡:实际数值立即更新,快速旋转时画面直接追随最新目标,不会排队播放旧步骤。点“设为默认”只保存当前样式的位置、尺寸、整体缩放、文字字号、透明度、配色、方向和延迟,选择器与调节条分别保存,供以后新建动作使用;不会复制属性 ID、公式、映射、图标、文字或范围,也不会改动已有动作。属性调节条与音量调节条共用这一套调节条默认外观;属性选择器单独保存自己的默认值。StartX 功能选择器的标签、触发按键和当前功能仍按设备独立保存,其视觉布局则使用单独的 StartX 全局默认。点“恢复默认”会恢复当前样式最近保存的默认外观;长按则清除该样式的自定义默认并恢复 EVCC 内置外观,同样不会改动动作的属性、公式、映射、文字或范围。

6.13 音量调节浮窗

“音量调节浮窗”是“设置音量”的增强动作,可用于自动化、控制台组件和悬浮窗组件。它固定使用调节条样式,执行时由所选车机音量组提供真实当前值、下限和上限,因此不需要手工填写范围、显示换算公式或单位。

模式 结果
直接写入 把“目标音量”的值或公式写入所选音量组
数值变化 在当前真实音量上加所填调整量;填写 1 或 -1 可作为普通加减音量按钮
按旋转步数调节 当前音量+$ble_rotation_steps × 每步调整量;自动化动作中始终显示,无步数上下文时按 +1 步处理

自动化中新建“音量调节浮窗”同样默认选中“按旋转步数调节”,不要求先添加旋钮触发器;已有动作不会被改写。控制台和悬浮窗继续使用普通调节模式。

默认每步调整量为 1,因此 StartX 慢转一格通常调一格音量,固件在快速旋转时上报累计 N 步则一次调 N 格。每个音量组的一段连续调节中,首个动作会立即真实写入;随后 40 ms 短窗口内到达的多个相对调整会按顺序累计后合成一次写入,绝对设置以最后一次为准并继续叠加其后的增量。该协调只减少重复硬件写入,不会把真实 BLE 动作当作重复帧丢弃,最终音量步数保持一致;一个合并批次只刷新一次浮窗,避免重复闪动。动作成功后以 RootService 返回的实际音量、下限和上限更新调节条。方向、位置、长度、厚度、整体缩放、文字字号、透明度、配色和消失延迟仍可用滑块调整,也可选择控制台图标并填写可选文字;图标与文字同时存在时图标显示在前。

预览固定使用模拟音量范围,不查询或写入真实音量组。自动化关联一个或多个 StartX 旋转触发器时,编辑器会列出可用旋钮,预览期间其中任一旋钮都可按累计步数调节模拟音量,对应整条自动化会暂停;关闭预览后恢复正常触发。音量调节条与属性调节条共用默认外观:任一编辑器中“设为默认”后,另一类新动作和“恢复默认”会使用相同的位置、尺寸、方向、透明度、配色与延迟;属性选择器不受影响。调节条进度使用可被新输入立即打断的短过渡,数值和实际音量调节不会等待动画。


第七章 应用管理

7.1 分类浏览

标签 说明
全部 所有已安装应用
用户 用户安装的第三方应用
系统 系统预装应用
禁用 被禁用的应用
自启动 有自启动行为的应用
运行中 当前正在运行的应用
系统进程 查看系统服务、原生进程和应用进程的 CPU/内存占用;进入页面后每 10 秒会把 CPU 前列和内存前列快照写入运行日志,便于上传日志时一起排查;点击进程可查看命令行、可执行文件、cgroup 和状态等详情

7.2 操作

操作 说明
启动应用 选择要打开的页面;未连接根服务时,也能列出当前用户下普通应用权限允许打开的页面。受限页面仍需要相应权限
默认启动 位于“启动”旁,页面选择窗口也有同名快捷按钮;直接打开应用默认页面,无需从长列表中查找。有公开默认入口的应用无需连接根服务也可尝试打开;无可用默认入口时会显示提示
强制停止 关闭应用进程
清除数据 清除应用所有数据
卸载更新 / 卸载 覆盖更新过的系统应用先显示“卸载更新”,确认后恢复系统预装版本,影响所有用户,应用数据可能被清除;恢复完成后按钮变为“卸载”,再次操作并确认才会卸载应用。普通用户应用仍显示“卸载”(系统应用操作需相应权限)
禁用/启用 可选择只处理当前用户,或处理所有已安装该应用的用户;禁用系统应用时,常规确认后还需二次风险确认,禁用其组件也需确认风险
详情 先显示基础版本、路径、UID 等信息,再后台补充签名和 APK 大小
查看权限 查看申请的权限列表、中文说明、AppOps 状态和特殊权限
应用信息 打开系统应用信息页面

选择“所有已安装用户”时,EVCC 会逐个处理确实安装了该应用的 Android 用户。后续选择“恢复所有用户”会优先只恢复此前由 EVCC 全用户禁用操作改变的用户,避免把原本就处于禁用状态的用户意外启用;如果没有历史记录,才会按明确选择对所有已安装用户执行启用。

禁用系统应用(包括覆盖更新过的系统应用)时,先确认常规操作,再弹出“系统应用禁用 · 二次确认”,显示应用名、包名与禁用范围。禁用系统应用或其组件可能导致桌面、系统界面或车辆相关功能异常,甚至无法打开 EVCC 恢复;请仅在了解该应用用途并准备好其他恢复方式时点击“我了解风险,仍要禁用”。取消则不执行。组件管理中,点击“应用”后若包含新增禁用的系统组件,也会弹出该确认;单纯恢复启用无需二次风险确认。

“卸载更新”适用于系统保留了预装版本的应用。普通用户应用覆盖安装新版本后,系统通常不会保留可供恢复的最初安装包,因此仍按卸载应用处理。操作前会重新核对版本;如果应用在确认期间被其他工具更新或还原,需要重新选择操作并确认。

7.3 权限管理

支持 EVCC 跳转入口的第三方应用,可以通过“前往授予权限”按钮直接打开自身的权限管理窗口。 窗口显示应用名称和包名,仍由用户选择权限或点击“一键全部授予”;打开窗口不会自动授予权限。 这与 EVCC 开放 API 的应用授权相互独立。开发接入见第三方应用跳转入口。

支持跳转入口的第三方应用,也可直接打开自身的 EVCC 开放 API 授权窗口。“全部权限”预设包含实时 全量扫描、Shell 和系统写入等敏感权限,新增这些权限时须确认风险;系统写入仍需逐次在车机端确认。 已有授权不会自动扩展。

点击应用的"查看权限"可以进入权限管理弹窗。弹窗会列出普通运行时权限、权限说明、关联 AppOps 状态和特殊权限,普通权限可单独开关,也可以点击"一键全部授予"批量授予。特殊权限包含悬浮窗、无障碍、通知使用权、使用情况访问、修改系统设置、修改系统安全设置、读取系统日志、未知来源安装、所有文件访问和勿扰模式访问等。

无障碍服务会单独显示在"无障碍服务"分栏。开启后 EVCC 会通过 RootService 同步写入所有已安装用户并打开无障碍总开关,不会通过清空列表或重启无障碍服务来强制刷新;勾选"持久化保护"后,如果该应用的无障碍服务被系统或其他工具关闭,EVCC 会自动补回。点击"一键全部授予"时,如果该应用声明了无障碍服务,会自动开启持久化保护。

如果只想临时开启无障碍服务,不要勾选"持久化保护";手动关闭无障碍开关时,EVCC 会同时取消该应用的持久化保护。

7.4 搜索

应用列表支持按应用名称或包名搜索;系统进程页支持按进程名、完整命令、用户或 PID 搜索。

7.4.1 下载站

支持 EVCC 跳转入口的第三方应用,可以通过“前往更新”按钮直接打开当前商店站点中的自身详情, 再由用户点击更新或安装。未在当前站点找到时,可切换站点后重试。

顶部“下载站”位于“应用”和“文件”之间,向已激活用户开放。线路按钮左侧可切换“中国站”和“国际站”,两站有各自的首页、分类和软件。中文、繁体中文默认进入中国站,其他语言默认进入国际站;手动选站会保留,在设置中更换语言时重新按语言选择站点。一级文件夹显示为顶部分类,子文件夹以卡片进入,左上第一格可返回上一级。应用卡片居中显示图标、名称以及“版本号 · 文件大小”,下方单独一行显示“XXX 次下载”。下载次数直接从主服务端获取,1000 次起以 K 显示(如 1K、1.5K),不依赖下载线路。长版本号会省略显示,文件大小和下载次数保留完整;日期仅在详情中显示。向下滚动自动加载更多内容。

  • “排行榜”固定在“首页”后面、其他分类前面,按当前站点所有分类中已发布应用的累计下载次数从高到低展示,最多 100 个应用,图标角标显示排名。展示位、普通文件和未上架投稿不参与;跨站同步应用沿用同一应用的下载量,EVCC 仍按设置中的更新通道显示。搜索名称或包名只筛选本次排行榜,保留原排名;进入排行榜或点击刷新时更新,浏览期间顺序保持稳定。这里的下载次数是完成下载的任务数,同一任务重复上报只计一次,不代表下载人数或安装成功次数。
  • 横竖屏均将顶部区域分为两行:第一行完整宽度用于分类,分类较多时可横向滑动;第二行靠右提供站点、线路选择、分享上传、内容商店、刷新和任务入口,点击“内容商店”可直接进入统一内容商店。较窄窗口中工具按钮收起部分文字、保留图标,长按可查看用途;空间仍不足时可横向滑动工具区。进入时进行一次小流量测速,最多 10 秒、合计最多 1 MiB,不阻塞浏览。自动模式优选线路;手动选择会保留,测速不覆盖选择。
  • 按本机实际安装状态显示“安装、已安装、更新”。点击已安装应用的卡片,在详情中可下载、覆盖安装、打开或卸载;有更新时显示“更新”。卸载需要确认,会删除所有 Android 用户的该应用及其数据;完成后显示卸载结果,失败时请检查服务连接和卸载权限后重试。不提供 EVCC 自身和系统应用的卸载入口。
  • “下载”保存到当前用户内部存储的 Download 文件夹;“安装”下载后进入安装队列。普通文件仅提供下载。按钮直接显示进度,同时最多下载三个应用,安装依次进行。
  • 任务窗口按进行中、已完成分组,下载和分享上传会显示进度条、百分比、已传大小、速度及当前阶段。任务全部结束后,底部按钮改为“关闭”。
  • “后台继续”关闭弹窗但保留任务;切换页面或进入后台不会停止下载。任务窗口可暂停、继续和取消;安装开始后不能取消。进程关闭或车机重启后任务暂停,由用户手动继续。
  • 系统要求存储、安装权限时按提示授权;无法直接安装时进入系统安装流程,文件仍会保留。
  • EVCC 根据设置中的更新通道只显示一个名为“EVCC”的条目,每次进入时获取最新信息,不自动下载安装。自身安装等待其他任务完成并先备份配置;商店历史版本仅处理 EVCC 主应用,不同时降级 Mini。
  • 旧下载站导入内容继续使用原链接,不参与双线路分发。顶部菜单宽屏自动安排宽度,窄屏保留间距并允许横向滚动。

包名与安装引导/授权:应用详情显示完整包名,长按可复制。作者联系文案和引导图片显示在软件介绍上方,文案可长按选择、复制,图片可点击查看。未安装应用配置了联系文案或图片时,点击“安装”先打开详情;无需授权或已获得授权的用户可在详情中继续安装,不会再次弹出联系引导。已安装应用更新、覆盖安装或打开时不重复弹出联系引导;没有配置联系内容的应用保持直接安装。部分应用需要由应用提供者单独授权;点击下载或安装时,如未获得授权,会显示应用信息、授权说明及引导图片,不提供下载、安装或更新按钮,取得授权后点击“重新检查授权”。网络异常时会提示暂时无法确认,请恢复网络后重试。已安装应用仍可按原有方式打开或卸载,撤销授权不会自动卸载应用。授权可长期有效或设置到期时间,设备完成迁移后保留原授权和到期时间。

历史版本:普通下载默认选择线上最新版。应用详情中的“历史版本”按版本倒序列出正式发布且未删除的安装包,展示版本号、更新时间和大小,可选择下载或安装;当前最新版显示在顶部,没有更早版本时会提示。已创建的任务固定使用选择时的文件,发布新版、刷新或继续下载不会换成新版。需要单独授权的应用,其历史版本也需要相同授权。

EVCC 历史版本默认选中设置里的更新通道,可在弹窗中切换“稳定版 / 最新版”并加载更多版本;查看、下载或安装另一通道不会改变全局更新通道。所选通道没有可用版本时会显示空状态,不自动切换通道。这里只提供原下载站两个公开通道中通过校验的主 APK,不包括“老版本归档”目录。

选择低于本机已安装版本的 APK 时,会先确认目标版本,再尝试保留数据覆盖安装。系统可能拒绝降级或签名不匹配的安装,失败时显示原因并保留 APK,不自动卸载应用。EVCC 自身安装继续使用配置备份和进程恢复流程;系统是否允许覆盖安装,以安装结果为准。

安装包格式:应用商店支持 APK、APKS、APKM 和 XAPK,分包容器作为一个完整版本保留、下载和校验。安装时按本机 Android 版本、CPU 架构、屏幕密度和语言选择分包,并核对包名、版本、签名及依赖;同包不同版本或不同签名不能组合安装。不支持 AAB、加密容器和依赖 Play 在线资源交付的安装包。旧版 EVCC 不显示分包容器,升级后可查看。

XAPK 的 OBB 资源先复制到当前 Android 用户的应用资源目录,再安装 APK;本地“组合安装”沿用文件菜单的多用户安装行为。安装前检查实际写入权限及空间,失败会恢复被替换的资源,并保留原安装包。服务或 ADB 无法写入资源目录时会提示失败,不自动卸载应用或忽略资源继续安装。系统交互安装仅用于不含 OBB 的包,需确认系统安装窗口;进程恢复后按实际已安装文件核对结果。

分享上传:点击线路右侧“分享上传”,在文件选择窗口选择 APK、APKS、APKM 或 XAPK,然后认真填写用途、适用车型及注意事项,确认后上传到待审核区。上传支持后台继续、暂停、续传和取消。默认每设备单文件最大 1 GiB,每日最多 10 次有效提交、总计 2 GiB,最多 10 个待审核版本,同时最多上传 3 个文件;具体额度以后台设置为准。

应用与展示位名称:后台的名称输入框均支持按回车指定换行位置,保存、发布并同步后保留手动换行。商店卡片最多显示两行,详情可查看完整名称。

展示位与“去了解”:应用商店也可展示硬件产品、小程序或服务。展示位卡片在名称下显示作者填写的类型和查看次数,按钮显示“去了解”。名称可在后台按回车指定换行位置,卡片最多显示两行。详情持续可见且应用处于前台超过 5 秒才计一次查看;提前关闭、切到后台或打开其他窗口都会重新计时,每次打开详情最多计一次,重复提交不会重复增加。点击卡片或按钮后可查看介绍、作者联系文案、二维码和购买或了解链接;空内容不显示。文案可选择复制,二维码可点击放大,链接可打开或复制。设备没有可用浏览器时,可复制链接后在手机或浏览器中打开;二维码加载失败可重试,介绍和链接仍可查看。展示位不显示软件版本、文件大小、下载次数或安装状态,不申请安装授权,也不创建下载或安装任务。旧版客户端隐藏展示位,仍可正常浏览原有软件和文件。

管理员在下载站点击“新增展示位”,在“展示内容”中填写名称、图标、简介、作者联系文案、一个可选的 HTTP/HTTPS 链接和一张可选二维码。微信小程序请上传二维码,不能将 #小程序://… 等小程序分享文本填入网页链接。名称必填且可手动换行;“类型”自由填写一行文字(例如微信小程序、DIY 硬件、网站或教程),不选预设,留空时不显示固定“展示位”标签。其余内容可选;创建和保存不会自动发布,发布并同步后才对车机生效。二维码使用 PNG/JPEG/WebP 图片,上传限制沿用现有图片规则;图片上传不要求先保存文字,上传完成后保留当前输入,修改过的文字仍需点击“保存草稿”。展示位同样支持分类、排序、搜索和跨站同步;管理员、协作者和代理可维护已有展示位。管理员可提供独立开发者管理链接,开发者可维护自己的展示内容、发布和下架,不能删除或调整站点、分类、顺序。展示位没有 APK 上传、安装授权和软件历史版本入口,创建后不能改成软件类型。

有投稿后会出现最后一个分类“我的上传”,显示待审核、待上架、已上架、未上架或已下架。忽略的投稿显示未上架,审核通过后仍需管理人员发布和同步才会实际上架。自己分享且当前已上架的应用可以提交更新,包名必须相同,更新仍需审核。新版本待审核时旧版继续可用。应用详情展示分享者车型和统一内容商店署名,未署名时显示设备 ID。

云端管理:管理员、协作者、代理共用独立下载站菜单。管理页面先选择中国站或国际站,分别管理首页、分类和软件;原有内容属于中国站。应用属性中可修改所属站点,并重新选择目标分类。“全部发布”只确认当前站点的待发布内容,“一键同步”统一处理两站已确认的改动。两站共用下载线路,相同安装包共用存储文件,不会因同时上架而占用两份安装包空间。点击卡片可发布、下架、删除或更新;更新直接选择替换 APK,保留名称、简介、位置、排序、人工图标和统计。应用侧栏的“下载 APK”可将当前已解析版本保存到电脑,包括尚未发布的版本;待配置应用没有安装包时按钮不可用。同版本不同文件可以替换,低版本或签名不兼容的文件不能作为覆盖更新。

版本管理:进入应用的独立管理页,选择“版本管理”,可查看当前草稿、线上版本和历史版本的发布状态。普通应用最多保留当前版本加 10 个历史版本;未发布的旧草稿也占名额,但不会出现在车机历史列表中。更新 APK 成功后自动保留旧包,仍需发布、同步才对用户生效。同一文件重试不重复占名额,同版本不同文件作为独立构建保留。满额时上传前提示“历史版本已达上限(10 个),请删除部分历史版本后再更新。”,不自动删除最旧版本。

管理员、协作者、代理以及本应用开发者可单个或批量删除历史版本,确认框列出版本和数量;当前草稿、线上最新版和正在发布的版本不可删除。删除立即释放名额并停止签发该版本的新下载、安装凭证,原有凭证在有效期内可能继续使用。普通文件经过至少 30 分钟保留期且不再被其他版本、快照或任务引用后才清理;删除历史只同步历史清单,不顺带发布其他草稿。EVCC 历史版本不限数量,删除只从商店移除,原下载站文件保留且再次扫描不会重新上架。

跨站同步:在原应用的内容管理中勾选“同步到中国站”或“同步到国际站”,保存、发布并同步后,应用会同时出现在另一站。另一站可独立调整分类和顺序,但名称、简介、图标、安装包和版本均跟随原站,不能在另一站单独修改或更新。两站共用下载权限、下载统计、历史版本和名额,不复制安装包;原站发布新版后另一站同步更新。在原站取消勾选并发布同步,可仅移除另一站入口;原应用下架或删除后,两站均移除。需要移动原应用所属站点时,先关闭跨站同步。

系统安装需要确认时,任务会显示“点击安装,通过系统安装界面继续”,不会阻塞其他应用进入安装准备;实际安装仍逐个执行。取消任务后剩余队列自动继续,等待安装的任务可再次点击唤起处理。EVCC 自身更新仍等待其他任务完成。

多用户车机安装或更新应用后,EVCC 会检查目标账号下是否已安装;系统已更新安装包但账号下仍未安装时,会自动补注册并再次核验。补注册失败或实际安装版本不符时,任务明确显示“安装失败”,通过通知和提示说明结果,并保留安装包供重试;不会仅因系统返回成功而显示“已安装”。签名不一致等明确的安装错误也会直接说明原因。

单应用管理:点击应用图标仍打开右侧内容面板;点击“管理”进入独立页面,包含应用信息、版本管理、安装引导/授权、开发者管理和操作记录。独立页面右侧也可点击“下载 APK”保存当前版本;应用开发者可在自己的管理页面使用此按钮。管理员、协作者、代理都可填写“作者联系文案”、上传引导图片;“需授权”勾选框位于联系文案下方,勾选时要求取得有效授权,不勾选时联系内容仅供安装前了解作者或软件,用户可以继续安装。引导和授权设置即时生效,无需发布和同步。可在“添加授权”中按完整 VIN 或设备 ID 查找已激活设备;多设备匹配时必须选择具体设备,授权只绑定所选设备。授权名单可搜索、查看有效/已到期/已撤销记录、调整有效期或撤销。确认授权及修改有效期弹窗提供“1 个月、1 年、3 年、永久”快捷选择,时长从当前时间起算,也可以手动调整。授权调整立即影响新凭证申请;已有短期凭证按签发时的有效期结束,已经开始的传输可以完成。原旧站公开链接不受这项入口授权限制。

有有效授权用户的应用,协作者和代理禁止删除;管理员需再次确认应用名称及受影响人数。仅有到期或撤销记录时按普通应用删除。关闭“需授权”不清空授权名单,也不能绕过有效授权的删除保护。删除限制同样适用于批量删除和审核投稿时的关联删除。

开发者管理链接:仅管理员可生成、重置或撤销,每个应用独立一个链接,管理员可随时在“开发者管理”中查看、复制当前链接。有效链接对应的应用在“应用与分类”卡片上显示“已开启开发者管理”,右侧内容管理区显示“该应用已开启开发者自主管理链接,请不要轻易修改应用信息。”;撤销链接后不再显示这两处提醒。请妥善保留,不向无关人员分享。开发者无需另注册账号,可以编辑本应用信息、上传及更新 APK、发布/下架、配置授权要求并管理授权用户;不能删除应用,也不能调整站点、分类和顺序。页面默认按浏览器语言使用中文或英文,可手动切换并记住选择。重置或撤销会使旧链接和其管理会话失效。

管理员可创建“未配置应用”,指定站点和分类后把链接提供给开发者。首次 APK 上传会保留这个应用的身份;开发者补齐信息、解析完成后确认发布。开发者发布或下架只同步本应用,不带上其他应用的草稿;失败保留原可用版本。应用顶部显示实际已上架/已下架状态、更新日期和最近操作;待发布、待同步及同步中有独立提示。开发者与后台使用同一份内容与授权配置,保存后后台即可查看;返回管理页面会获取最新内容,并保留当前未保存的输入。开发者点击“发布并同步”后,页面先显示操作提交状态,提交成功后由服务器后台处理,可关闭页面,重新打开同一管理链接查看结果。任务区显示排队、准备发布、线路文件校验和同步、确认结果等阶段,以及已处理文件数量与等待时长;文件数量表示已完成的校验或同步项,不代表剩余时间。全部启用线路完成后才切换线上版本;失败显示具体错误,可点击“重试同步”。APK 从电脑上传期间仍需浏览器保持运行,已上传文件的解析与发布同步在后台继续。后台管理人员仍按发布后同步操作,“同步本应用”仅同步本应用已确认的版本。首次上架前,所用分类需已同步到车机。

下载站后台在左侧栏“下载站”下展开三个二级目录:“管理页面”用于应用、分类、上传与上架审核;“任务记录”查看上传、同步和空间清理的进度、结果及失败重试;“操作记录”查看操作日志和发布历史。任务记录、操作日志和发布历史以表格显示,支持搜索、排序和分页;任务可在操作列重试或继续上传。切换菜单保留当前分类和未保存的编辑内容,不会中断上传;刷新页面后仍停留在当前菜单。

“全部发布”确认所有符合条件的新内容和更改,不会重新发布已下架应用。编辑、发布、下架和删除先保存;点击“一键同步”才统一更新 NAS/R2 及车机可见内容。按钮上的数量表示尚未同步生效的应用、分类或线路变更,未发布草稿不计入;同步完成后数量清零。同步期间可继续编辑,后续修改留待下一批;同步失败保留旧版。没有修改时不产生定期内容同步任务,统计变化也不触发同步。“检查并修复线路文件”用于手动检查缺失文件。线路二仅保存正式分发内容;草稿和待审核投稿先保存在上传线路。已保留的历史版本不会因新版同步而清理;删除历史后,文件至少保留 30 分钟,并在没有其他版本、快照或任务引用时再定向清理。清理时间和结果可在“任务记录”中查看。

上传文件仍使用独立批量弹窗,可多选或拖入,逐个暂停、继续、取消;浏览器支持保留文件时刷新自动续传,否则重新选择原文件继续。上传完成、识别完成、发布和同步是不同步骤。

上架审核:入口显示待审核数量,可查看待审核、已上架、已忽略。选择“上架”时指定分类;“更新上架”选择包名匹配的原应用。审核通过后成为待发布内容,需发布和同步。采用他人上传的新版时,原分享者归属保留,后台记录本次贡献者。

删除投稿时,“确认删除”连同源文件处理;若车机当前使用这个投稿版本,下次同步撤回后清理无其他引用的文件。“只删记录”只移除审核页记录,不影响应用、文件及分享归属。未采用投稿可直接连源文件删除。

7.5 文件管理页

"文件"页用于浏览车机本地文件,也可连接常用远程存储。默认路径为 /sdcard;本地文件操作依赖 RootService,远程连接在 RootService 未连接时也可使用。

常用操作:

操作 说明
切换视图 列表 / 网格两种显示方式
排序与隐藏文件 支持按名称、大小、日期、类型排序,可显示或隐藏点号文件
搜索 在当前目录下搜索文件名
多选 批量复制、剪切、删除
长按本地文件/文件夹 打开、查看图片、播放视频/音频、以文本打开、安装 APK、复制/剪切、重命名、修改权限/所有者、解压文件、压缩为 tar.gz 或 zip、查看属性
底部工具栏 新建文件/文件夹、粘贴、打开当前目录终端、扫码输入、收藏目录

媒体预览与安装器:本地图片可直接查看,视频和音频可直接播放;如果路径是 /data/media/<user> 等普通进程无法读取的位置,EVCC 会先通过 RootService 临时复制到缓存再打开。从其他应用打开 APK、APKS、APKM 或 XAPK 文件时,也可以选择内置的“EVCC 安装器”。本地文件菜单支持安装这些格式;多选同一应用的主 APK 和分包后,点击“组合安装”。安装器也提供“选择安装包”,可一次选择完整容器或多个 APK。安装页会先读取并显示应用图标、应用名称、包名、版本名称/版本号、APK 文件名和大小;核对后点“确认安装”才会开始安装,点“取消”则直接退出。无法解析出有效应用信息的文件不会进入安装流程。

U 盘应用安装提醒:EVCC 启动时以及插入 U 盘后,会检查 U 盘根目录中的 APK;子文件夹中的 APK 不会显示。具备应用管理、文件管理权限且安装服务可用时,弹窗列出文件名和大小。默认不勾选,可逐个选择或全选,再点“安装所选应用”。EVCC 在后台时,有悬浮窗权限即可在当前应用上方提醒,不需要切回 EVCC;没有悬浮窗权限时,回到 EVCC 主界面且 U 盘仍连接后再显示。屏幕熄灭时不会主动亮屏提醒。

文件菜单安装和从其他软件转入的“EVCC 安装器”也会核验目标账号的安装状态。多用户覆盖更新后,缺少安装注册的账号会自动补注册;补注册后仍不可用时显示“安装失败”和原因,不会显示安装成功。

领克 900(L946)安装后图标未显示:使用原车 Flyme 桌面时,文件菜单和内置安装器成功安装带应用菜单入口的应用后,会询问是否刷新桌面。如果主屏应用菜单没有出现图标,可在安全驻车后选择“已驻车,刷新桌面”;图标已正常显示时选择“暂不刷新”即可。刷新会重启原车桌面,主副屏桌面可能短暂闪烁,不卸载应用、不清除桌面数据,也不改变应用的安装账号范围。EVCC 不会自动刷新,刷新未能确认也不会把已成功的安装改成失败。此提示不接入应用商店、EVCC 自身或 Mini 更新、系统交互安装,也不影响其他车型;它不是对原车桌面图标是否缺失的自动检测。

安装窗口显示正在准备或安装的应用、当前安装序号,以及每项的等待、成功或失败状态;失败会说明原因,完成后可选择失败项重试。未选择的应用不会安装。成功安装过且文件未变化的项目,下次不再提醒。若选择了 EVCC 更新包,会在其他应用处理后最后更新。

  • 稍后提醒:本次连接不再提醒,下一次重新插入时提醒;按返回键关闭也按此处理。设备重启后会重新检查已插入的 U 盘。
  • 忽略:记住当前 U 盘中的 APK 清单,清单不变不再提醒;新增、删除、改名,或文件大小、修改时间变化后,重新插入时再检查。不会读取整个文件来判断内容变化。
  • 拔出 U 盘:自动关闭该盘的安装窗口,并停止尚未开始的安装。已经交给系统安装的应用可能仍会完成,拔盘不会撤销已经完成的安装。

安装能力受车机权限、剩余空间、应用版本和签名等条件影响,以逐项显示的实际结果为准。强制停止 EVCC 或车机未发送插拔事件时,可能需要重新打开 EVCC 才能检查。

远程连接:默认提供"EVCC 软件下载站"只读入口,可浏览最新版、稳定版和其他第三方软件,并直接下载或安装 APK;它只展示下载站允许公开的目录,不支持上传、新建或删除。自定义远程连接支持 123 网盘、WebDAV、FTP 和飞牛分享链接;这些远程目录可浏览、下载到本地、上传本地文件、新建文件夹和删除项目;远程媒体文件会先临时下载到缓存再预览,远程到远程复制暂不支持。本地 APK 和软件下载站会按需显示应用真实图标;远程网盘能快速读取安装包内容时也会异步显示,无法读取时保留通用图标,不会仅为图标下载完整安装包。

文件页可以直接修改系统和应用目录。删除、改权限、改所有者前先确认路径,系统分区和应用私有目录误操作可能导致应用或车机异常。


第八章 脚本与 Frida

顶部"脚本"页包含两个子页:Frida 和 Lua 脚本。Frida 用于修改运行中应用的行为;Lua 脚本用于编写常驻自动化逻辑、读取车辆属性、调用动作 API 和调试复杂流程。

如果只是简单的"某条件触发某动作",优先使用第六章的自动化规则;如果需要循环、状态机、多源联动或较复杂的数据处理,再使用 Lua 脚本。

Frida 是动态代码注入工具,用于修改运行中应用的行为。

⚠️ 使用前提:需先部署 Frida,并在"连接"页打开 Frida 开关。未开启时,依赖 Frida 的功能会提示处理;连接页 Frida 开关不会自动下载部署,未部署时会提示先到"脚本"页手动部署。 车型建议:龙鹰车型建议直接部署,稳定性较好;高通、亿咖通车型若非必要不建议部署,可能会引发系统黑屏重启。

8.1 Frida 部署/卸载

  • 版本选择:页面不再提供手动版本选择,也不会在部署前显示车型配置指定的版本名。EVCC 会按当前车型配置决定下一次部署下载的 Frida 文件;如果暂未获取到车型配置,会使用兼容版本。3.3.0 的标准 Frida 17 配置使用 17.23.3,并通过独立文件下载;旧版 EVCC 继续使用原 Frida 17 文件。车型指定的 Frida 16 或定制组件仍按原配置处理。
  • 部署:将 Frida 注入组件推送到设备(首次部署会从网络下载对应文件,需联网)。点击部署后会先弹出确认提示;设置向导中点击部署时会先尝试同步车型配置,短时间内仍未获取到时会使用兼容版本。也可从"设置"页的 Frida 卡片点击"部署"进入同一流程。已部署的组件会按当前车型配置校验;升级到 3.3.0 后,标准 Frida 17 配置需要更新至 17.23.3。如果提示发现新版本或组件未部署,请重新部署;原版本下载文件继续保留。部署成功后才会显示实际探测到的 Frida 版本,探测偶发失败时会自动重试。EVCC 本体升级后,如果 Frida 开关已开启且检测到远端 Frida 文件更新,会提示重新部署;选择"不再提醒"后,同一大小差异不会重复提醒,远端文件再次变化时才会再次提示。
  • 开关:仅启用已经部署好的 Frida。打开时如检测到 Frida 未部署,会提示先到"脚本"页部署,不会在后台自动下载;关闭开关会停止当前 Frida hook 和后台注入进程。
  • 卸载:停止 Frida,并删除当前已部署的本地文件;下次部署会重新按车型配置下载。
  • 部署成功并开启 Frida 开关后,顶部状态指示变绿;未部署或开关未打开时,所有依赖 Frida 的脚本和服务功能都不会执行

8.2 使用流程

  1. 确保 Frida 已部署,并在"连接"页打开 Frida 开关(绿色状态)
  2. 在"目标进程"中选择要注入的应用包名(支持从已安装列表选或手动输入)
  3. 从脚本列表选择预置脚本,或在自定义区编写 JavaScript
  4. 点击"执行",脚本注入到目标进程
  5. 输出面板实时显示脚本 console.log 输出
  6. 结束时点击"停止"或"停止全部"

8.3 预置脚本分类

分类 用途
EAS EAS Framework 鉴权相关 hook(常用于领克车型绕过音乐/投屏鉴权限制)
CAR 车辆系统相关 hook(Car Service、VHAL 代理层)
System 系统级 hook(PackageManager、ActivityManager 等)
HUD 导航应用 HUD 相关 hook(夜间强制、焦点修复、元素隐藏、HUD 夜间底色)
DPI 逐应用动态修改显示 DPI
其他 按功能分组的脚本集合

预置脚本经过社区验证可安全使用。自定义脚本运行前请先在非关键进程上小范围验证。

8.4 常见使用场景

场景 对应脚本分类 说明
领克音乐桥接鉴权放行 EAS 部署后"音乐桥接—领克模式"才能正常工作
领克仪表车模颜色不跟随 服务页实验区 请在服务页实验区开启「仪表车模颜色」自动应用;脚本页不再提供独立热修复入口
HUD 投屏强制夜间配色 HUD 让导航应用在投屏时使用深色背景,减少眩光
逐应用缩放界面 DPI 配合服务页"DPI 调节"使用,让特定 App 放大/缩小显示
绕过系统签名校验 System 让非原厂签名的应用可调用部分系统能力
EX5 临时解除安装限制 安全 适用于 EX5/E245 海外版。在“安全”分类执行“EX5 解除安装限制”,看到准备完成的输出后,可在本次开机中安装其他正常签名应用;车机或系统服务重启后自动恢复原校验

8.5 会话管理

  • 可同时运行多个注入会话(不同目标进程互不影响)
  • "停止全部"一键停止所有活跃会话
  • 列表显示当前活跃会话的目标进程、脚本名、运行时长
  • 目标进程如果重启,会话会自动断开;开启"守护模式"后会话可自动重连
  • “EX5 解除安装限制”作用于关键系统服务。为避免中途卸载 Hook 造成系统异常,执行后会保留注入,不能通过“停止”或“停止全部”单独卸载;需要恢复安装校验时重启车机

8.6 自定义脚本

  • 在自定义区直接编写 JavaScript(标准 Frida API)
  • 可保存到本地脚本目录,命名后下次从"自定义"列表直接选取
  • 新下载的 Frida 商店脚本统一保存在“Frida → 云端 → 已下载”;以前的本地自定义文件继续保留

8.7 脚本商店

点击"脚本商店"可浏览 Lua / Frida 社区脚本;Lua 下载到本地脚本目录,Frida 新下载内容统一进入“云端 → 已下载”;也可以上传本地脚本,普通上传审核通过后其他用户可见,勾选「隐私上传」时不会公开上架,但分享码仍可用于定向分享。脚本商店直接嵌入统一内容商店,顶部同样可切换到其他内容商店,或输入分享码下载规则、模板、组件、皮肤、脚本、配置里的任意一种内容;脚本未审核上架或设为隐私上传时,分享码仍可用于定向分享,上传者本人也可以在"我的上传"里直接下载到本机。脚本列表和脚本商店自己的"我的上传"都会显示分享码;自己的上传卡片还会显示已上架 / 待审核 / 隐私上传 / 已驳回状态,以及服务端启用时生成的 AI 风险审核意见。脚本上传仍可填写版本、权限等专用信息,署名直接使用内容商店顶部保存的"我的署名"。管理员后台有"内容审阅"和"全部内容"总览,可跨规则、模板、组件、皮肤、脚本和配置批量通过、上架、标记优质、删除并修正名称或车型;全部内容及各分类列表还可点击编辑说明和署名,空白处可直接补填,说明支持多行。后台新增规则或上传脚本时可直接填写署名。脚本详情页保留源码审阅和 AI 风险详情。上传前请确认源码里没有密钥、token、私人坐标等敏感信息。

8.7.1 Frida 的“云端”分类

在“脚本 → Frida → 云端”可以直接浏览脚本商店已上架的 Frida 脚本。支持搜索、分页加载和手动刷新;进入时更新目录,离线时显示已缓存内容,不持续轮询或自动下载全部脚本。

  • 云端目录:显示名称、版本、大小、作者和兼容信息;“详情”可查看完整说明、适用车型与源码。
  • 下载 / 有更新:确认后保存文件,核对版本、大小和完整性。更新失败保留旧版本;运行中的脚本不会被替换。
  • 已下载:统一查看从云端、脚本商店和分享码新下载的 Frida 脚本。重复下载不重复创建,后台改名仍保持关联。以前保存的自定义文件继续保留。
  • 载入编辑器:把已下载的源码载入当前页面的编辑区,不自动执行、不自动选择目标,也不自动开启自启动。
  • 兼容信息:区分 Frida 16 / 17、适用设备型号和最低 EVCC 版本。不兼容时提示原因;未标注兼容性的脚本会先提醒确认,不默认认为兼容所有版本。
  • 下架状态:刷新“已下载”时更新可用状态;已经保存的文件保留,目录不再提供该条目的新下载。隐私投稿和分享码继续沿用既有分享权限。

云端浏览和下载同时要求正版激活、内容商店权限与 Frida 功能权限。后台“脚本商店”支持直接上传文件、编辑说明和兼容范围、更新已有脚本;保存形成待发布内容,点击上架或发布更新后才生效,旧版在此期间继续可用。适用车型与分享者车型分别保存,更新不会改变原分享归属和累计统计。通过“全部内容”或脚本列表修改脚本名称、车型、说明、署名,或更新统一署名时,也会保存为待发布内容;单条内容的署名编辑保留原上传归属。

8.8 Lua 脚本与 Web IDE

Lua 脚本适合表达自动化规则难以描述的逻辑,例如累计计数、复杂条件组合、循环执行、同时监听多个属性或把规则、悬浮窗按钮和脚本互相联动。

入口: - 脚本页切到"Lua 脚本"子页,可新建、导入剪贴板、选择脚本目录、运行/停止脚本,也可点击"触发"执行脚本内注册的手动触发逻辑 - 点击"Web IDE"可用手机或电脑浏览器打开在线编辑器,实时保存、运行、停止并查看日志 - 点击"脚本商店"可浏览、下载或上传社区脚本

脚本目录:默认 /sdcard/Download/EVCC/scripts/{lua,frida}/,可在页面中选择其他可写目录。

完整 API、触发器和脚本商店安全说明见附录 B。


第九章 公式与变量系统

EVCC 内置完整的表达式计算引擎,可在多个场景中使用。

9.1 可以在哪里使用公式

位置 说明 x 变量
控制台 INFO 卡片 — 运算公式 转换显示值 ✅ 当前属性值
悬浮窗/状态栏信息项 — 转换表达式 转换显示值 ✅ 当前属性值
EVCC mini 仪表页 — 属性运算公式 转换显示值 ✅ 当前属性值
自动化 — 变量值字段 计算变量值 ❌
自动化 — 动作值/命令字段 计算动作参数 ❌
自动化 — BLE 数据 Payload 计算广播数据 ❌
模板块 {表达式} 嵌入文本中的计算 ✅ 需传入

除时间/日期卡片外,控制台、悬浮窗、状态栏、EVCC mini、自动化变量值和动作参数都使用同一套表达式语法:数值计算、if() 条件、字符串拼接、$变量 和 $prop(...) 的写法保持一致。

注意:控制台时间/日期卡片的"运算公式"字段是 Java SimpleDateFormat 日期格式(如 HH:mm),不是数学表达式。

9.2 变量引用语法

语法 含义 示例
$变量名 引用全局变量 $speed * 3.6
${变量名} 同上,花括号避免歧义 ${voltage}V
$prop(属性ID) 读取车辆属性实时值 $prop(289410048)
$prop(属性ID, 区域ID) 指定区域读取属性 $prop(289410048, 1)
$prop(属性ID, 区域ID)[下标] 读取数组或结构体 Data 中的指定项;不写区域时默认为 0 $prop(577765445)[2]

数组下标从 0 开始,因此 [2] 表示第三项。支持 10, 20, 120、[10, 20, 120] 和 Data=[10, 20, 120] 等车辆属性显示形式,取出的数值仍可继续参与运算,例如 round($prop(577765445)[2])。数组越界、空值或无法确定唯一数组字段时视为无有效值,不会自动用 0 代替。

变量替换在公式求值之前执行。

9.3 内置变量

无需创建,直接可用:

变量 值 示例
$time 当前时间 HH:mm:ss 14:30:25
$date 当前日期 yyyy-MM-dd 2026-03-23
$datetime 日期+时间 2026-03-23 14:30:25
$timestamp Unix 时间戳(毫秒) 1711186225000
$hour 当前小时 (00-23) 14
$minute 当前分钟 (00-59) 30
$bpm 当前音乐 BPM;无音乐、未匹配或正在查询时为 0 128.5
$music_state 当前音乐状态:playing、paused_or_stopped 或 none playing
$gps_available 是否有最近定位缓存,1 有、0 无 1
$gps_lat / $latitude 最近定位纬度 30.123456
$gps_lng / $gps_lon / $gps_long / $longitude 最近定位经度 120.123456
$gps_altitude 海拔(米,无海拔时为空) 12.3
$gps_accuracy 定位精度(米,无精度时为空) 8
$gps_speed 定位速度(米/秒,无速度时为空) 0
$gps_bearing 定位方向角(度,无方向时为空) 180
$gps_provider 定位来源 gps
$gps_time 定位时间戳(毫秒) 1711186225000
$gps_age_ms 定位缓存距离当前的毫秒数 2500

GPS 变量读取系统最近一次定位缓存,不主动发起定位;如果车机暂时没有定位,$gps_available 为 0,其他 GPS 值为空字符串。

音乐变量来自当前音乐转发状态。暂停时 $bpm 保留当前歌曲数值;切歌后尚未匹配、匹配失败或音乐状态消失时为 0。$bpm 和 $music_state 是只读变量,可用于公式、变量判断、变量变化触发器和 Lua,但不能由动作或脚本改写。

上下文变量(仅在特定场景可用):

变量 场景 含义
$current SET_PROPERTY 动作 当前属性的实时值
$ble_button BLE 按键触发 触发的按键编号 (1-14)
$ble_rotation_steps / $ble_rotation StartX 旋钮触发 本次有效旋转刻度:右旋为正、左旋为负;疾速增强版可用安全累计位置补回中间漏收刻度
$ble_rotation_direction StartX 旋钮触发 仅表示方向:右旋 1、左旋 -1

9.4 算术运算符

运算符 含义 示例 结果
+ 加法 5 + 3 8
- 减法 10 - 4 6
* 乘法 6 * 7 42
/ 除法 22 / 7 3.142857
% 取模 10 % 3 1
^ 幂运算(右结合) 2 ^ 10 1024
() 括号 (2 + 3) * 4 20

9.5 比较运算符

返回 1(真)或 0(假),主要配合 if() 使用:

运算符 含义
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于

9.6 完整函数列表

取整与数值

函数 参数 说明 示例
round(x) 1 四舍五入 round(3.7) → 4
floor(x) 1 向下取整(向负无穷) floor(-3.2) → -4
ceil(x) 1 向上取整 ceil(3.1) → 4
trunc(x) 1 向零截断 trunc(-3.7) → -3
abs(x) 1 绝对值 abs(-5) → 5
sign(x) 1 符号(-1/0/1) sign(-42) → -1
frac(x) 1 小数部分 frac(3.75) → 0.75
min(a, b) 2 较小值 min(x, 100)
max(a, b) 2 较大值 max(x, 0)
clamp(x, lo, hi) 3 限定范围 clamp(x, 0, 255)

trunc vs floor:正数相同,负数不同。trunc(-3.7) = -3,floor(-3.7) = -4

clamp 详解:值小于 lo 返回 lo,大于 hi 返回 hi,否则原样返回。 clamp(150, 0, 100) → 100,clamp(-10, 0, 100) → 0,clamp(50, 0, 100) → 50

幂与对数

函数 说明 示例
sqrt(x) 平方根 sqrt(16) → 4
pow(x, y) x 的 y 次方 pow(2, 10) → 1024
hypot(a, b) √(a²+b²) hypot(3, 4) → 5
log(x) 常用对数 (log₁₀) log(100) → 2
ln(x) 自然对数 (logₑ) ln(2.718) ≈ 1

三角函数(弧度制)

函数 说明
sin(x), cos(x), tan(x) 正弦、余弦、正切
asin(x), acos(x), atan(x) 反正弦、反余弦、反正切
atan2(y, x) 二参数反正切
rad(度) 角度转弧度。rad(180) → π
deg(弧度) 弧度转角度。deg(π) → 180

示例:sin(rad(45)) ≈ 0.707

条件与逻辑

函数 说明 示例
if(条件, 真值, 假值) 条件判断 if(x > 100, 100, x)
and(a, b) 逻辑与 and(x > 0, x < 100)
or(a, b) 逻辑或 or(x == 1, x == 3)
not(a) 逻辑非 not(x == 0)
concat(a, b, ...) 拼接文本 concat("电量 ", x, "%")

复合条件:

if(and(x >= 0, x <= 100), x, 0)         ← x 在 0~100 内返回 x,否则返回 0
if(or(x < -40, x > 215), -999, x)       ← 超范围返回 -999

比较函数

功能同比较运算符,在模板块 {...} 中更方便使用:

函数 等价
eq(a, b) a == b
neq(a, b) a != b
gt(a, b) a > b
lt(a, b) a < b
gte(a, b) a >= b
lte(a, b) a <= b

位运算

操作数先截断为整数 (Long)。在处理 VHAL 属性位域标志时非常实用。

函数 说明 示例
band(a, b) 按位 AND band(x, 255) 取低 8 位
bor(a, b) 按位 OR bor(x, 4) 置位 bit2
bxor(a, b) 按位 XOR bxor(x, 255) 翻转低 8 位
bnot(a) 按位 NOT bnot(0) → -1
shl(a, n) 左移 n 位 shl(1, 3) → 8
shr(a, n) 右移 n 位 shr(255, 4) → 15
bit(x, n) 取第 n 位 bit(x, 3) 取 bit3 (0 或 1)

常见用法:

bit(x, 0)                → 最低位(开关状态)
band(x, 255)             → 低 8 位字节
shr(x, 8)                → 取高位字节(16 位值)
band(shr(x, 4), 15)      → 取 bit4~bit7(高半字节)

映射与插值

函数 说明 示例
map(x, in_min, in_max, out_min, out_max) 线性映射 map(x, 0, 4095, 0, 100)
lerp(a, b, t) 线性插值 a+(b-a)*t lerp(0, 100, 0.3) → 30

map 常用场景:

map(x, 0, 255, -40, 215)     → 字节值映射为温度 (°C)
map(x, 0, 4095, 0, 100)      → 12 位 ADC 映射为百分比
map(x, 0, 1023, 0, 5)        → 10 位 ADC 映射为电压 (V)

格式化指令

指令 说明
pad(表达式, 位数) 前导补零 + 溢出保护

pad 是格式化指令而非数学函数,行为: 1. 计算内层表达式 2. 截断为整数 3. 限制在 0 ~ 10^位数-1 范围内(溢出保护) 4. 前导零填充到指定位数

表达式 x=42 x=1234 x=99999
pad(x, 4) 0042 1234 9999
pad(x, 6) 000042 001234 099999

嵌套使用:

pad(clamp(x, 0, 9999), 4)      → 先限制范围再补零
pad(band(x, 255), 3)            → 取低 8 位后补零

9.7 字符串表达式与模板块

字符串表达式

表达式里可以直接输出文字,但文字必须用英文单引号或双引号包起来。只要 + 的任一边是字符串,+ 就表示拼接文本。

"电量 " + x + "%"                         → x=80 时输出:电量 80%
if($a > 0, "东经 " + $a, "西经 " + abs($a)) → $a=-3 时输出:西经 3
concat("温度 ", round(x * 0.1), "°C")      → 拼接多个文本/数字片段

不要把文字裸写在 if() 分支里,下面这种写法是不合法的:

if($a > 0, 东经$a, 西经abs($a))             ← 错误:东经/西经没有加引号

如果整段都是普通文字、ADB 命令、包名、日期等,EVCC 会原样保留,不会强行当公式解析。只有看起来像公式的内容才会进入表达式计算。

模板块语法

在自动化变量值中,用 {表达式} 在文本中嵌入计算结果,大括号外的文本原样保留:

温度: {x * 0.1}°C              → x=234 时输出:温度: 23.4°C
亮度: {$brightness * 100 / 255}%
时间: {$gps_time * 0.001}秒
计数器: {$counter + 1}

${变量名} 是变量引用(前面有 $),{表达式} 是模板块(前面没有 $),两者不冲突。

不要把混合文本写成 时间: $gps_time*0.001秒。这种写法只会替换 $gps_time,不会在文本中单独计算 *0.001;请用上面的 {...} 模板块。

9.8 运算符优先级

从高到低: 1. () 括号、函数调用 2. ^ 幂运算(右结合:2^3^2 = 512) 3. * / % 4. + - 5. > < >= <= == !=(最低)

x + 1 > y * 2 等价于 (x + 1) > (y * 2)

9.9 实用示例集

数值转换

x * 0.1                          → 原始值缩放 (1234 → 123.4)
(x - 32) * 5 / 9                 → 华氏度转摄氏度
x / 3.6                          → km/h 转 m/s
map(x, 0, 255, -40, 215)         → 字节值映射为温度
x - 273                          → 开尔文转摄氏度

条件显示

if(x > 100, 100, x)              → 超过100封顶
if(x == 0, -1, 1000 / x)         → 避免除零
if(and(x >= 18, x <= 65), 1, 0)  → 判断是否在范围内
max(x, 0)                        → 负值显示为 0

VHAL 位域提取

bit(x, 0)                        → 提取最低位 (开关状态)
band(x, 255)                     → 取低 8 位
band(shr(x, 8), 255)             → 取第 2 个字节
if(bit(x, 5) == 1, 1, 0)         → 检查 bit5 是否置位

格式化

pad(x, 4)                        → 42 → "0042"
pad(clamp(x, 0, 9999), 4)        → 限制范围 + 补零

跨属性引用

$prop(289410048) * 0.1            → 引用其他属性并缩放
x + $prop(289410049)              → 当前值 + 另一属性值
hypot(x, $prop(289410049))        → 两个属性的向量合成

自动化变量计算

$speed * 3.6                      → m/s 转 km/h
clamp($current + $ble_rotation, 0, 255)  → 旋钮增减亮度,限 0~255
round($prop(123) / 216 / 10) * 10        → 四舍五入到十位
if($hour >= 22, 1, if($hour < 6, 1, 0))  → 判断是否深夜
if($a > 0, "东经 " + $a, "西经 " + abs($a))  → 按正负值输出方向文字

9.10 注意事项

  1. Hex 数据安全:BLE 广播等的 hex 数据(如 AA BB 01 02)不会被公式引擎误处理
  2. 数据类型:所有计算使用 64 位浮点数 (Double);位运算时截断为 Long
  3. 文字要加引号:公式中出现固定文字时请写 "文本" 或 '文本';裸写中文/英文词不会被当作字符串
  4. 数值映射顺序:新版数值映射规则会先计算公式,再按顺序匹配;未命中且没有"直接成立/兜底"时显示原始或公式处理后的数值
  5. 跨属性依赖自动刷新:使用 $prop(id) 时,被引用属性变化会自动刷新当前卡片
  6. 时间卡片:时间类型卡片的"运算公式"是日期格式(HH:mm),不是数学表达式

第十章 设置

设置页左侧为设置项,右侧为运行日志,可分别滚动查看。横屏时左侧占 40%、右侧占 60%;竖屏时两侧各占一半,切换横竖屏后自动调整。

10.1 开机自启动 & 保活

  • 开机自启:车机启动后自动拉起 EVCC。该选项依赖"系统白名单"(见 10.6),未写入白名单时自启可能被系统杀掉
  • 保活服务:EVCC 开启前台通知常驻,避免系统内存回收。STR 防护、远程控制自启、自动化引擎自启都由保活服务承载

v3.3.0 调整普通保活的电源管理:不再持有永久 CPU 唤醒锁,并补充 STRMODE 广播参数的诊断记录。广播接收、唤醒恢复和时钟差兜底沿用原有行为,不因参数缺失、类型或值不同而过滤通知。原有前台服务、自启动、故障自愈、自动重连及用户操作流程继续运行,不在车辆准备休眠时主动清理后台任务;用户开启的 STR 防护仍按原配置工作。

本次尝试解决部分车型可疑的不进入深度休眠问题,实车效果仍需停车对照验证。如果该版本导致 EVCC 无法在后台及深度休眠状态保活,请联系开发者说明,并提供车型、系统版本、发生时间和日志。

关闭保活后,其他依赖后台持续运行的功能(STR、远程控制、自动化)也会失效。

10.1.1 安全密码

设置页的"设置向导"下方提供 "设置密码" 和 "密码范围" 两个按钮。

  • 设置密码:可设置、修改或清除数字安全密码。设置和修改时需要输入两次确认;修改和清除前需要先输入当前密码。所有密码输入弹窗都会显示内置数字键盘,不需要调出系统输入法。
  • 密码范围:可选择进入 EVCC 主界面时需要密码,或选择进入某些一级菜单时需要密码。也可以同时选择多个一级菜单。
  • 免输入间隔:默认 60 分钟,可设置 1-2880 分钟,范围配置弹窗同样提供数字键盘。一次输入正确后,在倒计时结束前再次进入受保护范围不需要重复输入;EVCC 应用重启后倒计时仍会保留。

该密码只用于防止误操作,不是强安全加密。清除 EVCC 应用数据或重装后,安全密码和范围配置会一起失效。

10.2 自动连接开关

开关 说明
RootService 自动连接 Root 权限执行入口
ADB 自动启动 ADB 连接
gRPC 自动连接 VHAL gRPC 车辆属性服务
APVP 自动连接 APVP 信号源
AIDL 自动连接 AIDL 属性源
CAPI 自动连接 CAPI 属性源
AdaptAPI 自动选择兼容版本并连接 AdaptAPI 属性源;默认关闭
SOA 连接独立的 SOA 属性源;默认关闭,显示规则见 1.3
自动化 自动启动自动化引擎
Frida 启用已部署的 Frida;未部署时提示先到脚本页部署

高级功能开启时自动联动依赖项。如开启"自动化"会自动开启 RootService、ADB、gRPC。关闭上游开关(如 RootService)会自动把依赖它的下游开关一起关。

ADB Shell 状态:所有连接模式的第一行固定显示“ADB Shell”,第二行显示连接地址、端口和当前用户身份。普通模式与直连模式显示实际检测的连接地址;加密自动连接模式显示本次发现的端口,尚未确认时会标注“配置值,实际端口待确认”。

  • 已连接 · uid=2000(shell):当前 ADB 使用普通 shell 用户。
  • 已连接 · uid=0(root):当前 ADB 使用 root 用户。
  • 通道可达 · 身份未确认:端口可连接,但尚未通过 ADB 读取到用户身份;不能据此判断已获得 root。
  • 通道不可达:当前未能连接到 ADB 端口。

身份来自实际 ADB 会话,与 RootService 卡片显示的用户分别核验。设置页停留期间会定期更新,修改连接配置或关闭 ADB 开关后会清除旧身份;读取用户身份的命令不会申请提权或重启 ADB。

ADB 调试选项:连续点击“ADB Shell”标题 5 次可打开连接配置。“自动调整 SELinux 为宽松”默认开启,对普通 TCP ADB 和无线 ADB 都生效。Root 提权尝试结束后(包括关闭自动 Root 或提权失败的情况),先读取当前状态,仅在严格模式下尝试调整并确认结果。系统不允许调整时继续使用当前权限;关闭此项只停止后续自动调整,不会主动恢复严格模式。“恢复默认”会重新开启此项。

连接配置中的“TLS 无线调试模式”原名为“加密通道模式”。仅勾选这一项时,保留原有的 TLS 连接与自动授权方式;未勾选直连时自动发现本机调试端口,勾选直连时连接填写的调试端口。

启用 TLS 后才可勾选下方同样式的“请求无线调试配对”。两项都启用并保存后,ADB Shell 卡片的开关前会出现“请求配对”按钮;点击才发起配对流程,不会因保存配置、启动应用或打开 ADB 开关而反复要求配对。关闭 TLS 会同时取消请求配对选项,并隐藏按钮。

点击“请求配对”后先尝试用现有密钥连接;若当前密钥仍受车机信任,会直接连接而不再要求配对码。首次授权时,在系统开发者选项的“无线调试”中打开“使用配对码配对设备”,保持该页面打开(同机操作可使用分屏),在 EVCC 填写其配对端口和六位配对码;调试端口来自无线调试主页,通常可自动发现,也可手动填写。配对端口与日常调试端口分别填写,发现列表只用于选择当前配置设备的服务。系统未提供配对页面或未启用配对服务时,EVCC 无法仅通过弹出确认框完成 TLS 配对。

此配对方式不依赖已运行的 RootService,也不自动向车机写入授权公钥。TLS 配对记录本身保存信任,通常没有单独的“永久信任”勾选项;后续复用 EVCC 保存的同一套密钥。系统撤销或遗忘授权、清除 EVCC 数据或卸载导致密钥丢失后,需要重新配对。配对成功与调试连接分别确认,只有实际读取到 ADB 用户身份才会报告已连接;成功配对不会自动取得 root。仅取消“请求无线调试配对”不会删除已保存的密钥或系统配对记录。

10.3 Root、Remount 与 Shizuku

  • Root:控制 EVCC 获取 Root 能力的自动流程。普通模式会执行 adb root 获取 Root Shell;采用 RootService 提权流程的车型则按当前提权方式拉起 RootService。银河 A7 / E5、P171-A1 及设置向导选择"其它龙鹰通用"的车型会自动发送必要的 Root 握手;如果系统返回需要 vpwd 鉴权,EVCC 会自动补发握手并重试,不需要手动填写 Root 密码;部分 E22H 车型会在请求 Root 前自动完成必要的系统权限开关准备
  • Remount:自动执行 adb remount 挂载系统分区为可写。默认关闭,普通启动和保活不会自动执行;仅在需要修改系统配置时手动打开
  • Shizuku授权:默认关闭。勾选后,RootService 就绪时 EVCC 会通过 RootService 当前的 UID、SELinux 上下文和能力启动已安装的 Shizuku。RootService 权限发生变化,或 Shizuku 进程不再匹配时会重新授权;绿色状态灯表示继承校验通过,红色表示未安装、启动失败或权限不匹配。关闭开关只停止 EVCC 的自动管理,不会停止用户自行运行的 Shizuku;该高权限开关也不会随配置备份恢复。请只在 Shizuku 中授权可信应用
  • Shizuku 下载:从 Shizuku 官方 Releases 下载正式版 APK 并安装,首次至少打开一次。EVCC 只负责启动已安装的官方 Shizuku,不会自动下载、安装或替换应用
  • 内核提权:出现在 Root / Remount 下方,包含 “ADB 内核提权” 和 “自建通道提权(实验)” 两个按钮。设置向导选择“高通 8295 通用”时默认显示,也可由云端车型适配强制开启或隐藏;两个按钮始终跟随同一显隐配置且不能同时执行。两条路线都会先显示高风险确认,再单独执行并展示进度与结果,不会打包或上传系统诊断。ADB 按钮沿用原有精确内核匹配流程;自建通道按钮由 EVCC 应用直接连接车机本地通道,不依赖 ADB,也不会失败后回退到 ADB,按与 ADB 路线相同的 uname -r + uname -v 内核身份匹配独立载荷,并另外核对本地执行通道的 UID 与 SELinux 运行域。无破坏测试载荷只会显示测试完成,不能显示为提权成功。已下载载荷与认证信息会保存在各自独立、按内核身份划分的应用私有目录,每次执行前优先联网检查更新或撤回;仅在网络中断、连接超时或服务器暂时不可用时,才允许重新通过内核身份及完整性校验后使用对应路线的本地旧载荷。服务器明确返回未匹配或拒绝时不会离线回退。上传系统诊断时选择一并提权仍固定使用 ADB 路线;自建通道只允许从设置页手动触发,不自启动、不持久开启

写入系统白名单、AVM 限速解除 / 恢复、蓝牙增强 / 恢复等明确会修改系统配置的操作,会在执行时按需准备系统分区写入权限,不需要长期打开 Remount。蓝牙全量增强会改动更多原厂扫描路径,可能影响蓝牙稳定性,建议只用于对比测试。Remount 会让系统分区不再被 OTA 认可,建议只在安装或调试完单次后关闭。

10.4 RootService 操作

RootService 连接成功后,状态卡会显示当前 UID、PID、版本和 SELinux 所在域(例如 kernel、shell、su 或 init),便于确认服务实际运行的权限环境。

状态卡右侧的 “运行域” 胶囊按钮用于选择 RootService 的 SELinux 运行域:

  • 自动(推荐):普通 ADB、无线 ADB、旧版 GMW 和 Telnet 启动时跟随启动来源;ADB 内核提权和自建通道提权启动时自动使用 shell 域。这是日常使用的默认选项
  • 跟随来源 / shell / su / kernel / init / 自定义:全部属于实验选项。选择后会二次提示风险;SELinux 域不是简单的权限高低,切换后可能失去 Android、车辆、Binder 或其他系统服务能力
  • RootService 正在运行时,EVCC 会先用真实运行环境验证目标域,再替换旧进程;预检、认证、UID 或实际域不符合要求时会保留或尝试恢复原服务。内核提权流程正在保持 RootService 时只保存选择,等下次启动再应用
  • 手动实验域只要能够认证、保持 UID 0 且实际域匹配,就会保留运行;能力或系统服务不足时状态卡会显示“实验模式 / 能力受限”和具体原因,不会假报为完全正常
  • 运行域选项只保存在当前车机,不随 EVCC 配置备份、云配置或配置包迁移。自定义域必须填写完整 SELinux 上下文,错误或危险格式会被拒绝

内核提权卡片的 “ADB 内核提权” 左侧有 “提权调试” 按钮;显示内核提权卡片的设备都可以打开该弹窗。弹窗会检查 RootService 的实际 UID;不是 UID 0 时会显示红字提醒。可保存关闭应用商店校验、永久开启 TCP ADB 及端口、自定义命令。点击 “手动触发” 会先保存当前填写内容,再通过 UID 0 的 RootService 执行所选项目;系统属性会回读核对,弹窗中逐项显示成功、已符合设置或失败原因。未取得 UID 0 时不会执行。设置向导选择“高通 8295 通用”时,RootService 新进程取得 UID 0 后仍会按已保存配置自动执行;非 8295 方案可手动执行。

自定义命令每行一条,不需要添加 adb shell。命令不会检查当前状态;手动触发时执行一次,在 8295 方案下也会在每个新的 UID 0 RootService 进程启动后按顺序自动执行一次;RootService 客户端重复连接不会重复自动执行。此入口具备较高权限,只应填写已经确认安全且可重复执行的车机内部命令。

操作 说明
连接 连接到已运行的 RootService
断开 断开连接
启动 ADB 通过 RootService 启动 ADB(无需先经过应用管家)
刷新状态 检查连接状态
终止进程 终止 RootService 进程(下次有需要时会自动重启)

测试按钮(用来验证 Root 权限是否真的生效):

按钮 动作
Ping 测试 RPC 往返一次,看连通性
亮度闪烁 屏幕亮度快速变化 3 次
字体缩放 系统字体短暂放大再恢复
反色测试 全屏反色一秒再恢复

任何一个能成功 = Root 权限正常。

10.5 VHAL gRPC 调试

操作 说明
连接 / 断开 手动切换 gRPC 连接
获取所有属性配置 从 VHAL 拉取完整属性定义表,同步到本地缓存
全量推送 主动请求一次全部属性当前值
手动写入属性 输入属性 ID、区域 ID、值,直接写入(绕过控制台和自动化)

适合验证"属性能不能写"以及"写入后车辆如何响应"。属性写入有风险,不清楚含义的属性不要盲写。

10.6 系统白名单

让 EVCC 在 FlymeAuto 的保活和权限系统里获得"系统级应用"待遇,不会被内存清理误杀。

  • 写入白名单:一键写入 → 重启车机生效;执行时会按需准备系统分区写入权限
  • 恢复白名单:移除 EVCC,还原系统默认;执行时会按需准备系统分区写入权限;如果备份文件缺失,会尽量直接删除 EVCC 写入的白名单条目

什么时候该写白名单:用到开机自启、长期保活、STR 防护、自动化引擎常驻时必写;只是偶尔用控制台写属性可以不写。

10.7 配置备份、还原与缓存清理

设置页的"配置备份"区域提供自动备份设置和四个操作入口。自动备份默认开启,默认每 24 小时生成一次并保留 7 天;EVCC 启动或重新回到前台时会检查是否已经到期,到期就立即补备份,未到期则只按剩余时间安排下一次,不要求在固定时刻运行。可以调整开关、备份间隔(小时)和保留天数。

手动备份与自动备份完全分开:手动备份继续保存为 Download/EVCC/backups/EVCC_backup_*.zip,不会被自动删除;自动备份保存为 Download/EVCC/backups/auto/EVCC_auto_backup_*.zip,只清理其中超过所设保留天数的自动备份。还原列表会用“手动/自动”标记两类记录。

按钮 作用
备份全部配置 生成 EVCC_backup_*.zip,保存到 Download/EVCC/backups。备份内容只包含本地用户配置,例如控制台、自动化、悬浮窗、投屏、音乐桥接设置、主题和皮肤预设、常用连接参数、MIBO 详细设置、BLE 广播定义、自定义 Frida 脚本等
还原全部配置 从手动与自动备份记录中选择备份包还原;旧版本保存在 Download/EVCC 或 Download 根目录的备份包也会继续识别。还原后需要重启应用才能完全生效
清除缓存 清理云端配置缓存、商店清单、历史运行状态、临时文件和封面/TTS 等缓存,同时保留用户配置;本机 Frida 已部署版本和部署状态会保留
配置商店 打开内容商店里的配置商店,可上传或下载一组可复用配置

MIBO 备份会保留总开关、设备地址、连接方向、延时连接与跨端互联避让策略、机器人 BLE MAC、完整 BLE 桥接参数、最近硬件类型、按硬件类型保存的仪表与数据配置、页面偏好、媒体规则、宠物选择、全局宠物成长主账本和 Recovery 网络设置;板端页面目录、资源索引和调试日志会在重新连接后从 MIBO 读取,不会写入备份。Recovery 网络、EVA、远程连接等设置可能包含密码或访问凭据,请妥善保管备份文件,不要公开分享。

备份和还原不会恢复授权状态、云端车型与界面配置、商店及资源包缓存、VIN 缓存、更新检查时间、音乐桥接的上次歌曲状态、Frida 部署状态等可重新获取或仅对当前设备有效的数据。网络屏自定义背景、自动化自定义音频等二进制素材也不会写入配置备份,还原后需要重新选择。遇到升级后界面异常、旧配置导致行为异常、缓存疑似污染时,可以先点击"清除缓存",再按提示重启应用。

配置商店更适合把一组可复用配置分享给其他用户,例如某车型地图投屏参数、主屏地图美化参数、整套控制台 + 自动化、或一套脚本和服务页参数。它不是完整备份还原:上传和下载时都能勾选具体配置项,选中的内容覆盖生效,未选中或配置包没有包含的本机配置会继续保留。服务页配置会尽量按服务页功能板块拆分,例如地图投屏和主屏地图美化可以分开选择。配置包上传时先勾选要打包的内容,点击"上传配置包"后再填写配置名称和说明;可勾选「隐私上传」让配置包不进入公开审核/上架流程,只通过分享码分享;署名直接使用内容商店顶部保存的"我的署名"。如果当前车型云端配置隐藏了某个服务功能,对应服务配置也不会出现在配置包上传选项中。服务端管理员可在内容审阅页打开配置详情,查看完整配置包内容和 AI 风险审核意见后再决定是否上架。

保养模式(v3.1.7)

入口在设置菜单中“清除缓存”右侧,配置商店移动到下面一行。

  1. 点击“保养模式”,使用内置数字键盘设置 6~8 位数字密码,再次输入确认。密码可包含开头的 0。
  2. 勾选要临时禁用的其他用户应用;需要全部选择时可勾选“全选用户应用”。若已安装咪咕视频,开启时会提醒并临时禁用;EVCC mini 也会暂停。关键系统应用不能选择。
  3. 查看 8 位数字离线恢复码,拍照保存在车机外,勾选“我已拍照保存恢复码”。忘记密码时可凭恢复码退出。
  4. 核对影响清单后点击“开启保养模式”。桌面入口变为“咪咕视频”的名称和图标,EVCC 的窗口、自动化和后台功能暂停;系统应用详情仍可能显示 EVCC。
  5. 保养结束后点击备用图标,使用数字键盘输入密码并确认;也可切换“使用恢复码”。取消只关闭弹窗。
  6. 验证成功后先解除本用户的保养限制并恢复 EVCC,再恢复本次禁用的应用和相关设置。恢复期间可以先打开 EVCC;打开或重启 EVCC 后会继续恢复剩余项目。原本已禁用的应用不会被误启用,也不会自动打开所有恢复的应用。

密码和恢复码均可离线使用。连续输入错误 5 次后,每次尝试需间隔 30 秒。恢复码使用后失效,再次开启时需保存新码。数字键盘提供删除和确认按钮,不依赖车机输入法。

启用了无障碍服务的普通用户应用也可以选择。退出时会恢复本次临时禁用影响到的无障碍服务设置,保留其他应用当前的设置;已卸载应用或已移除的服务不会重新添加。

保养期间重启或休眠不会恢复普通功能。Tailcat 作为独立远程连接服务会继续运行,方便保养期间进行远程协助和处理退出异常。退出后的恢复连接中断时会自动重连,单次恢复最多重连 2 次;权限不足或仍未完成的项目会保留记录,可在“保养模式”中重试。当前或上次日志上传会附带保养恢复过程,方便排查哪些应用或设置尚未恢复。已设置的系统显示等持久设置不会批量撤销,保养期间错过的自动化不会补执行。

请在开启保养模式的车机用户下退出;其他用户的应用状态也会按记录恢复。若提示部分增强功能无法安全暂停,请先重启车机再尝试。清除 EVCC 数据或卸载前必须先退出保养模式,密码、恢复码和恢复记录不随配置备份迁移。

10.8 日志上传

遇到 Bug 时,上传日志包给开发者排查:

  1. 在"问题描述"框简要描述复现步骤(越具体越快定位)
  2. 点击 "上传当前日志" 或 "上传上次日志"(后者是本次启动之前的那次运行)
  3. 上传成功后弹窗会显示日志报告二维码,用手机扫码即可查看本次报告
  4. 报告页点击“在 AI 助手中继续提问”,会打开 EVCC AI 助手并自动关联本次报告与日志

普通日志上传会同时附带系统状态摘要,包含电量、内存、存储、网络、显示、温度、权限、SELinux、启动和基础系统设置等信息,方便开发者先判断车机环境是否异常。

系统诊断日志也会附带系统状态摘要。上传当前日志或系统诊断日志时,EVCC 会尝试读取车机保存的 OTA 任务信息;能读取时仅管理员可在日志详情的“OTA 信息”中查看文件概要、下载链接和 preDataJson.json 原文,不会出现在总诊断分享链接或用户报告中。读取不到时仍会正常上传日志;上传上次日志不采集当前 OTA 信息。

手动上传当前日志、上次日志或系统诊断日志成功后,报告页会显示设备与上传基本信息、AI 分析结果、可下载的属性数据和功能状态概要。AI 尚未完成时页面会自动刷新;报告页只展示整理后的结果,不会展示 LogCollector、系统 logcat、RootService、CP、Frida 或系统诊断包中的原始日志内容。点击“在 AI 助手中继续提问”后,助手会自动关联该次报告,并可结合服务端保存的日志继续回答原因、影响范围和验证步骤;原始日志仍不会直接显示在页面或聊天记录中。二维码和复制出的报告链接可直接打开,请只分享给需要协助排查的人。

如果需要排查黑屏、系统重启、桌面突然重载等系统级问题,且当前车型已开放诊断入口,可以点击 "上传系统诊断日志"。点击后会先选择故障类型(闪退、黑屏、严重卡顿或其他),也可以补充发生时间和操作场景。EVCC 会抓取最近约 15 分钟的系统日志、DropBox、ANR、tombstone、pstore/ramoops、关键 dumpsys、进程状态、重启原因、RootService Shell 审计,以及车机已有的系统异常、启动/休眠恢复、窗口跟踪、受限内存转储、网络、MCU/QNX/NFS、原厂缓存和部分地图/互联应用日志目录(存在时会自动打包)。如果该车型由云端开启了诊断探针,EVCC 会先运行云端选定的探针,再把探针结果并入同一份系统诊断日志;云端自动探针上传和用户手动点击"上传系统诊断日志"走的是同一套打包上传流程。选择"探针 5"时,诊断包会附带当前车机可读取的车辆服务 APK 和适配 API/Car JAR 等车型适配资料,缺失或无法读取的可选文件会记录原因并继续。探针 6 的高风险确认框可选择 "确认并执行提权测试" 或 "仅收集诊断":前者会在收集诊断的同时执行通用内核提权(与设置页「内核提权」共用云端精确匹配、载荷更新检查和断网认证缓存流程,失败后可在同一次开机中再次手动执行);后者不会运行主动验证或提权载荷,只会通过普通 ADB shell 尝试读取上次测试遗留的日志并加入诊断包。读取失败不会阻止普通诊断,车机上的残留文件也不会被删除。也可在设置页单独使用「内核提权」,无需上传诊断。探针 7 只允许从车机上的系统诊断入口手动运行,云端配置只能选择该探针,自动探针和远程诊断不会执行它。确认框可选择 "确认读取并写入" 或 "仅执行只读";写入模式会让 7 个任务相互独立地测试 PKIService,先读取再分别尝试写入密码 55555555 对应的 DebugKeyHash、E06DebugKeyHash、IVC_C038 材料,并读取 OTA、DHU/AndroidKeyStore、SWK 槽及全部 Get 接口。该操作可能改变工程认证或造成相关安全功能异常,只应用于已授权测试设备。只读模式会执行相同读取但跳过三项写入。返回的密钥、证书和私钥正文不会保存,结果只记录状态、长度、SHA-256 指纹和预期材料比对;Probe 7 固定使用轻量诊断包,不采集完整系统 logcat 或原厂日志目录。诊断包保存到 Download/EVCC/logs/system_diagnostic,内容较多时会自动分为多个压缩包;正式上传前会提示总大小、分卷数量和保存目录,用户确认后才会上传给开发者,取消上传也会保留本地文件。上传弹窗会分别显示"收集诊断日志"和"上传诊断日志"两段进度,并展示当前步骤、等待时间和收集结果;收集或上传过程中可点击“后台继续”隐藏进度窗口,任务仍会继续,需要确认上传时仍会再次弹出确认。这个按钮不要求先打开 Debug 模式;当前车型未开放诊断入口时,EVCC 也不会持续运行对应的后台系统日志采集。

打开 Debug 模式时会先选择模式: - 普通 Debug:增加 EVCC 自身调试日志,适合排查普通功能问题 - 深度抓取:连续记录系统日志,用于黑屏/系统重启等偶发问题;之后点击"上传系统诊断日志"会优先附带深度抓取到的日志

设置页底部的 "RootService Shell 保护(实验)" 仅在对应车型由云端适配开放时显示。开关默认开启,用于降低短时间多条 Shell 指令叠加造成的系统服务压力;诊断和安装等长任务会走独立通道,不会长时间阻塞普通操作。

日志包含: - LogCollector 全部应用日志 - 已开启 MIBO DEBUG 模式时,EVCC 会在“上传当前日志”前尝试拉取板端最新增量,并附加已同步的 MIBO 当前运行日志;“上传上次日志”不包含这一项 - 最近主进程 logcat 输出 - 系统状态摘要(电量、内存、存储、网络、显示、温度、权限、SELinux、启动状态等) - 系统诊断压缩包(手动上传系统诊断日志时包含) - RootService 日志 - CP (dashcastd) 日志 - Frida 注入/守护日志(新日志保存到 Download/EVCC/logs/frida,旧目录日志也会兼容收集) - EVCC mini 进程日志(运行时) - 诊断快照(已连接服务、当前属性缓存等) - 设备信息(型号、Android 版本、EVCC 版本)

隐私提醒:日志会记录属性 ID 和值,不会记录账号密码、位置经纬度。如果你担心某些值敏感,可以用文本编辑器提前脱敏再上传。

历史系统诊断压缩包不会因为关闭日志面板而删除。需要释放空间时,可建立手动自动化,选择“EVCC 功能 → 诊断日志 → 清理日志文件”。该动作需要 root,只清理当前用户的历史诊断 ZIP;E245 还会按固定清单清理已停止采集器的旧原厂日志,不操作云控服务。EVCC 实时日志、最近 10 分钟的文件、配置和未确认转储保留。每次最多 5 秒、20000 项,不扫描全盘或压缩文件;正在采集或上传系统诊断时跳过。Toast 显示实际删除的文件大小“已清理 X.XXG 文件”(1024³ 字节为 1G),删除不可恢复。详细边界见自动化使用手册。

10.9 调试模式

打开时可选择普通 Debug 或深度抓取。普通 Debug 会显示更多 DEBUG 级别日志;深度抓取会持续记录系统日志,便于黑屏或系统重启后上传最近 15 分钟诊断包。诊断结束后建议关闭,以免产生额外日志文件。

10.10 版本更新

标准版、简洁版及功能包的使用版本选择位于左上角 EVCC/设备信息 → 切换版本,操作说明见“1.5 激活”。下列入口用于更新 EVCC 安装包。

  • 启动时自动检查新版本,有更新时弹窗提示
  • 弹窗内点击 "更新日志" 可按版本分组查看所有版本变更摘要
  • 点击 "立即更新" 或设置页中的下载/覆盖更新入口后,EVCC 会直接强制生成一次自动备份,不再要求手动确认;这项升级前备份不受日常自动备份开关影响,备份成功后继续下载;备份失败时会提示原因,并提供 "继续升级" 和 "退出" 两个按钮,选择继续升级会跳过本次备份并继续下载,选择退出则停止本次升级
  • 下载完成弹窗会提醒:更新后建议重启车机一次,否则可能会遇到未知 BUG
  • 一键安装开始前会自动清理可能影响更新的缓存,保留用户配置;清理失败时会在安装日志中提示并继续安装。安装用的临时 APK 会在完成后删除;若更新被中断,下次安装会回收超过一小时的遗留临时 APK,避免占用空间
  • 一键安装失败时会显示可读原因;如果提示 RootService / ADB 不可用或安装包不可读,可改用手动安装
  • 也可在设置页随时点击 "检查更新" / "更新日志" 按钮,并通过通道开关在 "最新版" 与 "稳定版" 间切换;默认使用最新版通道,检测成功后会在版本区域显示该通道最新版本
  • 切换通道后会立即检查该通道版本。如果通道版本低于当前安装版本,仍可下载,但降级后建议先清空 EVCC 数据再使用

下载失败多半是网络问题,可打开 EVCC 下载中心手动下载对应通道的安装包再安装;EVCC 安装器默认下载最新版。

10.11 运行日志

设置页底部区域显示完整运行日志(最新在下方): - 按级别着色(白/橙/红/灰) - 长按一条日志可复制 - 右上角"清空"按钮清除显示(不影响已存储的日志文件) - 右上角"导出"可把当前可见日志导出为 txt

10.12 其他开关

设置页还提供若干零散开关,按需启用:

开关 作用
关闭登录校验 开启后无需再激活就能打开所有页面(仅用于激活失败时临时应急)
禁用云端同步 本地独立运行,不再拉取云端属性/命令/模板
保留历史值 控制台切换页面后回来仍显示上次的值
严格写入确认 所有属性写入前都弹一次确认对话框
监测悬浮窗 显示资源/状态监测浮层,便于临时观察车机运行状态
系统进程悬浮窗 显示系统进程 CPU/内存排行,并每 10 秒把快照写入运行日志
Overlay 清除 查看并清除 /system、/vendor 等分区的 overlayfs 上层修改,清除后需重启;仅在适配开放时显示

第十一章 自动化实战教程

以下是一些常见的自动化场景配置步骤。

11.1 夜间自动开启大灯

  1. 新建规则
  2. 触发器:日落触发,偏移 -10 分钟(日落前 10 分钟)
  3. 条件:(无)
  4. 动作:SET_PROPERTY,属性 ID = 大灯属性,值 = 开启值
  5. 冷却时间:3600 秒(1 小时,避免重复触发)

11.2 BLE 旋钮控制亮度

  1. 新建规则
  2. 触发器:BLE_RECEIVED,选择已配对的旋钮设备
  3. 条件:(无)
  4. 动作:SET_PROPERTY,属性 ID = 亮度属性,值 = clamp($current + $ble_rotation, 0, 255)

11.3 车速超速提醒

  1. 新建规则
  2. 触发器:PROPERTY_GREATER_THAN,属性 ID = 车速属性,阈值 = 120
  3. 条件:(无)
  4. 动作:TTS_SPEAK,内容 = "当前车速超过120,请注意安全"
  5. 冷却时间:60 秒

11.4 到家自动执行

  1. 新建规则
  2. 触发器:GEOFENCE_ENTER,使用地图选点选择家的位置,半径 300 米
  3. 条件:(无)
  4. 动作 1:TTS_SPEAK = "欢迎回家"
  5. 动作 2:LAUNCH_APP = 智能家居 App 包名

11.5 开机自动启动导航

  1. 新建规则
  2. 触发器:BOOT_COMPLETED
  3. 条件:(无)
  4. 动作 1:DELAY = 5000(等 5 秒系统稳定)
  5. 动作 2:LAUNCH_APP = 导航 App 包名

11.6 定时发送状态报告

  1. 新建规则
  2. 触发器:TIMER_CRON = "08:00"(每天早 8 点)
  3. 条件:(无)
  4. 动作:SEND_REMOTE_MESSAGE,平台 = Telegram,内容 = "车辆状态正常,电量: {$prop(电量属性ID)}%"

11.7 Logcat 监听温度

  1. 新建规则
  2. 触发器:LOG_KEYWORD
  3. LogRegex: "cpu_temp=(\d+)"
  4. LogExtractVars: "cpu_temp"
  5. 条件:VARIABLE_COMPARE,$cpu_temp > 80
  6. 动作:NOTIFICATION = "CPU 温度过高: {$cpu_temp}°C"

11.8 米家多键开关控制空调

需要先按 6.11 节完成米家按键的配对。

  1. 新建规则
  2. 触发器:BLE 设备信号
  3. 预设按钮:米家V5蓝牙Mesh 开关/键盘(de1.remote.wjwx8 请改选“米家新协议蓝牙 Mesh 开关”)
  4. 设备 MAC:通过"学习设备"自动填入
  5. BindKey:从 Xiaomi Cloud Tokens Extractor 获取的 32 位 hex
  6. 按键 ID:按键 1
  7. 点击方式:单击
  8. 条件:(无)
  9. 动作:SET_PROPERTY 写入空调风量属性 = clamp($current + 1, 0, 7)(风量 +1,最大 7)
  10. 复制规则,改按键 ID = 按键 2 / 点击方式 = 单击,动作改为 clamp($current - 1, 0, 7)(风量 -1)
  11. 按键 3 / 4 可分别做空调温度 +1 / -1

一个米家 4 键开关可以覆盖"空调风量 +-、温度 +-"4 个常用动作,比方控拨盘顺手。

11.9 上车后一键场景

利用"蓝牙连接"触发器检测手机连上车机蓝牙,作为"人坐进车里"的信号。

  1. 新建规则
  2. 触发器:经典蓝牙设备连接,选择你的手机 MAC
  3. 条件:时间范围 = 06:00 ~ 10:00(只在早上触发)
  4. 动作 1:DELAY = 3000(等 3 秒让车机系统稳定)
  5. 动作 2:LAUNCH_APP = 导航 App 包名
  6. 动作 3:TTS_SPEAK = "早上好,正在为你打开导航"
  7. 动作 4:SET_PROPERTY 写入空调自动模式属性 = 1
  8. 冷却时间:3600 秒(避免同一早上多次蓝牙断连重连反复触发)

11.10 低电量保护 + 远程通知

  1. 新建规则
  2. 触发器:PROPERTY_LESS_THAN,属性 ID = 12V 电瓶电压属性,阈值 = 11.8
  3. 条件:TIME_RANGE = 00:00 ~ 23:59(全天都触发,这里用条件模板也可改为"非充电中")
  4. 动作 1:关闭 STR 防护(SET_PROPERTY 写入 STR 属性 = 0 或改为 TRIGGER_AUTOMATION 触发"关闭 STR"规则)
  5. 动作 2:SEND_REMOTE_MESSAGE,Telegram,内容 = "⚠️ 车辆 12V 电压 {$prop(电压属性ID)}V 过低"
  6. 冷却时间:1800 秒(30 分钟)

11.11 HUD 夜间自动切换配色

  1. 新建规则
  2. 触发器:日落触发,偏移 0
  3. 动作:SET_PROPERTY 写入 HUD 投屏"白天/夜间"模式属性(或用"触发其他自动化"调用投屏更新)
  4. 新建第二条规则:触发器 = 日出触发,动作反向切回白天模式

如果投屏参数已开启"自动模式(跟随系统暗色)",此规则可用来提前/延后切换(例如日落前 15 分钟就切夜间)。


第十二章 常见问题 (FAQ)

Q1: 所有页面显示锁定状态怎么办?

A: 软件尚未激活。请联系管理员并提供设备 ID 进行激活,或使用 EVCC 在线自助激活页输入购买到的激活码。

Q2: RootService/ADB Shell 无法连接?

A: 尝试使用应用管家开启"永久开启无线ADB功能"。并确认应用管家右上角显示已连接,若应用管家也连不上,先解决该连接问题。

Q3: 软件的多个功能同时出现不正常?

A: 软件升级或修改了配置后,尝试重启车机。使用应用管家确认软件获得了所有他所需的权限。

Q4: 音乐桥接没有反应?

A: 领克车型需先部署 Frida。可尝试关闭后重新打开桥接开关,或重启车机。车机重启后,需 60 秒左右音乐桥接才会启动。

Q5: 投屏画面不正确?

A: 调整虚拟屏分辨率、缩放、裁切和旋转参数。可导入其他用户分享的参数快速适配。

Q6: 属性抓不到,或者抓取异常?

A: 属性翻译是 AI 翻译的,自行确认翻译是否准确。如果抓不到或者属性异常,说明车辆未暴露该属性,非软件问题。

Q7: 自动化规则不触发?

A: 1. 确认自动化引擎已启动(顶部开关) 2. 确认规则已启用(单条规则开关) 3. 检查触发条件是否正确(用属性监视器验证) 4. 检查条件是否满足 5. 查看执行日志是否有错误信息 6. 检查冷却时间是否过长

Q8: 公式不生效或显示错误?

A: 1. 确认公式语法正确(括号匹配、函数名正确) 2. 如果设置了数值映射规则,先确认公式结果是否落入规则条件;没有命中且没有"直接成立/兜底"时会显示原始或公式处理后的数值 3. 时间卡片的"运算公式"是日期格式,不是数学公式 4. 变量名区分大小写 5. $prop(id) 中的 id 需要是正确的属性 ID

Q9: 悬浮窗不显示?

A: 1. 确保已授予"显示在其他应用上方"权限 2. 在系统设置中检查悬浮窗权限

Q10: Frida 部署失败?

A: 1. 确保设备已 Root 2. 确保网络可用(首次部署需下载 Frida 注入组件) 3. 检查存储空间是否充足 4. 尝试"卸载"后重新"部署"

Q11: 仪表投屏连接失败?

A: 1. 确认车型支持(龙鹰一号等) 2. 检查 CP 节点网络连通性(默认 198.18.44.2) 3. 软件会自动扫描 198.18.44.0/24 网段发现 CP 节点

Q12: 如何备份/迁移配置?

A: 1. 整体迁移:设置页 → "配置备份" → 点击"备份全部配置",在新设备上复制该 ZIP 到 Download/EVCC/backups 后点击"还原全部配置" 2. 还原后按提示重启应用 3. 如果只是排查缓存污染,不需要导入备份,点击"清除缓存"即可保留配置并清理运行态/云缓存 4. 单项分享仍可使用:仪表盘保存为模板、自动化导出 JSON、投屏参数导出二维码/JSON、悬浮窗导出配置 5. 银河 L6(G733)在 1.7.3、2.3.0、2.3.1 系统之间迁移时,可使用官网“配置转换器”双向转换完整备份 ZIP,再在目标系统中还原

Q13: 如何查看更新日志?

A: 设置页 → "更新日志"按钮,可按版本分组查看历史变更。


第十三章 安全注意事项

  1. 车辆属性读写风险:不当操作可能导致车辆功能异常。修改属性前请确认属性含义和影响。
  2. 先测试后启用:自动化规则建议先用"手动执行"测试,确认无误后再启用自动触发。
  3. 设置冷却时间:为频繁触发的规则设置合理的冷却时间,避免属性被快速反复写入。
  4. 确认执行:高风险组件开启"确认执行"选项,避免误触。
  5. 定期备份:建议定期备份自动化规则和仪表盘配置。
  6. Frida 谨慎使用:使用前了解目标应用行为,避免不可预期的后果。
  7. STR 防护注意电量:设置合理的电量阈值,避免电池耗尽。
  8. 远程控制安全:妥善保管机器人 Token 和密钥,避免未授权访问。

第十四章 社区资源与相关链接

EVCC 有一个活跃的车友社区"技术共创星球",大家在群内交流使用技巧、分享自动化规则和仪表盘模板、帮助解答技术问题。

14.1 官方网站

  • 官网:coauto.cc
  • EVCC AI 助手:https://evcc.coauto.cc/ai-assistant(已默认接入本手册,可直接提问 EVCC 使用、配置、自动化和公式问题;从日志报告页进入时会自动关联该次报告与日志,方便继续追问原因、影响和验证步骤,同时不直接展示原始日志;支持上传截图、手机拍照、粘贴图片或拖拽图片,图片会自动压缩;输入框会随长内容自动增高,到达上限后在输入框内部滚动;AI 回复支持 Markdown、代码块复制、整条回复复制和一键刷新重新回答;支持浅色/深色/跟随系统显示模式;弱网或浏览器后台导致回复中断时会保留已收到内容,并提示可点刷新重新回答;页面顶部可返回 https://evcc.coauto.cc/ 导航页。管理员可在后台配置 AI API、模型、系统提示词、问候语、预设问题、图片体积上限、每小时对话限流和日志 AI 分析范围;设备日志页的问题类型筛选会按登录账号保存;达到限流时页面会提示稍等后再聊)
  • AI 助手专家角色:公开 AI 助手除默认助手外,还可选择“售前咨询”“EVCC 使用指南助手”“EVCC 开发手册助手”“EVCC 扩展与创作助手”“自动化与脚本”“EVCC Mini”“MIBO”“接口开发”“内容商店”和“故障排查”专家。每位专家都有独立网址目录,例如售前咨询 /ai-assistant/sales、EVCC Mini /ai-assistant/mini、MIBO /ai-assistant/mibo、自动化与脚本 /ai-assistant/automation;切换专家或打开历史对话时地址随之更新,可收藏或分享,刷新保持当前专家和对话。旧 AI 助手及专家参数链接仍可使用。售前咨询主要介绍功能、版本区别、激活条件和购买流程,购买入口跟随云端“购买链接(发卡网站)”设置,价格与车型支持以购买页面和实际适配为准。从文档中心任意页面点击“问 AI”时,助手会自动关联当前页面、选择对应板块的专家,并按“本页优先、所属板块资料补充”的顺序回答;浏览器不会把整页正文或本地文件路径作为参数发送。关联栏可点击“解除关联”,或直接切换专家,开启不带该文档的新对话,原对话仍保留在本地历史中;“新对话”和“清空本地历史”不再继承文档或日志报告关联,解除后刷新页面也不会重新关联。EVCC Mini 与 MIBO 专家仍各自聚焦对应主题;已有内容的对话切换专家时会自动开启新对话,旧对话和原角色仍保留在本地历史中。
  • 服务端后台导航:管理员后台的“异常检测”按“异常设备 / 心跳异常 / 盗版反制 / 异常报告 / 完整性事件”分组,“内容商店”收纳 ADB 命令入口,“AI 助手”按“助手配置 / 对话记录”分组。“异常设备”只以已定性的心跳异常为入口,再按设备 ID、SN 或 VIN 任一相同归并关联组,集中显示机型、账号、地区、IP、APK Cert、异常原因和最近证据;详情页会关联设备管理、心跳、异常报告、完整性事件、日志上报、配置污染和指令处理记录。异常组关联到设备管理中的任一已激活设备时只展示、不自动污染;忽略心跳异常或异常设备、删除当前异常记录、恢复可信签名时也会停止污染。自动配置污染还必须同时满足:当前设备已处于“请求已阻止”、普通拉黑或暴力拉黑状态,并由服务端验真为错误 APK 签名;仅有风险标记、IP/VIN/SN 关联或客户端自报签名异常只进入观察。旧版客户端没有 APK Cert 时,仅当请求中的设备 ID 已经属于该异常组,且组内留有服务端验真的错误签名证据才会命中,不能用当前请求临时归组。设备管理中的绑定白名单只对指定的受信任备用签名生效。配置污染会用安全、结构兼容的提醒或空内容替换新手引导、车型适配、属性说明、ADB 预设、旧版规则缓存、AIDL/CAPI 映射以及规则、模板、组件、皮肤、脚本和配置商店;不会自动生成车辆属性写入、系统文件修改、负载、重启、遮罩、清数据或卸载指令。可信签名、已激活关联、忽略或管理员点击“停止污染并下发恢复”后,会用递增版本重新下发真实配置,避免旧客户端长期停留在污染快照。“盗版反制”页分为手动指令、待处理队列、已处理队列、计划任务和配置污染命中记录,可按设备 ID、SN、机型、IP、APK Cert、指令、原因、状态、时间和异常组筛选;待处理支持全选筛选结果并批量取消,已处理支持批量重新入队。旧客户端领取指令只显示“已下发,结果未确认”,新版客户端可回报接收、开始、完成、失败或不支持;清数据与卸载最多显示“已开始,结果不可确认”。标准拉黑会先取证,再清除 EVCC 数据并卸载;暴力拉黑从设备首次命中开始计时,立即取证、降级并显示授权提醒,6 小时后限制使用,24 小时后清除 EVCC 数据并卸载。清数据、跨应用遮罩、持续弹窗、最长 30 分钟的 CPU/内存负载,以及隐藏入口、禁用隐藏、卸载和恢复 EVCC 仍可作为独立手动指令使用,卸载与禁用隐藏彼此分开,全局静音、最低亮度和整机重启仍不启用。心跳、元数据、普通日志、轻量取证、系统诊断、指令领取与回执始终保留;“系统诊断”也可独立用于正版设备排障。车型适配的设备覆写添加页支持每行一个设备 ID 批量创建相同覆写;设备管理会显示每台设备新增时的固定来源,并区分自动迁移和网页自助迁移;异常报告列表显示设备名称、软件版本及关联设备日志入口,优先使用报告中的名称和版本;缺失时补充同设备最近心跳或关联日志中的信息,并标明来源;每份报告仅关联一条尚未删除的同设备日志,优先选择与最近上报时间最接近且版本相同的日志(10 分钟内);未记录版本时按时间匹配,没有匹配时使用最新日志;列表和详情使用同一条日志;异常报告详情会汇总 VIN/SN、账号、位置、网络和蓝牙等归因线索;付费总览按激活类来源统计并剔除已拉黑设备,代理也可查看自己的付费总览;单台收入只保存在当前浏览器,不写入服务端。
  • 新版入口隔离:新版入口策略与配置污染统一启停,不再设置独立试点名单;配置污染开启后,所有满足同一严格盗版判定且支持该能力的新版客户端都会收到入口策略,关闭配置污染、恢复可信签名、关联正版设备或忽略异常后则收到恢复策略。命中后,控制台操作、服务/自动化入口、属性源卡片和商店提醒卡会进入未授权说明小游戏,高权限入口会隐藏,系统诊断、日志上传和必要恢复入口仍可使用;小游戏通关、返回或重进都不会解除策略。该策略只暂停 EVCC 自有可选服务,不改写用户原来的页面排序和功能开关,也不会自动执行 Shell、车辆属性写入、系统文件修改、负载、重启、遮罩、清数据或卸载。后台会分别显示服务端已拦截、客户端已接收、已保存、已应用、应用失败、已打开和已恢复,并记录客户端能力、失败原因及最近入口;解除后会恢复原入口与真实配置,只重启用户原本启用且当前车型允许的服务。
  • EVCC 文档中心:https://evcc.coauto.cc/docs/(统一提供使用指南、开发手册、扩展与创作和 EVCC 资源导航;每个页面都可以携带当前页面上下文向 AI 提问)

14.2 入群须知

  1. 进群备注车型:进群后请备注自己的车型,方便大家交流和解答技术问题
  2. 善意文化:遇到好心人解决了你的问题,记得发个小红包鼓励一下
  3. 郑重声明:
  4. 本群仅为技术交流,群内提供的技术及软件为内部工具,请勿对外传播
  5. 使用群内分享的技术或工具导致设备故障,群主概不负责
  6. 本群收费为入群费用,作为入群门槛收取,与群内软件、技术无关联

14.3 教程与文档

资源 链接 说明
EVCC 使用说明书(历史腾讯文档) https://docs.qq.com/aio/DS2ZpQktxYkJrZ3Ju 历史外部版本,内容可能过时;当前说明以 EVCC 文档中心为准
银河 E5 技术共创(腾讯文档) https://docs.qq.com/aio/DS0VoTE92YW5LdVBx 银河 E5 深度搞机文档

14.4 软件下载

资源 链接 说明
EVCC 软件下载 https://download.coauto.cc:9568/ EVCC 下载中心,可下载最新版、稳定版及历史版本安装包。使用说明与开发资料统一在 EVCC 文档中心维护。安装后点击左上角设备 ID,发给管理员激活
银河 E5 进阶搞机包 https://suyunkai.top:5667/s/898dc3cea4964f9bb0 银河 E5 的进阶搞机资源包

14.5 激活迁移

重置车机后,原激活状态可自助迁移到新设备,无需联系管理员重新激活:

  • 自动迁移:重置后重新安装并打开 EVCC,保持联网。如果服务器检测到 SN、机型、VIN、Android 版本与已有激活记录完全一致,会在应用内弹出迁移确认框。新版会在识别到车辆 VIN 后立即重试迁移检测,减少等待弹窗的时间;如果多用户车机已经迁移到新用户后又切回原 Android 用户,也会通过同样的弹窗确认是否迁回当前设备。确认后原已激活设备 ID 失效,当前设备自动激活。
  • 迁移限制:任一身份字段缺失或不一致都不会自动迁移;自动迁移仍要求完整身份一致,同一 SN 一生最多迁移 50 次,不再限制两次迁移的间隔天数。网页自助迁移按本次用于核验的 SN 或 VIN 分别累计,最多迁移 50 次;公开迁移页同一 IP 每小时最多提交 20 次、每天最多提交 50 次。
  • 迁移地址:https://evcc.coauto.cc/migrate
  • 如果忘记旧设备 ID,可在迁移页点击“找回历史设备 ID”,输入 VIN,并通过最初自助激活码,或任意历史设备 ID + 对应 SN 验证后找回当前有效设备 ID。找回功能需要完成页面验证码,每个 IP 每小时最多尝试 10 次;它只显示设备 ID,不会自动执行迁移。
  • 如果应用内没有弹出自动迁移,仍可使用网页自助迁移或联系管理员处理。在同一个“设备 SN 或车辆 VIN”输入框中填写任意一项,系统会自动识别;与旧设备已记录 SN 相同的输入优先按 SN 处理,避免将 17 位 SN 误认成 VIN。填写的信息必须同时匹配旧设备记录和新设备最新心跳。如果 SN 与 VIN 在新旧两侧都有有效信息,服务器还会自动交叉核验另一项;另一项任一侧缺失时不会阻断迁移。
  • 迁移表单可直接粘贴设备信息:离开输入框或提交时会自动清理设备 ID、SN 和 VIN 中的多余空格。设备 ID 支持省略横杠,以及横杠错位、重复、中文横杠或下划线误输入,并会整理为 ABC-1234;SN 本身的横杠和大小写会保留,字母或数字输错仍需自行更正。
  • 网页迁移成功后会直接显示新设备激活码。对同一迁移重复提交时,页面会明确显示“该迁移已完成”,不会再次作废设备、生成新的激活设备记录或重复迁移商店内容;如果目标设备后来又迁出,页面也会提示当前状态。
  • 网页会分别说明旧设备不存在、旧设备已迁出、SN 或 VIN 不一致、新设备未上报心跳、新设备心跳缺少所选核验信息、新旧核验信息不一致、机型不一致、新设备已独立激活、请求次数超限或服务器暂时无法生成激活码等原因。旧设备已经迁出时,应使用迁移链最新的设备 ID 作为下一次迁移的旧设备 ID,不要继续使用更早的历史 ID。

14.6 车友共创项目(GitHub)

项目 链接 说明
智驾小蓝灯 https://github.com/shileime/LYNKCO-08-IDL-simple 领克 08 智驾状态小蓝灯实现,可在驾驶过程中直观感知智驾状态
青龙面板脚本 https://github.com/suyunkai/geely-galaxy-assistant 吉利银河助手青龙面板脚本,自动化签到等

14.7 社区风格

  • 技术交流为主,鼓励分享和共创
  • 遇到问题可在群内求助,也可以贡献自己的模板/规则到云端商店供他人下载
  • 发现 Bug 或有功能需求,可通过"EVCC 需求与 Bug 收集表"提交

附录 A:版本历史摘要

版本 主要更新
v3.3.0 修改电源管理策略,尝试解决部分车型可疑的不进入深度休眠问题;如果该版本导致 EVCC 无法在后台及深度休眠状态保活,请联系开发者说明
v3.0.3 自动化新增位于系统事件的万能旋钮接管触发器,支持启动自注册、SmartButton 启停、醒目实时状态、回调保活、长按夺回及 StartX 功能选择器;新增触发器、条件、动作和组件统一先选类型再编辑;自动化调节浮窗默认按旋钮步数,功能选择器默认启用;远程通道升级为 Tailcat
v3.0.2 自动化新增 MIBO GATT 信号触发;服务页恢复“米德宝/AIDL 联动”组合卡,并在实验区新增独立“EVCC 开放 API”,提供分级应用授权、开发调试页、在线文档与独立 Demo 源码,属性目录补齐可靠说明、枚举、用户备注及来源元数据;StartX 可按设备开启有限时 GATT 连接增强;日志上传成功后可扫码查看设备摘要、AI 分析、属性数据和功能状态报告,并可关联 AI 助手继续提问
v3.0.0 StartX 与极氪灵动贴固件改为服务端签名目录按需下载;StartX 提供原版、高速增强版和带安全累计补偿的疾速增强版;同一自动化支持多个 StartX 独立操作与共同预览,功能选择器到首尾停止;调节条和选择器增加轻量过渡,属性与音量调节条共用默认外观;自定义 AIDL 开放读取,并支持多选可信 App 写入车辆属性
v2.9.66 StartX 固件刷写保留原版和快速版,暂时下架未完成真机验证的极速版与实验版;统一自动化 BLE 输入顺序并优化 MIBO 低延迟转发与协议去重;音量连续调节首格立即写入、后续以 40 ms 短窗口合并
v2.9.65 优化自动化、控制台、悬浮窗和 MIBO 联动设置界面;StartX 新增通用“旋转”操作、功能条件及选择器随规则迁移,可在官方原版与快速版固件间自选刷写;已配对硬件增加电量、版本和完整设备命令;新增音量调节浮窗,调节浮窗支持恢复默认并修复小数显示,属性/音量预览可用真实旋钮模拟调节且不执行车辆动作
v2.9.64 BLE 预设按钮新增极氪灵动贴与 StartX 旋钮配对、共享设备库和功能选择器;自动化、控制台与悬浮窗新增属性调节浮窗
v2.9.62 应用管理支持按当前用户或所有已安装用户禁用和恢复应用,并加强系统应用的全用户操作风险提示
v2.9.61 控制台组件支持快捷复制;MIBO 数据可按车型恢复云端默认配置,连接与 Recovery 操作进一步优化;CAPI 回归稳定连接处理;自动化与 Lua 新增只读 BPM 和音乐播放状态变量
v2.9.59 新增可配置的自动配置备份,默认每天一次并保留 7 天;手动与自动记录分开,在线升级前始终自动备份
v2.9.58 AIDL/米德宝联动的数据配置支持本地 JSON 文件导入与导出,导入失败时保留原配置
v2.9.57 米德宝联动卡片升级为 AIDL/米德宝联动,可独立或同时启用 BLE 直发、米德宝 AIDL 和自定义 AIDL;自定义调用方支持固定包名与签名,默认预置仪表DIY
v2.9.56 MIBO BLE 桥接的 GATT 模式新增自动、有响应和无响应三档写入方式并保持旧配置兼容;桌面歌词新增原生状态栏模式、自适应最小宽度和双排显示并优化切歌延迟;歌词和信息卡仅在可见内容变化时刷新,当前时间使用 TextClock、播放时间与倒计时使用 Chronometer;歌词与信息卡支持高级自定义 ID / rank / 强制右侧,以及彼此独立、默认关闭的 SystemUI 状态图标通知队列 100ms 加速、AIDL 直推 View 和 Universal Icon 扩宽实验;信息卡以 96dp 为默认兼容宽度并可自由调整或单卡强制 RemoteViews;状态栏图标隐藏支持执行回执、按源更新补隐藏及强制隐藏 EVCC 自身图标
v2.9.54 MIBO 的 BLE HID 升级为 HID/GATT 双模式“BLE 桥接”,支持自定义目标、UUID、厂商 ID、搜索与诊断;BLE 广播动作新增米德宝/BLE 中转通道;状态栏信息卡新增最多 8 槽位的原生注册模式,可设置左右位置、偏移、有无名称、全局/单卡宽度、间隔、字号与点击面板
v2.9.44 自动化、控制台和悬浮窗动作在米德宝 BLE 直发模式开启后可选择米德宝联动动作编组;悬浮窗默认 EVCC 启动按钮可改图标和功能;播放声音动作选择本地音频时会转存到 EVCC 私有目录
v2.9.43 服务页实验区新增 EVA 联动;音乐转发桥接支持 BPM 显示和缓存;米德宝联动新增 BLE 直发模式、音乐律动配置和手动测试指令
v2.9.28 自动化、控制台和悬浮窗的媒体控制动作新增全局媒体键模式,可兼容部分 CarPlay 盒子和蓝牙盒子的上一首、下一首、播放暂停控制
v2.9.23 设置向导新增音乐桥接选择步骤,可按车型方案自动选择桥接车型;主界面功能引导介绍内容商店时会真正展示商店页面;优化开机自动化后端连接等待
v2.9.22 配置商店的服务配置按服务页功能板块细分;设置向导支持车型推荐问答,音乐桥接和悬浮窗等可由推荐配置按需套用,完成后继续显示车型默认 DPI 与完整主界面功能引导;EVCC mini 空控制台可直接引导添加小窗模板
v2.9.21 优化内容商店加载和应用反馈;上传内容可选择隐私上传并仅通过分享码分享,后台可锁定上传内容;新增规则/组件测试和皮肤恢复初始入口
v2.9.10 优化部分 E22H 车型自动获取 Root 权限流程,启动前会自动完成必要的系统权限开关准备
v2.9.9 桌面歌词支持 ICCOA 和 HUAWEI 手机互联音乐歌词识别;新增 L7 HUD 歌词;优化导出目录、音乐转发恢复、自动化恢复和设备迁移识别,并移除自动小窗自动拦截功能和后台监控
v2.9.8 内容商店整合配置包分享;新增数字安全密码;优化后台清理、系统诊断采集和仪表信息卡刷新,并下线自动小窗自动拦截入口
v2.9.1 小程序 MQTT 上报支持同时读取车辆属性、预设变量和自定义全局变量,属性和变量变化会实时推送;变量系统新增 GPS 定位相关预设变量
v2.8.14 设置页新增按车型开放的 8155 黑屏保护、RootService Shell 保护和复现测试工具;优化启动期权限自恢复与音乐占位源刷新流程
v2.8.7 系统诊断日志上传前可选择故障类型并补充说明,诊断包会尽量包含更多系统异常日志
v2.8.6 服务页实验区新增系统底栏视觉调试;应用权限管理授予无障碍服务时会同步到所有已安装用户;Debug 模式支持深度系统日志抓取和手动上传系统诊断日志
v2.8.4 自动化、控制台组件和悬浮窗组件在选择“触发自动化”目标时同时显示规则名称和 ID;控制台编辑模式删除组件前会弹窗确认
v2.8.3 服务页实验区新增“小程序”MQTT 上报;修复音乐桥接无播放会话时方向盘 OK 键可能反复触发的问题;优化注册源列表提示图标;服务页“仪表车模颜色”入口移入实验区
v2.8.2 修复银河 L6/L7 使用伪装注册源时音乐转发可能和原车仪表链路重复推送、导致封面闪烁的问题;桌面歌词新增歌词偏移调节;优化注册源列表,并新增白名单音乐源占位包伪装能力
v2.7.9 修复音乐转发桥接暂停后恢复、后台唤醒和酷狗播放/暂停兼容问题;无障碍权限保护升级,EVCC 自身和勾选持久化的第三方 App 被关闭后会自动恢复,应用权限管理中授予第三方无障碍后会刷新服务绑定,关闭单个 App 时不再误关其他无障碍服务,并新增"补授常用"按钮;脚本页移除车模改色热修复入口,旧版脚本自启会自动关闭,服务页"仪表车模颜色"功能保留并增加使用前风险提示
v2.7.8 优化音乐转发注册媒体源、自选源管理和强制上送逻辑,修复音乐桥接冷启动、控制台皮肤按钮、音量组查询/设置反馈,并补充音量组测试音、服务日志反馈和商店车型匹配/排序能力
v2.7.6 优化音乐转发桥接的原生 MediaCenter 接管识别,EVCC mini 音乐页和 2×3 及以上音乐组件支持拖动进度条调整播放位置,新增可选显示屏、-20% 起步位置、旋转角度、位置锁定、单/多行、紧凑底色、描边强度、轻微阴影、颜色模式和自定义日夜配色的桌面歌词,并让桌面歌词不受 EVCC 软件 DPI 设置影响;控制台、悬浮窗按钮和自动化新增热点控制动作;配置备份/还原改为只处理用户配置,并新增清除缓存入口;重置车机后支持自动确认迁移旧激活
v2.7.3 APVP 写入弹窗补充 RX 模拟写入提示、Struct 分字段写入、Bytes/Mixed 按需图片/文本/十进制/HEX 预览、输入框/选项/快捷按钮主题化边框与底色,以及白天模式按钮可见性修复;优化自动化中断器、TTS 与音乐转发兼容性
v2.7.2 APVP 写入支持 REAL/DEBUG transfer mode 与枚举项直选;商店上传/下载可携带本地资源和关联自动化;媒体播放/暂停动作支持播放、暂停、切换;自动化新增条件判定延迟和运行期中断器;RootService 并发探测、托管自动化日志优化;文件页支持媒体预览和 EVCC APK 安装器
v2.6.9 自动化条件分支支持 IF IF 多命中模式;EVCC AI 助手限流提示改为正常回复用户稍等后再聊,并优化弱网/后台中断时的半截回复保留;修复规则商店规则组导入后的组内联动指向,优化音乐高清封面切歌刷新流程,并收敛深度休眠后 HUD 地图与仪表投屏恢复链路
v2.6.8 EVCC AI 助手回复新增一键刷新重新回答;补充银河 L7 三指流转白名单解除、Lua 属性展示值规整、激活遮罩 VIN 刷新、mini 音乐打开与 Flyme 小窗浅色状态栏等优化
v2.6.7 官网导航新增 EVCC AI 助手入口,可基于使用手册咨询配置、自动化、公式和常见问题;支持图片/拍照提问、Markdown 展示、代码复制、深浅色模式、后台对话记录、限流配置、第三方代理兼容、系统提示词和预设问题管理
v2.6.6 修复深睡唤醒后的 HUD 地图投屏恢复、音乐桥接冷启动、mini 音乐状态、权限自愈和若干白天模式弹窗可读性问题,并降低诊断日志刷屏
v2.6.4 EVCC mini 新增应用菜单、虚拟屏幕复用、三种 App 启动方式、单 App 沉浸式状态栏、图标大小/行列/排序设置、音乐页大封面与高清封面;MC 卡片直开支持无障碍 / Log 监测两种触发方式
v2.6.4 服务页卡片收起逻辑、悬浮窗触摸区域、音乐转发歌词偏移、自动化播放声音增益、RootService 托管执行和 Lua AIDL/CAPI 属性能力增强
v2.4.4 EVCC Mini 转为增值服务 (7 天免费试用 + 激活码激活),激活码与设备 ID 绑定,随"设备迁移"跟走;主 EVCC 侧增"💎 增值服务"管理面板;Bridge 协议升级到 v3
v2.4.4 EVCC mini 新增"音乐"页面 (Flyme AutoMediaControl 1:1 复刻),mini 支持多页面滑动切换与 tab 管理 (增删改排)
v2.4.2 应用管理权限对话框新增"特殊权限一键授予"分组 (悬浮窗/无障碍/电池优化等 9 种)
v2.4.1 mini 封面/字体/Shell 按钮/小窗启动四连修复;Bridge 协议升级到 v2
v2.4.0 系统小窗拆分为独立 APK (EVCC mini),通过 ContentProvider + AIDL 跨进程桥接
v2.3.x 脚本引擎 (Lua + Web IDE + 脚本商店);系统小窗 DPI uniform zoom;仪表投屏 BGRA+LZ4 编码
v2.2.4 仪表投屏信息卡重构、虚拟屏稳定性、Display 选择器统一
v2.2.3 仪表投屏功能(龙鹰一号)、日出/日落触发、地理围栏、地图选点、规则组管理
v2.2.2 商店统一搜索、更新日志按钮、音乐转发焦点控制
v2.2.1 BLE 广播台升级(UDP/HTTP 传输)
v2.2.0 银河 A7 低配适配、新手引导 DPI
v2.1.8-v2.1.9 多语言支持(中/英/俄)、领克 09 适配
v2.1.6 异屏同显
v2.1.5 星舰 7 适配、云端 DPI 配置
v2.1.4 TTS 新引擎(Edge/阿里云)、命令历史
v2.0.7-v2.0.8 引擎声音、TTS 选择、"我的模板"
v2.0.2-v2.0.4 BLE 广播台、系统小窗、DPI 调节
v2.0.0-v2.0.1 白天/夜间主题、自动小窗、云端配置
v1.9.x 仪表盘升级、TTS、规则商店、应用管理、音乐桥接
v1.5.x-v1.8.x 自动化引擎、开机自启、ADB 工具
v1.0.x 初始版本

附录 B:脚本中心(编程引擎)

当前"脚本"tab 包含 Frida 与 Lua 两个子页,页面内提供"脚本商店 / Web IDE"入口。

B.1 Lua vs 自动化规则

自动化规则 Lua 脚本
编辑方式 图形化 写代码
学习成本 几乎零 需要 30 分钟入门
表达能力 中等(触发→条件→动作) 高(任意逻辑/循环/状态机)
适合 简单的"X 时做 Y" 复杂判断、累计计算、循环、多源联动

两套引擎共享所有事件源和动作能力,可互相触发(自动化里 RUN_SCRIPT / Lua 里 automation.trigger)。

B.2 脚本目录

默认 /sdcard/Download/EVCC/scripts/{lua,frida}/,和 EVCC 其他资源同目录。左上 "选择文件夹" 可改到任意可写路径。目录下的 .lua/.js 文件自动被扫描识别。

B.3 头部元信息

--@name 智能巡航控制
--@version 1.0.0
--@author you
--@description 车速超过 120 自动 TTS 提醒
--@min_evcc 2.9.61
--@autostart false
--@permissions property_write, shell, tts
--@tags vehicle, safety

头部只读取前 40 行。permissions 是给脚本商店和用户查看的声明,不是运行时授权边界;安装第三方脚本前仍需人工检查源码。autostart 也可通过脚本卡片上的 Switch 切换。Frida 脚本开启自启前会弹出风险确认;Frida 注入可能导致系统异常,关闭对应自启后可恢复。

Lua 脚本如果写了 trigger.on_manual(function() ... end),需要先让脚本处于运行状态(手动运行或开启自启),然后可在脚本页点击"触发",也可在控制台组件、自动化动作或悬浮窗动作里选择"触发 Lua 脚本"并填写脚本 ID。它只触发已经运行脚本里的手动回调,不等同于"运行脚本"。

B.4 完整 API

property — 5 源属性 R/W + 监听

property.read("vhal:VehicleSpeed")          -- 默认 vhal,可省略前缀
property.read("apvp:某信号名")               -- APVP(自动 refresh,无需先订阅)
property.read("aidl:557877498")             -- AIDL:优先使用十进制属性 ID
property.read("capi:557877498")             -- CAPI / CarApi:同样支持十进制属性 ID
property.read("adaptapi:772277248")         -- AdaptAPI:使用语义属性 ID 或名称
property.read("soa:属性名称")               -- SOA:将属性名称替换为当前目录中的真实名称
property.read("settings:system/screen_brightness")
property.read("sysprop:ro.build.version.sdk")
property.write("sysprop:debug.evcc.x", "1") -- → ok, err
property.on_change("vhal:VehicleSpeed", function(p)
  log.i(p.new .. " (was " .. p.old .. ")")
end)
property.on_change("aidl:557877498", fn)    -- AIDL/CAPI/AdaptAPI/SOA 监听优先写十进制 ID
property.on_change("aidl:557877498/0", fn)  -- 只有同 ID 多区域时才需要 /areaId
property.list("vhal")                       -- 当前源所有已知属性
property.list("aidl")                       -- 返回 aidl:<十进制属性ID>
property.list("adaptapi")                   -- 返回 adaptapi:<语义属性ID>
property.info("vhal:VehicleSpeed")          -- {id, area_id, data_type, value, ...}

车辆属性的 value/new/old 会自动按自动化规则的口径规整:例如底层显示为 1 (0x1)、2 (READY) 时,Lua 里拿到的是 1、2,可直接用于 tonumber()、大小比较和等值判断。需要显示底层原始文本时,property.info() 里读取 value_display,property.on_change 回调里读取 new_display/old_display。settings: 和 sysprop: 保持系统返回的原始字符串,不做车辆属性规整。

property.on_change 只在车辆属性真实变化时回调;底层重复上报同一值、或脚本/界面主动读取当前值造成的刷新,只会更新缓存,不会触发回调。

property.read/write/info/on_change 返回 (nil, err) 时,EVCC 会自动把 [property.xxx] 错误原因 写入该脚本的日志和上传日志;脚本仍可读取第二返回值做自定义处理。同一脚本 5 秒内相同错误会节流,避免刷屏。

property.on_change 回调参数 p 包含 source/name/new/old/new_display/old_display,车辆属性事件还会带 id/area_id/hex,便于脚本按属性 ID 做兼容判断。area_id 是 Android CarProperty 的区域 ID:全局属性通常是 0,座椅/车门/车窗/空调分区这类属性可能按区域拆分。Lua 里只写 aidl:<属性ID> 时会匹配任意区域;只有同一个属性 ID 出现多个区域且必须区分时,才写 aidl:<属性ID>/<areaId>。

APVP 自动订阅: on_change("apvp:xxx", fn) 会自动调 addSubscription 让脚本成为订阅者;脚本停止时自动注销。

var — 引擎变量(和自动化共享)

var.read("counter")
var.write("counter", "42")
var.read("gps_lat")           -- 读取预设 GPS 纬度变量
var.read("bpm")               -- 当前 BPM,无音乐或未匹配时为 "0"
var.read("music_state")       -- playing / paused_or_stopped / none
var.on_change("counter", function(p) log.i("new=" .. p.new) end)
var.list()                    -- 自定义变量列表 {"counter", "foo", ...}
var.delete("temp")

Lua 的 var.read() 和自动化变量系统共用同一套变量:自定义全局变量、时间、GPS 和音乐预设变量都可以直接读取。var.list() 只列出已创建的自定义变量,预设变量按名称直接读;bpm 与 music_state 为只读变量,可通过 var.on_change() 监听变化。

shell — root 命令

local out, err = shell.exec("getprop ro.product.model", 5000)  -- 超时可选

log / sleep / time / json / storage / toast / http

log.i("info");  log.w("warn");  log.e("error")
print("自动重定向到 log.i")

sleep(1000)                          -- 100ms 切片,停止立刻打断

time.now()                           -- ms 时间戳
time.format(ts, "yyyy-MM-dd HH:mm")
local d = time.today()               -- {year, month, day, hour, weekday}

json.encode({a=1, b="x"})
json.decode('{"k":1}')

storage.write("state.txt", "running")  -- 沙箱在 _data/<script_id>/
storage.read("state.txt")

toast.show("Hello")

http.get("https://api.xxx/data")     -- → {status, body, headers}, err
http.post(url, body, {headers={...}, timeout_ms=30000})

script — 自我信息 + 退出钩子

log.i(script.name .. " path=" .. script.path)
script.on_stop(function() log.i("cleanup…") end)
-- 主动停止: script.stop()

trigger.* — 全部 16 种触发器

trigger.on_boot(function() log.i("开机") end)

trigger.on_screen({on=true}, function() log.i("亮屏") end)
trigger.on_app_foreground("com.tencent.mm", function() end)
trigger.on_app_background("com.tencent.mm", function() end)
trigger.on_broadcast("android.intent.action.BOOT_COMPLETED", function() end)

trigger.on_log({tag="MyTag", keyword="WARN", cooldown_ms=5000}, function(p)
  log.i("命中: " .. p.line)
end)

trigger.on_ble({preset="rotary_1", button=3, mfg_id=10262}, function(p) end)
trigger.on_bluetooth({on=true}, function() end)
trigger.on_bt_device({mac="AA:BB:CC:DD:EE:FF", event="connect"}, function() end)
trigger.on_hard_key({code=24, action="pressed"}, function(p) end)
trigger.on_geofence({name="家", mode="enter"}, function(p) end)

trigger.on_timer(60000, function() log.i("每分钟") end)
trigger.on_cron("08:30", function() log.i("早上 8:30") end)
trigger.on_sun({event="sunrise", offset=-30, cooldown_ms=60000}, function(p) end)
trigger.on_sun({event="sunset", offset=0}, function(p) end, {cooldown_ms=60000})

trigger.on_manual(function() log.i("手动触发") end)
trigger.on_automation("rule_id_or_name", function() log.i("规则触发了") end)

-- 通用参数: cooldown_ms / negate;on_sun 的 offset 单位是分钟,第三参可选兼容 cooldown_ms
-- 取消: trigger.off(handler_id)

动作模块(35+ 种)

app.launch("com.tencent.mm")
app.kill("com.xxx"); app.background("com.xxx", true)
home.press(); voice_assistant.dismiss()

media.play_pause(); media.next(); media.previous()
media.volume(0, 80)                  -- 第一个参数是车机音量组 ID

audio.play("/sdcard/Music/x.mp3", {usage=11, repeat=true, repeat_count=3})
tts.speak("注意减速", {repeat_count=2})

broadcast.send("com.example.ACTION", {k1="v1", k2="v2"})
notification.show("标题", "内容")

ble.broadcast("AABBCC...")           -- hex
remote.send("钉钉/飞书消息文本")
webhook.post("https://...", "body")

automation.trigger("rule_id")        -- 触发某条自动化规则(深度限制 5)
automation.list()

mini_window.launch("com.tencent.mm")
system_mini_window.launch("com.tencent.mm")
display_mirror.start(2); display_mirror.stop()

-- 反向控制 widget / 悬浮窗
widget.on_press("widget_id", function() log.i("按钮被按") end)
float_btn.on_press("btn_id", function() log.i("浮窗按钮") end)

每个动作返回 (ok, err)。

B.5 Web IDE — 浏览器实时调试

脚本页点击 "Web IDE" → 弹二维码 + URL(http://<车机IP>:29999/debug/)。手机/电脑浏览器打开。

Web IDE 当前不提供独立登录认证,只应在可信局域网临时开启;调试结束后不要把 29999 端口暴露到公网。

四块布局:

  • 顶栏:Lua/Frida 切换 / 脚本下拉 / ID 输入 / 加载/保存/运行/停止
  • 左:编辑器(textarea,支持 Tab 缩进)
  • 右:模拟注入。填 vhal:VehicleSpeed = 80 这种键值,运行时 property.read 命中 mock 直接返回;不填就用真实车机数据
  • 底:日志(复制/清空/自动滚动/暂停)

保存直接落到本地脚本目录;脚本运行中车机端"活跃脚本"自动跟随并同步日志。

B.6 脚本商店

脚本页点击 "脚本商店"。三子 tab:

  • 浏览:按类型、车型和关键词筛选;点 "下载" 写入本地脚本目录(Lua 出现在 Lua 列表,新下载的 Frida 脚本出现在“Frida → 云端 → 已下载”)
  • 我的上传:列表 + 审核状态(reviewing / approved / private / rejected);如果服务端启用了 AI 审核,还会显示风险等级和简短意见
  • 上传:选本地或粘贴 → 名称/版本/简介/权限 → 提交审核或隐私上传;署名默认使用内容商店顶部保存的"我的署名"

服务端管理员可以打开脚本源码进行人工审阅;AI 审核只给出风险意见,不会自动通过或上架脚本。

⚠ 上传安全: 脚本商店普通上传审核通过后公开可见,隐私上传不公开但仍可通过分享码分享。系统会自动检测这些模式并要求确认:

  • api_key / apikey
  • secret / token / password
  • Bearer xxx
  • GitHub token (ghp_...)
  • OpenAI/Anthropic key (sk-...)
  • AWS access key

自动检测不保证 100%。最终责任在你。 上传前建议: 1. grep 一遍源码,确认无密钥/token/手机号/家庭坐标 2. 用变量(var.write)或 storage 存敏感值,不写死在源码里 3. 不确定就别传

B.7 调试技巧

  • 一次性脚本(main 跑完即退)vs 常驻脚本(注册 trigger/on_change 自动留住)
  • sleep(N) 100ms 切片,停止能立刻打断
  • 控制台支持复制全部 / 清空 / 自动滚动开关 / 暂停(不抢焦点)
  • 预设模块函数返回 (nil, err) 时会自动写入脚本日志,格式如 [property.read] aidl backend not connected
  • 单脚本日志缓冲 2000 行,超出丢最早
  • 单脚本崩溃自动停,不影响其他;并发上限 20 个
  • 脚本停止后日志保留 60 秒供 Web IDE 拉取最终输出

EVCC — 让你的车机更智能

Geely AIDL 与 Geely CAPI

适配配置开放后,连接页显示 Geely AIDL、Geely CAPI 两个独立开关。全局默认隐藏且关闭;E171 首次取得适配配置后默认开启,之后手动关闭不会被云端刷新、重启或升级覆盖。隐藏入口时停止该源访问,保留原有规则和组件配置。

两个来源在主应用内连接,不要求先连接 RootService。Geely AIDL 包含 Signal 与 PA,Geely CAPI 包含 Function 与只读 Sensor。控制台按目录的读写能力显示操作;权限或固件接口不匹配时显示失败原因。字节属性使用 base64: 编码,不把 Rx 状态当作 Tx 控制。

Geely CAPI 传感器返回已知的无效值时,属性会标为不可用、清空当前值,不把错误码显示为正常读数,也不换算为 0。负的加速度等有效读数仍保留。

控制台的 Name 显示英文属性名;Geely AIDL 去掉 ManagerId_、SignalId_ 这两个 SDK 前缀,保留 PA、Rx/Tx、Timeout 等含义。原始 SDK 名称仍可搜索和作为接口别名使用。Geely AIDL、Geely CAPI 与其他来源共用云端按名称下发的属性说明;没有匹配说明时保持为空,不按同号 ID 套用其他属性的说明。手动填写的说明优先,并按来源、通道、ID 和区域分别保存。signal:0x4061 等通道限定标识作为接口引用别名,普通属性表单无需填写。

云端管理后台的“云端配置 > 属性说明”可维护通用表和车型专属表。车型标识与“适配配置”一致;只有为某个车型添加或导入属性时才建立其专属表。设备收到通用说明后,以本车型专属表中同名属性的完整记录覆盖;没有专属表时只使用通用说明。把仍有用的通用属性转为车型专属项,需要先明确其适用车型,再从通用表移除对应条目;仅新增车型表不会减少通用表的下发量。

Area 区分 AIDL 的“请求区域”、CAPI Function 的“原生区域”和 Sensor 的“不分区”,普通区域以有符号十进制显示和填写;Function 的全部区域显示为 全部区域(ALL),复制和手填使用 ALL(不区分大小写),无需记忆 SDK 编码。ALL 只匹配目录中实际存在的全部区域记录,不表示忽略区域或依次操作每个区域;内部配置与接口仍保留原生区域整数。其它编码没有确认类型时不会按座位、车门或车窗猜测。PA 返回的区域字段另存,不替换请求区域。Function 只列出 SDK 实际报告的区域,空列表不生成区域 0;区域查询失败时连接会报错并按连接策略重试。

自动化、控制台组件、悬浮窗和状态栏组件沿用普通属性 ID、区域字段,不额外增加 Geely 来源选择框;原本已有的来源选择保留。也可从属性列表选中具体记录,自动带入来源和区域。手填 ID 时自动识别 Geely 来源和通道:区域留空或保持新建表单未修改的默认值,且目录只有一个匹配区域时,会自动使用该区域,无需手填。若同号属性跨来源或对应多个区域,保存时提示选择具体记录;用户明确填写区域时按该区域匹配,0 不表示任意区域。Function 区域需要连接后从系统目录取得,不推测或补造。引擎声、MIBO 亮度、米德宝和 EVA 属性绑定使用同样的区域匹配规则;原有来源的填写和解析规则保留。保存时内部仍保留来源、通道、ID 和区域。当前 E171 目录中,Signal/PA、Function/Sensor 在各自来源内没有同号 ID;若未来目录出现歧义,必须明确选择属性,不能任选通道。Geely 自动化由应用执行,主应用退出后不提供独立守护进程托管。Mini 从主应用取值,需更新配套双 APK。 自动化、控制台及悬浮窗的“实时属性变化”弹窗会独立订阅当前 Geely 来源,切换或关闭时释放自己的订阅,并在重连后恢复;无需依赖属性页保持打开。