664 lines
14 KiB
Markdown
664 lines
14 KiB
Markdown
# iOS App Store 上架指南
|
||
|
||
**应用名称**: 移动 EDA - 原理图设计工具
|
||
**Bundle ID**: com.jiloukeji.mobileeda
|
||
**版本**: 1.0.0 (1)
|
||
**文档版本**: 1.0
|
||
**更新日期**: 2026-03-07
|
||
|
||
---
|
||
|
||
## 📋 目录
|
||
|
||
1. [前置准备](#前置准备)
|
||
2. [证书配置](#证书配置)
|
||
3. [App Store Connect 设置](#app-store-connect 设置)
|
||
4. [元数据准备](#元数据准备)
|
||
5. [构建与上传](#构建与上传)
|
||
6. [提交审核](#提交审核)
|
||
7. [常见问题](#常见问题)
|
||
|
||
---
|
||
|
||
## 前置准备
|
||
|
||
### 1.1 账号准备
|
||
|
||
| 账号类型 | 网址 | 费用 | 状态 |
|
||
|---------|------|------|------|
|
||
| Apple ID | appleid.apple.com | 免费 | 需准备 |
|
||
| Apple Developer | developer.apple.com | $99/年 | 需准备 |
|
||
| App Store Connect | appstoreconnect.apple.com | 包含 | 需准备 |
|
||
|
||
### 1.2 开发环境
|
||
|
||
```bash
|
||
# 检查环境
|
||
flutter doctor -v
|
||
|
||
# 要求:
|
||
# ✓ Xcode 15.0+
|
||
# ✓ CocoaPods
|
||
# ✓ iOS Deployment Target >= 12.0
|
||
```
|
||
|
||
### 1.3 项目配置检查
|
||
|
||
```yaml
|
||
# pubspec.yaml
|
||
version: 1.0.0+1 # version+build_number
|
||
|
||
# ios/Runner/Info.plist
|
||
<key>CFBundleVersion</key>
|
||
<string>1</string>
|
||
<key>CFBundleShortVersionString</key>
|
||
<string>1.0.0</string>
|
||
<key>MinimumOSVersion</key>
|
||
<string>12.0</string>
|
||
```
|
||
|
||
---
|
||
|
||
## 证书配置
|
||
|
||
### 2.1 创建 Apple Distribution 证书
|
||
|
||
#### 步骤 1: 生成证书签名请求 (CSR)
|
||
|
||
```
|
||
1. 打开 Keychain Access (钥匙串访问)
|
||
2. 菜单:Keychain Access → Certificate Assistant → Request a Certificate From a Certificate Authority
|
||
3. 填写:
|
||
- User Email: 你的 Apple ID 邮箱
|
||
- Common Name: 你的姓名
|
||
- CA Email: 留空
|
||
4. 选择 "Saved to disk"
|
||
5. 点击 Continue,保存为 CertificateSigningRequest.certSigningRequest
|
||
```
|
||
|
||
#### 步骤 2: 在 Developer Portal 创建证书
|
||
|
||
```
|
||
1. 登录 https://developer.apple.com/account/resources/certificates/list
|
||
2. 点击蓝色 + 按钮
|
||
3. 选择 "Apple Distribution" (App Store 和 Ad Hoc)
|
||
4. 点击 Continue
|
||
5. 上传 CSR 文件
|
||
6. 点击 Continue → Download
|
||
7. 双击下载的 certificate.cer 安装到 Keychain
|
||
```
|
||
|
||
#### 步骤 3: 导出 .p12 文件
|
||
|
||
```
|
||
1. Keychain Access 中找到 "Apple Distribution" 证书
|
||
2. 右键 → Export "Apple Distribution"
|
||
3. 保存为 .p12 格式
|
||
4. 设置导出密码(重要!用于 CI/CD)
|
||
5. 安全备份 .p12 文件和密码
|
||
```
|
||
|
||
### 2.2 注册 App ID
|
||
|
||
```
|
||
1. 登录 https://developer.apple.com/account/resources/identifiers/list
|
||
2. 点击蓝色 + 按钮
|
||
3. 选择 "App IDs" → Continue
|
||
4. 选择 "App" → Continue
|
||
5. 填写:
|
||
- Description: Mobile EDA
|
||
- Bundle ID: Explicit → com.jiloukeji.mobileeda
|
||
6. Continue → Register
|
||
```
|
||
|
||
### 2.3 创建 App Store Provisioning Profile
|
||
|
||
```
|
||
1. 登录 https://developer.apple.com/account/resources/profiles/list
|
||
2. 点击蓝色 + 按钮
|
||
3. 选择 "App Store" → Continue
|
||
4. 选择 App ID: Mobile EDA (com.jiloukeji.mobileeda)
|
||
5. 选择证书:Apple Distribution
|
||
6. 命名:MobileEDA-AppStore
|
||
7. Continue → Generate → Download
|
||
8. 双击安装 .mobileprovision 文件
|
||
```
|
||
|
||
---
|
||
|
||
## App Store Connect 设置
|
||
|
||
### 3.1 创建应用
|
||
|
||
```
|
||
1. 登录 https://appstoreconnect.apple.com
|
||
2. 点击 "我的 App"
|
||
3. 点击蓝色 + 按钮 → 新建 App
|
||
4. 填写信息:
|
||
- 平台:iOS
|
||
- 应用名称:移动 EDA - 原理图设计工具
|
||
- 主要语言:简体中文 (Simplified Chinese)
|
||
- Bundle ID: com.jiloukeji.mobileeda
|
||
- SKU: mobile-eda-001 (自定义唯一标识)
|
||
- 用户访问权限:完全访问
|
||
5. 点击创建
|
||
```
|
||
|
||
### 3.2 填写应用信息
|
||
|
||
#### 基本信息
|
||
|
||
| 字段 | 值 | 字符限制 |
|
||
|------|-----|---------|
|
||
| 名称 | 移动 EDA - 原理图设计工具 | 30 |
|
||
| 副标题 | 随时随地设计电路 | 30 |
|
||
| 隐私政策 URL | https://www.jiloukeji.com/privacy | - |
|
||
| 类别 | 生产力 | - |
|
||
| 次要类别 | 工具 | - |
|
||
|
||
#### 联系信息
|
||
|
||
```
|
||
联系人的姓:[填写]
|
||
联系人的名:[填写]
|
||
电子邮件:support@jiloukeji.com
|
||
电话号码:[填写]
|
||
```
|
||
|
||
### 3.3 App Privacy 问卷
|
||
|
||
登录 https://appstoreconnect.apple.com → 选择应用 → App 隐私
|
||
|
||
#### 数据类型申报
|
||
|
||
```
|
||
本应用不收集任何用户数据
|
||
|
||
✓ 数据不与用户身份关联
|
||
✓ 数据不用于追踪
|
||
✓ 数据不上传到服务器
|
||
```
|
||
|
||
#### 隐私类型选择
|
||
|
||
```
|
||
选择:此 App 不收集任何数据
|
||
|
||
确认:
|
||
- 不收集位置、联系人、用户内容等
|
||
- 所有数据本地存储
|
||
- 无第三方 SDK 收集数据
|
||
```
|
||
|
||
---
|
||
|
||
## 元数据准备
|
||
|
||
### 4.1 应用图标
|
||
|
||
**规格要求**:
|
||
- 尺寸:1024 x 1024 像素
|
||
- 格式:PNG
|
||
- 大小:< 1MB
|
||
- 要求:无圆角、无透明、无文字
|
||
|
||
**设计建议**:
|
||
```
|
||
• 使用 EDA 相关图标(电路板、原理图符号)
|
||
• 简洁清晰,小尺寸下可识别
|
||
• 符合品牌色(蓝色系)
|
||
• 避免与现有 App Store 应用过于相似
|
||
```
|
||
|
||
### 4.2 应用截图
|
||
|
||
#### 必选尺寸
|
||
|
||
| 设备 | 分辨率 (像素) | 方向 |
|
||
|------|--------------|------|
|
||
| 6.7" (iPhone 14/15 Pro Max) | 1290 x 2796 | 竖屏 |
|
||
| 6.5" (iPhone 11 Pro Max) | 1242 x 2688 | 竖屏 |
|
||
|
||
#### 截图内容规划 (推荐 5 张)
|
||
|
||
```
|
||
截图 1: 主界面
|
||
- 展示完整的原理图编辑界面
|
||
- 显示工具栏和元件库
|
||
- 突出流畅的编辑体验
|
||
|
||
截图 2: 元件库
|
||
- 展示丰富的元件分类
|
||
- 显示搜索和筛选功能
|
||
- 突出元件数量
|
||
|
||
截图 3: 属性编辑
|
||
- 展示属性面板
|
||
- 显示位号、值、封装编辑
|
||
- 突出专业功能
|
||
|
||
截图 4: 深色模式
|
||
- 展示深色主题界面
|
||
- 突出护眼设计
|
||
- 对比浅色模式
|
||
|
||
截图 5: 多语言支持
|
||
- 展示语言切换功能
|
||
- 显示国际化界面
|
||
- 突出全球化支持
|
||
```
|
||
|
||
#### 截图制作工具
|
||
|
||
```
|
||
推荐工具:
|
||
• Xcode Simulator (最准确)
|
||
• Figma/Sketch (设计标注)
|
||
• 截图后使用 Photoshop 添加设备框
|
||
|
||
注意:
|
||
• 不要使用设备边框截图
|
||
• App Store 会自动添加设备框
|
||
• 确保文字清晰可读
|
||
```
|
||
|
||
### 4.3 应用描述
|
||
|
||
```
|
||
【标题】移动 EDA - 专业原理图设计工具
|
||
|
||
【副标题】随时随地设计电路
|
||
|
||
【描述正文】
|
||
移动 EDA 是一款专为电子工程师打造的移动端原理图设计工具,让您随时随地进行电路设计。
|
||
|
||
🔹 核心功能
|
||
• 流畅编辑:支持 1000+ 元件流畅渲染,60fps 丝滑体验
|
||
• 丰富元件库:内置电源、被动元件、半导体、连接器等常用元件
|
||
• 智能连线:自动捕捉连接点,支持总线绘制
|
||
• 属性编辑:快速修改元件位号、值、封装等属性
|
||
• 深色模式:护眼深色主题,长时间使用不疲劳
|
||
• 多语言支持:简体中文、繁体中文、英文、阿拉伯语
|
||
|
||
🔹 专业特性
|
||
• 符合行业标准:遵循 EDA 行业配色和操作习惯
|
||
• 离线工作:无需联网,数据本地存储
|
||
• 快速搜索:元件库支持关键词搜索和筛选
|
||
• 撤销重做:完善的历史记录管理
|
||
|
||
🔹 适用人群
|
||
• 电子工程师
|
||
• 硬件开发者
|
||
• 电子爱好者
|
||
• 相关专业学生
|
||
|
||
🔹 技术支持
|
||
邮箱:support@jiloukeji.com
|
||
网站:https://www.jiloukeji.com
|
||
|
||
【更新说明】
|
||
版本 1.0.0:
|
||
• 首次发布
|
||
• 支持原理图编辑
|
||
• 内置丰富元件库
|
||
• 支持深色模式
|
||
• 支持多语言
|
||
```
|
||
|
||
### 4.4 关键词
|
||
|
||
```
|
||
关键词 (100 字符限制,逗号分隔):
|
||
EDA,电路设计,原理图,电子设计,PCB,硬件开发,电路图,schematic,工程师
|
||
|
||
优化建议:
|
||
• 包含核心功能词
|
||
• 包含目标用户词
|
||
• 包含竞品词(谨慎)
|
||
• 避免重复和无关词
|
||
```
|
||
|
||
### 4.5 应用预览视频 (可选)
|
||
|
||
```
|
||
规格:
|
||
• 格式:MP4, MOV
|
||
• 时长:15-30 秒
|
||
• 分辨率:1920x1080 或更高
|
||
• 内容:展示核心功能
|
||
|
||
注意:
|
||
• 视频静音播放
|
||
• 添加字幕说明
|
||
• 突出核心价值
|
||
```
|
||
|
||
---
|
||
|
||
## 构建与上传
|
||
|
||
### 5.1 使用 Xcode Archive (推荐)
|
||
|
||
#### 步骤 1: 打开项目
|
||
|
||
```bash
|
||
# 打开 iOS 项目
|
||
cd mobile-eda/ios
|
||
open Runner.xcworkspace
|
||
```
|
||
|
||
#### 步骤 2: 配置签名
|
||
|
||
```
|
||
1. 选择 Runner 项目
|
||
2. Signing & Capabilities
|
||
3. 选择 Team (你的开发者账号)
|
||
4. Bundle Identifier: com.jiloukeji.mobileeda
|
||
5. 确保 Provisioning Profile 自动管理已启用
|
||
```
|
||
|
||
#### 步骤 3: Archive
|
||
|
||
```
|
||
1. 选择目标设备:Any iOS Device (arm64)
|
||
2. Product → Scheme → Runner
|
||
3. Product → Archive
|
||
4. 等待构建完成 (约 5-10 分钟)
|
||
5. Organizer 窗口自动打开
|
||
```
|
||
|
||
#### 步骤 4: 上传到 App Store Connect
|
||
|
||
```
|
||
1. 在 Organizer 中选择刚创建的 Archive
|
||
2. 点击 "Distribute App"
|
||
3. 选择 "App Store Connect"
|
||
4. 选择 "Upload"
|
||
5. 点击 Next
|
||
6. 确认签名配置
|
||
7. 选择 Distribution Certificate
|
||
8. 选择 Provisioning Profile
|
||
9. 点击 Upload
|
||
10. 等待上传完成
|
||
```
|
||
|
||
### 5.2 使用 Flutter 命令
|
||
|
||
```bash
|
||
# 构建 iOS Release
|
||
flutter build ios --release
|
||
|
||
# 输出位置:
|
||
# build/ios/iphoneos/Runner.app
|
||
|
||
# 然后使用 Xcode 进行 Archive 和上传
|
||
```
|
||
|
||
### 5.3 使用 fastlane (CI/CD)
|
||
|
||
#### 安装 fastlane
|
||
|
||
```bash
|
||
# 安装
|
||
sudo gem install fastlane -NV
|
||
|
||
# 初始化
|
||
cd ios
|
||
fastlane init
|
||
```
|
||
|
||
#### 配置 Fastfile
|
||
|
||
```ruby
|
||
# fastlane/Fastfile
|
||
|
||
default_platform :ios
|
||
|
||
platform :ios do
|
||
desc "推送新的 Beta 版本"
|
||
lane :beta do
|
||
increment_build_number
|
||
|
||
build_app(
|
||
scheme: "Runner",
|
||
export_method: "app-store",
|
||
export_options: {
|
||
provisioningProfiles: {
|
||
"com.jiloukeji.mobileeda" => "MobileEDA-AppStore"
|
||
}
|
||
}
|
||
)
|
||
|
||
upload_to_app_store(
|
||
api_key_id: ENV["APP_STORE_CONNECT_API_KEY_ID"],
|
||
api_key_issuer_id: ENV["APP_STORE_CONNECT_ISSUER_ID"],
|
||
api_key_path: ENV["APP_STORE_CONNECT_API_KEY_PATH"]
|
||
)
|
||
end
|
||
end
|
||
```
|
||
|
||
#### 运行 fastlane
|
||
|
||
```bash
|
||
# 设置环境变量
|
||
export APP_STORE_CONNECT_API_KEY_ID="YOUR_KEY_ID"
|
||
export APP_STORE_CONNECT_ISSUER_ID="YOUR_ISSUER_ID"
|
||
export APP_STORE_CONNECT_API_KEY_PATH="./AuthKey_XXXXXX.p8"
|
||
|
||
# 运行
|
||
cd ios
|
||
fastlane beta
|
||
```
|
||
|
||
### 5.4 创建 App Store Connect API Key (用于 fastlane)
|
||
|
||
```
|
||
1. 登录 https://appstoreconnect.apple.com
|
||
2. 用户和访问 → API Key
|
||
3. 点击 + 生成新密钥
|
||
4. 填写名称:fastlane
|
||
5. 访问权限:管理员
|
||
6. 生成并下载 .p8 文件
|
||
7. 记录 Key ID 和 Issuer ID
|
||
8. 安全保存 .p8 文件(只能下载一次)
|
||
```
|
||
|
||
---
|
||
|
||
## 提交审核
|
||
|
||
### 6.1 选择构建版本
|
||
|
||
```
|
||
1. 登录 App Store Connect
|
||
2. 选择应用
|
||
3. iOS App → 1.0.0 版本
|
||
4. 构建 → 选择刚上传的构建
|
||
5. 如有合规问题,回答出口合规问卷
|
||
```
|
||
|
||
### 6.2 出口合规
|
||
|
||
```
|
||
问题:您的 App 是否使用加密?
|
||
|
||
回答:否
|
||
|
||
说明:
|
||
• 本应用不使用加密技术
|
||
• 无网络通信加密
|
||
• 无数据加密存储
|
||
• 符合出口豁免条件
|
||
```
|
||
|
||
### 6.3 内容分级
|
||
|
||
```
|
||
年龄分级:4+
|
||
|
||
理由:
|
||
• 无暴力内容
|
||
• 无成人内容
|
||
• 无赌博内容
|
||
• 教育类工具应用
|
||
```
|
||
|
||
### 6.4 提交审核
|
||
|
||
```
|
||
1. 检查所有必填项已完成
|
||
2. 版本号正确
|
||
3. 构建已选择
|
||
4. 元数据完整
|
||
5. 点击 "添加供销售"
|
||
6. 确认提交
|
||
```
|
||
|
||
### 6.5 审核时间线
|
||
|
||
```
|
||
典型时间线:
|
||
• 提交后 24-48 小时:审核开始
|
||
• 审核中:状态显示 "正在审核"
|
||
• 审核完成:状态变为 "准备提交" 或 "被拒绝"
|
||
• 审核通过后:24 小时内上线
|
||
|
||
加速审核:
|
||
• 一般不可用
|
||
• 紧急 Bug 修复可申请加急
|
||
• 联系 Apple 开发者支持
|
||
```
|
||
|
||
---
|
||
|
||
## 常见问题
|
||
|
||
### Q1: Archive 失败
|
||
|
||
**问题**: Xcode Archive 时报错
|
||
|
||
**解决方案**:
|
||
```
|
||
1. 检查证书是否有效
|
||
2. 检查 Provisioning Profile 是否安装
|
||
3. 清理项目:Product → Clean Build Folder
|
||
4. 删除 Derived Data: ~/Library/Developer/Xcode/DerivedData
|
||
5. 重新尝试
|
||
```
|
||
|
||
### Q2: 上传失败
|
||
|
||
**问题**: 上传到 App Store Connect 失败
|
||
|
||
**解决方案**:
|
||
```
|
||
1. 检查网络连接
|
||
2. 检查证书是否过期
|
||
3. 检查 Provisioning Profile 是否匹配
|
||
4. 使用 Application Loader 重新上传
|
||
5. 查看错误日志
|
||
```
|
||
|
||
### Q3: 审核被拒
|
||
|
||
**常见原因**:
|
||
```
|
||
• 元数据不完整
|
||
• 隐私政策缺失
|
||
• 功能与描述不符
|
||
• 存在 Bug 或崩溃
|
||
• 违反审核指南
|
||
```
|
||
|
||
**应对策略**:
|
||
```
|
||
1. 仔细阅读拒绝原因
|
||
2. 针对性修复问题
|
||
3. 在 Resolution Center 回复说明
|
||
4. 重新提交审核
|
||
5. 必要时申请复审
|
||
```
|
||
|
||
### Q4: 版本更新
|
||
|
||
**流程**:
|
||
```
|
||
1. 修改 pubspec.yaml version
|
||
2. 修改 Info.plist CFBundleVersion
|
||
3. 重新 Archive
|
||
4. 在 App Store Connect 创建新版本
|
||
5. 上传新构建
|
||
6. 提交审核
|
||
```
|
||
|
||
### Q5: 紧急 Bug 修复
|
||
|
||
**快速通道**:
|
||
```
|
||
1. 联系 Apple 开发者支持
|
||
2. 说明紧急情况
|
||
3. 申请加急审核
|
||
4. 通常 24-48 小时完成
|
||
```
|
||
|
||
---
|
||
|
||
## 附录
|
||
|
||
### A. 检查清单
|
||
|
||
```markdown
|
||
## iOS 提交前检查清单
|
||
|
||
### 证书和配置
|
||
- [ ] Apple Developer 账号有效
|
||
- [ ] Distribution Certificate 已创建
|
||
- [ ] Provisioning Profile 已安装
|
||
- [ ] Bundle ID 已注册
|
||
|
||
### 项目配置
|
||
- [ ] 版本号正确
|
||
- [ ] Bundle ID 正确
|
||
- [ ] 最低 iOS 版本 >= 12.0
|
||
- [ ] 所有权限已声明
|
||
|
||
### 元数据
|
||
- [ ] 应用名称 (30 字符)
|
||
- [ ] 副标题 (30 字符)
|
||
- [ ] 描述完整
|
||
- [ ] 关键词优化
|
||
- [ ] 截图齐全 (至少 1 张 6.7")
|
||
- [ ] 图标符合规格
|
||
|
||
### 合规
|
||
- [ ] 隐私政策 URL 有效
|
||
- [ ] App Privacy 问卷完成
|
||
- [ ] 出口合规确认
|
||
- [ ] 内容分级正确
|
||
|
||
### 构建
|
||
- [ ] Archive 成功
|
||
- [ ] 上传成功
|
||
- [ ] 构建在 App Store Connect 可见
|
||
- [ ] 测试 TestFlight (推荐)
|
||
```
|
||
|
||
### B. 相关资源
|
||
|
||
- [App Store 审核指南](https://developer.apple.com/app-store/review/guidelines/)
|
||
- [App Store Connect 帮助](https://help.apple.com/app-store-connect/)
|
||
- [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)
|
||
- [Flutter iOS 部署](https://docs.flutter.dev/deployment/ios)
|
||
|
||
### C. 联系方式
|
||
|
||
- 技术支持:support@jiloukeji.com
|
||
- 开发者咨询:developer@jiloukeji.com
|
||
|
||
---
|
||
|
||
**文档版本**: 1.0
|
||
**最后更新**: 2026-03-07
|
||
**维护**: 发布工程师团队
|