0
点赞
收藏
分享

微信扫一扫

CodePush热更新之Code-Push-Server私服

拾光的Shelly 2021-09-23 阅读 69

环境准备

需要一台Centos服务器,然后安装如下软件:nodejs,mysql

  • 从EPEL库安装Node.js
sudo yum install epel-release
sudo yum install nodejs

安装code-push-server

下载代码,地址https://github.com/lisong/code-push-server

# 本地安装
git clone https://github.com/lisong/code-push-server.git
cd code-push-server
npm install

更新配置并初始化数据库

# 修改配置文件
# 修改 db 数据库连接信息
# 修改 qiniu 为七牛相关信息
# 修改 jwt 为相关信息
# 修改 common 里面的 storageType 和 dataDir 和 codePushWebUrl ( 因为用了 code-push-web
vi code-push-server/config/config.js
**主要是修改数据库配置和downloadUrl**

# 初始化数据库 会在数据库中创建一个 database 名字是 codepush
chmod +x ./bin/db
./bin/db init --dbhost localhost --dbuser root --dbpassword password
./bin/db init --dbhost localhost --dbuser root --dbpassword 123456

若出现以下错误

/usr/bin/env: ‘node\r’: No such file or directory

使用vim打开要运行的脚本文件

:set ff=unix
:wq!

启动服务

注意,先创建目录(/Users/tablee/workspaces/storage),否则启动报错。
启动完成后,打开 yourIp:3000 进行登录,默认密码为 admin,123456

# 浏览器中打开 http://yourIp:3000
cd code-push-server
mkdir -p /Users/tablee/workspaces/storage  #创建工作目录
chmod +x ./bin/www
./bin/www

在浏览其中输入:http://192.168.102.253:3000/ 能加载到CodePushServer登录界面即表示启动成功。
点击登录,输入用户名:admin和密码:123456点击登录,然后点击获取token:

登录

code-push login http://192.168.102.253:3000

会自动打开浏览器登录,获取token,把获取到的token粘贴过来, 回车


code-push-cli使用

需要先安装 code-push-cli,参照上一篇把代码release到服务器上

npm i -g code-push-cli
# 登录
code-push login http://yourIp:3000/
# 登出
code-push logout

其他命令如下:

  • code-push login 登陆
  • code-push logout 注销
  • code-push access-key ls 列出登陆的token
  • code-push access-key rm <accessKye> 删除某个 key值
  • code-push app add <appName>
  • code-push app <add> <remove> <rename> <list> <transfer>

添加一个应用

MyApp //应用名称
code-push app add MyApp android cordova/react-native

代码发布

#在cordova工程里提交update到远程服务的MyApp下
code-push release-cordova MyApp android
#查看
code-push deployment list MyApp

CordovaApp修改

主要是修改config.xml文件,更新DeploymentKey和CodePushServerUrl

<platform name="android">
        <preference name="CodePushDeploymentKey" value="aQJIThQ73BHd8iXS4WIp3X2l7vmx4ksvOXqog" />
        <preference name="CodePushServerUrl" value="http://192.168.102.253:3000" />
    </platform>

注意,确保手机与服务器在同一网络,否则请求失败。

docker容器部署

#FROM node:alpine
#FROM node:8.11.4-alpine
FROM node:10.15.0-alpine
COPY . /opt/codepush-server
WORKDIR /opt/codepush-server
RUN chmod +x /opt/codepush-server/bin/www
RUN mkdir -p /Users/tablee/workspaces/storage
RUN npm install
ENV NODE_ENV production
ENV PORT 3000
ENV CONFIG_FILE /opt/codepush-server/config/config.js
ENV COMMON_DATA_DIR /opt/codepush-server/data
ENV LOCAL_STORAGE_DIR /opt/codepush-server/storage
VOLUME [ "/tmp", "/opt/codepush-server/data", "/opt/codepush-server/storage" ]
EXPOSE 3000
RUN ls
CMD [ "node", "./bin/www" ]

code-push-web

此项目已不再维护
把代码push到code-push-server却看不到相关数据,需要用命令查看,很麻烦,这里可以通过这个web工程查看相关数据,就是读取了code-push-server的数据库。

code-push-web 是 code-push-server web客户端,界面化操作,比较简单。
可装可不装,如果不用,请把 code-push-server 配置文件中的 codePushWebUrl 这项注释(默认注释)

安装

# clone
git clone git@github.com:lisong/code-push-web.git

cd code-push-web
npm install

配置
进入到code-push-web目录

vi src/config.js

# 修改 common 中的 URL 和 devURL
export const common = {
  api: {
    URL: `http://yourIp:3000`, //production code-push-server address
    devURL: `http://yourIp:3000` //development code-push-server address
  }
};

启动

npm run build --release
cd ./build
npm install

# 启动服务
node ./server.js

打开 http://yourIp:3001 登录 使用之前在 code-push-server 配置的账号即可

app升级注意事项

app升级一般是更新assert/www目录,若需要添加别的目录?若需要更新插件?
几点注意事项如下:

  • config.xml中 widget id必须是当前package(android开发目录package),否则读取不到xml中的各种参数。如图:


  • 对于默认不是assert/www,路径的情况,需要修改源码调整路径。


  • cdvasset.manifest此文件需要和www一起,否则无法使用。如图:


  • APP版本号需要和cordova保持一致位数,比如Cordova版本1.2.6,Android版本1.0.0.9;则需要调整Android版本至三位(1.2.6).
  • 如果出现ExpressPlugin.getuserworkid not a function。这是因为js不识别函数。需要修改cordova_plugins.js,如下:


附常用操作

  1. Cordova创建一个工程
    cordova create hello com.example.hello HelloWorld
  2. 添加平台
    cd hello
    cordova platform add ios
    cordova platform add android
  3. 移除平台
    cordova platform rm android
  4. 创建自定义插件
    plugman create --name ToastDemo --plugin_id cordova-plugin-toastdemo --plugin_version 1.0.0
    4.1 插件更新到平台 【这里只会在插件里生成Android java代码】
    plugman platform add --platform_name android
    plugman platform add --platform_name ios
    4.2 添加插件 【这一步才会将插件生成到Android和ios下】
    cordova plugin add cordova-plugin-device
  5. 删除插件
    cordova plugin rm cordova-plugin-device
  6. 更新web
    cordova prepare

code-push常用命令
安装: npm install -g code-push-cli
注册账号: code-push register
登陆: code-push login
注销: code-push logout
添加项目: code-push app add [app名称]
删除项目: code-push app remove [app名称]
列出账号下的所有项目: code-push app list
显示登陆的token: code-push access-key ls
删除某个access-key: code-push access-key rm <accessKey>
添加协作人员:code-push collaborator add <appName> next@126.com
部署一个环境: code-push deployment add <appName> <deploymentName>
删除部署: code-push deployment rm <appName>
列出应用的部署: code-push deployment ls <appName>
查询部署环境的key: code-push deployment ls <appName> -k
查看部署的历史版本信息: code-push deployment history <appName> <deploymentNmae>
重命名一个部署: code-push deployment rename <appName> <currentDeploymentName> <newDeploymentName>

// 给app在热更新服务器上创建应用
code-push app add <appName> <os> <platform>
例: code-push app add <appName> android cordova

// 删除应用
code-push app rm <appName>

// 查看热更新服务器上有哪些应用
code-push app list

// 查看部署状态
code-push deployment ls <appName>

// 查看部署状态及key值
code-push deployment ls <appName> -k

// 清空部署记录
code-push deployment clear <appName> <deploymentName>
例: 清空Staging状态的部署记录
code-push deployment clear <appName> Staging

// 删除自定义的部署状态
code-push deployment rm <appName> <deploymentName>

//发布更新
Usage: code-push release-cordova <appName> <platform> [options]
例如:code-push release-cordova storeSaas-android android -d Production
Options:
--deploymentName, -d 指定部署的类型, 默认"Staging", 可以选择"Production"
--description, --des 添加描述
--disabled, -x 指定是否应立即下载此版本
--mandatory, -m 指定此版本是否为强制更新版本
--targetBinaryVersion, -t 指定需要更新的版本号, 如果省略, 则用 config.xml 里的版本号 (例如 1.1.0, ~1.2.3)

例1: 发布android应用更新
code-push release-cordova <appName> android --des "描述"

例2: 部署android应用生产环境的热更新
code-push release-cordova <appName> android -d "Production" --des "描述"

例3: 部署ios应用的强制更新
code-push release-cordova <appName> ios -m --des "描述"

例4: 版本号>=1.2.3和<1.3.0的android应用更新
code-push release-cordova <appName> android --des "描述" -t ~1.2.3

参考文档:

  1. CodePush 官方文档
  2. code-push-server
  3. https://github.com/lisong/code-push-server
  4. https://github.com/lisong/code-push-web
  5. Cordova Client SDK
举报

相关推荐

0 条评论