You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在模拟器上连接自托管OTA服务器运行expo-updates包?

解决Expo Dev Client中启用自托管OTA更新的问题

核心结论

可以通过环境变量强制将DEV设为false,绕开dev client的开发模式OTA限制,但会改变dev client的运行行为。

具体实现方法

方法一:通过环境变量启动Dev Client(推荐)

启动模拟器上的dev client时,添加EXPO_NO_DEV=1环境变量,让expo-updates以生产模式逻辑运行:

  • iOS:
    EXPO_NO_DEV=1 npx expo run:ios
    
  • Android:
    EXPO_NO_DEV=1 npx expo run:android
    

这个变量会直接覆盖expo-updates内部的DEV判断,允许客户端触发OTA更新检查。

方法二:手动修改expo-updates源码(不推荐)

找到项目依赖中的node_modules/expo-updates/src/Updates.ts,将DEV常量直接设为false:

const DEV = false;

⚠️ 注意:这种方式会在每次执行npm install或yarn install后被覆盖,仅适合临时测试。

关键注意事项

  • 启用该模式后,dev client会切换为生产模式行为:不会自动热重载代码,需要手动调用Updates.checkForUpdateAsync()等方法触发更新
  • React DevTools等调试工具可能无法正常工作,生产模式会禁用部分调试特性
  • 确保自托管OTA服务器的/manifest端点配置正确,客户端能正常访问(注意模拟器的网络权限,本地服务器需保证模拟器可访问)
  • 测试前需先打包并上传一个更新包到自托管服务器,否则客户端无更新可拉取

内容的提问来源于stack exchange,提问作者Lee Hodges

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:08:12