RN热更新-搭建自己服务

本教程基于code-push-server搭建

本文都是基于上面文章(搭建微软的热更新RN项目)搭建好RN环境后的操作。

1、node项目下载并且配置。

首先下载服务端的node项目:

git clonehttps://github.com/lisong/code-push-server.git

cd code-push-server

npm install

修改code-push-server/config/config.js配置文件

1:配置db

db: {

username:"root",

 password:"123123",

 database:"codepush",

 host:"127.0.0.1",

 port:3306,

 dialect:"mysql",

 logging:false,

 operatorsAliases:false,

},

2:配置local

local: {

// Binary files storage dir, Do not use tmpdir and it's public download dir.

 storageDir:"/Users/zou/codepushWorkspace",//自定义电脑上的对应目录就可以(注意权限)。

// Binary files download host address which Code Push Server listen to. the files storage in storageDir.

 downloadUrl:"http://192.168.38.187:3000/download",//这里ip+端口改成本地的

// public static download spacename.

 public:'/download'

},

3:配置jwt 感觉我们本地项目没什么用

jwt: {

// Recommended: 63 random alpha-numeric characters

// Generate using: https://www.grc.com/passwords.html code-push-server 验证登录验证方式使用的json web token加密方式,该对称加密算法是公开的,所以修改config.js中tokenSecret值很重要。

 tokenSecret:'uxXUUMMrNiLghXXGbThBdWTcxaI8e71iW6MxOMYlS0ochHCYNz22k97LB0Sl2SF'//docker文档有说明 https://github.com/lisong/code-push-server/blob/master/docker/README.md

},

4:配置common---这里只修改了dataDir和storageType;说明下storageType的值有很多种,比如qiniu(七牛),阿里云,腾讯云,,,在configJS里面有说明。

common: {

/*

* tryLoginTimes is control login error times to avoid force attack.

* if value is 0, no limit for login auth, it may not safe for account. when it's a number, it means you can

* try that times today. but it need config redis server.

*/

 tryLoginTimes:0,

 // CodePush Web(https://github.com/lisong/code-push-web) login address.

//codePushWebUrl: "http://127.0.0.1:3001/login",

// create patch updates's number. default value is 3

 diffNums:3,

 // data dir for caclulate diff files. it's optimization.

 dataDir:"/Users/zou/codepushWorkspace/data",

 // storageType which is your binary package files store. options value is ("local" | "qiniu" | "s3"| "oss" || "tencentcloud")

 storageType:"local",

 // options value is (true | false), when it's true, it will cache updateCheck results in redis.

 updateCheckCache:false,

 // options value is (true | false), when it's true, it will cache rollout results in redis

 rolloutClientUniqueIdCache:false,

},

到此完成程序端的修改。

2、接着配置数据库。

1、下载mysqlhttps://dev.mysql.com/downloads/mysql/数据库

安装好数据库,mac安装的时候最后一步有一个弹窗里面有默认的数据库密码,需要用户自己复制下来。否则需要找回密码(麻烦)

一般来说借助NavicatMysql可以很好的管理mysql。Navicat Mac版本下载注意这个版本需要命令行执行:sudo spctl --master-disable;再次打开就可以使用。

2、安装好Navicat后,点击左上角的新建mysql连接,连接名:localhost(自己定义)

然后选择localhost,右键新建数据库,名称为,codepush;

双击codepush变为上图一样的绿色。然后右击,选择运行SQL文件,选中我们gitclone下来的项目里面的


再查看数据库就有对应的表格和数据了。

最后启动数据库./bin/www 启动服务 出现如下log说明已经服务启动完成了

到这里本地的热更新服务已经完成

接着做RNapp端的修改。

1.如果之前登录过微软的服务,就需要先登出:

1、登录本地服务,进入项目根目录打开terminal。

code-push logout;//之前有登录过别的服务需要先登出。

code-push loginhttp://127.0.0.1:3000/

出现如下画面


点击登录,默认账号密码是:admin,123456,账号可以直接在数据库修改。

登录后获取token

复制token到命令行并输入,回车。

2、添加要热更新的APP(记住添加的key,后面需要用到。)

code-push app add appname android/ios react-native

3、将添加app获取的key配置到Android/iOS的代码中(可通过命令 code-push deployment ls 您的应用名 -k 查看对应app的key)

修改Android项目文件

对应的key和serverUrl需要替换,serverUrl之前应该是没有传入参数,默认应该是用微软的。

new CodePush("Gqwc75hFol80hu2u9ga7xhgyDrKL4ksvOXqog", getApplicationContext(), BuildConfig.DEBUG,"http://192.168.38.187:3000/"),


修改ios项目的文件

加入

CodePushServerURL

http://192.168.38.187:3000/


上面的参数-CodePushDeploymentKey-为对应的key。我的项目做了debug和release的自动选择所以值是,

<string>$(CODEPUSH_KEY)</string>,

可以直接将key放入这里替换

<string>clcuSttA1itBpr19vWN4Sc7oTQnF4ksvOXqog</string>

如果要把debug和release的key都输入进去可以打开xcode进行替换。


最后测试。

Android打包apk

ios可以用release的模式编译项目到手机或者模拟器,

然后关闭app。

接着在RN项目里面随便改个首页的东西,

执行:


bundle-ios/android,分别打包Android和ios的项目,ios需要在./ios下新建bundle文件夹(如果没有bundle文件夹),

命令说明:code-push release-react <添加的APPName> android/ios --t 1.0.0(版本) --d Staging/Production --des “更新提示” -m false(是否强制更新)

重新打开app就可以看到对应的更新提示。点击更新就好。

ps:

1、如果出现更新提示,点击下载或者后天更新,等待后没有看到对应的更新,有可能是,这个地址写错了,我之前写的是127.0.0.1就导致了这个问题。


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