在产品的主界面里,使用了一张 VectorDrawable,结果在小米 4C 上启动就会导致崩溃。网上也有人问到类似的问题(https://stackoverflow.com/questions/48242724/app-crashing-at-layoutinflater-on-miui-devices)。看其中的回复,很容易让人怀疑是 VectorDrawable 的兼容性问题。不过,VectorDrawable 是 Android 5.0 就已经支持的特性,实在没理由在 Android 6.0 的 MIUI 设备上反而会出问题。
前几天把这个问题又端详了一下,意识到与之相伴的,似乎还有内存申请失败的信息。心念一动,看了下 import 到 Android Studio 里面的矢量图信息,结果宽高的 dp 均是上千的。立刻感觉到这可能才是问题根源,将两个值都减到 1/10 后编译测试,则顺利启动,不再有问题。显然,是老设备的内存太小,而矢量图的尺寸定义过大,在加载/渲染为位图时无法得到足够的内存空间而导致的崩溃。