根据OpenSignal最新的研究报告显示,目前有超过24000种不同类型的设备,支持一种以上的Andriod版本,但它们在屏幕分辨率、规格、按键、处理器、可用内存大小等方面,都存在着差异。
嗯,老实说这个数字把Bird吓了一跳,我想这两万多款设备里面,很大部分设备应该是多年前的淘汰机型了。不过今年新上市的机型数量也是可观的,有数据显示接近2000款。
设备碎片化现象也不仅仅是Android的专利,iOS平台每年都会曝出负优化丑闻,就是说苹果为了多卖设备,每当新设备发布,老设备性能就会变差。其实这样的说法有点过了,事实上机型的碎片化才是导致设备变慢,BUG变多的元凶。
大多数的bug都发生在其中的3个领域:
多种多样的屏幕尺寸,这会使得开发者很难创造出一个适用于所有设备的UI界面;
不同的硬件性能,如处理器、内存等;
碎片化对操作系统的版本也造成了影响。
就像Conner Forrest在TechRepublic时所说得那样:在Andriod 5.0版本操作系统(Lollipop)发布的几个月后,仅有3.3%的用户进行了安装使用,更糟糕的是,目前即使是新的设备也常常安装旧版操作系统。
常见的兼容性问题有哪些呢?
尺寸问题:这个问题不仅发生在像按键这样的图形元素之中,也发生在文本元素里;
丢失可视化元素:一些本来应该存在的元素可能会消失,这就会让对应的功能变得不可用;
位置问题:元素显示得位置会存在一定偏差,换句话说,可能并不是居中显示;
影响功能使用:按键在屏幕上的显示,有一个常见的问题,就是可能会隐藏其中的一些UI元素,使得对应的功能变得不再可用,例如:隐藏了确认输入按键,甚至是输入框。
碎片化所造成的最大问题是,其中一些bug只会出现在特定的设备上,并不是随处可见得,这就使得很难给这些bug进行定位。
Google这些年也一直在努力解决Andriod的碎片化问题。因为在引入了Google应用服务后,降低了Android新版本的使用率。但是想要根治APP的兼容性测试问题,还需要使用TestBird这样的第三方测试服务。
这里可以在2000多款设备上自动化运行APP,并使用真实的运营商网络环境提供测试。TestBird还在app测试过程中保留截图和日志,这也大大方便了开发者们定位问题。