React Native 0.74 热更新:CodePush 配置指南

CodePush 是微软提供的开源热更新方案,支持 React Native 应用绕过应用商店审核直接更新代码。以下是针对 React Native 0.74 的完整配置流程:


一、环境准备
  1. 安装 CodePush CLI
    全局安装命令行工具:

    npm install -g code-push-cli
    

  2. 注册 CodePush 账号

    code-push register  # 浏览器登录微软账号授权
    code-push login     # 关联本地环境
    


二、项目集成
  1. 安装 React Native SDK
    在项目根目录执行:

    npm install react-native-code-push
    

  2. Android 配置

    • 修改 android/app/build.gradle
      apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
      

    • android/settings.gradle 添加:
      include ':react-native-code-push'
      project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')
      

  3. iOS 配置

    • 修改 ios/Podfile
      pod 'CodePush', :path => '../node_modules/react-native-code-push'
      

    • 执行更新:
      cd ios && pod install
      


三、初始化 CodePush 应用
  1. 创建平台应用

    code-push app add MyApp-Android android react-native
    code-push app add MyApp-iOS ios react-native
    

    记录生成的部署密钥(ProductionStaging)。

  2. 配置密钥

    • Android:在 MainApplication.java 添加:
      @Override
      protected List<ReactPackage> getPackages() {
          return Arrays.asList(
              new CodePush("DEPLOYMENT_KEY", getApplicationContext(), BuildConfig.DEBUG), // 替换密钥
              // ...其他包
          );
      }
      

    • iOS:在 AppDelegate.m 添加:
      #import <CodePush/CodePush.h>
      // ...
      - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge {
          #ifdef DEBUG
            return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
          #else
            return [CodePush bundleURL]; // 生产环境启用 CodePush
          #endif
      }
      


四、代码集成
  1. 包裹根组件
    修改入口文件(如 App.js):

    import CodePush from "react-native-code-push";
    
    const App = () => (
      <Provider store={store}>
        <NavigationContainer>{/* ... */}</NavigationContainer>
      </Provider>
    );
    
    export default CodePush({
      checkFrequency: CodePush.CheckFrequency.ON_APP_START,
      installMode: CodePush.InstallMode.IMMEDIATE
    })(App);
    

  2. 手动更新检查
    在需要的位置触发更新:

    CodePush.sync({
      updateDialog: true, // 显示更新弹窗
      installMode: CodePush.InstallMode.IMMEDIATE
    });
    


五、发布热更新
  1. 构建更新包

    code-push release-react MyApp-Android android --t 1.0.0 --dev false --d Production
    code-push release-react MyApp-iOS ios --t 1.0.0 --dev false --d Production
    

    • --t:目标二进制版本(与 app.jsonversion 一致)
    • --d:部署环境(Production/Staging
  2. 查看发布状态

    code-push deployment ls MyApp-Android -k
    


六、调试与回滚
  • 强制更新测试
    CodePush.forceUpdate();
    

  • 回滚更新
    code-push rollback MyApp-Android Production --targetRelease v1  # 回退到 v1 版本
    

注意事项

  1. 热更新仅限 JS 代码、图片及资源文件,不可修改原生代码或依赖库
  2. 遵守 Apple/Google 政策,避免动态修改核心功能
  3. 测试环境使用 Staging 密钥,生产环境用 Production

通过以上步骤,您的 React Native 0.74 应用即可实现免审核热更新,大幅提升迭代效率。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐