Files
2026-11-05 14:35:04 +08:00

6.0 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

车载 Android 应用系统,多模块架构。主要模块包括语音助手、车控、媒体、系统UI等。当前分支 develop_xcmg 为徐工(xcmg)项目开发分支。

Build Commands

# 编译单个模块 (Debug)
./gradlew :YX_Voice:assembleDebug
./gradlew :YX_CarControl:assembleDebug

# 编译单个模块 (Release)
./gradlew :YX_Voice:assembleRelease

# 清理构建
./gradlew clean

# 全量编译所有 APK (使用脚本)
./build_apk.sh          # Debug 版本
./build_apk.sh release  # Release 版本

# 编译 YX_Support jar 包
./gradlew makejar       # 输出到 YX_Support/build/libs/

Architecture Overview

模块分层结构

┌─────────────────────────────────────────────────────────────────────┐
│                    Application Layer (应用层)                        │
│  YX_Voice | YX_CarControl | YX_Music | YX_Radio | YX_Video | ...   │
└─────────────────────────────────────────────────────────────────────┘
                              ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    SDK Layer (SDK层)                                 │
│  YX_AutoMotiveSDK | YX_IPC_SDK | YX_MediaSDK | YX_MusicSDK | ...   │
└─────────────────────────────────────────────────────────────────────┘
                              ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    Base Library (基础库层)                           │
│  YX_Lib_CommonBase | YX_Lib_UIStyleBase | YX_Support               │
└─────────────────────────────────────────────────────────────────────┘

跨进程通信 (YxIPC)

核心跨进程通信机制,位于 YX_IPC_SDK 模块。

使用方式:

// 初始化 (Application.onCreate)
YxIPC.getInstance().bind(application, ipcConfig);

// 发送消息 (无回调)
YxIPC.getInstance().sendRemoteNoCall(remotePackage, bundle);

// 发送消息 (有回调)
YxIPC.getInstance().sendRemoteByCall(remotePackage, bundle, sessionId, callback);

// 注册消息监听
YxIPC.getInstance().addMessageListener(messageListener);

关键类: YxIPC.java, YxMessenger.java, MessageListener.java

语音模块架构 (YX_Voice)

语音助手模块,与同行者(TXZ)语音服务通信。

核心类:

类 路径 职责
VoiceManager core/VoiceManager.java 单例管理器,包含 VoiceEventHelper 实例
VoiceEventHelper helper/VoiceEventHelper.java 事件处理核心,所有语音操作入口
ProtocolManager core/ProtocolManager.java IPC 协议分发器
YxProtocolHandler core/YxProtocolHandler.java 根据包名分发协议到对应 Protocol
VoiceProtocol protocol/VoiceProtocol.java TXZ 协议解析
CarControlProtocol protocol/CarControlProtocol.java 车控状态同步协议

协议常量 (两套):

  • VoiceNewProtocolConst.java (YX_Voice) - TXZ 协议常量,与语音服务通信
  • VoiceNewConstant.java (YX_Lib_CommonBase) - IPC 协议常量,模块间通信

车控模块 (YX_CarControl)

车辆硬件控制模块。

关键类:

  • VoiceSettingManager.java - 语音控制入口,接收 IPC 消息调用硬件
  • CarControlsManager (YX_AutoMotiveSDK) - 硬件控制 API

Module Dependencies

模块间依赖关系 (典型):

YX_Voice → YX_IPC_SDK → YX_Lib_CommonBase → YX_Support
YX_Voice → YX_AutoMotiveSDK → (framework_classes.jar)
YX_CarControl → YX_IPC_SDK → YX_Lib_CommonBase
YX_CarControl → YX_SettingSDK → YX_AutoMotiveSDK

平台 SDK:

  • sdklibs/framework_classes.jar - Android framework 类 (需要 hidden API)
  • sdklibs/yx_support_classes.jar - YX_Support 编译输出
  • sdklibs/android.car.jar - Android Car API

Protocol Flow

语音控制指令流向:

TXZ语音 → VoiceProtocol → VoiceEventHelper → YxIPC → VoiceSettingManager → CarControlsManager → 硬件

状态同步流向:

硬件 → CarControlsControllerCallBack → VoiceSettingManager → YxIPC → CarControlProtocol → VoiceEventHelper → TXZ

Package Names

主要模块包名:

模块 包名
YX_Voice com.yaxon.voice
YX_CarControl com.yaxon.carcontrol
TXZ语音 com.txzing.voiceassistant
YX_Music com.yaxon.music
YX_Radio com.yaxon.radio
YX_Hvac com.yaxon.hvac
YX_Launcher com.yaxon.launcher
YX_SystemUI com.android.systemui

Signing

使用平台签名 (platform.jks):

  • 密钥别名: yx
  • 密钥密码: yx123456
  • 所有模块共用同一签名配置 (config.gradle)

Branch Information

  • develop_xcmg - 徐工项目 (当前分支)
  • x9hp_dw - 三一项目
  • master - 主分支

Special Notes

  1. 编译环境: BuildTools 30.0.3, Gradle Plugin 4.1.3, compileSdk 29
  2. 平台 API: 需要 sdklibs/framework_classes.jar 访问 hidden API
  3. 混淆: Release 版本开启混淆 (minifyEnabled true)
  4. 输出路径: Release APK 输出到 third_apps/<ModuleName>/
  5. 语音唤醒广播: YXUtils.ACTION_START_TXZVOICE / android.intent.action.start_txzvoice