pure-updater

一个可以用的自动更新方案

经测试可支持 Android 9.0

已支持热更新

已支持静默的强制更新

如果您觉得还可以的话那就点个五星吧!谢谢!

已测试

android 8.0 (AVD) 正常可安装更新

android 9.0 (真机) 正常可安装更新

作者

PurePeace

大一在读,编程水平有限,有问题欢迎指正

Version: 1.0.3

用到的模拟的接口:

1.检查版本号(静默强制更新) getVersionID

2.检查版本号(正常更新) getVersionID

注:默认使用#1.检查版本号(静默强制更新)#接口,若要改为正常更新,请手动于common/checkUpdater.js中修改第一个request的url

测试静默强制更新还需将main.js中currentVersion的id改为1003,因为插件下载来默认是1004最新版本的

2019.03.27 更新

支持静默强制更新,详情看说明

支持苹果wgt热更新,但因无相关环境,未测试

修复1.0.2版本bug:热更新判断中的错别字,导致.apk被判断为.wgt

2019.03.24 更新

下拉刷新更新信息

支持热更新,详情请看说明

真正的版本号是main.js的currentVersion中的id(默认1004,目前最新1004)

说明

支持wgt格式热更新,能自动判断所下载更新包的文件后缀

支持安装更新后,app再次启动时删除更新安装包

监控用户是否有完成更新安装

静默强制更新已安排上

静默强制更新:三步走

要进行强制更新的测试,请先将main.js的currentVersion中的id改为1003(服务器最新版本为1004,当前的版本id改低以触发更新)

且common/checkUpdater.js中第一个request的url需使用上文提到的该接口:1.检查版本号(静默强制更新)

第一次启动:应用载入时获取更新信息,如果request取得的信息中,method内容为force,则直接在后台下载更新资源,并写入缓存

第二次启动:应用载入时安装上次下载的更新资源,并提示用户重启应用(实际上这里已经安装完毕,重启是刷新应用)

第三次启动:应用载入时删除更新包释放空间,整个静默强制更新过程完成

注:

1.静默强制更新一般适用于.wgt热更新包,并未加入其它格式更新包的支持

2.苹果官方禁止这种更新方式,所以请灵活使用

3.如果iosLink不是wgt的下载链接,即便请求更新id时的method内容为force也不会进行静默强制更新

热更新:请于HBuilderX菜单栏 - 发行 - 制作移动App资源升级包,打包成wgt格式的更新包并上传到服务器,即可进行热更新(大型更新还请使用apk整包更新)

当前的HBuilderX中没有REQUEST_INSTALL_PACKAGES权限,请手动(json源码视图)在manifest.json中添加权限

如果使用HBuilderX修改(勾选)过其它的permissions项,会让REQUEST_INSTALL_PACKAGES权限消失,请再次手动添加

高版本安卓一定要手动设置targetSdkVersion和REQUEST_INSTALL_PACKAGES权限,否则不能正常安装

要进行强制更新的测试,请先将main.js的currentVersion中的id改为1003(服务器最新版本为1004,当前的版本id改低以触发更新)

且common/checkUpdater.js中第一个request的url需使用上文提到的该接口:1.检查版本号(静默强制更新)

以下页面

App.vue

在 app 加载时检测更新

main.js

在 prototype 里面放了currentVersion,全局可获取当前的版本信息

for Android >= 8.0

manifest.json

在 permissions 中加入了权限 以适配 Android9.0

同时修改了 targetSdkVersion 为 26 以适配 Android 9.0

嗯?

更新页面,我下载好了安装包,也点击安装了,但是一回到app就会显示Modal:安装被取消?

这是因为真正的更新应该是覆盖安装的,你不可能直接回到app,除非你进行的不是覆盖安装

用这个逻辑判断用户是否在安装包下载完成后安装了更新

为什么我在调试过程中每次(刷新)启动应用都触发了更新?

为了演示静默强制热更新,服务器端返回的的最新版本id为1004,而本插件的版本id为1003,所以会触发更新

如果不想触发更新,可以在main.jscurrentVersion中的id改为1004

下载1.0.2版本的朋友请下载1.0.3,因为在1.0.2版本上有个bug……

应该,没什么了,吧

2019年3月27日 - PurePeace

android app 自动更新,app升级项目,新增强制更新(可静默),支持热更新(wgt),可支持高版本安卓系统...相关推荐

  1. 前端程序升级linux方案,开源:AspNetCore 应用程序热更新升级工具(全网第一份公开的解决方案)...

    1:下载.开源.使用教程 使用教程: 解压AspNetCoreUpdater.rar,得到两个压缩包,分别对应用Window和Linux. A.使用教程:For Window IIS 1.解压AspN ...

  2. android版微信什么时候更新版本的,微信6.6版本安卓系统更新时间

    近日苹果版微信已经更新至6.6.0版本,加入了网友最期待的更改微信号功能,那么微信6.6.0安卓版什么时候更新?下面请看小编为大家带来的微信6.6版本安卓系统更新时间. 因为同期安卓版微信更新6.5. ...

  3. flutter不支持热更新_Flutter 在安卓上可以实现热更新了

    本文由 句号君 授权投稿 原文链接:https://blog.csdn.net/qizewei123/article/details/102963340 Flutter 官方在 GitHub 上声明是 ...

  4. 修改html时webpack热更新,webpack学习之路(二)webpack-dev-server实现热更新

    上一章对webpack的配置有了简单的认识. 这一章,我需要学习的是webpack热更新,因为在开发过程中,不希望当文件更改时,人肉去编译文件,刷新浏览器. webpack热更新 webpack-de ...

  5. Vue.js 安装及其环境搭建,webpack-simple支持热更新

    1.先安装node.js 安装官网最新的即可 版本应该要大于6.0版本 nodejs的官网:https://nodejs.org/en/ 2.安装git Git的官网:https://git-scm. ...

  6. android 汽车版本,安卓系统不断推陈出新 为何安卓车机仍固守2.3版本?

    说到安卓,提的最多的无外乎是稳定性.兼容性以及差异性优化,而对于安卓车机,除了这三点之外,还会考虑成本问题,小编今天就将从这四个方面来尝试回答上面提出的问题. 一.稳定性 低版本的系统在车机应用上具有 ...

  7. android 使用系统下载并更新版本,安卓系统更新升级的种方法

    最近有网友问小编"安卓系统怎么升级?",针对该问题,笔者也在网上查找了下相关资料,不过并没有找到什么有价值的相关介绍,多数都是介绍如何自动升级.或者下载升级版包等等方法,对于一些常 ...

  8. android安卓手机升级版本,安卓系统怎么更新升级

    安卓系统怎么更新升级 安卓系统怎么升级?针对该问题,其实安卓系统升级的方法有很多,以下就来与大家介绍下.目前安卓手机主要采用以下几种方式升级: 1.使用手机自带的系统更新功能 在安卓手机的设置--关于 ...

  9. flutter不支持热更新_在iOS原生项目中使用Flutter,热更新

    前言: Flutter 因其自建的渲染引擎,背靠谷歌的支持,近来俘获了不少的开发小伙伴,越来越多的开发者尝试使用Flutter进行开发,在原生项目中嵌入Flutter来完成复杂度不高的页面成为了一个不 ...

最新文章

  1. 特征工程:特征生成,特征选择(三)
  2. 什么是MySQL锁?有哪些锁类型?如何使用?
  3. 基于JSP实现校园二手交易平台
  4. ClassNotFoundException: org.apache.catalina.loader.DevLoader 自己摸索,丰衣足食
  5. UVa1339 - Ancient Cipher
  6. [转载]C#流,字节数组,字符串
  7. tencent intern learning
  8. python计算最大回撤_Python做量化投资评价策略风险 如何计算最大回撤?
  9. 一种页面数据错误输入提示方法 【转】
  10. 10-10-010-简介-官网-官网翻译
  11. 摄影灵感|轮廓趋势,剪影以一种主要的方式回来了。
  12. Visual Studio 2019 16.6 Preview 2 发布
  13. 企业网站+Axure企业官网通用模板+公司官网通用模板+web端高保真原型+门户官网+物流企业+门户网站+服务中心+产品中心+新闻中心+帮助中心+企业官网+公司官网+公司网站+登录注册+高保真交互
  14. python写入日志文件时日志内容重复写入
  15. ASP.NET 高级编程基础第十二篇—服务器控件
  16. 二元二次拟合 matlab函数
  17. 破解电视盒 运营商送的,各种型号。通用 TTL 破解电视盒,更新华为悦盒
  18. 模拟频率f、模拟角频率Ω 、数字频率ω之间的关系
  19. JavaScript 实现页面内时间实时倒计时 计时器内附完整文件欢迎调用(可用于抢购倒计时,记录恋爱纪念日总时长等)输出对应的天数小时分钟秒数
  20. 男 女 java 枚举_献给我老公 - Java枚举类型

热门文章

  1. 用批处理命令批量ping一个网段的IP
  2. stm8l051 halt之后外部中断唤醒问题
  3. 【鱼眼】M4/3用户对鱼眼镜头的误解(7.5mm的鱼眼镜头的等效焦距是12mm或15mm,但是依然是鱼眼镜头而不是广角镜头)
  4. SAP PS 第7节 物资采购类别、wbs bom及第三方采购
  5. java过滤器修改响应,在过滤器中实现修改http请求体和响应体
  6. 乖离 暗机器人_乖离性百万亚瑟王黑暗机器人打法技巧 暗马桶攻略
  7. 密码学--Diffie-Hellman密钥交换
  8. tanh函数图像以及求导
  9. 毕业设计-基于机器学习的短期负荷预测算法
  10. 初识Python爬虫----如何爬取网络数据