【问题标题】:How to prevent Xcode 8 from saving "development team" in .pbxproj?如何防止 Xcode 8 在 .pbxproj 中保存“开发团队”?
【发布时间】:2016-09-23 21:14:44
【问题描述】:

Xcode 8 要求您先选择一个“开发团队”,然后才能为 iOS 和 macOS 签署您的应用程序。弄清楚如何进行选择并不难。 (答案可以在Add developer team in Xcode 8? 中找到,以防任何人自己无法弄清楚。)

问题是 Xcode 将选择保存在 .pbxproj 文件中。因为在我的情况下,并且我期望很多其他人,这是在 SCM 下,并且该项目被许多不相关的人和团队使用,这是一个巨大的问题。例如,“git status”显示团队一被选中,工作区就不是干净的。

有没有办法

  • 让 Xcode 8 将选择保存在用户而不是项目数据中,或者
  • 为所有 Xcode 项目指定一个默认的“开发团队”?

【问题讨论】:

  • 根据pewpewthespells.com/blog/migrating_code_signing.html,所有从事项目工作的开发人员都应添加到同一个帐户/开发人员团队中,“以避免弄脏项目文件”。对于开源项目,显然在逻辑上不合理,尤其是当人们使用个人团队时。当然希望有更好的解决方案。
  • 为什么不坚持旧的代码签名系统?它仍然可以正常工作。
  • 好吧,你不能。如果您没有明确选择开发团队,Xcode 8 不会为 iOS/tvOS 设备编译您的目标。这对于过去通过选择有效的签名身份使用 Xcode 7 进行编译的开源项目来说很糟糕。

标签: ios xcode macos codesign


【解决方案1】:

您可以通过设置 DEVELOPMENT_TEAM 自定义路径(将 ABCDEFGHIJ 替换为您的团队标识符)来滥用 Xcode 的 自定义路径 机制将您的开发团队标识符存储在 project.pbxproj 文件之外:

(Xcode 菜单 → 首选项... → 位置 → 自定义路径)

自定义路径存储在 Xcode 的首选项中(IDEApplicationwideBuildSettings 和 IDESourceTreeDisplayNames)。

但有一个问题!不幸的是,一旦您更改项目中的任何内容(更新构建设置、添加新构建阶段、重命名目标等),开发团队将自动添加到 project.pbxproj 文件(在项目对象的TargetAttributes 中)。 这需要经常注意不要提交这些更改。

如果这种将您的 DEVELOPMENT_TEAM 设置为自定义路径的做法受到关注,开源项目所有者将无法指定任何开发团队或配置文件,将 Any iOS SDK 的 Code Signing Identity 设置为 iOS Developer ("CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";),开源演示应用程序将像使用 Xcode 7 一样在任何设备上构建和运行. ?

【讨论】:

  • 这行得通。感谢您解决这个讨厌的问题。幸运的是,您提到的问题对我来说不是问题,因为我的项目使用 GYP 生成 project.pbxproj 文件。必须对 GYP 文件进行任何更改。我很高兴我不必使用从 SCM 中删除 project.pbxproj 文件并强制我的用户在提供他们的团队标识符后自己生成它们的替代解决方案。
  • 我错过了一些东西。我按照上述步骤操作,但不确定如何使用此自定义路径。创建此自定义路径后,我将我的团队设置为无,但该项目不会构建到我的手机上。
  • 我想我明白了。目标 > 构建设置 > 开发团队 > 其他 > 添加 $(DEVELOPMENT_TEAM)。如果您返回目标 > 常规,您将看到您的团队已填充。如果您在文本编辑器中打开 project.pbxproj 并搜索 DEVELOPMENT_TEAM,您会看到它已设置为“$(DEVELOPMENT_TEAM)”。话虽如此,我仍然可以通过搜索“DevelopmentTeam”找到我的团队 ID,所以我不确定这个解决方案是否适合我。
  • 我今天尝试的另一种方法是将DEVELOPMENT_TEAM=... 存储在.xcconfig 文件中,将该文件添加到项目中,但不要将其添加到版本控制中(将其放入@987654332 @ 或任何与您选择的 VCS 等效的东西)。
【解决方案2】:

我将我的项目从 Xcode 7.3.1 升级到 Xcode 8,并且从未设置过开发团队或未弃用的 Provisioning Profile,并且一切正常。

【讨论】:

  • 当您的所有团队成员都可以访问可能包括团队所有设备的 Twitch Development 20161017 配置文件时,这很好。但这不适用于显然无法提供配置文件的开源项目。
  • 是的,但是您可以将已弃用的配置文件设置为 xcconfig 变量,对吗?然后它就不会被覆盖。
  • 这不是问题所在。问题在于,对于开源项目,您根本无法设置配置文件。在文本编辑器中查看 Twitch Development 20161017 配置文件的ProvisionedDevices:它仅适用于少数设备。在 Xcode 7 中,您可以将 Code Signing Identity 设置为 iPhone Developer,让配置文件为空,Xcode 会自动选择您的 iOS 团队配置文件:*。这在 Xcode 8 中是不可能的了。
猜你喜欢
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2022-10-20
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多