4

我正在一个由几个开发人员组成的团队中开发一个 iOS 应用程序。我们都有属于同一个开发配置文件的开发人员证书。当我构建我们正在开发的应用程序以便在设备上对其进行测试时,我需要明确指定要使用的代码签名身份。否则,如果我选择自动配置文件选择器,则在将应用程序上传到 HockeyApp 等服务时会收到代码签名不匹配错误。实际上,当我选择自动配置文件选择器时,它似乎选择了 iOS 团队配置配置文件,而不是特定于我正在构建的应用程序的开发配置配置文件。

当我是此应用程序的唯一开发人员时,我通过硬编码正确的代码签名实体以在构建设置中使用来解决此问题。问题是我不再是这个项目的唯一开发者了。在我的项目设置中硬编码我的代码签名身份的问题是,每次我对项目设置进行更改时,我都必须删除它,或者如果我不这样做,我的队友在签署应用程序时会出错,说代码在他们的计算机上找不到签名身份。

所以我要做的是设置一个 .xcconfig 文件,每个团队成员都会在其中指定要使用的代码签名身份。该文件不会进行版本控制,因此每个人都可以明确设置他们的代码签名身份,而不会给同一团队中的其他开发人员造成任何问题。

我设法在我的项目中包含一个 .xcconfig 文件,并在构建阶段对其进行处理。但是,我无法编写解决代码签名实体问题的 .xcconfig 文件。我试图将以下行放入我的 .xcconfig 文件中:

CODE_SIGN_IDENTITY = iPhone Developer: Firstname Name (XXXXXXXXXX)

其中 Firstname Name (XXXXXXXXXX) 是将要使用的代码签名身份从构建设置复制/粘贴到 .xcconfig 文件的结果。后来我意识到,当我将它们从构建设置复制/粘贴到 .xcconfig 文件时,我的所有开发配置文件(每个应用程序或包标识符一个)的所有代码签名身份都会给出相同的结果。

我一直在寻找一种方法来区分它们,但我没有找到一种有效的方法。你知道我该如何解决这个问题吗?

我也尝试使用 [sdk=iphoneos*] 修饰符,但没有成功。

我想避免使用不同的构建配置,因为我觉得我必须将对主配置所做的更改合并到一个新的构建配置,该配置只是为了使用正确的代码签名身份。但是,我不熟悉 XCode 中的构建配置是如何工作的,所以如果您认为这可能是一个很好的解决方案,请随时教育我。

谢谢!

4

3 回答 3

1

与其选择最终无关紧要的 CODE_SIGN_IDENTITY,不如指定 PROVISIONING_PROFILE 并让 Xcode 使用任何匹配的身份对其进行签名。这就是我们为内部构建系统所做的

指定配置文件:

PROVISIONING_PROFILE=cb65516b-ee34-4334-95d6-6fba5f2df574

其中长十六进制数是配置文件的 UUID。如果您查看配置文件,您会发现其中大部分是 ASCII,即使它是二进制文件,并且它有这样的部分

UUID
395525c8-8407-4d30-abbd-b65907223eec

于 2014-12-09T15:45:00.813 回答
0

我们有这个工作(其他人也是如此)。不要包括大括号之间的部分,只包括它前面的名称部分。如果您需要区分,我建议您以不同的方式命名您的身份(例如,通过包含对您使用该身份的客户或项目名称的引用)。

于 2014-12-09T15:30:35.550 回答
0

只需将其添加到 xcconfig.*

CODE_SIGN_IDENTITY = iPhone 开发者:名字 (XXXXXXXXXX)

试试这个 CODE_SIGN

然后转到“构建设置”=>“代码签名”=>“配置文件”=>“鼠标左键单击”=>选择“其他...”=>输入“$(继承)”=>享受!

在此处输入图像描述

请告诉我是否对您不起作用。希望能帮助到你。

于 2015-12-08T10:09:26.743 回答