全部产品
云市场
云游戏

数据清理白名单

更新时间:2020-04-28 14:22:04

背景

为应对可能发生的连续启动崩溃的情况,mPaaS 建立了数据清理的机制。该数据清理机制支持定制,通过配置实现在不同情况下对 SharedPreference 、Database 数据库的清理,在极特殊情况下清空整个应用的数据,以保证应用的正常运行。目前该机制已经覆盖了 10.1.32、10.1.60 和 10.1.68 系列基线。

为满足保护重要数据的需求,mPaaS 在数据清理机制中提供了清理白名单功能。通过将目标文件加入清理白名单后即可保护该文件不被清理。

说明:只有 组件化接入方式(Portal Bundle) 存在数据清理机制。

清理白名单方案 1.0

简介

清理白名单方案 1.0 是在合适的时机调用 MPFramework 中的接口来动态设置白名单列表。

支持的基线

清理白名单方案 1.0 支持 10.1.32、10.1.60 和 10.1.68 系列基线。

如果在设置白名单之前已经因为崩溃触发了清理机制,那么清理白名单方案 1.0 将不能生效。如果您使用的是 10.1.32 系列基线,那么建议您升级基线到 10.1.60 或 10.1.68,以使用升级后的清理白名单方案 2.0。更多信息,请参见 清理白名单方案 2.0

接入步骤

只需在合适的时机调用设置清理白名单的接口即可。接口如下:

  1. /**
  2. * 设置 SharedPreference 白名单。若之前已经设置过,那么会把之前的数据清空。
  3. */
  4. public static void setSPWhiteList(List<String> whiteList);
  5. /**
  6. * 添加 SharedPreference 白名单,以追加的方式添加。
  7. *
  8. * @param whiteList
  9. */
  10. public static void addSPWhiteList(List<String> whiteList);
  11. /**
  12. * 获取设置的数据库白名单列表。
  13. *
  14. * @return
  15. */
  16. public static List<String> getDBWhiteList();
  17. /**
  18. * 设置数据库白名单。若之前已经设置过,那么会把之前的数据清空。
  19. */
  20. public static void setDBWhiteList(List<String> whiteList) ;
  21. /**
  22. * 添加数据库白名单,以追加的方式添加。
  23. *
  24. * @param whiteList
  25. */
  26. public static void addDBWhiteList(List<String> whiteList);

清理白名单方案 2.0

简介

清理白名单方案 2.0 是在触发到清理机制时,框架通过反射加载开发者配置的白名单来设置类,优先读取自定义的清理策略。

支持的基线

清理白名单方案 2.0 支持 10.1.60 和 10.1.68 系列基线。其中:

  • 10.1.60 基线要求 10.1.60.10 版本及以上。
  • 10.1.68 基线要求 10.1.68.4 版本及以上。

接入步骤

  1. 继承 com.mpaas.framework.adapter.api.ClearDataStrategy,实现相关接口。
  1. public abstract class ClearDataStrategy {
  2. public ClearDataStrategy() {
  3. }
  4. /**
  5. * 是否开启清理机制。
  6. * 若返回 false,则什么文件都不清理。
  7. * 若返回 true,则会执行清理策略。可以通过 getSPWhiteList,getDBWhiteList 返回需要保证的文件列表。
  8. *
  9. * @return
  10. */
  11. public abstract boolean enableClearDataStrategy();
  12. /**
  13. * 若开启了清理机制,通过该接口返回需要保护的 SharedPreference 文件。
  14. *
  15. * @return
  16. */
  17. public List<String> getSPWhiteList() {
  18. return null;
  19. }
  20. /**
  21. * 若开启了清理机制,通过该接口返回需要保护的 db 文件。
  22. *
  23. * @return
  24. */
  25. public List<String> getDBWhiteList() {
  26. return null;
  27. }
  28. }

2.在 Portal 的 AndroidManifest 中配置策略类的信息。

说明:由于需要反射调用 ClearDataStrategy,所以不能混淆ClearDataStrategy
  1. <meta-data
  2. android:name="ClearDataStrategy"
  3. android:value="com.mpaas.demo.launcher.ClearDataStrategy" />