1. 搭建OTA升级服务器基础环境

任务说明

本案例搭建一个可供Android设备访问的HTTP文件服务器,用于存放OTA升级包(如update.zip),并通过浏览器或命令行工具验证客户端能够正常下载该文件。服务器与客户端处于同一局域网即可完成验证。

环境准备

  • 操作系统:Ubuntu 20.04/22.04(或任意Linux发行版)
  • Python 3.6+(系统自带或通过apt install python3安装)
  • Android设备或PC浏览器(作为客户端验证下载)

实现步骤

使用Python内置的http.server模块启动HTTP服务,无需安装第三方依赖。将OTA升级包放入指定目录,启动服务后即可通过HTTP访问。

关键完整代码

#!/bin/bash
# 1. 创建OTA升级包存放目录
mkdir -p /var/www/ota

# 2. 将升级包放入该目录(示例:生成一个测试文件模拟升级包)
echo "OTA update package v1.0" > /var/www/ota/update.zip

# 3. 启动HTTP服务(监听0.0.0.0:8080,目录为/var/www/ota)
cd /var/www/ota
python3 -m http.server 8080 --bind 0.0.0.0

若需后台运行,可将最后一行替换为:

nohup python3 -m http.server 8080 --bind 0.0.0.0 > /var/log/ota_server.log 2>&1 &

运行与验证

  1. 执行上述脚本后,服务器在当前终端前台运行(或通过nohup后台运行)。
  2. 查看本机IP:ip addr show 或 hostname -I,假设为192.168.1.100。
  3. 在Android设备浏览器(或PC浏览器)访问:http://192.168.1.100:8080/update.zip。
  4. 观察浏览器是否开始下载文件,或直接使用命令行验证:
# 在另一台机器上执行(或本机另开终端)
curl -I http://192.168.1.100:8080/update.zip

通过条件:curl返回HTTP/1.0 200 OK,且Content-Length与文件实际大小一致(本例中为24字节)。若返回404,检查文件路径和服务器工作目录是否正确。

常见问题

  • 端口被占用:更换端口,如python3 -m http.server 9000,并同步修改访问URL。
  • 客户端无法访问:检查服务器防火墙(sudo ufw allow 8080),并确认客户端与服务器在同一网段。
  • Android下载失败:确认Android设备与服务器网络互通,且URL中IP地址无误。

后续接入说明

实际OTA升级时,将编译生成的update.zip替换到/var/www/ota/目录即可。Android系统升级程序将通过该HTTP地址获取升级包,本案例仅完成服务器端基础环境搭建与连通性验证。