Android增量更新技术在很多公司都在使用,网上也有一些相关的文章,但大家可能未必完全理解实现的方式,本篇博客,我将一步步的带大家实现增量更新。
Step2: 修改Makefile文件,将install:下面的if和endif各添加一个缩进:
正常一个项目的版本更新,很多情况下是进行apk包的新版本发布,让用户下载更新,但是有个弊端就是如果包体很大,这样就耗时又费流量。
疑难问题之bsdiff 问题背景 项目中使用到了bsdiff命令进行增量包的生成,不过在使用中发现对于某些文件,bsdiff命令会卡住。 诊断问题 刚开始以为是操作系统的问题,换了个全新的系统,按网上的教程从http://www.daemonology.net/bsdiff/下载bsdiff的源码,重新编译得到bsdiff,这里把原来卡住的两个文件重新试了一次,发现还是会卡住。 看来这个是bsdiff本身存在问题,在网上搜索了下,终于发现有人遇过一样的问题。很奇怪,在国内也有很多人用bsdiff生成增量包,
国际惯例先贴地址 Tinker开源地址:https://github.com/Tencent/tinker
本文主要介绍一种增量升级方案。用户在升级版本时,不需要下载完整的安装包,只需下载增加的部分即可体验新版本完整功能,即节约用户流量,也减少服务器流量,并解决了多渠道问题,值得尝试。 一、背景 随着全民K歌版本不断迭代,安装包大小也不断增大,现在每次版本更新,用户都需要下载最新版本安装包,如果使用增量更新的方式,用户每次更新只下载新版本和旧版本差异的部分,将会为用户和服务器节约大量流量。以全民K歌3.2和3.3版本为例: | 文件名 | 文件大小 | |———- | ———- | | karaok
高性能diff&patch算法 -- 如何将微信Apk的官方增量包20.4M缩小到7.0M 作者: HouSisong@GMail.com 2018.03.16 ---- 什么是diff&patch算法 原理抽象概述: … … ---- 3种有效的diff算法 增量压缩流 同步流 覆盖线流 其他:按行、按文件等… ---- 增量压缩diff算法 最容易实现的可以自己diy出来的一种有效算法 寻找一种高效的基础压缩算法 实现技巧: 拼接old+new一起压缩,输出new部分压缩得到的编码
一般情况下 管理操作界面 和 后端服务器 是一个 Java / .NET / PHP 开发的 Web 应用 ;
Android的扩展工程包含在external文件夹中,这是一些经过修改后适应Android系统的开源工程,这些工程有些在主机上运行,有些在目标机上运行; 工程名称 工程描述 aes 高级加密标准(Advanced Encryption Standard) apache-http Http服务器 bison (主机)自动生成语法分析器程序 bluez 蓝牙库 bsdiff (主机)用于二进制文件生成补丁 bzip2 (主机/目标机)压缩文件工具 clearsilver (主机)模板语言,包括Python、J
Android平台出现了一些优秀的热更新方案,主要可以分为4类: 基于Instant Run 热插拔方案:美团的Robust(实时修复) Robust插件对每个产品代码的每个函数都在编译打包阶段自动的插入了一段代码,对方法进行了Hook,类似AOP的方式。 基于multidex的热修复方案:代表有Qzone的超级补丁、大众点评的Nuwa、百度金融的RocooFix、 饿了么的Amigo和微信的Tinker(也可以修复so和资源)等(重新冷启动修复) 需要反射更改DexElements,改变Dex的加
热更新是一种App软件开发者常用的更新方式。简单来说,就是在用户下载安装App之后,打开App时遇到的即时更新。
随着各行各业数字化程度及转型需求越来越高,数据及高速率的网络部署已成为“重”运营资产。海量的终端数据传输到云端,侵占的资源、电量越来越多,轻量化、低成本部署成为众多企业的渴求。而这一“苦“随着微型机器学习(以下简称TinyML)、LPWAN等技术的发展,可能迎来真正的化解。
在运行时替换掉底层有Bug的方法的地址,将他们的指针指向修复之后的方法的内存地址,从而实现热修复的功能。
首先有这方面需要的请到https://github.com/xiangzhihong/andfixDemo/tree/master下载例子 对于网上提供的热补丁修复就不多说了,主要有这3种方式可以实现(至于其他的方式,暂不清楚) 1.dexposed github https://github.com/alibaba/dexposed 2.andfix github https://github.com/alibaba/AndFix 3.bsdiff http://blog.csdn.net/
QZone方案推出比较早,对热修复技术的推进很有启发意义。它是基于Android dex分包方案,最关键的技术点在于利用字节码插桩的方式绕开了预校验问题。这种方案只支持App重启之后才能修复,也就是App在运行的时候加载到了补丁包也不能及时修复,需要App重新启动的时候才会修复,这是因为QZone方案是基于类加载区需要重新加载补丁类才能实现的,所以必须进行重启才能修复。此外,QZone方案只支持到类结构本身代码层面的修复,不支持资源的修复。
本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结 通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单
我需要对一个文件做二进制差分压缩,我有一个文件的起始点,在之后的每次更改我都记录文件的二进制的差分,这样就可以通过起始点和差分文件计算修改后的文件。通过二进制差分可以用来提高文件保存磁盘读写速度,也可以减少软件自动更新需要的文件大小
最近半年以来,Android热补丁技术热潮继续爆发,各大公司相继推出自己的开源框架。Tinker在最近也顺利完成了公司的审核,并非常荣幸的成为github.com/Tencent上第一个正式公开的项目。 回顾这半年多的历程,这是一条跪着走完,坑坑不息之路。或许只有自己真正经历过,深入研究过, 才会真正的明白 热补丁不是请客吃饭 对热补丁技术本身,还是对使用者来说都是如此。它并不简单,也有着自己的局限性,在使用之前我们需要对它有所了解。我希望通过分享微信在这历程中的思考与经验,能帮助大家更容易的决定是否在自
作者简介 赵辛贵,携程技术中心基础业务研发部无线研发总监。 2013年加入携程,主要负责App基础框架研发相关工作,主要关注App开发框架、性能、质量、效率和新技术。 先后负责和参与携程Native、Hybrid和React Native框架设计、工程模块化拆分解耦、Android插件化动态加载、无线持续交付平台等项目。目前重心主要在React Native框架在公司的推广和研发支持、以及公司内部其它独立App的框架和工程架构升级。 携程旅行App中近半数业务页面使用H5 Hybrid和RN技术开发,为了提
Android 优化目录 ---- 利用 Network Profiler 检查网络流量 接口设计 API设计 App 与 Server 之间的 API 设计要考虑网络请求的频次,资源的状态等。以便 App 可以以较少的请求来完成业务需求和界面的展示。 比如注册登录一般会有两个 API,但是设计 API 时应该给注册接口包含一个隐式的登录。来避免 App 在注册后还得请求一次登录接口(有可能失败,从而导致业务流程失败)。 比如有些请求可能包含了几种小请求,可以单独设计个接口,减少请求次数。
技术好只能保证做出来的App不烂,品味好了才能将有限的技术发挥到极致,将所做App提升一个档次。
机器之心报道 机器之心编辑部 这是一个拥抱开源的程序员大牛的「神奇」经历,成文几个小时就在社交网站上获得了数千点赞。 「拥抱开源」不是说说那么简单的,如今很多科技公司都会把这句话挂在嘴边,把开源当作一个重要战略,它们希望自家的工程师投身开源社区,为领域内创造出良好的氛围,以此推动技术的进步,并从中获得更多开发者的支持关注。 但有的时候,你很难放心把自己赖以生存的新技术拿来分享,它们可能会被用在各种预料之外的地方,有时别人甚至会借鉴你开源过的代码,反过来针对你。 如果你是一个人,对方是一家大公司,这事情就
「拥抱开源」不是说说那么简单的,如今很多科技公司都会把这句话挂在嘴边,把开源当作一个重要战略,它们希望自家的工程师投身开源社区,为领域内创造出良好的氛围,以此推动技术的进步,并从中获得更多开发者的支持关注。
继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的 Android 开发技术。其中比较著名的有淘宝的 Dexposed、支付宝的 AndFix 以及 QZone 的超级热补丁方案。微信对热补丁技术的研究并不算早,大约开始于2015年6月。经过研究与尝试现有的各个方案,我们发现它们都有着自身的一些局限性。微信最终采用不同于它们的技术方案,走出了自己的实践演进之路。 另外一方面,技术应当只是热补丁方案中的一环。随着对热补丁的多次尝试与应用,微信建立起自身的流程规范,同时也不断的尝试拓展它的应用场景
Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了腾讯WXG Android开发工程师——张绍文,为大家分享《微信热补丁 Tinker 的实践演进之路》。 分享内容简介: Tinker 是微信官方的 Android 热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。这里大致介绍 Tinker 的实现原理,当时遇到的各种坑以及对它各个方面性能的优化工作。 内
payload随着AB分区和update engine引入,其中payload的数据定义在
Android 不仅系统版本众多,机型众多,而且各个市场都各有各的政策和审核速度,每次发布一个版本对于开发同学来讲都是一种漫长的煎熬。相比于 iOS 两三天就能达到 80% 的覆盖速度而言,Android 应用版本升级至少需要两周才能达到 80% 的升级率,严重阻碍了版本迭代速度。也导致市场上 App 版本分散,处理 bug 和投诉等也越来越麻烦。 修复的 bug 需要等待下个版本发布窗口才能发布? 已经 ready 的需求排队上线,需要等待其他 Feature Team 合入代码? 老版本升级速度慢?频繁
继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的Android开发技术。其中比较著名的有淘宝的Dexposed、支付宝的AndFix以及Qzone的超级热补丁方案。微信对热补丁技术的研究并不算早,大约开始于2015年6月。经过研究与尝试现有的各个方案,我们发现它们都有着自身的一些局限性。微信最终采用不同于它们的技术方案,走出了自己的实践演进之路。 另外一方面,技术应当只是热补丁方案中的一环。随着对热补丁的多次尝试与应用,微信建立起自身的流程规范,同时也不断的尝试拓展它的应用场景。通过本文,
Tinker 是微信官方的 Android 热补丁解决方案,它支持动态下发代码、So 库以及资源,让应用能够在不需要重新安装的情况下实现更新。
|-- build (存放系统编译规则及generic等基础开发包配置)
在当前客户端软件的更新功能,需要在每次客户端升级的时候,下载更新的内容。而客户端下载内容的多少将会决定用户的下载时长以及服务器流量费用。所以我在不断找一个算法,让客户端更新的时候下载的内容更少。在弱网环境,上传和下载的速度受限,在保证每次数据同步的完整下,让每次传输的内容更少也是我最近研究的内容
这是Android2.1的源代码的目录结构,可以帮助我们研究Android的源代码。Android源代码的下载请参考官网
ps:如果您看过atlas的官方介绍,本片文章可以略过,期待我们追溯源码的过程中有你的参与
Linux2.6内核层,核心库层,应用框架层,应用层。我今天重点介绍一下应用框架层Framework。
链接:https://juejin.im/post/5c984e926fb9a070c975a9b4
前面我们讲解了AndFix的使用,这篇我们来讲解下微信的Tinker热修复,相比AndFix,Tinker的功能更加全面,更主要的是他支持gradle。他不仅做到了热修复更实现了“热更新”。既然他这么强大,下面我们就来了解他是如何使用的。
作者介绍: 分享结构: 我分享的结构大概是这样的,首先会给大家简单介绍一下作为手机厂商,我们需要交付的软件类型,有哪些需求,挑战是什么样的。 因为大家对大厂非常熟悉,阿里系的产品可能天天在用,几乎没有人不用的微信目前有8亿多的月活。那么手机厂商,除了用户可见的APP之外,背后到底有哪些业务,做什么类型的软件,我会给大家做一个介绍。 第二个是我们从0开始的尝试,互联网业务对我们来说是近几年新起步的,最初也没有Jenkins,开始使用它遇到了什么样的问题? 第三个是业务持续增长的挑战,开始是三千万用户,现在
作者简介: 陈志兴,腾讯SNG增值产品部高级工程师,主要负责手Q个性化业务、手Q WebView等项目。喜欢阅读优秀的开源项目,听听音乐,偶尔也会打打竞技类游戏。 本文根据作者在2017GMTC全球移动技术大会的上分享的ppt整理,特别感谢卢景伦(腾讯SNG增值产品部高级工程师)将ppt精华汇总成文,方便大家阅读学习。 说在前面 2017年8月8日,增值产品部Vas团队研发的轻量级高性能Hybrid框架VasSonic通过了公司最终审核,作为腾讯开源组件的一份子分享给大家。从当初立项优化页面加载速度,到不
大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。 本文来自: 起点手机论坛 具体文章參考:http://www.qdppc.com/forum.php?mod=viewthread&ti
基本原理:加载类的时候是找element,每个element对于一个dex。我要把我修复的那个类单独放到dex插入dexlist前面,在你做类加载从前往后找优先从你的dex加载加载的就是你修复后的class.这就是
我们研发出了 VasSonic 框架,让 H5 页面首屏达到秒开,给用户一个更好的 H5 体验。
温馨提示:文章干货内容较多,可能一次看不完,建议点个“在看”并收藏,下次再查阅不迷路~
前言 Tinker简介 Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。 Tinker已知问题 1) Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件; 2) 由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码 3) 在Android N上,补丁对应用启动时间有轻微的影响; 4) 不支持部分三
首先做一下自我介绍,我是来自新浪移动基础前端组的付强,我网名叫小爝,如果经常上知乎的朋友可能对我比较熟悉,不熟悉的朋友也没有关系,我简单的做一下我个人的经历介绍,目的是为了让大家了解我之前的背景,让大家更好的带入到我今天要讲的主题中。
在网上找了好久都没有找到如何批量下载,只是找到有位通过角本执行来进行下载的。 试了一下在我机器上运行有问题,所以索性自己搞了一个出来。 首先根据官方的说法要下载git,这个无论如何是要下载的。 点击安装,安装完成后, 📷 在盘符上建立文件夹,我建在E:\android src下 右键选择Git bash 弹出如下界面 📷 下面就是整理下载的过程了,如果只需要下载其中的一个包,那么就不需要做下面的操作了,如果想下载全部源码就需要做一下处理,因为windows下是没有rep
领取专属 10元无门槛券
手把手带您无忧上云