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 &
运行与验证
- 执行上述脚本后,服务器在当前终端前台运行(或通过nohup后台运行)。
- 查看本机IP:
ip addr show或hostname -I,假设为192.168.1.100。 - 在Android设备浏览器(或PC浏览器)访问:
http://192.168.1.100:8080/update.zip。 - 观察浏览器是否开始下载文件,或直接使用命令行验证:
# 在另一台机器上执行(或本机另开终端)
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地址获取升级包,本案例仅完成服务器端基础环境搭建与连通性验证。