在我们 之前的文章 中,我们介绍了移动网络之间的四个差异(设备碎片化、资源可用性、商业模式和用户体验)。在这篇文章中,我们将介绍平台碎片化的概念。
设备碎片
即使在浏览器世界中,跨多个浏览器支持同一个应用程序也是一种冒险。 Chrome、Firefox、Internet Explorer 和 Safari 的配置都略有不同。但是,至少,运行 Windows 的 PC 和运行 Mac OS 的 Mac 存在一些“同质化”的安装基础,可能使用英特尔芯片组,以及 HTML5、CSS 和 JavaScript 作为浏览器的共同基础。
因此,网络应用程序几乎可以在任何芯片组/设备/操作系统/浏览器组合上运行而不会出现任何问题。
将其与移动设备进行比较——手机和平板电脑具有各种不同的形状和尺寸、屏幕分辨率、芯片组和操作系统版本。即使在可以说是最同质的生态系统(相对而言)的 iOS 中,也有 许多不同类型和世代的设备 (iPod touch、iPhone、iPad、Apple Watch,现在还有 Apple TV),运行 谁知道什么版本iOS 在 Apple 的 Axe 系列芯片组 之一上。然后, Android 的设备碎片化长期以来一直是众所周知的事实 :多个 OEM、多个 SemiCos、多个操作系统版本等等……简而言之,对于移动设备,生态系统内部和生态系统之间都存在碎片化。
碎片化很重要,会影响开发决策。在本系列 第 1 部分 的定义中,我们说过需要为特定平台编写移动应用程序,最重要的平台是 iOS、Android 和 Windows(我们称它们为“三个平台”)。支持多个平台会带来三个挑战:
- 不同的代码库 :如果目标是覆盖广泛的受众,开发人员需要维护三个不同的代码库以在所有三个平台上本地运行。
- 不兼容的代码库 :适用于操作系统特定版本“x”的代码不一定适用于版本“(x+1)”。例如,Apple 弃用了 iOS 9 中的一些类(例如 UIWebView、 NSURLConnection ), 要求开发人员更改代码 以使他们的应用程序在 iOS 9 上运行。
-
臃肿的代码库
:将代码库升级到“(x=1)”版本时,应用程序仍然需要在“x”版本上运行。因此,为了解决平台的所有市场相关设备/操作系统组合问题,应用程序二进制文件开始变得越来越大,占用设备空间,还需要更长的无线下载时间,这可能会影响用户的数据计划.事实上,Apple
在 2015 年 2 月将通过 iTunes Connect 提交的应用程序包的大小限制从 2 GB 提高到 4 GB
。随后,Apple 还在 iOS 9 中引入了“
App Thinning
”的概念,允许开发人员“
通过根据用户特定设备的功能定制应用交付,以最小的占用空间来优化 iOS 和 watchOS 应用的安装
”。
总而言之,移动设备与 Web 不同,因为它需要针对每个受支持的本机平台开发和持续管理一个代码库。任何应用程序要具有相关性并覆盖更广泛的受众,它至少需要支持 iOS 和 Android, 据 IDC 称, 2015 年第二季度这两个应用程序的市场份额合计占智能手机出货量的 90% 以上。
支持网络应用程序的反驳论点是只需要一个代码库,它可以跨所有平台扩展。那么为什么不简单地使用网络应用程序呢?这就是下一个不同之处,我们将在 V 的第 III 部分中介绍:资源可用性,其中涵盖了移动设备的独特特征,以及它们如何影响应用程序开发。