Ionic部署发布 #

一、部署概述 #

1.1 部署流程 #

text
开发 → 测试 → 构建 → 签名 → 上架
  │       │       │       │       │
  └───┴─────┴───────┴───────┴───→ 发布

1.2 发布平台 #

平台 商店 审核时间
iOS App Store 1-3天
Android Google Play 数小时
Web Web服务器 即时

二、应用配置 #

2.1 应用信息 #

typescript
// capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.example.myapp',
  appName: 'My App',
  webDir: 'www',
  bundledWebRuntime: false,
  
  plugins: {
    SplashScreen: {
      launchShowDuration: 2000,
      backgroundColor: '#3880ff',
      showSpinner: false
    }
  }
};

export default config;

2.2 应用图标 #

bash
# 安装cordova-res
npm install -g cordova-res

# 生成图标
cordova-res ios --skip-config --copy
cordova-res android --skip-config --copy

2.3 启动画面 #

text
resources/
├── icon.png          # 应用图标 (1024x1024)
├── splash.png        # 启动画面 (2732x2732)
├── ios/
│   ├── icon/
│   └── splash/
└── android/
    ├── icon/
    └── splash/

三、iOS发布 #

3.1 准备工作 #

  1. Apple Developer账号
  2. 发布证书
  3. App ID
  4. Provisioning Profile

3.2 创建证书 #

bash
# 1. 创建证书签名请求
# 钥匙串访问 → 证书助理 → 从证书颁发机构请求证书

# 2. 在Apple Developer创建证书
# https://developer.apple.com/account

# 3. 下载并安装证书

3.3 Xcode配置 #

bash
# 打开Xcode
npx cap open ios

在Xcode中:

  1. 选择项目 → Signing & Capabilities
  2. 选择Team
  3. 配置Bundle Identifier
  4. 选择Provisioning Profile

3.4 构建发布版本 #

bash
# 1. 构建Web资源
ionic build --prod

# 2. 同步到iOS
npx cap sync ios

# 3. 在Xcode中构建
# Product → Archive

# 4. 上传到App Store Connect
# Window → Organizer → Distribute App

3.5 App Store Connect配置 #

  1. 创建应用记录
  2. 填写应用信息
  3. 上传截图
  4. 设置价格和可用性
  5. 提交审核

3.6 App Store要求 #

要求 说明
隐私政策 必须提供隐私政策链接
截图 各尺寸设备截图
应用描述 详细描述应用功能
关键词 搜索关键词
支持URL 技术支持页面

四、Android发布 #

4.1 准备工作 #

  1. Google Play Developer账号
  2. 签名密钥

4.2 创建签名密钥 #

bash
# 创建密钥库
keytool -genkey -v -keystore my-release-key.jks \
  -keyalg RSA -keysize 2048 -validity 10000 \
  -alias my-alias

# 查看密钥信息
keytool -list -v -keystore my-release-key.jks

4.3 配置签名 #

gradle
// android/app/build.gradle
android {
  signingConfigs {
    release {
      storeFile file('my-release-key.jks')
      storePassword 'your-store-password'
      keyAlias 'my-alias'
      keyPassword 'your-key-password'
    }
  }
  
  buildTypes {
    release {
      signingConfig signingConfigs.release
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
}

4.4 构建发布版本 #

bash
# 1. 构建Web资源
ionic build --prod

# 2. 同步到Android
npx cap sync android

# 3. 打开Android Studio
npx cap open android

# 4. 构建APK/AAB
# Build → Generate Signed Bundle/APK

4.5 Google Play Console配置 #

  1. 创建应用
  2. 填写商店信息
  3. 上传APK/AAB
  4. 设置定价和分发
  5. 提交审核

4.6 Google Play要求 #

要求 说明
应用签名 使用Google Play应用签名
目标API 目标Android 13+
内容分级 填写内容分级问卷
隐私政策 提供隐私政策链接
截图 各尺寸设备截图

五、Web发布 #

5.1 构建PWA #

bash
# 构建生产版本
ionic build --prod

5.2 PWA配置 #

json
// manifest.json
{
  "name": "My App",
  "short_name": "MyApp",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#3880ff",
  "icons": [
    {
      "src": "assets/icon/icon.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ]
}

5.3 Service Worker #

typescript
// ngsw-config.json
{
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    },
    {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**"
        ]
      }
    }
  ]
}

5.4 部署到服务器 #

bash
# 上传www目录到服务器
# 或使用CI/CD自动部署

六、持续集成 #

6.1 GitHub Actions #

yaml
# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: macos-latest
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
          
      - name: Install dependencies
        run: npm ci
        
      - name: Build
        run: npm run build -- --prod
        
      - name: Sync Capacitor
        run: npx cap sync
        
      - name: Build iOS
        run: |
          cd ios
          xcodebuild -workspace App.xcworkspace -scheme App -configuration Release -archivePath build/App.xcarchive archive
          
      - name: Upload to TestFlight
        run: |
          xcodebuild -exportArchive -archivePath build/App.xcarchive -exportOptionsPlist ExportOptions.plist -exportPath build/

6.2 Fastlane #

ruby
# ios/fastlane/Fastfile
default_platform(:ios)

platform :ios do
  desc "Build and upload to TestFlight"
  lane :beta do
    build_app(workspace: "App.xcworkspace", scheme: "App")
    upload_to_testflight
  end
  
  desc "Build and upload to App Store"
  lane :release do
    build_app(workspace: "App.xcworkspace", scheme: "App")
    upload_to_app_store
  end
end
ruby
# android/fastlane/Fastfile
default_platform(:android)

platform :android do
  desc "Build and upload to Play Store"
  lane :release do
    gradle(task: "assembleRelease")
    upload_to_play_store
  end
end

七、版本更新 #

7.1 版本号管理 #

json
// package.json
{
  "version": "1.0.0"
}
xml
<!-- AndroidManifest.xml -->
<manifest android:versionCode="1" android:versionName="1.0.0">
xml
<!-- Info.plist -->
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1</string>

7.2 强制更新 #

typescript
import { App } from '@capacitor/app';

async checkUpdate() {
  const info = await App.getInfo();
  const latest = await this.api.getLatestVersion();
  
  if (this.compareVersions(latest.version, info.version) > 0) {
    if (latest.forceUpdate) {
      this.showForceUpdateAlert();
    } else {
      this.showUpdateAlert();
    }
  }
}

八、最佳实践 #

8.1 发布检查清单 #

  • [ ] 更新版本号
  • [ ] 更新应用图标
  • [ ] 更新启动画面
  • [ ] 测试所有功能
  • [ ] 检查性能
  • [ ] 准备截图
  • [ ] 更新应用描述
  • [ ] 准备隐私政策

8.2 发布后监控 #

  • 监控崩溃报告
  • 收集用户反馈
  • 跟踪应用评分
  • 分析使用数据

九、总结 #

9.1 部署要点 #

平台 关键步骤
iOS 证书配置、Xcode构建、App Store Connect
Android 签名密钥、Android Studio构建、Google Play Console
Web PWA配置、服务器部署

9.2 下一步 #

掌握了部署发布后,接下来让我们学习 新闻应用实战,开始实战项目!

最后更新:2026-03-28