移动和 Web 之间的 4 大差异 - 第 2 部分

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

在我们 之前的文章 中,我们介绍了移动网络之间的四个差异(设备碎片化、资源可用性、商业模式和用户体验)。在这篇文章中,我们将介绍平台碎片化的概念。

设备碎片

即使在浏览器世界中,跨多个浏览器支持同一个应用程序也是一种冒险。 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 部分中介绍:资源可用性,其中涵盖了移动设备的独特特征,以及它们如何影响应用程序开发。