WebAPK:Chrome 在 Android 上安装 PWA 的方式
发布于
一句话: 在 Android 上用 Chrome 安装 PWA 时,Chrome 会生成一个名为 WebAPK 的轻薄 原生 APK——而非普通主屏幕快捷方式——为应用赋予独立的 Android 包身份、启动画面以及 深层链接注册,无需通过 Play 商店分发。
WebAPK 是什么
Section titled “WebAPK 是什么”WebAPK(Web 应用包)是由 Google 的 WebAPK 铸造服务器在安装时生成的轻量级 Android APK。
Chrome 将 PWA 的清单详情提交给服务器,收到签名后的 APK,Android 像安装其他应用一样
安装它。APK 本身不含任何网页内容;它是一个在定制化 Chrome 运行时中以 PWA 的
start_url 启动 Chrome 的 shell。
WebAPK 安装后的结果:
- 应用出现在 Android 应用抽屉中,可以像普通应用一样从“设置 → 应用”中卸载。
- Android 为该应用分配唯一的包名(通常来源于清单的
start_url),赋予它独立的进程身份。 - 在清单
scope内注册的深层链接由 WebAPK 捕获,而非在浏览器标签页中打开。 - 系统根据清单的
name、background_color和 512 × 512 图标自动生成启动画面。 - 应用在最近任务(多任务)中以独立卡片显示。
WebAPK 铸造流程
Section titled “WebAPK 铸造流程”- 用户接受安装提示(
beforeinstallprompt→prompt()被接受,或点击浏览器的环境安装 UI)。 - Chrome 将清单 URL、清单内容和图标哈希值发送到 Google WebAPK 铸造服务器(
https://webapk.googleapis.com)。 - 服务器生成并签名 APK。
- Chrome 通过
PackageInstaller安装 APK;Android 将其视为真实应用。
铸造服务器由 Google 运营,是 Chrome WebAPK 路径的必要依赖。 三星 Internet 在三星设备上有自己等效的铸造机制。
清单自动更新
Section titled “清单自动更新”Chrome 大约每 24 小时检查一次 PWA 的清单。如果清单变更——名称、图标、颜色、 scope 或 start_url——Chrome 会触发重新铸造,Android 静默更新 WebAPK。 更新是无感的;除非包名本身必须变更(极罕见的边界情况),否则用户不会看到提示。
含义:清单变更会在一天内同步到已安装的应用,无需推送新的原生版本。
WebAPK 不提供的能力
Section titled “WebAPK 不提供的能力”- 超出 Web 平台能力范围的原生 Android API。 WebAPK 是一个 shell;业务逻辑仍以 Web 代码在 Chrome 中运行。
- Play 商店上架或分发——这需要 Trusted Web Activity (TWA),详见 TWA 参考文档。
- 自定义 Chrome 标志或扩展。 WebAPK 启动用户已安装的 Chrome,因此行为取决于用户的 Chrome 版本。
- 离线铸造。 如果安装时铸造服务器不可达,Chrome 会回退到普通快捷方式而非 WebAPK。
WebAPK vs 普通快捷方式对比
Section titled “WebAPK vs 普通快捷方式对比”| WebAPK | 普通快捷方式 | |
|---|---|---|
| Android 包身份 | 有(唯一包名) | 无 |
| 出现在应用抽屉 | 是 | 是(仅主屏幕) |
| 系统设置 → 应用 | 是 | 否 |
| 启动画面 | 自动生成 | 无 |
| 深层链接捕获(Intent) | 是(scope 内的 URL) | 否 |
| 从设置卸载 | 是 | 仅可长按主屏幕图标 |
| 需要铸造服务器 | 是 | 否 |
三星 Internet
Section titled “三星 Internet”三星 Internet 使用三星自己的铸造基础设施为通过其浏览器安装的 PWA 生成 WebAPK。 体验与 Chrome 的 WebAPK 相当,但 APK 由三星签名。铸造服务器与 Google 的不可互换。
Android 版 Firefox
Section titled “Android 版 Firefox”Android 版 Firefox(128+)将 PWA 安装为普通快捷方式;不生成 WebAPK。 应用体验更为有限:无 Android 包身份、无深层链接捕获、在“设置 → 应用”中没有独立条目。
iOS 对比
Section titled “iOS 对比”iOS 完全不使用 APK 模型。Safari 创建的是网页剪辑——一个在独立 Safari 窗口中打开的快捷方式。 WebAPK 在 iOS 上没有等效物;详见 iOS 添加到主屏幕。
通过 Play 商店分发
Section titled “通过 Play 商店分发”若需 Play 商店分发 PWA,需要 Trusted Web Activity (TWA) 而非 WebAPK。 详见 Trusted Web Activity (TWA)。
平台级支持数据,请查看 /compatibility/。