Xcode 报错解决方案:Your team has no devices from which to generate a provisioning profile

解决 Xcode Your team has no devices from which to generate a provisioning profile 错误。

Xcode 报错解决方案:Your team has no devices from which to generate a provisioning profile
Photo by Clark Tibbs / Unsplash

当你创建好 App 准备分发测试时,可能会在 Xcode 的 Signing & Capabilities 选项卡中遇到错误提示: Your team has no devices from which to generate a provisioning profile.

错误原因分析 / Provisioning Profile

Provisioning Profile 是 Xcode 自动创建的一个配置文件,它会被自动添加到用于测试分发的应用包中。

Provisioning Profile 包含了一个设备列表,这个列表明确列出了允许安装和运行你的应用的设备的唯一设备标识符(UDID)。当你尝试在设备上安装应用时,苹果系统会检查设备的 UDID 是否在 Provisioning Profile 中。如果 UDID 匹配,应用就可以被安装和运行;如果不匹配,安装将被拒绝。这是一种安全措施,用于确保只有授权的设备可以测试和运行开发中的应用。

所以,我们需要手动先添加白名单设备的 UDID 到应用后台,然后 Xcode 才能创建 Provisioning Profile。上面这个错误提示的原因,就是我们没有添加 UUID。

⚠️ 注意:Provisioning Profile 主要用于应用测试阶段。提交到 App Store 并通过审核的应用,在上架前会由 Apple 用其签名证书重新签名,而不使用 Provisioning Profile。这样确保通过 App Store 下载的应用具有安全性和完整性。这一过程旨在确保所有用户均可安全下载应用。

解决方案

手动添加 UDID 信息

添加设备(device)主要是为了开发和测试阶段能在真实设备上安装和运行应用,以验证应用的性能和功能。这对于确保应用在真实使用场景下的表现符合预期非常重要。

使用你申请的开发者账号,登录 Apple Developer 网站:https://developer.apple.com/account

点击 Devices -> Register a Device:

在 Register a Device 中,添加 Device Name 和 UDID 信息后完成添加。

如果你不知道如何获取 UDID,请继续往下看。

获取 UDID 信息

获取 Vision Pro 设备的 UDID 信息

没有办法在 Vision Pro 上直接查看 UDID 信息,需要借助格外的工具。

通过 Xcode 获取

在 Xcode 中,点击 Windows -> Devices and Simulators:

在打开窗口的 Devices 中,找到你的 Vision Pro 设备,右侧的 Identifier 就是 UDID。如果这里没有出现你的设备,请检查 VP 是否开机并接入同一个 Wi-Fi。

通过 udid.tech 获取

udid.tech 通过安装一个描述文件,来获取设备的 UDID 信息。如果你不方便使用 Xcode,不妨试试这个方式。

他们的官方网址是:https://udid.tech/

你可以在 Vision Pro 上访问下面这个链接,来下载安装描述文件:

Get UDID
Upload profile for know your device UDID

然后根据弹框引导赋予权限,然后即可获取 UDID 信息。

更新 Xcode 设置

回到 Xcode,重新选择你的 Team 信息,然后等待 Xcode 自动刷新信息。

如果之前的步骤配置正确,你应该不会再看到错误提示:

开发分发你的应用

选择分发方式

现在设备和配置文件都已经设置好,如果想让其他人测试你的应用,通常可以使用以下几种方法:

  1. TestFlight:使用 Apple 的 TestFlight 服务是最简单的测试方法之一。你可以上传你的应用到 TestFlight,然后邀请用户通过他们的电子邮件地址参加测试。参与者将通过 TestFlight 应用接收到一个安装邀请。
  2. 直接安装:如果测试人员数量较少,也可以直接将应用安装包(IPA 文件)和配置文件(Provisioning Profile)发送给他们,他们可以通过 iTunes 或 Xcode 直接将应用安装到他们的设备上。
  3. 企业分发:如果你的公司有企业开发者账号,你可以使用企业分发方法,这允许你通过一个链接和配置文件直接分发应用,适用于大规模内部测试。

选择哪种方式主要取决于你的测试规模和需求。如果需要大范围的公开测试,TestFlight 是一个非常好的选择。

直接安装

要使用第二种方法(直接安装)进行应用测试,你可以按照以下步骤操作:

  1. 打包应用:在 Xcode 中,选择你的项目和适当的配置文件,然后导出一个 .ipa 文件。这是应用的安装包。
  2. 导出配置文件:确保你有一个有效的 Provisioning Profile,这个配置文件需要包含所有测试设备的 UDID。
  3. 发送安装包和配置文件:将 .ipa 文件和 Provisioning Profile 发送给测试者。
  4. 安装应用:测试者可以使用 iTunes(较旧的版本)或 Xcode 的 “Devices and Simulators” 窗口来安装应用。他们需要将 .ipa 文件和配置文件一起拖入他们的设备。

确保测试者的设备已经注册在你的 Provisioning Profile 中,否则他们将无法安装或运行应用。这种方法适用于人数不多的小范围内部测试。

在 Xcode 中,点击 Product -> Clean Build Folder,这一步是为了清理之前的缓存文件。

然后重新点击 Product -> Build:

完成后点击 Analyze:

Xcode 会自动打包应用:

选中打包文件,Xcode 提供了两个选项:

  • Distribute App:用于将归档的应用分发给测试者或提交到 App Store。这个选项允许你选择分发类型,如 Ad Hoc、App Store、Enterprise 或 Development,并引导你完成导出 .ipa 文件的过程。
  • Validate App:在提交应用到 App Store 之前,验证你的应用是否符合 Apple 的提交标准。它会检查各种配置和证书问题,确保应用在上传前没有明显的问题,从而提高应用审核过程的顺利进行的可能性。

选择 Validate App 后,Xcode 提供了多个选项,这些选项用于决定如何分发归档的应用:

  • App Store Connect:上传应用到 App Store 进行发布或测试。
  • TestFlight Internal Only:使用 TestFlight 仅供内部团队成员测试。
  • Release Testing:进行发布前的测试,通常用于 Ad Hoc 分发给特定设备。
  • Enterprise:用于企业内部分发,不通过 App Store。
  • Debugging:用于调试应用,通常在开发过程中使用。
  • Custom:自定义分发设置,为特定需求配置分发选项。