原文地址声明:https://blog.csdn.net/qq_23179075/article/details/91985000

1. 搭建自己的 code-push-server 以及安装 CodePush CLI 客户端

传送门:windows服务器搭建code-push-server

登录自己的code-push-server服务器,创建提供 Cordova 热更新的应用。

Andoird: code-push add app <应用名-android> android cordova
IOS : code-push add app <应用名-ios> ios cordova

2. 配置 Cordova 项目

创建完Cordova项目后,项目中添加:cordova-plugin-code-push 插件。

index.html 中加入

<meta http-equiv="Content-Security-Policy"content="default-src https://codepush.azurewebsites.net ${code-push-server域名} 'self' data: gap: cdvfile: https://ssl.gstatic.com ${code-push-server域名} 'unsafe-eval' 'unsafe-inline' https: http: wss: ws:; style-src 'self' 'unsafe-inline'; img-src * filesystem: cdvfile: data:; media-src * blob:"/>

将代码中的 ${code-push-server域名} 替换成自己的刚刚搭建的 code-push-server 域名或者ip,不用带端口号。(如:http://192.168.0.245 或者 http://www.xx.xx)

config.xml 中添加

    <platform name="android">...<preference name="CodePushDeploymentKey" value="${Deployment Key}" /><preference name="CodePushServerUrl" value="${code-push-server域名}" /></platform><platform name="ios">...<preference name="CodePushDeploymentKey" value="${Deployment Key}" /><preference name="CodePushServerUrl" value="${code-push-server域名}" /></platform>

${Deployment Key} :替换成上面创建成功的 Deployment Key 。打包时添加 Production 参数就替换 ProductionDeployment Key

${code-push-server域名} 替换成自己的刚刚搭建的 code-push-server 域名或者ip,【带端口号】(如:http://192.168.0.245:3000/ 或者 http://www.xx.xx/ ) 一定要以 / 结尾

index.js 中代码:

var app = {initialize: function () {this.bindEvents();},bindEvents: function () {window.document.addEventListener('deviceready', this.onDeviceReady, false);},onDeviceReady: function () {app.notifyApplicationReadys();app.checkForUpdates();},notifyApplicationReadys: function () {var onNotifySucceeded = function () {console.log("通知成功。");};var onNotifyFailed = function (error) {console.log("通知失败:" + error);};window.codePush.notifyApplicationReady(onNotifySucceeded, onNotifyFailed);},checkForUpdates: function () {var onInstallSuccess = function () {console.log("安装成功。");};var onUpdateCheck = function (remotePackage) {if (!remotePackage) {console.log("该应用程序是最新的。");} else {// The hash of each previously reverted package is stored for later use.// This way, we avoid going into an infinite bad update/revert loop.if (!remotePackage.failedInstall) {console.log("有可用的更新远程包:" + JSON.stringify(remotePackage));console.log("CodePush更新可用。包哈希值:" + remotePackage.packageHash);remotePackage.download(onPackageDownloaded, app.onError, onProgress);} else {console.log("之前尝试了可用的更新,但失败了。");}}};var onPackageDownloaded = function (localPackage) {console.log("包下载地址:" + localPackage.localPath);console.log("本地包 appVersion: " + localPackage.appVersion);console.log("本地包 description: " + localPackage.description);console.log("本地包 failedInstall: " + localPackage.failedInstall);console.log("本地包 isFirstRun: " + localPackage.isFirstRun);console.log("本地包 isMandatory: " + localPackage.isMandatory);console.log("本地包 packageSize: " + localPackage.packageSize);// InstallMode.IMMEDIATE: 立即更新APP// InstallMode.ON_NEXT_RESTART: 到下一次启动应用时更新// InstallMode.ON_NEXT_RESUME: 当应用从后台返回时更新localPackage.install(onInstallSuccess, app.onError, {installMode: InstallMode.IMMEDIATE,mandatoryInstallMode: InstallMode.IMMEDIATE});};var onProgress = function (downloadProgress) {console.log("下载中: " + downloadProgress.receivedBytes + " 共: " + downloadProgress.totalBytes + " bytes.");};window.codePush.checkForUpdate(onUpdateCheck, app.onError);},onError: function (error) {console.log("更新发生错误: " + error);},
};
app.initialize();

3. 发布更新

code-push release-cordova <应用名称>-android android -m --des "更新描述" Staging   #默认是打包Staging环境的,正式环境打包方式如下
code-push release-cordova <应用名称>-android android -m --des "更新描述" Production  #打包正式环境

-m : 表示是否强制更新

code-push 还有很多常用命令

code-push login 登陆
code-push loout 注销
code-push access-key ls 列出登陆的token
code-push access-key rm 删除某个 access-key
code-push app add 在账号里面添加一个新的app
code-push app remove 或者 rm 在账号里移除一个app
code-push app rename 重命名一个存在app
code-push app list 或则 ls 列出账号下面的所有app
code-push deployment ls <应用名>-android -k 查看:<应用名>-android的deployment key

Cordova热更新cordova-plugin-code-push相关推荐

  1. Cordova 热更新无历史记录解决方案

    这篇记录一次cordova 热更新插件导致的历史记录不存在的问题. 一 情况说明 热更新插件: 使用后发现,手机的回退按钮无法实现页面回退而是项目推出. 在控制台测试发现历史记录为空. 网上查阅了一下 ...

  2. Cordova App 热更新 超详细教程

    前言: Cordova热更新的一些要点: 1.在不用重新安装App的情况下,更新你的代码.可以越过应用商店的审核步骤. 2.涉及的插件依赖发生变化时,无法使用热更新,需要去应用商店下载最新版本安装. ...

  3. Ionic APP 热更新

    开门见山,本文主题:cordova-hot-code-push 作用:cordova热更新插件,提供了在应用程序中对基于Web的内容进行自动更新的功能. GitHub地址:https://github ...

  4. [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容...

    原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址:https://github.com/nordnet/cord ...

  5. cordova最基本的热更新

    一.添加插件 新建Cordova项目     cordova create CordovaHotCode com.ezample.hotcode  添加平台   进入项目根目录,执行cordova p ...

  6. cordova打包app热更新问题

    定义: 基于 cordova 框架能将web应用 (js, html, css, 图片等) 打包成 App.当 App 在终端上安装后,不需要重新下载app,实现内壳更新. 原理:1.在项目根目录的c ...

  7. AppCenter Code Push热更新

    codePush已经被微软将其移动到了appcenter中心,后续关于codePush的相关问题都移步到appcenter官网中进行查看https://appcenter.ms 本文只记录通过code ...

  8. cordova+codepush 热更新实践 (微软 cordova-plugin-code-push)

    系统环境 windows 10 所需工具 node.js, android studio, 安装方法自行百度/谷歌 cordova-hot-code-push 不再维护, 转而使用 cordova-p ...

  9. react-native热更新之code-push

    文章部分内容参考:https://blog.csdn.net/qq_33323251/article/details/79437932 但是我在这个基础上进行了补充 code-push已经迁移到 AP ...

最新文章

  1. html选择和按钮间距,html - 想要在按钮之间添加间距
  2. OSPF-LSA数据包头
  3. Java Hibernate模板 学习总结
  4. visual studio如何给源码文件添加header信息?(创建者,创建日期等)(License Header Manager插件)
  5. 【树莓派】为Ubuntu for ARM 更换中国软件源
  6. Promise对象的创建与使用
  7. php的一些不安全函数,php中可能会产生安全问题一些函数
  8. jquery --- 使用when方法等待2个异步事件结束后执行某一个函数.
  9. 根据IP地址获取主机名称
  10. android 日历图,Android中的自定义日历视图
  11. Xshell 常见问题及相关配置
  12. 视频:Microsoft PDC 09,算法及数据结构内容及其他
  13. python多PDF文件合成一个
  14. Vue事件修饰符.prevent .passive
  15. 百度Android地图SDK地理编码及标注
  16. RandomAccessFile类的readLine方法对文本文件中文字符读取显示乱码的问题及解决方法的深入分析
  17. VisionPro 工具
  18. i59300h处理器能带动matlab,i5-9300h相当于什么层次 在做选择
  19. 内网渗透攻击技术的利用
  20. zeppelin源码分析(0)——zeppelin要解决什么问题

热门文章

  1. (20200224已解决)CentOS安装Docker出错No package docker-ce available
  2. Linux下卸载nginx的详细步骤,亲测有效
  3. eXtremeDB新手之Linux平台,BerkeleyDB和eXtremeDB性能在LINUX下的比较.doc
  4. column ambiguously defined oracle数据库分页语句查询中select嵌套时出错
  5. win10任务栏透明_改造我们的win10桌面
  6. Ae效果控件快速参考:透视
  7. TMD的崛起与BAT的恩怨情仇
  8. 记redis中向list进行lpush和lrange时的小细节(初学者易犯)
  9. 重置密码(忘记密码情况下)问题
  10. 小米路由器有虚拟服务器嘛,小米路由器有什么用 这些功能你知道吗【图文教程】...