iOS:使用.xcconfig文件指定代码签名标识

时间:2013-02-11 14:33:12

标签: ios xcode

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

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

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

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

CODE_SIGN_IDENTITY = iPhone Developer: Firstname Name (XXXXXXXXXX)

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

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:1)

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

使用以下命令指定配置文件:

  

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

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

  

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

只需将其添加到xcconfig。*

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

尝试使用CODE_SIGN

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

enter image description here

如果有什么不适合你,请告诉我。希望它有所帮助。