DCS/ruiyiweiUX/Assets/安卓文件日志系统使用说明.md

160 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 安卓文件日志系统使用说明
## 概述
为了解决安卓板运行20分钟后闪退的问题我们添加了完整的文件日志记录系统。该系统会自动将关键日志保存到安卓设备的本地存储中即使应用闪退日志文件也会保留便于分析问题原因。
## 日志文件位置
**安卓设备路径:** `/sdcard/Android/data/[应用包名]/files/logs/`
示例完整路径:
```
/sdcard/Android/data/com.yourcompany.dcx/files/logs/dcx_log_20241113_143022.txt
```
## 日志文件获取方法
### 方法1直接在设备上查看
- 使用设备上的文件管理器
- 导航到上述路径
- 查看或分享 `dcx_log_*.txt` 文件
### 方法2使用ADB命令推荐
```bash
# 连接设备后执行
adb pull /sdcard/Android/data/[包名]/files/logs/ ./logs/
```
### 方法3通过内置日志查看器
- 在应用中添加了 `AndroidLogViewer` 组件
- 可以直接在界面上查看日志内容
- 支持切换不同的日志文件
## 日志内容说明
### 记录的关键信息
1. **系统信息**
- 设备型号、操作系统版本
- Unity版本、内存配置
- 应用启动时间
2. **内存监控**
- 实时内存使用情况
- 内存清理操作记录
- 队列状态信息
3. **设备状态**
- BFI数值异常情况
- 电池电量变化
- 通信连接状态
4. **错误信息**
- 串口通信异常
- 数据解析错误
- 系统异常和崩溃信息
### 日志格式示例
```
[14:30:22.123] [INFO] [Memory] 内存使用: 245.6MB - 队列状态: 发送队列:2, 接收队列:15, 连接状态:已连接
[14:30:25.456] [ERROR] [DeviceStatus] BFI值异常: NaN, 电量: 0%
[14:30:28.789] [ERROR] [Communication] 串口通信异常,时间: 14:30:28
```
## 系统优化功能
### 1. 内存管理
- 自动监控内存使用超过300MB时强制清理
- 队列大小限制发送队列≤10接收队列≤50
- BFI数据点限制最多1800个30分钟
### 2. 日志轮转
- 单个日志文件最大5MB
- 最多保留5个历史文件
- 自动清理过期日志
### 3. 平台优化
- 安卓平台减少95%的调试日志输出
- 只记录关键错误和状态变化
- 异步写入,不影响主线程性能
## 故障排除步骤
### 1. 获取闪退前日志
```bash
# 闪退后立即执行
adb pull /sdcard/Android/data/[包名]/files/logs/ ./crash_logs/
```
### 2. 分析关键信息
查看最新的日志文件,重点关注:
- `[ERROR]` 标记的错误信息
- 内存使用超过300MB的记录
- BFI值异常的记录
- 通信中断的时间点
### 3. 常见问题模式
- **内存泄漏:** 内存持续增长超过300MB
- **数据解析错误:** BFI值为NaN或超出合理范围
- **通信故障:** 频繁的串口异常记录
- **队列溢出:** 接收队列长度持续增长
## 性能影响
### 内存使用
- 日志缓冲区最多2000行 ≈ 500KB
- 文件写入批量处理每次最多100条记录
- 总体内存增加:< 2MB
### 存储使用
- 每小时约生成2-5MB日志文件
- 最多占用存储25MB5个文件 × 5MB
- 自动清理保持合理的存储占用
### CPU影响
- 后台定期写入每10秒检查一次
- 异步处理不阻塞主线程
- 错误时立即写入确保关键信息不丢失
## 使用建议
1. **运行测试时**
- 确保设备有足够存储空间至少100MB可用
- 在测试前清空旧日志文件
- 记录测试开始和结束时间
2. **闪退后分析**
- 立即导出日志文件
- 查看最后几分钟的内存变化
- 检查是否有重复的错误模式
3. **长期监控**
- 定期检查日志文件大小
- 观察内存使用趋势
- 记录闪退发生的时间和环境
## 技术实现
### 核心组件
- `AndroidFileLogger`主要日志记录器
- `DCXManager`集成内存监控和日志记录
- `DataService`设备状态日志记录
- `SerialCommunicationService`通信错误日志记录
### 日志过滤规则
```csharp
// 跳过的日志类型
- [帧处理] 普通日志
- [队列] 非警告日志
- OptimizedLog 调试信息
- Memory 普通内存日志
// 记录的关键日志
- [ERROR] 所有错误
- [内存警告] 内存超限
- [异常] 系统异常
- 设备状态变化
```
这个日志系统将帮助您准确定位20分钟闪退的根本原因请在下次测试时注意观察日志文件的生成和内容记录