# APP 部署问题排查指南 ## 问题一:图标不显示 ### 原因分析 APP 图标是打包在应用内的本地资源,不依赖服务器。 ### 排查步骤 1. 检查图标文件是否存在: ``` fronted_uniapp/unpackage/res/icons/ ├── 72x72.png ├── 96x96.png ├── 144x144.png ├── 192x192.png └── 1024x1024.png (iOS) ``` 2. 在 HBuilderX 中重新配置图标: - 打开 `manifest.json` - 点击 "App图标配置" - 重新选择图标文件 - 点击 "自动生成所有图标并替换" 3. 重新打包 APP ### 如果是应用内的图标不显示 检查图标引用路径是否正确: ```vue ``` --- ## 问题二:应用闪退 ### 可能原因 1. **网络请求异常未处理** 2. **内存不足**(Vosk 模型约 50MB) 3. **权限问题** ### 排查步骤 #### 1. 查看崩溃日志 - Android:使用 `adb logcat` 查看日志 - 或在 HBuilderX 中连接手机,查看控制台输出 #### 2. 检查网络请求超时配置 当前配置:`fronted_uniapp/utils/config.js` ```javascript REQUEST_TIMEOUT: 30000 // 30秒 ``` 如果服务器响应慢,可以增加超时时间: ```javascript REQUEST_TIMEOUT: 60000 // 60秒 ``` #### 3. 检查异常处理 确保所有网络请求都有 try-catch: ```javascript try { const result = await request.get('/api/xxx') // 处理结果 } catch (error) { console.error('请求失败:', error) // 显示友好提示,不要让应用崩溃 uni.showToast({ title: '网络异常', icon: 'none' }) } ``` #### 4. 检查内存使用 Vosk 模型较大,如果手机内存不足可能导致崩溃: - 在低端设备上测试 - 考虑使用更小的模型 --- ## 问题三:语音识别准确率低 ### 重要说明 **语音识别完全在本地进行,不依赖服务器!** 使用的技术栈: - 语音识别:本地 Vosk 模型 (`vosk-model-small-cn-0.22`) - 评分算法:本地 JavaScript 计算 ### 影响准确率的因素 1. **环境噪音** - 安静环境识别率更高 - 避免背景音乐、人声干扰 2. **麦克风质量** - 不同手机麦克风质量不同 - 距离麦克风 20-30cm 最佳 3. **说话方式** - 语速适中,不要太快 - 发音清晰 - 每句话后稍作停顿 4. **模型限制** - `vosk-model-small-cn-0.22` 是小型模型,准确率有限 - 对方言、口音支持较差 ### 提高准确率的方法 #### 方法1:使用更大的模型 下载更大的 Vosk 中文模型(约 1GB),准确率更高: - `vosk-model-cn-0.22`(大模型) 但会增加 APP 体积和内存占用。 #### 方法2:使用云端语音识别 改用百度、讯飞等云端语音识别服务,准确率更高: ```javascript // 已有的后端接口 export function uploadAndRecognize(audioFilePath, originalContent) { // 上传音频到后端,使用百度语音识别 } ``` 后端已经集成了百度语音识别服务,可以考虑使用。 #### 方法3:优化评分算法 当前评分算法在 `fronted_uniapp/api/study/voiceEvaluation.js` 中: - 使用编辑距离计算相似度 - 已经做了宽松处理 如果觉得评分太严格,可以进一步调整算法参数。 --- ## 问题四:视频无法播放(服务器部署后) ### 原因 APP 直接访问后端服务器的 `/profile` 路径获取视频文件。 ### 排查步骤 1. **检查服务器地址配置** `fronted_uniapp/utils/config.js`: ```javascript const DEFAULT_SERVER_HOST = '服务器IP' // 不能是 localhost const DEFAULT_SERVER_PORT = 30091 ``` 2. **检查 Windows 防火墙** 开放 30091 端口: ```powershell netsh advfirewall firewall add rule name="Study Backend" dir=in action=allow protocol=tcp localport=30091 ``` 3. **测试视频 URL** 在手机浏览器中访问: ``` http://服务器IP:30091/profile/upload/2025/xx/video.mp4 ``` --- ## 调试技巧 ### 1. 查看 APP 日志 在 HBuilderX 中: 1. 连接手机(USB 调试模式) 2. 运行 -> 运行到手机 3. 查看控制台输出 ### 2. 使用 Android Studio Logcat ```bash adb logcat | grep -i "uni" ``` ### 3. 添加调试日志 在关键位置添加日志: ```javascript console.log('[DEBUG] 当前服务器地址:', config.API_BASE_URL) console.log('[DEBUG] 请求URL:', url) console.log('[DEBUG] 响应数据:', response) ``` ### 4. 检查网络连接 ```javascript // 在 APP 中测试网络 uni.request({ url: 'http://服务器IP:30091/api/health', success: (res) => console.log('服务器连接正常'), fail: (err) => console.error('服务器连接失败:', err) }) ```