增量更新
1、就是比較兩個(gè)APP的差距,只更新相差的地方,而不是全部重新下載,安裝
2、使用的工具 bsdiff 和 bspatch。其中 bsdiff 比較的 新的 apk與老的apk直接的差異,生成一個(gè)文件(patch)。 更新的時(shí)候下載這個(gè)patch文件,在使用bspatch 與 老得 apk 生成一個(gè)新的 apk。就是升級(jí)之后的apk。
3、所以在 android app 中如果需要使用到 增量更新的話,需要通過(guò)ndk 引入 bspatch 的源碼
補(bǔ)充知識(shí)點(diǎn)
1、ndk的一個(gè)語(yǔ)法,因?yàn)槲覀冊(cè)?apk 中使用增量更新,需要用到 ndk,
所以需要引入 bspatch和其相關(guān)的cpp源碼,cmake 快捷的引入方式:
使用 aux_source_directory(file_name,name)
// 把file_name 下的源文件 用 name 來(lái)表示
使用 add_library(cpp_native SHARED native-lib.c ${name})
2、include_directories(file_name)
// 設(shè)置頭文件的 的查找路徑,也就是 .h 文件,
這樣在 #include的時(shí)候就不用使用 路徑的地址了 也就是“”了,可以使用<> 尖括號(hào)了。
dex文件的分析 Tinker (熱修復(fù))

image.png
1、bsdiff 工具,比較兩個(gè)文件的不同,使用的是 差分算法,可以比較任何文件,生成的batch 也會(huì)比較大。
2、android 中的可執(zhí)行文件 都是 .dex 文件,不同的文件有不同的存儲(chǔ)方式,每個(gè)字段也有不同的含義
3、dexdiff 主要是針對(duì) dex 文件來(lái)使用 差分算法 比較兩個(gè)文件的不同的。產(chǎn)生的數(shù)據(jù)更小
4、可以使用 tinker 來(lái)替換 dex 文件,達(dá)到免安裝就更新apk的目的