增量更新
1、就是比较两个APP的差距,只更新相差的地方,而不是全部重新下载,安装
2、使用的工具 bsdiff 和 bspatch。其中 bsdiff 比较的 新的 apk与老的apk直接的差异,生成一个文件(patch)。 更新的时候下载这个patch文件,在使用bspatch 与 老得 apk 生成一个新的 apk。就是升级之后的apk。
3、所以在 android app 中如果需要使用到 增量更新的话,需要通过ndk 引入 bspatch 的源码
补充知识点
1、ndk的一个语法,因为我们在 apk 中使用增量更新,需要用到 ndk,
所以需要引入 bspatch和其相关的cpp源码,cmake 快捷的引入方式:
使用 aux_source_directory(file_name,name)
// 把file_name 下的源文件 用 name 来表示
使用 add_library(cpp_native SHARED native-lib.c ${name})
2、include_directories(file_name)
// 设置头文件的 的查找路径,也就是 .h 文件,
这样在 #include的时候就不用使用 路径的地址了 也就是“”了,可以使用<> 尖括号了。
dex文件的分析 Tinker (热修复)
1、bsdiff 工具,比较两个文件的不同,使用的是 差分算法,可以比较任何文件,生成的batch 也会比较大。
2、android 中的可执行文件 都是 .dex 文件,不同的文件有不同的存储方式,每个字段也有不同的含义
3、dexdiff 主要是针对 dex 文件来使用 差分算法 比较两个文件的不同的。产生的数据更小
4、可以使用 tinker 来替换 dex 文件,达到免安装就更新apk的目的