Tinker中的dex配置'raw'与'jar'模式应该如何选择?

它们应该说各有优劣势,大概应该有以下几条原则:

  • 如果你的minSdkVersion小于14, 那你务必要选择'jar'模式;
  • 以一个10M的dex为例,它压缩成jar大约为4M,即'jar'模式能节省6M的ROM空间。
  • 对于'jar'模式,我们需要验证压缩包流中dex的md5,这会更耗时,在小米2S上数据大约为'raw'模式126ms, 'jar'模式为246ms。因为在合成过程中我们已经校验了各个文件的Md5,并将它们存放在/data/data/..目录中。默认每次加载时我们并不会去校验tinker文件的Md5,但是你也可通过开启loadVerifyFlag强制每次加载时校验,但是这会带来一定的时间损耗。

简单来说,'jar'模式更省空间,但是运行时校验的耗时大约为'raw'模式的两倍。如果你没有打开运行时校验,推荐使用'jar'模式。