# ICCOACarlinkCluster **Repository Path**: zombies/iccoacarlink-cluster ## Basic Information - **Project Name**: ICCOACarlinkCluster - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-10-13 - **Last Updated**: 2026-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ICCOA Carlink 仪表投屏补丁(CarlinkCluster) > **ICCOA Carlink** 车机端仪表投屏增强补丁:让支持 ICCOA 协议(Carlink)的安卓手机在连接车机后,可将投屏画面同步显示到仪表盘,并提供画面裁剪、缩放等定制能力。 --- ## ⚠️ 声明(请先阅读) 本项目由**长安第三方软件交流群群主**提供 APK 与部分源代码,本人仅在此基础上借助 AI 工具进行了二次创作。 - 本项目**仅在 22 款长安 UNI-V 尊贵版**上验证通过,其它车型是否适用未知。 - 本项目**仅供学习交流与二次创作**,Release 页提供已编译版本供尝鲜,若不符合预期请自行卸载。 - 本人并非专业安卓开发者,代码全程由 AI 生成,对内部实现细节并不完全理解,其中可能存在的 Bug 恕无法保证。 - **飞屏(仪表投屏)为长安车机定制功能,不一定适用于其它车型。** > 本项目由 **豆包 AI** 与 **WorkBuddy(DeepSeek-V4-Pro)** 先后协作完成。 --- ## 项目简介 - **适用对象**:支持 ICCOA 协议(Carlink)的安卓手机,车机最低安卓版本 **Android 9**。 - **核心思路**:在 Carlink 车机端 APK 上做二次开发,把投屏视频流分叉一路到仪表盘解码显示,并模拟长安「车载高德」的投影通道激活过程,实现仪表投屏。 --- ## 功能特性 1. **可选自动飞屏**:与 DiPlay 一致,启动软件自动打开投影通道,连接成功后自动飞屏到仪表盘。 2. **仪表盘画面可定制调整**:包括左侧工具栏裁剪、整体画面缩放与平移。 3. **三指长按**:唤出设置界面。 4. **三指左滑**:开启投屏;**三指右滑**:关闭投屏。 > 飞屏功能为长安车机定制,不一定适用于其它车型。 --- ## 目录结构 ``` . ├── app/src/main/java/com/syncore/carlinkx/cluster/ # 核心补丁源码(本项目主体) │ ├── ClusterManager.java # 单例管理器:投屏生命周期、设置、手势 │ ├── ClusterBridge.java # 长安飞鱼 OS 仪表投影激活桥(模拟车载高德激活过程) │ ├── ClusterDecoder.java # 第二路 H.264/H.265 硬解器 │ ├── ClusterPresentation.java # 仪表屏 Presentation(画面裁剪/缩放矩阵) │ ├── ClusterSettings.java # 设置界面(裁剪/声道/帧率等) │ ├── ClusterPrefs.java # 参数持久化 │ ├── ThreeFingerTouchListener.java # 三指手势识别 │ ├── DiagnosticLog.java # 日志(文件 + logcat + 去重) │ ├── DiagnosticExport.java # 日志导出 │ └── BootCompletedReceiver.java # 开机自启 ├── app/build.gradle # Android 模块构建配置 ├── settings.gradle # Gradle 工程配置 ├── LICENSE # GPL-3.0 └── README.md ``` > 注意:本项目是「对 Carlink 车机端 APK 的补丁」,核心逻辑编译成一个 `classes.dex`, > 再反编译合并进 Carlink 原始 APK 里。原始 APK 与 smali 补丁点(见下文)不在本仓库内。 --- ## 编译教程 ### 环境要求 | 工具 | 版本 | 说明 | |------|------|------| | JDK | 21 | 编译与打包 | | Android SDK Build-Tools | 37.0.0 | 提供 zipalign / apksigner | | Gradle | 8.9 | 编译 cluster Java 工程 | | apktool | 2.10.0 | 反编译 / 回编译 APK | | baksmali / smali | 2.5.2 | dex ↔ smali 转换 | | Python | 3.x | 提取 classes.dex | | zipalign / apksigner | SDK 自带 | 对齐与签名 | ### 整体流程 本补丁的产出物是一个合并进 Carlink 原始 APK 的 `classes.dex`。完整打包分两步: #### 第一步:编译 cluster Java 工程 ```bash # 在本仓库根目录 gradle assembleRelease # 产物:app/build/outputs/apk/release/app-release-unsigned.apk # 其中包含本仓库全部 Java 代码编译成的 classes.dex ``` #### 第二步:合并进 Carlink 原始 APK ```bash # 1. 用 apktool 反编译 Carlink 2.0.24 原始 APK apktool d "ICCOA_Carlink_2.0.24.apk" -o carlink_src # 2. 提取上一步编译出的 classes.dex # (可用任意 zip 工具解压 app-release-unsigned.apk 得到 classes.dex) # 3. 反编译 dex 为 smali baksmali d classes.dex -o cluster_smali # 4. 把 cluster 补丁 smali 复制进 Carlink 反编译目录 cp -r cluster_smali/com/syncore/carlinkx "carlink_src/smali_classes2/com/syncore/" # 5. (关键)按下方「smali 补丁点」在 Carlink 反编译目录里打 hook # 6. 回编译 apktool b carlink_src -o unsigned.apk # 7. 对齐 + 签名 zipalign -f -p 4 unsigned.apk aligned.apk apksigner sign --ks your-key.jks --ks-key-alias your-alias --out CarlinkCluster.apk aligned.apk ``` --- ## smali 补丁点(需在 Carlink 反编译 smali 里手动添加) 这些 hook 位于 Carlink 原生代码里,负责把补丁逻辑接入运行链路: | 文件 | hook 内容 | |------|-----------| | `com/ucarsink/sink/natives/SinkNative.smali` | `onNativeVideoDataReceived` 里调 `ClusterManager.onVideoEs(deviceId, videoType, data)` —— 分叉视频 ES 给仪表解码 | | `com/ucar/vehiclesdk/h$c.smali` | 音频构造处调 `onAudioTrackCreate` / `getStreamType` / `createLegacyTrack` —— 声道路由 | | `com/syncore/carlink/main/mvp/presenter/MainPresenter.smali` | 连接/断开回调处调 `onConnected` / `onDisconnected` | | `com/syncore/carlink/common/manager/UCarConfigMgr.smali` | 分辨率协商处调 `getFps` / `getCenterDisplayWidth/Height` | | `com/syncore/carlink/base/BaseActivity.smali` 等 | `attachActivity` —— 挂载三指手势、设置按钮 | > 这些补丁点与原始 APK 的 smali 强相关,版本不同可能失效,故不随本仓库分发,仅作说明。 --- ## 用到的工具 - [apktool](https://ibotpeaches.github.io/Apktool/) — APK 反编译/回编译 - [smali / baksmali](https://github.com/google/smali) — dex 与 smali 互转 - [Android SDK Build-Tools](https://developer.android.com/tools) — zipalign、apksigner - [Gradle](https://gradle.org/) — 构建 --- ## License 本项目采用 [GPL-3.0](LICENSE) 许可证(与 [DiPlay](https://github.com/DevToys-App/DiPlay) 一致)。