想立即更新您的 Capacitor 立即更新您的应用程序 无需等待应用商店
无线更新(OTA)允许您将更改推送到应用程序的网页层(HTML、CSS、JavaScript)而无需重新提交到应用商店。但是,iOS和Android处理这些更新的方式不同,了解这些差异至关重要。
-
关键点摘要:iOS
-
: 立即部署更新,但遵循严格的规则,包括文件路径限制和电源/网络要求。Android
-
: 使用分阶段发布(1% → 100%)具有灵活的电源/网络需求并支持后台更新。安全性 : 两者都强制实施强大的安全措施 - iOS依赖于硬件加密,而Android使用验证的引导和SELinux。.
-
Capgo:一个简化OTA更新的平台, 947.6亿次更新 全球
使用工具进行高效、安全和合规的部署。
| 快速比较: | 功能 | iOS |
|---|---|---|
| 安卓 | 更新部署 | 即刻全量发布 |
| 分阶段发布(1% → 100%) | 受限 | 支持A/B更新 |
| 存储 | 需要完整下载 | 支持流式更新 |
| 安全 | 硬件加密 | 验证引导、SELinux |
| 电源要求 | 50%电池或已插入 | 灵活 |
| 网络 | Wi-Fi 必须 | 支持多种连接 |
Capgo 可帮助简化流程,确保更新安全、高效且符合两种平台的要求,无论您是针对 iOS 还是 Android,了解这些差异将有助于您创建更好的 OTA 更新策略.
iOS 和 Android 如何处理 OTA 更新
iOS 和 Android 在 OTA 更新管理方面采取了不同的方法,两者在技术执行和审批流程上都有所不同
iOS App Store 更新规则
苹果有严格的 OTA 更新规则。设备必须满足以下技术条件:必须运行 iOS 5 或更高版本,连接稳定的 Wi-Fi 网络,并且电池必须至少有 50% 的电量或连接到电源 [5]苹果还实施了严格的审批流程,评估更新的安全性、性能、商业合规性、设计和法律标准 [4].
Google Play Store 更新规则
Google Play 的运作方式不同,使用分阶段发布系统。更新首先在 1% 的用户中发布 24-48 小时,然后逐步扩大,通常每 25% 增加一次,直到在一到两周内完成部署 [7]自 2023 年 8 月以来,所有新 Android 版本都必须针对最高可用的 API 版本 [3].此外,Android采用流式更新,这有助于减少更新过程中额外存储空间的需求 更新过程 [8].
平台更新差异
平台更新差异
| 功能 | iOS | Android |
|---|---|---|
| 更新部署 | 即刻全量发布 | 分阶段发布(1% → 25% → 50% → 100%) |
| 后台更新 | 受限 | 支持在后台进行A/B更新 [8] |
| 存储管理 | 需要完整下载 | 支持流式更新 [8] |
| 电源要求 | 至少50%的电池或已连接 [5] | 灵活的电源要求 |
| 网络要求 | 需要Wi-Fi连接 [5] | 支持各种连接类型 |
Android的A/B更新系统独特之处在于允许在后台安装更新,而不会中断用户。这一系统使用两个槽位来为启动关键分区,避免了需要额外分区的需求,并优化了与旧方法相比的存储 [6]另一方面,iOS遵循更为控制和即时的更新流程,优先考虑稳定性和用户监督
用户组和更新分发
在更新分发方面,策略需要考虑各种设备和操作系统的独特约束。
设备更新规则
更新要求主要取决于硬件和平台。例如,iOS 设备在用户触发更新时需要至少 20% 的电池电量,而在自动更新时需要 30% 的电池电量。 自动更新. 在 Mac 上,要求根据芯片类型有所不同 - 20% 的电池电量用于 Apple 硬件,50% 的电池电量用于 Intel 基础的设备 [10]. Android 则有一个更灵活的系统,但面临着由于生态系统碎片化而产生的挑战。制造商和运营商会引入延迟,安全更新需要平均 24 天,设备特定完成需要额外 11 天 [11].
操作系统版本要求
操作系统要求在更新分发中起着关键作用。对于 Android 应用,Google Play 规定如下:
| 时间框架 | 要求 |
|---|---|
| 2024 年 8 月 31 日之后 | 新应用必须针对 Android 14 (API 34+) |
| 当前 | 现有应用必须针对 Android 13 (API 33+) |
| 遗留 | 针对 Android 12 或更低版本的应用必须遵守现有 OS 版本 |
对于 iOS,Apple 使用快速安全响应 (RSR) 直接将关键补丁传递给最新的 OS 版本 [10]. Capgo 确保与运行 iOS 13.0+ 和 Android API 等级 22+ 的设备兼容 [9].
更新策略结果
Android 的 项目 Treble 已将安全更新所需的时间减少了约 7 天 [11]. 为有效管理更新,建议将开发和生产分开管理 更新频道 [9]. Capgo 简化了过程,使用百分比部署,允许控制性发布,同时遵守应用商店指南。
更新器还缓存下载的包文件在平台特定的目录中,实现高效和安全的更新:
-
安卓:
/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].
“实时部署更新到用户是 Appflow(Ionic 的移动 CI/CD 平台)的一个最重要的好处。”
– Cecelia Martinez,开发者倡导者 [12]
为了提高更新效率,策略如差异更新和利用本机功能是关键。例如,Capacitor 将某些操作移至本机层。当与差异更新结合使用时,这种方法可以显著减少更新时间和数据使用量 [12]考虑到 Android 在全球市场的占比超过 70%,截至 2023 年 3 月 [13] – 交付高效的更新对于保持其多样化设备上的一致性能尤其重要
sbb-itb-f9944d2
安全规则和要求
当它来到OTA更新时,iOS 和 Android 采取不同的方法来确保数据保护和系统安全,各自使用其自己的定制协议
iOS 安全标准
苹果的更新过程是紧密控制的,并且以严格的安全性为设计。 iOS 设备依赖于 硬件加密, 使用每台设备独有的两个内置 AES 256 位密钥 [17]. 每台设备也包含一个唯一的基于硬件的 UID,内置了一个 AES 256 位密钥 [17]. 更新会被验证完整性,针对每台设备进行定制,并带有防止降级攻击的安全措施。苹果还在更新期间隔离用户数据以防止安全风险 [10]. 苹果的一个独特功能是 快速安全响应, 允许快速部署安全补丁而无需进行全系统更新 [10].
安卓安全标准
安卓的安全性基于 Linux 的基础,注重用户隔离和系统级保护。每个应用程序都被分配一个唯一的 UID,而 SELinux 强制访问控制 验证引导 功能确保code的真实性 [18]. Android在OTA更新中使用 虚拟A/B分区系统 (对Android 11及后续版本的设备使用压缩,用于加密任务的硬件背后的Keystore,以及通过OEM和运营商传递的更新) [15].
| 功能 | iOS | 安卓 |
|---|---|---|
| 更新分发 | 通过苹果进行集中管理 | 通过OEM/运营商进行分发 |
| 安全验证 | 硬件加密 | SELinux + Verified Boot |
| 补丁交付 | 快速安全响应 | Project Mainline 模块 |
| 更新身份验证 | 设备特定UID | Verified Boot |
安全要求比较
这些框架之间的差异突出了每个平台的架构如何塑造其安全方法。 iOS 在“围栏园”模型中运作,提供紧密的控制和标准化的安全措施。 与此相反,Android 的开放生态系统提供了更大的灵活性在更新机制,但有时会面临碎片化挑战 [15]这些安全结构直接影响 OTA 更新的可靠性。
对于使用工具如 Capgo 的开发者,了解这些区别至关重要。 iOS 强制严格的应用隔离和限制系统 API 访问 [17]而 Android 的更广泛的进程间通信选项需要小心的安全管理 [18]截至2025年2月,使用iOS 18.3.1和各种Android版本 [16]开发者必须确保他们的OTA更新策略与每个平台的最新安全标准相符。
Capgo 平台概述

Capgo 将各个平台的OTA更新规则整合到一个高效的更新平台中。
通过与iOS和Android安全协议合作,Capgo确保OTA更新管理的顺畅。截至目前,它已成功推送 9.476亿次更新 __CAPGO_KEEP_0__ 1,400个生产应用 [1].
Capgo Key Functions
Capgo专注于解决更新挑战,采用安全、高效和合规的交付方式。更新将使用 end-to-end 加密, 和解密只在用户设备上发生 [1]. 对于 iOS,使用自定义 Dart 解释器以符合 Apple 的解释器更新规则 [9]. 在 Android 上,支持 API 等级 22 以上,符合 Capacitor 的要求 [9].
| 功能 | 实现 | 平台支持 |
|---|---|---|
| 更新交付 | 即刻部署 | iOS 13.0+,Android API 22+ |
| 安全性 | 端到端加密 | 两种平台 |
| CI/CD集成 | 与Azure DevOps、GitHub、GitLab兼容 | 跨平台 |
| 存储管理 | 仅编译code | 平台特定的缓存 |
| 版本控制 | 回滚功能 | 两种平台 |
跨平台更新管理
Capgo的频道系统为开发者提供了对iOS和Android更新的精确控制。该系统允许:
-
iOS 和 Android 的独立更新通道
-
上传 带有可选的跨通道链接的独立包 自动检测本机 __CAPGO_KEEP_0__ 变更
-
Automatic detection of native code changes [9]
OSIRIS-REx 团队分享: “@__CAPGO_KEEP_0__ 是一种聪明的方式来进行热 __CAPGO_KEEP_1__ 推送(而不是像 @AppFlow 那样花所有的钱 :-)”
Capgo 可以调整任何 JavaScript code,包括应用程序和生成的 __CAPGO_KEEP_2__,但它严格避免修改本机 __CAPGO_KEEP_3__(例如 Android 的 Java/Kotlin 或 iOS 的 Objective-C/Swift) [1]
Capgo can adjust any JavaScript code, including app and generated code, but it strictly avoids modifying native code (such as Java/Kotlin for Android or Objective-C/Swift for iOS) [9].
OTA 更新
iOS 和 Android 的 OTA 更新 Capacitor 应用 需要针对 iOS 和 Android 设计不同的策略,因为两者都有各自的规则。对于 iOS,存在更严格的控制,例如文件路径限制,限制了服务器路径只能访问“/Library/NoCloud/ionic_built_snapshots” [2]. 与此同时,Android 允许更大的自由度,虚拟机和解释器访问 API 的限制较少 [2]. 这些差异突出了创建与每个平台框架相匹配的更新策略的重要性
来自 Capgo 的数据表明了这些策略的有效性。开发者成功地在 1,400 个生产应用中交付了 9.476 亿次更新,证明了设计良好的更新系统的可扩展性 [1]. 然而,成功依赖于满足每个平台的要求,同时保持强大的安全措施
例如,苹果要求解释 code 不得改变应用的核心功能或损害其安全 [2]. 这一规则是开发者必须遵循的平台特定指南的明确提醒,才能有效地实施 OTA 更新
继续阅读 Capacitor OTA Updates: Targeting iOS vs Android
如果您正在使用 Capacitor OTA Updates: Targeting iOS vs Android 来规划安全性和合规性,连接它与 加密 为加密的实现细节 合规 为合规的实现细节 Capgo 安全扫描器 为Capgo 安全扫描器的产品工作流程 Capgo 安全 为Capgo 安全的产品工作流程, 和 Capgo 信任中心 为Capgo 信任中心的产品工作流程