159 lines
6.0 KiB
Markdown
159 lines
6.0 KiB
Markdown
# 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
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 编译单个模块 (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` 模块。
|
||
|
|
|
||
|
|
**使用方式:**
|
||
|
|
```java
|
||
|
|
// 初始化 (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`
|