零、前置说明
- 此文章为最新IOS打包教程,每一步都是操作截图
- 文章包含大量图片说明,请注意流量消耗
- 由于工具之间的版本不一致,所以注意区分
- 如果有任何问题,欢迎大家留言一起沟通学习
一、创建本地证书
首先通过 本地钥匙串访问(Mac自带的工具)创建 CertificateSigningRequest.certSigningRequest 文件,步骤如下
- 选择 钥匙串访问 工具

- 生成证书:钥匙串访问 -> 证书助理 -> 从证书颁发机构请求证书

- 填写证书信息

- 保存证书,选择保存的位置

- 保存证书成功

- 在访达中显示,可以看到生成了证书:CertificateSigningRequest.certSigningRequest

二、配置描述文件
进入到苹果开发者官网:developer.apple.com/account/res...,需要配置下图中红框中的四部分内容,按照截图顺序配置

2.1 配置certificates
苹果开发者后台的Certificates,也称为证书,是用于证明开发者身份和授权开发者进行应用开发和发布的数字证书。在苹果开发者后台,开发者需要创建并管理各种类型的Certificates,包括开发人员证书、发布证书和描述文件等。这些Certificates是开发者在App Store上进行应用提交和分发的重要信息,苹果会根据这些Certificates来验证开发者身份和应用合法性
2.1.1 配置证书
- 在苹果官方的 developer 官网上点击创建证书 ,上传步骤 1 中的 CertificateSigningRequest.certSigningRequest 文件,然后下载 .cer 证书文件
- 选择Apple Distribution然后Continue
- Apple Developent:是开发使用的证书,例如开发人员自己使用
- Apple Distribution:是发布使用的证书,例如发布到App Store,Testflight等,此处是为了发布,故选择Apple Distribution类型

- 选择桌面的CertificateSigningRequest.certSigningRequest 证书文件,然后Continue

- 点击Download下载distribution.cer证书,这个证书就是整个应用使用的证书

2.1.2 安装cer证书
证书机器:就是使用钥匙串工具生成证书的机器 打包机器:就是运行代码,打包成app的机器
2.1.2.1 打包机器和生成证书同机器
- 如果生成证书机器和打包机器是同一个则直接双击distribution.cer文件安装到本机即可

- 安装完成后在 秘钥串访问 中可以看到证书

- 配置完成证书后,建议重启电脑,因为不重启电脑可能出现后面xcode中配置打包的时候一直提示证书不对
2.1.2.2 打包机器和生成证书不同机器
- 需要注意如果打包机器 和生成证书文件 的机器不是同一个则不能直接把这个 .cer 证书文件安装到打包服务上
- 而是把这个 .cer 先安装到上面第 1 步中生成的 CertificateSigningRequest.certSigningRequest 的机器上,然后通过导出证书生成带有密码的 p12 证书文件,这个文件才是可以安装到打包机器上的证书文件
- 在生成证书机器上找到安装的证书,然后证书名称上单击右键选择导出

- 导出时注意文件格式是:个人信息交换.p12格式,完成后就会在桌面生成一个证书.p12文件,存储的时候会要求输入密码(这个密码是证书密码,不是电脑密码),按照提示输入即可

- 安装证书,把 p12 文件放置到打包服务上,然后点击证书进行安装,输入 步骤4 中创建时输入的证书密码,安装到钥匙串的 "登陆" ,这时候就可以看到钥匙串证书里带有 TeamId 的 Apple Distribution 证书

- 需要额外注意安装后可能会看到说"证书不受信任"的提示,这可能是因为机器上缺少 AppleWWDRCA (Apple Worldwide Developer Relations Certification Authority)证书,可以通过下面的地址进行安装解决:
- 配置完成证书后,建议重启电脑,因为不重启电脑可能出现后面xcode中配置打包的时候一直提示证书不对
2.2 创建Identifiers
Identifiers:设备标识符,是用于唯一标识一个应用的数字标识符。每个应用都需要一个唯一的Identifiers,以便在App Store上进行发布和更新。这个Identifiers是应用在App Store上进行分发的重要信息,开发者需要在苹果开发者后台中创建并管理这个Identifiers
- 点击Identifiers的添加标识符:developer.apple.com/account/res...

- 选择Apple Ids,然后continue

- 选择类型,此处是打包APP,所以选择APP类型

- 配置标识符信息

- 配置完成保存即可,然后在标识符处就会显示出创建的设备标识符

2.3 配置Devices
这个是配置内测的手机的,如果是直接发布到App Store,则这一部分可以不配置
主要用下2.2节的Ad Hoc打包方式,可以先看2.2再倒回来看此部分(因为配置Profile时
- 选择Devices配置:developer.apple.com/account/res...

- 配置信息,主要配置UDID,此UDID可以通过蒲公英生成,参考第五节、测试安装分发

- 确认填写的信息是否正确

- 完成创建,选择Done,然后设备就创建好了

- 如果有多个测试人员,就需要配置多个,如下

2.4 配置Profiles
苹果开发者后台的Profiles,也称为配置文件,是用于指定应用在特定设备上运行的配置信息。在苹果开发者后台,开发者可以创建并管理各种类型的Profiles,包括应用内购买配置文件、应用分发配置文件等。这些Profiles包含了应用在特定设备上的运行配置信息,包括应用的名称、版本号、设备类型等。在开发者将应用提交到App Store上进行分发时,苹果会根据这些Profiles来验证应用的合法性和兼容性
2.4.1 配置生产Profile
- 配置完证书后就是配置描述文件,在苹果开发者网站的 Profiles 创建对应的 mobile provision
- 选择 Distribution - App Store 创建对应的打包模式,打包分为Ad Hoc和App Store两种方式,区别如下:
- App Store:打出来的包只能通过 Store 或者官方 TestFight 下载
- Ad Hoc:也称为QA版本,Ad Hoc 打包的可以通过内部自定义分发下载(通过添加测试设备的 UDID)
例如此处为了下面的第五节、测试安装分发,选择Ad Hoc;如果是App Store则选择App Store即可配置步骤一样

- 选择需要支持的 App Id ,也就是 bundle Id(在2.1配置的信息)

- 选择前面生成的 Distribution 证书 ,这里主要一定要选择同一个证书文件

- 选择已经添加的 Devices 的 UDID,参考2.3节进行添加(如果没有配置过此时提示没有设备,选择Create Device也可以进入到创建设备功能)

- 输入 Provisioning Profile Name,这个 Name 在后面会有作用

- 完成配置后下载文件,将它放到打包机器上的 /Users/账户/Library/MobileDevice/Provisioning Profiles 目录下,后面会需要用到它
- 例如:/Users/tianxincoord/Library/MobileDevice/Provisioning Profiles

2.4.2 配置开发Profile
此步可以选择性配置,如果仅仅是作为开发自己测试,则可以配置
- 新增开发证书,然后选择证书文件生成对应证书,剩下操作和生产一致

- 此时具有一个生产的和一个开发的,如果是开发则选择开发这个,如果是生成则选择生产

三、配置打包项目
- 完成了证书和描述文件的配置后,接下来就是针对项目的配置。首先将需要打包的项目 clone 到打包机器上,然后打开项目ios/Runner.xcworkspace**(注意如果是flutter项目不要直接打开根目录,而是打开 flutter项目下的 ios/Runner.xcworkspace)**
- 查看基础配置信息,取消勾选 Automatically manage signing
- 填写Bundle ID,这个Bundle ID是2.2处配置的

- 选择前面放置的描述文件,就可以看到 Xcode 会自动匹配到钥匙串里的证书,然后显示正常的证书和描述文件配置
- 说明:如果此处选择证书文件后说证书不对,如果上述步骤都操作对的话请重启一下电脑

- 如果重启电脑无用则检查Build Settings是否按照下图配置

- 这样打包环境就配置好了
四、开始项目打包
4.1 Xcode打包
- 选择 Product -> Archve

- 等待Archive完成后会自动打开下面的窗口,此处Name为Runner不用管,并非是应用的名字,点击Distribute App开始分发应用

- 选择Release Testing,Ad Hoc方式,可以自己分发应用包,例如蒲公英
- 如果是发布到App Store就选择第一个,可以直接上传到Apple后台,操作比较简单(另外一个原因是不方便直接演示发到后台,哈哈哈)
- 此处选择Release Testing,Ad Hoc是为了能多掌握内部测试方法

- 打包完成,选择 Export,然后选择存储路径

- 在存储位置打开文件夹,其中的 .ipa 文件就是分发文件

五、测试安装分发
- 打开蒲公英平台:www.pgyer.com/,选择生成UDID

- 按照提示扫描二维码安装证书后获取对应的UDID

- 选择发布应用:www.pgyer.com/app/publish

- 上传打包好的ipa文件后按照提示操作即可,其中就会有下载地址和安装页面,扫码安装即可
5. 以上就是整个分发测试流程