React Native code-push-server的搭建

一、准备工作,先安装code-push的行命令工具:

npm install code-push-cli@latest -g

安装mysql

二、安装 code-push-server

$ git clone https://github.com/lisong/code-push-server.git

$cd code-push-server

$ npm install

$ ./bin/db init --dbhost localhost --dbuser root --dbpassword#初始化mysql数据库

需要修改 config/config.js中的配置

//文件存储在本地配置 当storageType为local时需要配置

local: {

storageDir: "/Users/mac/workspaces/storage",

//文件下载地址 CodePush Server 地址 + '/download' download对应app.js里面的地址

downloadUrl: "http://192.168.1.127:3000/download",

// public static download spacename.

public: '/download'

},

jwt: {

// 登录jwt签名密钥,必须更改,否则有安全隐患,可以使用随机生成的字符串

// Recommended: 63 random alpha-numeric characters

// Generate using: https://www.grc.com/passwords.htm

tokenSecret: 'INSERT_RANDOM_TOKEN_KEY'

},

common: {

dataDir: "/Users/mac/workspaces/data",

//选择存储类型,目前支持local,oss,qiniu,s3配置

storageType: "local"

},

storageDir和dataDir修改成你实际的目录。事先要创建这两个目录

downloadUrl需要换成服务器的IP

访问 https://www.grc.com/passwords.htm ,生成一个token

$ ./bin/www#启动服务 浏览器中打开 http://127.0.0.1:3000

三、运行demo

git clone https://github.com/lisong/code-push-demo-app.git

cd code-push-demo-app

npm install

用xcode打开ios下的工程文件。在菜单Product->Scheme->Edit Scheme...->Run->Info->Build Configuration中,选择release

1、登录服务器

code-push login http://127.0.0.1:3000#login in browser account:admin password:123456

在打开的浏览器中,得到一个token,把它填在终端上,就处于登录状态了。

2、添加App

code-push app add CodePushDemoApp-ios ios react-native

Successfully added the "CodePushDemoApp-ios" app, along with the following default deployments:

┌────────────┬───────────────────────────────────────┐

│ Name      │ Deployment Key                        │

├────────────┼───────────────────────────────────────┤

│ Production │ yy4I8rHWHbWYfDkIyzADQwdKoPSS4ksvOXqog │

├────────────┼───────────────────────────────────────┤

│ Staging    │ MAZnvAsPe1RxY6TckoXUoci1Vuym4ksvOXqog │

└────────────┴───────────────────────────────────────┘

把这个值,填到ios工程目录下的Info.plist

CodePushDeploymentKey

yy4I8rHWHbWYfDkIyzADQwdKoPSS4ksvOXqog

CodePushServerURL

http://192.168.1.127:3000/

CodePushServerURL,需要填上刚才服务器的地址

3、发布热更新。

react-native run-ios

在模拟器中运行App

code-push release-react CodePushDemoApp-ios ios -d Production

执行后,结果如下。

Using the target binary version value "2.0.5" from "ios/CodePushDemoApp/Info.plist".

。。。。。。

Successfully released an update containing the "/var/folders/jn/vz5y4n9j3xs47k21tj4t_8xm0000gn/T/CodePush" directory to the "Production" deployment of the "CodePushDemoApp-ios" app.

此处要注意:热更新不能修改版本号,修改需要在App Store中重新发布,热更新针对的是不修改版本号的更新。

我之前的理解有错误,是群友帮忙才明白过来,否则在App中点击时,服务器报304错误。

如果App的内容没有改变,运行code-push release-react CodePushDemoApp-ios ios -d Production

将会报错:

[Error]The uploaded package is identical to the contents of the specified deployment's current release.

4、android的区别

版本号是在 manifests/AndroidManifests.xml中的android:versionName="2.0.0"

$ cd android

$ ./gradlew assembleRelease

$ cd app/build/outputs/apk #install app-release.apk into your phone

由于 gradle的原因,如果无法通过AndroidStudio自动执行,可以把app-release.apk拷贝到手机上执行。

添加app

code-push app add CodePushReactNativeDemo-android android react-native

生成的key,放在MainApplication.java中

@Override

protected List getPackages() {

return Arrays.asList(

new MainReactPackage(),

new CodePush(

"Yk3NInRhwVMSVcbSxMcs9T6s1ymQ4ksvOXqog",

MainApplication.this,

BuildConfig.DEBUG,

"http://192.168.1.127:3000/"

)

);

}

发布热更新

code-push release-react CodePushReactNativeDemo-android android -d Production

目前对于Stagin和Production,理解还不清楚,后续搞明白了再补充。

你可能感兴趣的:(React Native code-push-server的搭建)