Android增量升级的方法和原理

简介: 总结: 我们使用delta编码算法减少Android应用升级程序的大小。我们通过bsdiff和bspatch工具在android上实现delta编码算法。

总结:

我们使用delta编码算法减少Android应用升级程序的大小。我们通过bsdiffbspatch工具在android上实现delta编码算法。服务器软件和android应用已经部署。当前,我们能够减少Android升级流量的50%,如果大量的部署,这将会减少网络的压力。

 

升级机制:

我们打算采用delta编码的patch升级Android应用。新的升级机制可以描述如下:

 

1、  在服务器上生成一个patch

2、  下载patch到手机中。

3、  通过补丁获取一个已安装应用的新的安装apk

4、  安装应用的新版本并删掉旧的版本和patch

 

统计数据:

我们当前正在研究应用怎样在android中升级。这个研究结果将允许我们在新的升级机制下节约大量的流量。我们创建了一个android应用用来收集统计数据(可能会用于将来的研究)。

应用会收集以下数据:

1、  应用的名字,版本,大小和每个应用最后升级的时间。

2、  统计Wifi3G的链接状态。

 

谷歌增量升级技术:

 

在谷歌2012 I/O大会上宣布Google Play Stroe的增量升级技术。它始于八月中旬。他们使用跟我们相同的升级机制。比较两个应用的不同,并将patch部署在终端上。

 

根据我们的统计,patch文件的平均大小为应用的34%

 

用到的软件:

为了完成在服务器上部署patch软件和在手机上部署patch和升级应用。在服务器端我们使用bsdiff工具。在android,我们使用bspatch工具。

目录
相关文章
|
3月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
68 2
基于Android P,自定义Android开机动画的方法
|
2月前
|
安全 Android开发 Kotlin
Android经典实战之SurfaceView原理和实践
本文介绍了 `SurfaceView` 这一强大的 UI 组件,尤其适合高性能绘制任务,如视频播放和游戏。文章详细讲解了 `SurfaceView` 的原理、与 `Surface` 类的关系及其实现示例,并强调了使用时需注意的线程安全、生命周期管理和性能优化等问题。
142 8
|
3月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
148 2
|
10天前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
35 15
Android 系统缓存扫描与清理方法分析
|
9天前
|
缓存 Java 数据库
Android的ANR原理
【10月更文挑战第18天】了解 ANR 的原理对于开发高质量的 Android 应用至关重要。通过合理的设计和优化,可以有效避免 ANR 的发生,提升应用的性能和用户体验。
31 8
|
28天前
|
XML 前端开发 Android开发
Android View的绘制流程和原理详细解说
Android View的绘制流程和原理详细解说
32 3
|
2月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
42 2
|
2月前
|
编解码 前端开发 Android开发
Android经典实战之TextureView原理和高级用法
本文介绍了 `TextureView` 的原理和特点,包括其硬件加速渲染的优势及与其他视图叠加使用的灵活性,并提供了视频播放和自定义绘制的示例代码。通过合理管理生命周期和资源,`TextureView` 可实现高效流畅的图形和视频渲染。
193 12
|
29天前
|
Java 调度 Android开发
Android面试题之Kotlin中async 和 await实现并发的原理和面试总结
本文首发于公众号“AntDream”,详细解析了Kotlin协程中`async`与`await`的原理及其非阻塞特性,并提供了相关面试题及答案。协程作为轻量级线程,由Kotlin运行时库管理,`async`用于启动协程并返回`Deferred`对象,`await`则用于等待该对象完成并获取结果。文章还探讨了协程与传统线程的区别,并展示了如何取消协程任务及正确释放资源。
19 0
|
3月前
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
169 1