美文网首页ReactNative
RN热更新-搭建自己服务

RN热更新-搭建自己服务

作者: 唐_亮 | 来源:发表于2019-06-19 15:02 被阅读0次

本教程基于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就导致了这个问题。

相关文章

  • RN热更新-搭建自己服务

    本教程基于code-push-server搭建 本文都是基于上面文章(搭建微软的热更新RN项目)搭建好RN环境后的...

  • codepush3之Android原生引用集成

    codepush热更新codepush2之配置自己的服务器其实原生集成rn在集成codepush与新建rn项目集成...

  • 2020-04-08RN热更新

    RN热更新

  • RN用自己的服务器热更新

    不使用第三方,用自己的服务器更新。 RN的热更新其实就是替换App加载的js包,更新分为全量更新和增量更新; 全量...

  • rn热更新

    https://blog.csdn.net/dounine/article/details/78529106

  • RN热更新

    React Native的加载启动机制:RN会将一系列资源打包成js bundle文件,系统加载js bundle...

  • RN热更新

    一、前言 RN入门调研一文中提到:RN热更新的核心技术是构建JS与原生之间的解释器,基本原理则是替换JS Bund...

  • react-native热更新集成(使用CodePush)

    终于要集成下rn的热更新了,这边挑选了微软的CodePush服务https://microsoft.github....

  • react-native如何热更新(android)

    RN的热更新和weex的热更新不同,weex是可以直接访问远程服务器的,有新版本的时候直接更换服务器上的文件就行,...

  • 创建指定版本React Native工程

    由于要接入React NativeReact-Native (以下简称 RN)中文网推出的代码热更新服务,发现不同...

网友评论

    本文标题:RN热更新-搭建自己服务

    本文链接:https://www.haomeiwen.com/subject/rihkqctx.html