# 安卓文件日志系统使用说明 ## 概述 为了解决安卓板运行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日志文件 - 最多占用存储:25MB(5个文件 × 5MB) - 自动清理:保持合理的存储占用 ### CPU影响 - 后台定期写入:每10秒检查一次 - 异步处理:不阻塞主线程 - 错误时立即写入:确保关键信息不丢失 ## 使用建议 1. **运行测试时** - 确保设备有足够存储空间(至少100MB可用) - 在测试前清空旧日志文件 - 记录测试开始和结束时间 2. **闪退后分析** - 立即导出日志文件 - 查看最后几分钟的内存变化 - 检查是否有重复的错误模式 3. **长期监控** - 定期检查日志文件大小 - 观察内存使用趋势 - 记录闪退发生的时间和环境 ## 技术实现 ### 核心组件 - `AndroidFileLogger`:主要日志记录器 - `DCXManager`:集成内存监控和日志记录 - `DataService`:设备状态日志记录 - `SerialCommunicationService`:通信错误日志记录 ### 日志过滤规则 ```csharp // 跳过的日志类型 - [帧处理] 普通日志 - [队列] 非警告日志 - OptimizedLog 调试信息 - Memory 普通内存日志 // 记录的关键日志 - [ERROR] 所有错误 - [内存警告] 内存超限 - [异常] 系统异常 - 设备状态变化 ``` 这个日志系统将帮助您准确定位20分钟闪退的根本原因。请在下次测试时注意观察日志文件的生成和内容记录。