iOS打包流程

文章目录

  • 前言
    • 三、详细打包流程全解析
      • [1. 打包前准备工作](#1. 打包前准备工作)
        • [(1) 开发者账号配置](#(1) 开发者账号配置)
        • [(2) Flutter项目配置](#(2) Flutter项目配置)
        • [(3) Xcode关键设置](#(3) Xcode关键设置)
      • [2. App Store上架全流程](#2. App Store上架全流程)
        • [(1) 生成发布包](#(1) 生成发布包)
        • [(2) 导出IPA文件](#(2) 导出IPA文件)
        • [(3) App Store Connect配置](#(3) App Store Connect配置)
        • [(4) 提交审核注意事项](#(4) 提交审核注意事项)
      • [3. TestFlight测试全流程](#3. TestFlight测试全流程)
        • [(1) 构建上传](#(1) 构建上传)
        • [(2) 测试人员管理](#(2) 测试人员管理)
        • [(3) 测试反馈收集](#(3) 测试反馈收集)
      • [4. Ad Hoc分发专业方案](#4. Ad Hoc分发专业方案)
        • [(1) 生成分发包](#(1) 生成分发包)
        • [(2) 高效分发方案](#(2) 高效分发方案)
        • [(3) UDID收集技巧](#(3) UDID收集技巧)
      • [5. 企业签名分发](#5. 企业签名分发)
        • [(1) 特殊要求](#(1) 特殊要求)
        • [(2) 分发流程](#(2) 分发流程)
    • 四、疑难问题解决方案
    • 五、最佳实践总结

前言

iOS打包流程的详细补充,涵盖App Store上架、TestFlight测试和Ad Hoc分发全流程,包含具体操作步骤和注意事项:


三、详细打包流程全解析

1. 打包前准备工作

(1) 开发者账号配置

付费开发者账号 Certificates Identifiers Devices Profiles Apple Distribution证书 App Store描述文件 Ad Hoc描述文件

(2) Flutter项目配置
  • 更新pubspec.yaml版本号:version: 1.0.0+1
  • 执行清理命令:
dash 复制代码
  flutter clean
  flutter pub get
(3) Xcode关键设置
  1. Bundle Identifiercom.yourcompany.appname(唯一标识)
  2. Signing & Capabilities
    • 取消勾选Automatically manage signing
    • 手动选择Distribution证书
  3. Info.plist
    • 添加ITSAppUsesNonExemptEncryption = NO
    • 完善权限描述(相机/位置等)

2. App Store上架全流程

(1) 生成发布包
bash 复制代码
flutter build ipa --release --export-options-plist=ExportOptions.plist
(2) 导出IPA文件
  1. 在Xcode Organizer中选择Distribute App
  2. 选择App Store Connect
  3. 勾选Upload your app's symbols...(崩溃分析)
(3) App Store Connect配置
步骤 位置 关键操作
1 我的App → +新建App 填SKU(如com.company.app)
2 价格与销售范围 设置价格区间
3 准备提交 → 构建版本 点击'+'添加IPA
4 App审核信息 填写测试账号
5 版本发布 选手动/自动发布
(4) 提交审核注意事项
  • 提供测试视频(审核加速)
  • 元数据需包含真实截图
  • 遵守《App Store审核指南》3.2.1条

3. TestFlight测试全流程

(1) 构建上传
sequenceDiagram Xcode->>App Store Connect: 上传IPA App Store Connect->>TestFlight: 自动同步 TestFlight->>测试组: 分配构建版本
(2) 测试人员管理
  1. 内部测试 (200人上限)
    • 开发者账号成员自动加入
    • 即时生效无需审核
  2. 外部测试 (10000人上限)
    • 需填写测试信息
    • 首次版本需Apple审核(约24小时)
(3) 测试反馈收集
  • 在App Store Connect查看崩溃日志
  • 使用feedbackassistant.apple.com收集反馈

4. Ad Hoc分发专业方案

(1) 生成分发包
bash 复制代码
flutter build ipa --export-method ad-hoc

生成的IPA路径:build/ios/ipa/APPNAME.ipa

(2) 高效分发方案
方式 工具 特点
OTA分发 Diawi.com 扫码安装
MDM分发 Jamf/Mosyle 企业级管理
自建分发 nginx+plist 私有化部署
(3) UDID收集技巧
  1. 使用测试邀请工具(如:https://betafamily.com
  2. 设备安装描述文件自动获取UDID
  3. 批量导出:Apple Configurator 2

5. 企业签名分发

(1) 特殊要求
  • $299/年企业账号
  • 需提供DUNS编号
  • 禁止公开下载
(2) 分发流程
  1. 导出.ipa选择Enterprise

  2. 配置manifest.plist:

    xml 复制代码
    <plist version="1.0">
    <dict>
        <key>items</key>
        <array>
            <dict>
                <key>assets</key>
                <array>
                    <dict>
                        <key>kind</key>
                        <string>software-package</string>
                        <key>url</key>
                        <string>https://yourdomain.com/app.ipa</string>
                    </dict>
                </array>
            </dict>
        </array>
    </dict>
    </plist>
  3. 安装链接格式:
    itms-services://?action=download-manifest&url=https://yourdomain.com/manifest.plist


四、疑难问题解决方案

常见错误处理表

错误代码 原因 解决方案
ITMS-90023 缺少图标 添加1024x1024 App Store图标
ITMS-90683 无效Bundle 检查CFBundleExecutable
ITMS-90704 废弃UIWebView 替换为WKWebView
90186 签名冲突 吊销旧证书重建

提效技巧

  1. 自动打包脚本
bash 复制代码
#!/bin/zsh
flutter build ipa --export-method app-store
xcrun altool --upload-app -f build/ios/ipa/MyApp.ipa --username "your@email.com" --password "app-specific-password"
  1. 快速审核申请

五、最佳实践总结

  1. 证书管理黄金法则

    • 开发证书:仅用于调试
    • 分发证书:专人保管
    • 每年更新:提前30天操作
  2. 发布检查清单

    • 移除所有调试代码
    • 关闭开发者模式(WidgetsApp.debugShowCheckedModeBanner = false
    • 测试离线场景
    • 验证64位支持
  3. 版本策略建议

title 版本分布建议 "生产环境" : 40 "TestFlight" : 30 "开发版本" : 30

通过以上完整流程,可实现从开发到分发的全链路管理,满足不同场景的iOS应用发布需求。实际部署时推荐使用CI/CD工具(如Codemagic/Fastlane)自动化流程。

相关推荐
YungFan2 小时前
iOS26适配指南之UINavigationController
ios·swift
木叶丸3 小时前
Flutter 生命周期完全指南
android·flutter·ios
Keya7 小时前
解决 pod install 警告信息显示不完全的方法
ios·xcode·cocoapods
随笔记9 小时前
uniapp开发的小程序输入框在ios自动填充密码,如何欺骗苹果手机不让自动填充
前端·ios·app
unicrom_深圳市由你创科技10 小时前
Unity开发如何解决iOS闪退问题
unity·ios·蓝桥杯
Daniel_Coder11 小时前
iOS Widget 开发-1:什么是 iOS Widget?开发前的基本认知
ios·swiftui·swift·widget
AirDroid_cn1 天前
OPPO手机怎样被其他手机远程控制?两台OPPO手机如何相互远程控制?
android·windows·ios·智能手机·iphone·远程工作·远程控制
杂雾无尘1 天前
开发者必看,全面解析应用更新策略,让用户无法拒绝你的应用更新!
ios·xcode·swift