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 准备工作 #
- Apple Developer账号
- 发布证书
- App ID
- 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中:
- 选择项目 → Signing & Capabilities
- 选择Team
- 配置Bundle Identifier
- 选择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配置 #
- 创建应用记录
- 填写应用信息
- 上传截图
- 设置价格和可用性
- 提交审核
3.6 App Store要求 #
| 要求 | 说明 |
|---|---|
| 隐私政策 | 必须提供隐私政策链接 |
| 截图 | 各尺寸设备截图 |
| 应用描述 | 详细描述应用功能 |
| 关键词 | 搜索关键词 |
| 支持URL | 技术支持页面 |
四、Android发布 #
4.1 准备工作 #
- Google Play Developer账号
- 签名密钥
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配置 #
- 创建应用
- 填写商店信息
- 上传APK/AAB
- 设置定价和分发
- 提交审核
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