整体流程
- 服务端调用
bsdiff
根据旧版本的apk和新版本的apk进行差别分析,并生成差分包patch
bsdiff oldfile newfile patchfile
- 客户端检测到有新版本要更新,向服务端请求下载最新版本的apk,但实际上下载的是差分包patch
- 下载完毕后,客户端调用bspatch并结合旧版apk生成新版本的apk
bspatch oldfile newfile patchfile
- 校验新生成的apk和服务端的新版本的MD5值是否一致,一致才可以安装,否则有可能是恶意apk
注意事项
客户端的旧版本apk与服务器的旧版本apk要一致
客户端旧版本与服务端新版本之间的版本号差距不应过大,合理范围应当是一到两个版本号差距
客户端必须保证可以获取到旧版本的apk,即对旧版本的apk要有读写权限