跳转至正文

Capacitor OTA 更新:针对 iOS 与 Android

了解 iOS 与 Android 在 OTA 更新策略上的差异,重点关注部署、安全性和用户需求。

"Capacitor OTA 更新:针对 iOS 与 Android" Capgo 博客插图

想即时更新你的 Capacitor App,无需等待应用商店审核? 空中下载(OTA)更新允许你向应用的 Web 层(HTML、CSS、JavaScript)推送更改,而无需重新提交应用商店。但 iOS 和 Android 处理这些更新的方式不同,理解这些差异至关重要。

核心要点:

  • iOS:更新会立即部署,但需遵循严格规则,包括文件路径限制以及电源/网络要求。

  • Android:采用分阶段推送(1% → 100%),电源/网络需求更灵活,并支持后台更新。

  • 安全:两个平台都实施强大的安全措施——iOS 依赖硬件支持的加密,而 Android 使用 Verified Boot 和 SELinux.

  • Capgo:一个简化 OTA 更新的平台,提供超过 9.476 亿次更新 全球范围内的工具,用于高效、安全且合规的部署。

快速对比:

功能 iOS Android
更新部署 立即全量发布 分阶段发布 (1% → 100%)
后台更新 有限 支持 A/B 更新
存储空间 需要完整下载 支持流式更新
安全 硬件级加密 Verified Boot、SELinux
电源要求 电量 50% 或已连接电源 灵活
网络 需连接 Wi-Fi 支持多种连接方式

Capgo 可帮助简化流程,确保两个平台上的更新安全、高效且合规。无论你面向 iOS 还是 Android,了解这些差异都有助于你制定更好的 OTA 更新策略.

iOS 和 Android 如何处理 OTA 更新

在技术实现和审核流程上,iOS 和 Android 管理 OTA(over-the-air)更新的方式不同。

iOS App Store 更新规则

Apple 对 OTA 更新有严格的规定。设备必须满足特定技术条件:运行 iOS 5 或更高版本,连接稳定的 Wi-Fi 网络,并且电量至少 50% 或已接入电源 [5]。除了这些技术要求,Apple 还执行严格的审核流程,从安全性、性能、业务合规性、设计和法律标准等方面评估更新 [4].

Google Play Store 更新规则

Google Play 则不同,采用分阶段发布机制。更新会先向 1% 的用户小范围发布 24–48 小时,然后逐步扩大,通常每次增加 25%,直到在一到两周内全面部署 [7]。自 2023 年 8 月起,所有新的 Android 版本都必须面向最高可用的 API 级别 [3]。此外,Android 采用流式更新,有助于在更新过程中减少对额外存储空间的需求 更新流程的重要性 [8].

平台更新差异

iOS 和 Android OTA 更新的主要区别如下:

功能 iOS Android
更新部署 立即全量发布 分阶段发布 (1% → 25% → 50% → 100%)
后台更新 有限 支持后台 A/B 更新 [8]
存储管理 需要完整下载 支持流式更新 [8]
电源要求 电量至少 50% 或已连接电源 [5] 灵活的电源要求
网络需求 需要 Wi-Fi 连接 [5] 支持多种连接类型

Android 的 A/B 更新系统之所以突出,是因为它允许在后台安装更新,不会打断用户。该系统为启动关键分区使用两个插槽,无需重复分区,并且相比旧方法优化了存储空间 [6]。另一方面,iOS 的更新流程更可控、更即时,优先考虑稳定性和用户监督。

用户分组与更新分发

在进行更新分发时,策略需要考虑到各种设备和操作系统的独特限制。

基于设备的更新规则

更新要求很大程度上取决于硬件和平台。例如,iOS 设备进行用户发起的更新时,电量至少需要 20%,而 30% 用于 自动更新。在 Mac 上,要求因芯片组而异——Apple silicon 设备需要 20% 电量,而 Intel 设备则需要 50% [10]相比之下,Android 系统更灵活,但受生态碎片化困扰。厂商和运营商会造成延迟,安全更新平均需 24 天,设备特定适配还要额外 11 天 [11].

操作系统版本要求

操作系统要求对更新分发方式至关重要。对于 Android 应用,Google Play 强制执行以下规定:

时间范围 要求
2024 年 8 月 31 日之后 新应用的目标版本必须为 Android 14 (API 34+)
当前 现有应用的目标版本必须为 Android 13 (API 33+)
旧版 目标为 Android 12 或更低版本的应用必须符合现有 OS 版本要求

对于 iOS,Apple 使用 Rapid Security Response (RSR) 将关键补丁直接推送到最新 OS 版本 [10]. Capgo 确保与运行 iOS 13.0+ 和 Android API level 22+ 的设备兼容 [9].

更新策略结果

Android 的 Project Treble 已将安全更新所需时间缩短了约 7 天 [11]. 为了有效管理更新,建议将开发与生产环境分开 更新通道 [9]. Capgo 通过基于百分比的部署简化了流程,在符合 App Store 指南的同时实现受控发布。

更新器还会将下载的 bundle 缓存在各平台专属目录中,以实现高效、安全的更新:

  • Android: /data/user/0/com.example.app/code_cache/capgo_updater

  • iOS: Library/Application Support/capgo

这套缓存机制可确保更新流畅可靠 [9].

更新速度与效率

OTA(空中下载)更新的速度和效率对 iOS 和 Android 上的用户体验有着巨大影响。网络状况和文件大小管理是影响这一体验的两个关键因素。

文件大小与网络管理

优化文件大小对于流畅的 OTA 更新至关重要。例如,Capgo 的更新器会在应用启动时于后台线程中运行更新检查,确保用户界面保持响应 [9]。它还支持 JavaScript 更新,同时锁定原生 code(如 Java/Kotlin 或 Objective-C/Swift)以维持稳定性 [9].

更新速度对比

即使文件体积更小,更新速度仍是一个关键因素。由于 iOS 软硬件高度集成,通常能更快地处理更新 [14]。另一方面,Android 广泛的硬件范围有时会导致更新性能参差不齐 [13][14].

“向用户即时部署 Live Update 是 Appflow(Ionic 的移动 CI/CD 平台)最关键的优势之一。”
– Cecelia Martinez,开发者布道师 [12]

为了提高更新效率,差分更新和利用原生功能等策略至关重要。例如,Capacitor 将某些操作移至原生层。结合差分更新,这种方法可以缩短更新时间并减少数据用量 [12]。考虑到 Android 的主导市场份额——截至 2023 年 3 月,全球占比超过 70% [13] ——在其多样化的设备上提供高效的更新对于保持一致的性能尤为重要。

sbb-itb-f9944d2

安全规则与要求

在 OTA 更新方面,iOS 和 Android 采取不同的方法来确保数据保护和系统安全,各自使用一套定制化的协议。

iOS 安全标准

苹果的更新流程管控严格,且以高安全性为核心设计。iOS 设备依赖 硬件级加密,使用每部设备独有的两把内置 AES 256 位密钥 [17]。每台设备还包含一个唯一的硬件 UID,并集成 AES 256 位密钥 [17]。更新包会经过完整性校验,针对单台设备进行定制,并具备防止降级攻击的保护机制。苹果还会在更新期间隔离用户数据,以规避安全风险 [10]。其突出特性之一是苹果的 快速安全响应,无需完整的系统更新即可快速部署安全补丁 [10].

Android 安全标准

Android 基于 Linux 构建其安全体系,侧重于用户隔离和系统级保护。每个应用都会被分配一个唯一的 UID,同时 SELinux 执行强制访问控制。 已验证启动 功能可确保 code 的真实性 [18]。对于 OTA 更新,Android 使用 Virtual A/B 分区系统 (Android 11 及更高版本的设备支持压缩)、用于加密任务的硬件级 Keystore,以及由 OEM 和运营商推送的更新 [15].

功能 iOS Android
更新分发 由 Apple 集中管理 由 OEM/运营商分发
安全验证 硬件级加密 SELinux + 验证启动 (Verified Boot)
补丁分发 快速安全响应 Project Mainline 模块
更新身份验证 设备专属 UID 已验证启动

安全要求对比

这些框架的差异凸显了各平台架构如何塑造其安全策略。iOS 采用“围墙花园”模式,提供严格的控制和标准化的安全措施。相比之下,Android 的开放生态系统在更新机制上提供了更多灵活性,但有时也会面临碎片化挑战 [15]。这些安全结构直接影响 OTA 更新的可靠性。

对于使用 Capgo 等工具的开发者来说,理解这些区别至关重要。iOS 强制执行更严格的应用隔离,并限制系统 API 访问 [17],而 Android 更广泛的进程间通信选项则需要谨慎的安全管理 [18]。截至 2025 年 2 月,随着 iOS 18.3.1 及多个 Android 版本的普及 [16],开发者必须确保其 OTA 更新策略符合各平台的最新安全标准。

Capgo 平台概览

Capgo Live Update Dashboard 界面

Capgo 将各平台的特定 OTA 更新规则整合到一个简化的更新平台中。

通过与 iOS 和 Android 安全协议配合,Capgo 确保无缝的 OTA 更新管理。截至目前,已交付 9.476 亿次更新 覆盖 1,400 个生产应用 [1].

Capgo 核心功能

Capgo 致力于通过安全、高效且合规的交付方式解决更新难题。更新通过以下方式进行保护: 端到端加密,且解密仅在用户设备上进行 [1]。针对 iOS,它使用自定义 Dart 解释器,以符合 Apple 的“仅限解释器”更新规则 [9]。在 Android 上,它支持 API level 22 及以上,符合 Capacitor 的要求 [9].

功能 实现 平台支持
更新下发 即时部署 iOS 13.0+,Android API 22+
安全 端到端加密 双平台支持
CI/CD 集成 兼容 Azure DevOps、GitHub、GitLab 跨平台
存储管理 仅编译 code 平台特定缓存
版本控制 回滚能力 双平台支持

跨平台更新管理

Capgo 的通道系统让开发者能精确控制 iOS 和 Android 的更新。该系统支持:

  • 为 iOS 和 Android 设置独立的更新通道

  • 上传 不同的 bundle 并支持可选的跨渠道关联

  • 自动检测原生 code 变更 [9]

该平台的实际影响显而易见。例如,NASA 的 OSIRIS-REx 团队分享道:

“@Capgo 是进行热 code 推送的一种聪明方式(而且不像 @AppFlow 那样贵得离谱) :-)” [1]

Capgo 可以调整任何 JavaScript code,包括应用和生成的 code,但会严格避免修改原生 code(例如 Android 的 Java/Kotlin 或 iOS 的 Objective-C/Swift) [9].

总结

OTA 更新适用于 Capacitor 应用 由于平台特定规则,iOS 和 Android 需要采用不同的方式。iOS 的控制更严格,例如文件路径限制会将服务器路径限定为 “/Library/NoCloud/ionic_built_snapshots” [2]。与此同时,Android 则更加灵活,对虚拟机和解释器访问 API 的限制也更少 [2]。这些差异凸显了制定与各自平台框架相匹配的更新策略的重要性。

来自 Capgo 等平台的数据表明,这些策略可以非常有效。开发者已成功向 1,400 个生产应用交付了 9.476 亿次更新,证明了设计良好的更新系统的可扩展性 [1]。然而,成功在很大程度上取决于在满足各平台要求的同时,保持强大的安全措施。

例如,Apple 规定解释型 code 不得更改应用的核心功能或损害其安全性 [2]。这一规则明确提醒开发者,要有效实施 OTA 更新,必须遵循特定平台的指南。

继续了解 Capacitor OTA 更新:针对 iOS 与 Android

如果你正在使用 Capacitor OTA 更新:针对 iOS 与 Android 来规划安全与合规,请结合 加密 了解 Encryption 的实现细节, 合规性 了解合规部分的实现细节, Capgo 安全扫描器 了解 Capgo Security Scanner 的产品工作流, Capgo 安全 用于 Capgo 安全的产品工作流,以及 Capgo 信任中心 用于 Capgo 信任中心的产品工作流。

为 Capacitor 应用提供 Live Updates

当 Web 层出现线上 Bug 时,通过 Capgo 发布修复,而不用等 App Store 审核好几天。用户会在后台收到更新,原生变更则仍走正常审核流程。

博客最新动态

Capgo 为你提供打造真正专业的移动应用所需的最有价值的洞察。