RN code-push  配置

一、配置环境

1、 全局安装 code-push 环境 npm install -g code-push-cli ,安装成功则可以 code-push -v查看安装的版本号

2、 code-push register  注册账号,会在google浏览器打开注册界面,然后注册成功会拿到一个key 如下图所示

将这个key 输入终端如下图所示,则可以看到一份配置文件在生成在你的文件下目录为如下图所示。(如果是有账号的情况下,那么将直接登录,同时也会有个key ,也直接保存)

如何证明你的电脑已经登录了这个code-push账号呢 。我们可以在终端输入(在任何终端目录下都可以输入 code-push login  )会出现一下的提示。说你的账号已经在这台设备上登录过了

3、在终端下操作,对code-push 创建app的应用 创建两个app的应用(安卓和iOS分别创建)如下图所示.

上图如知,安卓和iOS的app的名字不能取一样的,而且app的name 是不可以存在中文名字的

命令行的代码规则 是 code-push app add        这种规则的命令语句。特别提示上面生成的key 你要千万记住,可以登录账号取查看这个key ,我们还需要了解 production 和staging 的意思 (production 代表的是发布的版本。staging 代表的是测试的版本)。这个需要千万记住,因为后续还要用这两个来进行配置测试环境还是开发环境。不然就会出现在真实中也能收到测试环境下的热更新消息了,等下会对这个进行配置. 同时我们也可以进行查看我们的项目的key ,登录官网也可以查看, 通过命令行进行查看 

  code-push deployment ls ShangYiJia_APP -k

4、将code-push  install 到项目中.。但是特别要注意对应自己的版本进行code-push 的版本意义对应。我们项目是0.52版本。那么我暂时就是瞎子啊了5.1的版本 进行对应。

二、讲述ios 的配置

1、首先 npm install code-push-react-native 到项目中

2、 react-native link code-push-react-native 。看看这个库有没有link 到iOS文件中,如果成功则提示成功

没有成功则手动link 。在这里我教下怎么手动link iOS

(1) 首先在node_modules 中找到这个codepush 文件,然后拖进去如下图

(2) 特别注意一点由于这个库需要一个link 一个静态库(libz)如下图所示

(3)很多人会忘记这个东西(注视:我在这里被坑了一天了。找到这个libcodepush,然后将其拖入到link library 中去, 记住一定是product 中的这个

(4)添加codepush的头文件路径,在 header Search Paths 中添加这句

$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush

完成上述步骤则link 成功了

3、将codepush 的staging 和release 配置到iOS项目中

(1)在info.list 中添加key  CodePushDeploymentKey  和string $(CODEPUSH_KEY)如下图所示

(2)在 project 中的 info 中添加 Staging ,选择release 版本如下图所示

(3)在setting  中 Build Location -> Per-configuration Build Products Path -> Staging  改变staging 的值从 $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 变成 $(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)

(4)在setting只点击+ 号 选择 add 的这个

(5 )找到 user-defined 中选择 配置如下 ,name 改成 CODEPUSH_KEY  在release 中和staging 中分别选择对应的key 这个key 就是 在 codepush 中的key  。staging 对应 staging

production 对应的就是release

好了。大功告成。iOS的配置已经完全可以了。但是肯定还有疑问,我 的staging 和release 怎么打包出这两个版本,请看下面的如何配置了。这里郑重申明一句(其实codepush的上传给服务器的不是apk 和api 只是上传bundle 文件)。所以说不管是staging 和release 都是 可能是同一个bundle 文件,但是最终看你是如何打包的。打包staging 那么就会去跑staging 的热更新,打包release 跑 production  的热更新

4 、配置热更新代码。我在热更新中配置了一个测试界面,我们可以在测试界面中去调试

热更新是有几种情况的这边说明下 。

1、首先最简单的一种就是  这种无声的热更新,也就是说热更新不会给用户任何提示,都在默默的进行更新,用户完全体会不到整个过程

classMyAppextendsComponent<{}> {}

MyApp= codePush(MyApp);

exportdefaultMyApp;

2、第二种 也是无声更新,比第一种情况多了一种就是热更新每次会在后台返回前台的时候进行热更新。这里可以看到几个参数,

checkFrequency有三种状态如下

ON_APP_START:  //在组件初始化的时候进行热更新

ON_APP_RESUME://在每次app从后台回到前台的时候进行热更新

MANUAL://不进行热更新,需要自己手动配置

InstallMode 有如下几种状态

IMMEDIATE  :// 安装热更新,并且重启app

ON_NEXT_RESTART:  //下次启动的时候启动热更新

ON_NEXT_RESUME  //从后台回到前台的时候启动

ON_NEXT_SUSPEND:  在后台的时候进行热更新

classMyAppextendsComponent<{}> {}

MyApp= codePush({ checkFrequency: codePush.CheckFrequency.ON_APP_RESUME, installMode: codePush.InstallMode.ON_NEXT_RESUME})(MyApp);

exportdefaultMyApp;

updateDialog  当为true 是,可以在更新的时候提示用户需要更新

注意一个最重要的问题 。在使用了pod 的环境下。 打包stag 模式下 模式下是找不到pod的文件报错的。需要改。

三、讲述Android 的配置

1、开始如果link 了项目就可以不用link 了。然后看看link有没有成功。主要看三个地方。如下图所示。在根目录下的setting.gradle 中配置。

然后在app目录下的build.gradle进行配置

2、因为我们在codepush上发布是有两种版本的,staging 和release 版本。那么我们就要打包两种模式下的版本。同时还要设置codepush-key。如下图所示。然后在app目录下的build.gradle进行配置。要理解一点,staging 其实也是release 版本,不过是两种release 版本。那么就需要在这里进行配置,然后Staging 中的内容除了key 都要和release 一摸一样

3、还需要在app目录下的build.gradle进行配置进行加上这么两句。

apply from: "../../node_modules/react-native/react.gradle"

apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"

但是直接加上是会报错的。我们可以看到rn给我们的提示。在加上这两句的时候需要配置project.ext.react .而且必须要在在引入这句的前面。如下图

4、这些都配置完成,那么就需要最后操作一步了。用as打开android 项目。然后在项目中加上这些,如果已经是这样就不需要了。

这里可能会报错 BuildConfig.CODEPUSH_KEY报红, 应该是项目自动引入了 codepush的 BuildConfig 。那么将import  BuildConfig 删除就行

5、最后一步将安卓的jsbundle 打包到codePush 。使用语句

code-push release-react  ShangYiJia_AndroidAPP android   

6,怎么打包apk  。用as打开,在项目的右边可以看到gradlew 语句有那些如图所示。有一个satgging的打包,这个就是staging 的打包。还有release 的打包。这些都是gradlew 的语句,不清楚可以自己去查询

7。特别注意 。android studio 更新到3.0 以上的(这个问题花费我一天时间去处理了)。因为新版本的as 是用dex 进行打包的,那么特别需要加上如下的几行代码。如果没有加上这么几句话那么就会存在说找不到文件路径,从而不能打包。

同时如果还存在报错说打包的时候有超过64bit 的dex 报错,则加上这么几句话

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容