`
jsntghf
  • 浏览: 2476495 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

React Native热部署之CodePush

    博客分类:
  • iOS
阅读更多

本文使用的环境是Mac OS 10.11.1、Xcode 7.2、React Native 0.17.0、CodePush 1.5.2-beta。

 

一、环境准备

 

1、安装CodePush CLI

$ npm install -g code-push-cli

 

2、 注册CodePush账户

$ code-push register

 

执行以上命令将会自动打开如下图所示的注册页面:

 

本文使用GitHub账户进行注册,注册成功后将会生成如下图所示相应的access token:

 

在终端输入刚生成的access token:

 

3、添加CodePush应用

$ code-push app add AGG

 

二、集成CodePush

 

1、修改package.js,添加react-native-code-push

{
  "name": "AGG_V2",
  "version": "2.1.3",
  "private": true,
  "scripts": {
    "start": "node_modules/react-native/packager/packager.sh"
  },
  "dependencies": {
	"react-native": "^0.17.0",
    "react-timer-mixin": "^0.13.2",
    "react-native-custom-navigation": "^0.2.1",
    "react-native-code-push": "^1.5.2-beta",
    "react-redux": "^4.0.6",
    "redux": "^3.0.5"
  }
}

 

2、项目目录下执行npm install命令后,在node_modules目录中将会生成react-native-code-push目录

 

3、在node_modules/react-native-code-push目录中找到CodePush.xcodeproj,将它拖到项目的Libraries下

 

4、Build Phases中的Link Binary With Libraries下添加libCodePush.a和libz.tbd

 

5、Build Settings中的Header Search Paths下添加react-native-code-push的路径

 

6、找到加载JS Bundle的类,做如下修改:

    (1)导入CodePush

#import "CodePush.h"

 

    (2)将代码中的

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

    替换为:

jsCodeLocation = [CodePush bundleURLForResource:@"AGG" withExtension:@"jsbundle"];

 

7、修改Info.plist文件,添加CodePushDeploymentKey键值对,Deployment Key可以通过以下命令进行获取:

$ code-push deployment ls AGG

 

8、React Native项目的入口文件,做如下修改:

    (1)导入CodePush模块

import CodePush from "react-native-code-push";

 

    (2)添加CodePush同步代码

componentDidMount() {
  CodePush.sync();
}

 

三、发布更新

 

1、React Native项目打包

$ react-native bundle --platform ios --entry-file index.ios.js --bundle-output AGG.jsbundle --dev false

 

2、发布更新

$ code-push release AGG AGG.jsbundle 2.1.3
分享到:
评论
3 楼 往事如烟1 2016-03-11  
我的项目是自己init了一个原始的project,之后将version对应的1.0改为1.0.0,在终端上同步到code push时,上面显示是成功的
2 楼 jsntghf 2016-03-11  
往事如烟1 写道
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什么原因?
首先初始化一个react native名为AwesomeProject,之后再进行离线真机,edit scheme>run>build Configuration: Debug
不知是不是这个原因

请确认版本号是否正确,以及同步到code push是否成功。
1 楼 往事如烟1 2016-03-10  
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什么原因?
首先初始化一个react native名为AwesomeProject,之后再进行离线真机,edit scheme>run>build Configuration: Debug
不知是不是这个原因

相关推荐

Global site tag (gtag.js) - Google Analytics