这里不涉及安装,只是在安装以后对于code push的一些终端操作。
安装code Push
npm install -g code-push-cli
注册code push
code-push register
终端输入 code-push register
,会跳转授权网页。在这个网页可以选择Github。或者微软作为授权提供者,不过我觉得90%的开发者都会选择Github。授权完成后,CodePush会显示你的Access Key,复制输入到终端即可完成注册并登陆。
ps.只要不主动退出(通过code-push logout
命令),登陆状态会一直有效。如果想再次登录,在终端输入 code-push login
。如果想要获取登录的Access token 可以通过code-push access-key ls
获取
创建应用
创建iOS 应用
code-push app add 应用名称(英文) ios react-native
eg: code-push app add CCBZZBIOS ios react-native
创建android应用
code-push app add 应用名称(英文) android react-native
eg: code-push app add CCBZZBAndroid android react-native
查看创建的APP
code-push app ls
ps:这里着重说明在创建app成功以后会有两个环境(release正式、staging测试)可以通过staging进行测试成功以后 在更新release。
打包、发布应用
在上传到APP Store等平台时需先手动打出js包 ,再对应用进行整体打包。
iOS 打包
首先在代码文件的 ios文件夹下创建bundle文件 根目录下 终端输入
react-native bundle --entry-file index.js --bundle-output ./ios/bundle/main.jsbundle --platform ios --assets-dest ./ios/bundle --dev false
成功以后,按照安卓正常打包即可。
PS:版本指定的时候一定是分为3位 主版本 . 副版本 . 小版本 例如1.0.0 1.3.45 。
android打包
在文件根目录下输入
react-native bundle --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.jsbundle --platform android --assets-dest ./android/app/src/main/res/ --dev false 成功以后,接着在终端输入
cd android && ./gradlew installRelease(打release包)
cd android && ./gradlew installReleaseStaging(打Staging的包)
版本已经上线进行热更新
其中参数--t为二进制(.ipa与apk)安装包的的版本;--dev为是否启用开发者模式(默认为false);--d是要发布更新的环境分Production与Staging(默认为Staging);--des为更新说明;--m 是强制更新,--t 表示版本号(这里版本号要与在用户设备中安装版本对应) — m是强制更新 用户界面显示只有一个按钮 强制更新 如果不填写这个时候用户可以忽略更新到个人中心进行更新。
eg: iOS
code-push release-react CCBZZB ios --t 1.0.0 --dev false --d Production --des "1.优化操作流程" --m true
eg: android
code-push release-react CCBZZB-android android --t 1.0.0 --dev false --d Production --des "1.优化操作流程" --m true
ps: mandatory(--m)是服务器传给客户端的,它是一个“动态”属性,意思是当正在使用版本v1的更新,然后现在服务器上有v2和v3的更新可用,v2的mandatory为true,v3的mandatory为false,此时去check update,服务器会返回v3的更新属性给客户端,这时服务返回的v3的mandatory为true,因为v3在v2之后发布的更新,它会被认为是包含v2的所有更新信息的,竟然v2有强制更新的需求,那跳过v2直接更新到v3的情况下,v3也被要求强制更新。但是如果你当前是在使用v2的更新包,check update时服务器返回v3的更新包属性,此时v3的mandatory为false,因为对于v2而言v3不是强制要更新的。
查看更新信息情况
查看更新信息 CCBZZB为APP名字 Production为环境
code-push deployment h CCBZZB Production
• Active 成功安装并运行当前release的用户的数量(当用户打开App就会运行这个release),这个数字会根据用户成功installed这个release或者离开这个release(installed了别的更新包,或者卸载了App),总之用来获得当前release的活跃用户量
• Total 成功installed这个release的用户的数量,这个数量只会增不会减。
• Pending 当前这个release被下载的数量,但是还没有被installed,因此这一个数值会在release被下载时增长,在installed时降低。这个指标主要是适配于没有为更新配置立马安装(mandatory)。如果为更新配置了立马安装但是还是有pending,很有可能是App启动时没有调用notifyApplicationReady。
• Rollbacks 这个数字代表在客户端自动回滚的数量,理想状态下,它应该为0,如果你发布了一个更新包,在installing中发生crash,code-push将会把它回滚到之前的一个更新包中
清除更新版本(全部清除)
code-push deployment clear CCBZZB Production
code-push deployment clear CCBZZB-android Production
代码回滚(不能跨版本回滚)
代码回滚到指定位置 V2 指的是代码回滚到版本号
code-push rollback CCBZZB Production --targetRelase v2
code-push rollback CCBZZB-android Production --targetRelase v2
共同开发者操作
添加共同开发者
code-push collaborator add
移除开发者
code-push collaborator rm
查看开发者
code-push collaborator ls
共同开发中不能够
- Rename or delete the app(重命名APP名字 删除APP )
- Create, rename or delete new deployments within the app(创建环境 删除环境)
- Clear a deployment's release history(清除更新记录)
- Add or remove collaborators from the app (*)(添加开发者)