简介
You already have a Progressive Web App. It works in browsers, has a manifest, and maybe uses a service worker for offline support. If you now need app store distribution, native device APIs, or a better onboarding funnel, migrating to a Capacitor app is usually faster than rewriting your front end.
最大的优势是您保留了几乎所有现有的网络code。在大多数情况下,您只需要:
- 构建生产网络资产
- 初始化Capacitor
webDir, - 添加iOS和Android项目
- 并仅在需要时连接本机插件。
如果您的PWA具有干净的路由和组件逻辑,这可能只需要几小时。
前提条件
预估时间: 2-5 小时,取决于平台特性。
- Node.js 18+ Bun
- 您的现有 PWA 源代码 code (React, Vue, Angular, Svelte 等)
- Xcode (仅限 iOS, macOS)
- 安卓 studio (仅限 Android)
- 苹果开发者账户,如果您计划发布 iOS
- Google Play 发布者账户 (仅限 Android)
步骤 1:检查您的 PWA 之前将其包装成原生应用
在运行之前 bunx cap init确保您的 Web 应用已准备好发布:
- 确保您的 PWA 有一个生产构建脚本(例如
bun run build). - 确认您的 Web 输出文件夹是确定性的(通常
dist,build或out). - 删除硬编码的绝对重定向,假设浏览器上下文
- 验证服务工作器行为与移动 WebViews 兼容:
- 保持离线支持,如果有助于您的用户
- 避免浏览器仅有的 API,无法在嵌入式 Webview 中使用
- 确认 PWA 安装提示和浏览器特定的 UX 是否仍然合理。在一个 Capacitor 应用中,通常不需要应用安装提示
步骤 2:适应 Web-only 行为
保持您的应用程序 UI,但屏蔽浏览器仅限逻辑。
使用简单的平台检查在安装和推送提示周围:
import { Capacitor } from '@capacitor/core'
const isNative = Capacitor.isNativePlatform()
function registerInstallPrompt() {
if (isNative) return
// existing browser-only install or Web Push code
}
这避免了浏览器仅限逻辑在原生容器内触发。
步骤 3:在您的 PWA 文件夹中初始化 Capacitor
从您的现有 PWA 根目录:
bun add @capacitor/core
bun add -D @capacitor/cli
运行 Capacitor init 以使用您的应用程序名称、包 ID 和 Web 输出目录:
bunx cap init MyPWAApp com.example.my-pwa-app --web-dir dist
如果您的构建文件夹是 build (Create React App) 或 out (Next.js 静态导出),请替换 dist.
添加一个基本的 Capacitor 配置:
import type { CapacitorConfig } from '@capacitor/cli'
const config: CapacitorConfig = {
appId: 'com.example.my-pwa-app',
appName: 'MyPWAApp',
webDir: 'dist',
server: {
iosScheme: 'https',
},
}
export default config
步骤 4:添加原生平台
安装核心原生包并生成项目文件夹:
bun add @capacitor/ios @capacitor/android
bunx cap add ios
bunx cap add android
At this point Capacitor 已经创建 ios/ 和 android/ 文件夹。 同步将复制您的构建的Web资产到两种平台。
第 5 步:构建您的Web应用并同步
构建PWA并同步Web资产:
bun run build
bunx cap sync
现在打开本机项目:
bunx cap open ios
bunx cap open android
从Xcode或Android Studio中,连接设备或模拟器并运行。
第 6 步:本机增强后迁移
这是您替换Web-only特性为本机API所在的地方:
- 推送通知 ->
@capacitor/push-notifications - 安全的键值存储 ->
@capacitor/preferences - 相机/媒体 ->
@capacitor/camera - 生物识别认证 ->
@capacitor-community/native-biometric(或选择的插件)
每个新本地插件:
- 安装插件包
- 配置插件特定设置
- 运行:
bunx cap sync
然后重建并再次运行。
第 7 步:应用商店平行性检查
context
- 页面/区域:Capgo 页面。角色:UI 标签。见于:关于.astro 页面。消息键 `about_how_step_label` (关于如何步骤标签)。
/提交之前: - 在两种平台上测试深度链接和路由(和深度路由)。
- 移除未使用的网页特有元数据(例如安装提示)。
- 保持应用传输安全和隐私设置与您的政策一致。
- 为每个平台添加应用图标/启动画面资源。
如果您的应用使用OTA更新,配对您的发布管道与一个原生安全的更新策略,并考虑 Capgo 为受控发布和回滚。
最终检查表
- 网页应用构建干净(
bun run build) - Capacitor
webDir bunx cap add ios并bunx cap add android完成- 原生应用在真实设备上运行
- 浏览器独有的code路径被限制为原生行为
- 更新频道和应用商店资产已配置
您已经在构建PWA时完成了大部分繁重的工作。将其包装在Capacitor中将为您提供:
- 商店分发
- 对原生API的访问
- 不需要完全重写code的更快迭代
- 一个单一的部署路径,适用于Web和移动团队。
从这个流程开始,然后根据分析和用户反馈逐步迭代原生功能。
继续阅读《将PWA转换为原生应用Capacitor》
如果您正在使用 《将PWA转换为原生应用Capacitor》 来规划迁移和企业运营,连接它与 Capgo 企业版 为Capgo 企业版产品工作流 Ionic 企业插件替代方案 为Ionic 企业插件替代方案产品工作流 Capgo 替代方案 为Capgo 替代方案产品工作流 Capgo 咨询 为Capgo 咨询产品工作流 Capgo 高级支持 为Capgo 高级支持产品工作流