如上图是由opensignal统计的2014年Android设备的数据,可以看到碎片化越来越严重,苹果相比Android来说稍微好点但最近几年由于创新乏力不断在屏幕尺寸上做文章也使得苹果的适配开始面临更多的挑战。
背景
首先,APP适配问题的由来,是因为无线智能终端和以往的Windows/MacOs相比,属于软硬件高度绑定的嵌入式设备,大多数智能终端的系统和硬件都是高度绑定的,并不像当年的Windows可以兼容大多数的机器配置。由于硬件驱动和功能的不断创新,各个厂家会针对自己的终端在系统上做很多的定制化工作。尤其是Android,由于源码开放且厂家众多,各厂家采用的硬件种类繁多,因此各终端系统的碎片化就越来越严重。
我们的APP需要在如此众多的终端上运行,而终端的系统版本、屏幕分辨率、所用的配件千差万别,厂商带来的系统API改动非常的多。当我们的代码调用系统的API产生了不一致的效果而没有很好的处理的话,就很容易产生适配问题。
iOS篇
由于iOS的厂家只有苹果比较简单,所以我们先来谈谈iOS。
由于iOS本身的封闭性,软硬件都是用苹果自己的芯片和系统,那我们就从硬件和软件两方面来分析一下看看有什么差异:
硬件
大家应该都知道即便是同一款iPhone也会区分不同的型号,这个主要是和发行区域有关,在有些地方iPhone会和当地的运营商合作推出带锁的版本,也就是让手机只支持某一类运营商的网络,虽然这会导致在基带芯片上有所不同,不过由于苹果的运算芯片采用的是自研芯片,因此对于适配同款iPhone的不同型号来说基本没有差异。
软件
由于iOS本身是封闭的,全球所有iPhone都是使用苹果自己的iOS系统,采用的服务和框架也都是苹果提供的,因此不同地区的iOS系统本身除了本地化的一些语言差异可以说基本没有什么差异,只有系统版本间的差异。
总体来说,由于苹果的封闭性,对于设备碎片化的把控都是比较好的。因此我们重点关注影响适配是以下几个因素:
系统版本>屏幕尺寸>机型>语言>网络>海外版本。