乐闻世界logo
搜索文章和话题

Expo的OTA更新是如何工作的?如何使用EAS Update?

2月21日 16:02

Expo的OTA (Over-the-Air) 更新功能允许开发者在不重新提交应用商店的情况下推送应用更新。这是一个强大的功能,可以显著加快迭代速度。

OTA更新原理:

Expo OTA通过将JavaScript bundle和资源文件上传到Expo服务器,然后在应用启动时检查并下载更新来实现。

工作流程:

  1. 开发者使用eas update命令上传更新
  2. Expo服务器存储更新并分配唯一版本号
  3. 应用启动时检查服务器是否有新版本
  4. 如果有新版本,下载并应用更新
  5. 用户下次打开应用时看到更新内容

EAS Update使用方法:

  1. 安装EAS CLI:
bash
npm install -g eas-cli
  1. 配置项目:
bash
eas build:configure
  1. 创建更新:
bash
# 创建并发布更新 eas update --branch production --message "Fix login bug" # 指定运行时版本 eas update --branch production --runtime-version 1.0.0 # 预览更新 eas update --branch preview --message "Test new feature"
  1. 查看更新历史:
bash
# 查看所有更新 eas update:list # 查看特定分支的更新 eas update:list --branch production
  1. 回滚更新:
bash
# 回滚到上一个版本 eas update:rollback --branch production # 回滚到特定版本 eas update:rollback --branch production --target-message "Previous stable version"

配置app.json:

json
{ "expo": { "updates": { "url": "https://u.expo.dev/your-project-id" }, "runtimeVersion": { "policy": "appVersion" } } }

运行时版本策略:

Expo支持多种运行时版本策略:

  1. appVersion策略(推荐):
json
{ "runtimeVersion": { "policy": "appVersion" } }
  • 使用应用版本号作为运行时版本
  • 简单直接,适合大多数场景
  1. nativeVersion策略
json
{ "runtimeVersion": { "policy": "nativeVersion" } }
  • 使用原生代码版本
  • 更精确的控制
  1. customVersion策略
json
{ "runtimeVersion": { "policy": "customVersion", "customVersion": "1.0.0" } }
  • 自定义版本号
  • 最大的灵活性

更新分组:

可以创建不同的更新分支来管理不同环境的更新:

bash
# 生产环境更新 eas update --branch production # 预览环境更新 eas update --branch preview # 开发环境更新 eas update --branch development

客户端配置:

typescript
import * as Updates from 'expo-updates'; // 检查是否有更新 async function checkForUpdates() { try { const update = await Updates.checkForUpdateAsync(); if (update.isAvailable) { await Updates.fetchUpdateAsync(); Updates.reloadAsync(); } } catch (error) { console.error('Error checking for updates:', error); } } // 手动触发更新检查 checkForUpdates(); // 监听更新事件 Updates.addListener(event => { if (event.type === Updates.UpdateEventType.UPDATE_AVAILABLE) { console.log('Update available:', event); } });

限制和注意事项:

  1. 只能更新JavaScript和资源:不能更新原生代码

  2. 应用商店审核:某些应用商店对OTA更新有政策限制

  3. 版本兼容性:更新必须与当前运行时版本兼容

  4. 网络依赖:用户需要网络连接才能接收更新

  5. 回滚机制:需要实现回滚策略以应对问题更新

最佳实践:

  1. 渐进式发布:先在小范围用户中测试更新

  2. 版本管理:保持清晰的版本号和更新日志

  3. 错误监控:监控更新后的错误率

  4. 用户通知:在更新前通知用户

  5. 回滚准备:随时准备回滚到稳定版本

  6. 测试覆盖:在发布前充分测试更新

常见问题:

  1. 更新不生效:检查运行时版本是否匹配

  2. 更新失败:查看服务器日志和客户端错误

  3. 性能影响:监控更新下载对应用性能的影响

  4. 安全考虑:确保更新传输使用HTTPS加密

Expo OTA更新是快速迭代应用的重要工具,合理使用可以大大提升开发效率和用户体验。

标签:Expo