在 CI (Travis/Jenkins) 环境中使用 xcodebuild (Xcode 8) 和自动签名

2024-06-18

随着 Xcode 8 的发布,Apple 引入了一种管理签名配置的新方法。现在你有两个选择Manual and Automatic.

根据 WWDC 2016 关于代码签名的会议(WWDC 2016 - 401 - Xcode 应用签名的新增功能) https://developer.apple.com/videos/play/wwdc2016/401/,当您选择Automatic签名后,Xcode 将:

  • 创建签名证书
  • 创建和更新应用程序 ID
  • 创建和更新配置文件

但根据苹果在那次会议上的说法,Automatic Signing将要使用Development signing并且仅限于 Xcode 创建的配置文件。

当您尝试使用时就会出现问题Automatic Signing在 CI 环境(如 Travis CI 或 Jenkins)上。我无法找到一种简单的方法来继续使用自动并签署分发(因为 Xcode 强制您使用开发和 Xcode 创建的配置文件)。

新的“Xcode 创建的配置文件”不会出现在开发人员门户中,尽管我可以在我的机器中找到...我应该将这些配置文件移至 CI 机器,构建为Development并导出为Distribution?有没有办法覆盖Automatic Signing using xcodebuild?


我使用 Jenkins CI 和 Xcode 插件基本上遇到了同样的问题。 我最终自己使用了构建和协同设计的东西xcodebuild.

0. 先决条件

为了成功完成以下步骤,您需要安装必要的配置文件和证书。这意味着您的代码签名应该已经可以正常工作了。

1. 构建.xcarchive

xcodebuild -project <path/to/project.xcproj> -scheme <scheme-name> -configuration <config-name> clean archive -archivePath <output-path> DEVELOPMENT_TEAM=<dev-team-id>
  • DEVELOPMENT_TEAM:您的 10 位开发团队 ID(类似于 A1B2C3D4E5)

2. 导出为.ipa

xcodebuild -exportArchive -archivePath <path/to/your.xcarchive> -exportOptionsPlist <path/to/exportOptions.plist> -exportPath <output-path>

示例exportOptions.plist:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>development</string>
    <key>teamID</key>
    <string> A1B2C3D4E5 </string>
</dict>
</plist>
  • method: 是其中之一development, app-store, ad-hoc, enterprise
  • teamID:您的 10 位开发团队 ID(类似于 A1B2C3D4E5)

无论如何,这个过程更接近于您手动使用 Xcode 执行的操作,而不是 Jenkins Xcode 插件所做的操作。

注意:.xcarchive 文件将始终经过开发签名,但在第二步中选择“app-store”作为方法将进行正确的分发签名,并且还将分发配置文件包含为“embedded.mobileprovision”。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CI (Travis/Jenkins) 环境中使用 xcodebuild (Xcode 8) 和自动签名 的相关文章

随机推荐