smart-home/smart-home-app/README-配置落地完整指南.md
2026-02-26 09:16:34 +08:00

5.3 KiB
Raw Blame History

uni-app配置落地完整指南

🎯 关键配置修复完成

感谢你的详细建议!已完成所有关键配置的补充和优化:

1. 完整的Android网络权限

文件: manifest.json

"android": {
  "permissions": [
    "<uses-permission android:name=\"android.permission.INTERNET\"/>",                    // 核心:允许网络访问
    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",          // 允许获取WiFi状态
    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",          // 允许修改WiFi状态
    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",       // 允许获取网络状态
    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",       // 允许修改网络状态
    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",       // 获取WiFi信息需要
    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>"      // 获取WiFi信息需要
  ],
  "abiFilters": ["armeabi-v7a", "arm64-v8a", "x86"],
  "targetSdkVersion": 28,
  "minSdkVersion": 21,
  "usesCleartextTraffic": true
}

关键权限说明:

  • INTERNET - 网络访问基础权限
  • ACCESS_WIFI_STATE - 判断是否在局域网
  • ACCESS_*_LOCATION - Android 6+获取WiFi信息必需

2. 强化的uni.request配置

所有网络请求已优化:

uni.request({
  url: testUrl,
  method: 'GET',
  timeout: 10000,                           // 延长到10秒
  header: {
    'Content-Type': 'application/json',
    'User-Agent': 'uni-app/ESP32Client',    // 避免设备拦截无标识请求
    'Cache-Control': 'no-cache',            // 关闭缓存,避免读取旧响应
    'Connection': 'keep-alive'              // 保持连接,提升成功率
  },
  sslVerify: false,                         // 关闭SSL验证
  withCredentials: false                    // 关闭跨域凭证
})

3. ESP32网段校验逻辑

新增智能IP校验

  • IP格式验证0-255范围检查
  • ESP32网段识别192.168.1.x优先
  • 局域网网段支持192.168.x.x, 10.x.x.x, 172.16-31.x.x
  • 友好的错误提示和警告

使用示例:

const subnetCheck = checkEsp32Subnet('192.168.1.98')
// 返回: { success: true, message: "IP 192.168.1.98 在ESP32网段可发起通信" }

4. 集成到设备发现流程

  • 手动输入IP前自动校验网段
  • 提供"仍要尝试"选项(用户可强制测试)
  • 网段警告提示非192.168.1.x网段
  • 详细的错误说明和修复建议

🚀 真机调试 vs 云打包差异

快速验证配置(真机调试)

项目 是否生效 注意事项
usesCleartextTraffic 生效 调试基座支持
网络权限 生效 调试基座已包含
targetSdkVersion ⚠️ 受限 可能受调试基座版本限制
请求配置优化 生效 代码层面修改

真机调试注意事项:

  1. 关闭HBuilderX的「网络代理」
  2. 确保调试基座为最新版本
  3. 避免手机端有旧APP残留

正式使用(云打包)

项目 是否生效 注意事项
所有配置 完全生效 无调试基座限制
targetSdkVersion 完全生效 按配置编译
网络权限 完全生效 完整权限申请

云打包步骤:

  1. 发行 → 原生App - 云打包
  2. 选择对应架构abiFilters中的3个
  3. 允许手机安装「未知来源应用」
  4. 卸载旧APP后安装新包

🧪 测试步骤

第一步:真机调试测试

  1. 清除缓存 - HBuilderX → 运行 → 清除缓存
  2. 重新运行 - 运行到手机
  3. 测试网络诊断 - 点击"📶 网络诊断"
  4. 测试手动输入 - 输入192.168.1.98

第二步:如果真机调试仍超时

  1. 进行云打包 - 发行 → 原生App - 云打包
  2. 安装正式包 - 卸载旧APP安装新APK
  3. 重新测试 - 所有配置将完全生效

📊 预期修复效果

网段校验效果

输入: 192.168.1.98
✅ IP 192.168.1.98 在ESP32网段192.168.1.x可发起通信

输入: 10.0.0.100  
⚠️ IP 10.0.0.100 在局域网网段可尝试通信注意ESP32通常在192.168.1.x

输入: 8.8.8.8
❌ IP 8.8.8.8 不在局域网网段无法访问ESP32设备

网络请求效果

📶 当前网络类型: wifi
🔍 测试接口: http://192.168.1.98:80/api/device/info
✅ HTTP连接成功: /api/device/info
✅ 设备连接成功!

💡 关键配置对比

配置项 修复前 修复后
Android权限 不完整 7个完整权限
请求超时 3秒 10秒
请求头 基础 5个优化配置
IP校验 智能网段校验
错误提示 简单 详细指导

🎯 核心修复要点

  1. 权限完整性 - 补充了位置权限获取WiFi信息必需
  2. 请求稳定性 - 添加User-Agent、缓存控制等配置
  3. 用户体验 - 智能IP校验提前拦截无效输入
  4. 调试友好 - 区分真机调试和云打包的差异

现在配置已经完全落地,应该能解决之前的超时问题!🚀