如何防止Xcode 8在.pbxproj中保存“开发团队”信息?

19
在为iOS和macOS应用签名之前,Xcode 8要求您选择一个“开发团队”。很容易找到如何进行选择的方法。 (如果有人无法自己解决问题,请查看在Xcode 8中添加开发者团队?)。问题在于Xcode将此选择保存在.pbxproj文件中。由于在我的情况下(我预计许多其他人也是这样),这在SCM下并且项目被许多不相关的人和团队使用,因此这是一个巨大的问题。例如,“git status”会显示工作区不干净,一旦选择了团队,就会出现此问题。是否有方法可以:1.使Xcode 8将选择保存在用户而不是项目数据中;或2.为所有Xcode项目指定默认的“开发团队”?

为什么不坚持使用旧的代码签名系统呢?它仍然可以正常工作。 - Heath Borders
1
你不能这样做。如果你不明确选择一个开发团队,Xcode 8将不会为iOS/tvOS设备编译你的目标。对于那些过去通过选择有效签名身份在Xcode 7中编译的开源项目而言,这非常糟糕。 - 0xced
2个回答

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

Xcode Custom Paths

(Xcode 菜单 → 首选项… → 位置 → 自定义路径)
自定义路径存储在 Xcode 的首选项中 (IDEApplicationwideBuildSettingsIDESourceTreeDisplayNames)。 但有个问题! 不幸的是,一旦您更改项目中的任何内容(更新构建设置、添加新的构建阶段、重命名目标等),开发团队将自动添加到项目.pbxproj文件中(在项目对象的TargetAttributes中)。 这需要不断地小心谨慎,以免提交这些更改。 如果将将您的DEVELOPMENT_TEAM设置为自定义路径的做法得到推广,开源项目所有者将能够不指定任何开发团队配置文件,将任何iOS SDK的代码签名身份设置为iOS Developer("CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";),并且开源演示应用程序将像在Xcode 7中一样在任何设备上构建和运行。

这个可行。感谢您解决了这个讨厌的问题。幸运的是,你提到的那个陷阱对我来说不是问题,因为我的项目使用GYP生成project.pbxproj文件。任何更改都必须在GYP文件中进行。我很高兴我不必采用我的备选方案,即从SCM中删除project.pbxproj文件,并强制用户在提供团队标识符后自己生成它们。 - msc
我似乎漏掉了什么。我按照上面的步骤操作了,但不确定如何使用这个自定义路径。在创建此自定义路径后,我将我的团队设置为“无”,但项目无法构建到我的手机上。 - djibouti33
2
我想我明白了。目标 > 构建设置 > 开发团队 > 其他 > 添加 $(DEVELOPMENT_TEAM)。如果你回到目标 > 通用,你会看到你的团队已经填充。如果你在文本编辑器中打开 project.pbxproj 并搜索 DEVELOPMENT_TEAM,你会看到它被设置为 "$(DEVELOPMENT_TEAM)"。话虽如此,我仍然能够通过搜索“DevelopmentTeam”找到我的团队 ID,所以我不确定这个解决方案是否适用于我。 - djibouti33
2
今天我尝试了一种替代方法,即将DEVELOPMENT_TEAM=...存储在.xcconfig文件中,将该文件添加到项目中,但不要将其添加到版本控制中(将其放入.gitignore或您选择的VCS的等效位置)。 - J. Williams

0
我将我的项目从Xcode 7.3.1升级到了Xcode 8,但是从未设置过开发团队或者非废弃的配置文件,但是一切仍然正常运行。

enter image description here


3
当所有团队成员都可以访问Twitch Development 20161017配置文件时,这是可行的,该配置文件可能包括团队所有设备。但对于开源项目来说就不起作用了,因为它们显然无法提供配置文件。 - 0xced
是的,但你可以将已弃用的配置文件设置为xcconfig变量,对吧?这样它就不会被覆盖了。 - Heath Borders
2
这不是问题所在。问题在于对于一个开源项目,你根本不能设置配置文件。在文本编辑器中查看Twitch Development 20161017配置文件的ProvisionedDevices:它只适用于少数设备。在Xcode 7中,您可以将代码签名标识设置为_iPhone Developer_,让配置文件为空,Xcode会自动选择您的_iOS Team Provisioning Profile: *_。但在Xcode 8中不再可能。 - 0xced

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接