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

iOS端EAS Update初始化失败求助(Expo SDK45→49迁移)

解决EXUpdates.UpdatesNotInitializedException 1报错的排查方案

针对裸工作流从Expo SDK45升级到49并迁移EAS Update时遇到的这个报错,以下是几个关键排查和修复方向:

  • 确保EXUpdates在原生端完成初始化
    裸工作流下,EXUpdates模块需要在App启动阶段由原生代码完成初始化,否则无法调用JS侧的更新API:

    • iOS:检查AppDelegate.mm(或.m)文件,确保在didFinishLaunchingWithOptions方法中,创建window后添加初始化代码:
      // 初始化EXUpdates并显示启动屏
      [EXUpdatesController.sharedController startAndShowLaunchScreen:self.window];
      
      这段代码要放在return YES;之前,且确保self.window已正确初始化。
    • Android:检查MainApplication.java,在onCreate方法开头添加初始化代码:
      import expo.modules.updates.UpdatesController;
      
      @Override
      public void onCreate() {
        super.onCreate();
        // 初始化Updates控制器
        UpdatesController.initialize(this);
        // 其他初始化代码...
      }
      
      同时确认AndroidManifest.xml中已配置正确的meta-data项,比如expo.modules.updates.EXPO_UPDATE_URL和expo.modules.updates.EXPO_RUNTIME_VERSION。
  • 检查runtimeVersion的一致性
    确保以下三处的runtimeVersion完全匹配:

    • 本地app.config.json中配置的runtimeVersion
    • EAS Build构建出的App中实际生效的runtimeVersion(可通过查看iOS的expo.plist或Android的strings.xml确认)
    • EAS Update发布时指定的runtimeVersion(执行eas update时的配置或分支关联的版本)
      只要有一处不匹配,更新就无法被检测到,甚至会触发初始化异常。
  • 调整更新检查的调用时机
    避免在App刚启动时立即调用checkForUpdateAsync,此时原生端的EXUpdates可能还未完成初始化。建议:

    • 将更新检查逻辑放在用户主动触发的事件中(比如“检查更新”按钮的点击事件)
    • 如果需要自动检查,可在根组件的useEffect中监听AppState变为active后再执行:
      import { AppState } from 'react-native';
      
      useEffect(() => {
        const subscription = AppState.addEventListener('change', async (nextAppState) => {
          if (nextAppState === 'active') {
            await onCheckUpdate();
          }
        });
      
        return () => subscription.remove();
      }, []);
      
  • 验证EAS渠道关联是否正确
    确认eas.json中develop配置的channel与实际发布更新时指定的渠道一致,且该渠道的更新已正确关联到对应runtimeVersion。可通过eas update:list命令查看已发布的更新信息,核对渠道、runtimeVersion等参数。

内容的提问来源于stack exchange,提问作者Juan Salvador Portugal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:00:20