我应该使用哪个作为补丁包下发,如何做多次修复?

patch_signed_7zip.apk是已签名并且经过7z压缩的补丁包,但是你最好重命名一下,不要让它以.apk结尾,这是因为有些运营商会挟持以.apk结尾的资源。

另外一点,我们在发起补丁请求时,需要先将补丁包先拷贝到dataDir中。因为在sdcard中,补丁包是极其容易被清理软件删除。这里可以参考UpgradePatchRetry.java的实现。

对于补丁包的版本问题,我们可以在packageConfig中增加,例如sample中的

  1. packageConfig {
  2. /**
  3. * patch version via packageConfig
  4. */
  5. configField("patchVersion", "1.0")
  6. }

Tinker支持对同一基准版本做多次补丁修复,在生成补丁时,oldApk依然是已经发布出去的那个版本。即补丁版本二的oldApk不能是补丁版本一,它应该依然是用户手机上已经安装的基准版本。