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