iOS原有项目中添加热更新(方式二CodePush:react-native-code-push)

前言

以下操作要在项目根目录下进行,我们所说的项目根目录指的是package.json所在的目录。
而且要在以下两步执行成功的前提下:

$ npm install

$ pod install

操作步骤

  1. cd到根目录(package.json所在的目录)

2 . 安装CodePush CLI

$ npm install -g code-push-cli

  查看是否安装成功的代码是:

$ code-push -v
如果有值的话就说明CodePush CLI安装成功

3.然后需要创建一个CodePush账号

$ code-push register

这时候会打开一个网页,你需要在里面注册或者登陆账号,在这里面选择授权账号,页面如下:
iOS原有项目中添加热更新(方式二CodePush:react-native-code-push)_第1张图片
1.png

授权成功之后,会在网页里面给一个token,如下:

iOS原有项目中添加热更新(方式二CodePush:react-native-code-push)_第2张图片
2.png

打开网页的时候,同时在终端里会出现:

Enter your token from the browser:  

把网页里面的token的粘贴到这个后面就行了,如果成功了会有以下提示:

4.png

拓展其他一些命令行:

code-push login //登录

code-push logout //注销

code-push access-key ls //列出登陆的token

code-push access-key rm  //删除某个 access-key

4.在注册好账户之后,你就需要在账户里面创建一些app

$ code-push app add App名称 ios react-native

  成功后会有以下提示:
iOS原有项目中添加热更新(方式二CodePush:react-native-code-push)_第3张图片
5.png

  而且创建好了之后,就会在刚才那个网页里面看到你的app了。

5.在app里面添加code-push SDK
  在项目根目录下,安装code-push组件,执行:

$ npm install --save react-native-code-push@latest

6.在项目里配置code-push
  code-push提供三种方式:
  (1) RNPM安装 - React Native包管理器 (RNPM)
  (2) CocoaPods安装
  (3) 手动安装
  这里主要使用第二种方式,CocoaPods安装:

在Podfile里面添加:

pod 'CodePush', :path => '../node_modules/react-native-code-push'

  然后执行:

$ pod install

  1. 在项目的PROJECT-InfoConfigurations里面点击+选择Duplicate "Release" Configuration, 并且给一个名字,我这里给了个Staging,如图:
    iOS原有项目中添加热更新(方式二CodePush:react-native-code-push)_第4张图片
    6.png

8.在PROJECT-Build setting-Per-configuration Build Products path-Staging里面改成$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)

  1. 然后在项目的PROJECT-Build Setting里面点击+选择Add User-Defined Setting,创建好之后起个名字,这里叫CODEPUSH_KEY, 然后在ReleaseStaging里面分别写上第8步里面的两个值,ProductionStaging如图:
    iOS原有项目中添加热更新(方式二CodePush:react-native-code-push)_第5张图片
    7.jpg

10.如果忘记了一开始添加的或者一开的终端以及关了,找不到那个app的Deployment Key信息了,可以使用下面的命令行来查询Deployment Key:

$ code-push deployment ls App名称 -k

10.png

 11. 在Info.plist里面添加CodePushDeploymentKey,值是$(CODEPUSH_KEY)

12.在项目中你想使用RN的地方添加以下代码:

#import 
#import 
#import 


NSURL *jsCodeLocation ;
#if DEBUG
    jsCodeLocation = [NSURL URLWithString:@"http://localhost/index.ios.bundle?platform=ios&dev=true"];localhost是本机ip体质
#else
    jsCodeLocation = [CodePush bundleURL];
#endif
    
    RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL : jsCodeLocation
                                                        moduleName : @"TestCodePushDemo"
                                                 initialProperties : nil
                                                     launchOptions : nil];
    UIViewController *vc = [[UIViewController alloc] init];
    vc.view = rootView;
    [self presentViewController:vc animated:YES completion:nil];

到这就配置完成了~

遇到的问题:

报错: ReactComponentTreeHook.purgeUnmountedComponents is not a function

其实如果报了这个错,实在执行下面的时候:

$ npm install --save react-native-code-push@latest

报了一句警告:

npm WARN react-native@0.48.4 requires a peer of react@16.0.0-alpha.12 but none is installed. You must install peer dependencies yourself.

解决方法就是修改你现在安装的react版本为提示的版本:

$ yarn add react@16.0.0-alpha.12

在pod GLog的时候:

pod 'GLog', :podspec => '../node_modules/react-native/third-party-podspecs/GLog.podspec'

报错,如下:
iOS原有项目中添加热更新(方式二CodePush:react-native-code-push)_第6张图片
11.png
解决方法是:

在终端输入:

xcrun -k -sdk iphoneos -show-sdk-path

如果返回的是:

xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: unable to lookup item 'Path' in SDK 'iphoneos'

那么就在终端输入:

sudo xcode-select --switch /Applications/Xcode.app
Password:输入电脑密码

然后在podfile目录执行:

pod install

就解决了~~~

参考文章

codepush中文版
react-native-code-push
react native codepush热更新解决成功更新
翻译|react-native-code-push热更新部署
React Native热更新部署/热更新-CodePush最新集成总结(新)

你可能感兴趣的:(iOS原有项目中添加热更新(方式二CodePush:react-native-code-push))