4.3 KiB
4.3 KiB
安卓文件日志系统使用说明
概述
为了解决安卓板运行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命令(推荐)
# 连接设备后执行
adb pull /sdcard/Android/data/[包名]/files/logs/ ./logs/
方法3:通过内置日志查看器
- 在应用中添加了
AndroidLogViewer组件 - 可以直接在界面上查看日志内容
- 支持切换不同的日志文件
日志内容说明
记录的关键信息
-
系统信息
- 设备型号、操作系统版本
- Unity版本、内存配置
- 应用启动时间
-
内存监控
- 实时内存使用情况
- 内存清理操作记录
- 队列状态信息
-
设备状态
- BFI数值异常情况
- 电池电量变化
- 通信连接状态
-
错误信息
- 串口通信异常
- 数据解析错误
- 系统异常和崩溃信息
日志格式示例
[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. 获取闪退前日志
# 闪退后立即执行
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秒检查一次
- 异步处理:不阻塞主线程
- 错误时立即写入:确保关键信息不丢失
使用建议
-
运行测试时
- 确保设备有足够存储空间(至少100MB可用)
- 在测试前清空旧日志文件
- 记录测试开始和结束时间
-
闪退后分析
- 立即导出日志文件
- 查看最后几分钟的内存变化
- 检查是否有重复的错误模式
-
长期监控
- 定期检查日志文件大小
- 观察内存使用趋势
- 记录闪退发生的时间和环境
技术实现
核心组件
AndroidFileLogger:主要日志记录器DCXManager:集成内存监控和日志记录DataService:设备状态日志记录SerialCommunicationService:通信错误日志记录
日志过滤规则
// 跳过的日志类型
- [帧处理] 普通日志
- [队列] 非警告日志
- OptimizedLog 调试信息
- Memory 普通内存日志
// 记录的关键日志
- [ERROR] 所有错误
- [内存警告] 内存超限
- [异常] 系统异常
- 设备状态变化
这个日志系统将帮助您准确定位20分钟闪退的根本原因。请在下次测试时注意观察日志文件的生成和内容记录。