feature

  1. bundle的动态更新

注意

atlas更新不像hotpatch的立即生效,而是需要用户在patch成功安装之后,重启应用才能生效

接口Api

com.taobao.atlas.update.AtlasUpdater#update

  1. 更新的接口

    1. /**
    2. * 更新主入口
    3. * @param updateInfo 更新的基础信息
    4. * @param patchFile tpatch包
    5. * @throws MergeException
    6. * @throws BundleException
    7. */
    8. public static void update(UpdateInfo updateInfo, File patchFile) throws MergeException, BundleException
  2. 更新的基础信息

    1. /**
    2. * 当前的客户端版本
    3. */
    4. public String baseVersion;
    5. /**
    6. * 更新后的客户端版本
    7. */
    8. public String updateVersion;
    9. /**
    10. * 更新的模块列表信息
    11. */
    12. public List<Item> updateBundles;
    13. public File workDir = new File(RuntimeVariables.androidApplication.getCacheDir(), "atlas_update");
    14. /**
    15. * 更新的模块信息
    16. */
    17. public static class Item implements Serializable {
    18. /**
    19. * 是不是主dex
    20. */
    21. public boolean isMainDex;
    22. /**
    23. * bundle 的名称
    24. */
    25. public String name;
    26. /**
    27. * bundle 版本信息
    28. */
    29. public String version;
    30. /**
    31. * bundle 的代码仓库对应的版本
    32. */
    33. public String srcVersion;
    34. /**
    35. * 依赖的 bundle 列表
    36. */
    37. public List<String> dependency;
    38. }

更新过程

  1. 解压patch包
  2. 合并patch包和原始apk中的bundle(在独立进程进行)
  3. 将合并后新的bundle进行重新的安装
  4. 更新bundle的列表信息
  5. 等待用户启动重新加载