尝试归档以提交iOS应用时,我遇到冲突的配置设置错误


312

现在,我正在尝试“产品”>“存档我的iOS应用”以提交。但是,我收到以下错误:

AppName的配置设置冲突。AppName将自动签名以进行开发,但是已经手动指定了冲突的代码签名标识iPhone Distribution。iPhone Developer在构建设置编辑器中将代码签名标识值设置为,或在项目编辑器中切换为手动签名。

SDK'iOS 10.1'中产品类型'Application'需要代码签名

即使我已经重试了整个过程以重新创建iOS证书或配置文件的情况,这种情况也不会改变。

我设置为iOS DistributionTARGETS > Code Signing Identity > Release > Any iOS SDK。当我改变了设置为iOS Developer在这里,并在改变设置PROJECTS > Code Signing Identity > Release > Any iOS SDKiOS Distribution,我已经成功地归档。我想知道是否有必要将其设置为iOS Distribution目标编辑器。如果是强制性的,请让我知道如何解决此错误。

我的XCode版本是8.1。


4
您需要确保项目和目标之间的代码签名设置不会冲突。
max_

1
我想我已经尝试了项目和目标之间的代码签名设置的每种组合。我的问题出在任何设置上,Distribution在目标编辑器中设置为iOS时都无法成功,我想知道是否有必要。
vanagar

1
@BenLeggiero也请参阅stackoverflow.com/a/52573190/341994。正如我在此处所述,有一种手动的清理方法。
马特

感谢指针,@ matt!这并不直接适用于我正在研究的问题,因为我们正在制作Mac应用程序,并且不使用Game Center之类的集成。不过,将其添加书签以供以后使用!
Ben Leggiero

Answers:


897

我遇到了同样的错误,但是我已经检查了“自动管理签名”。

解决方案是取消选中它,然后再次检查并重新选择团队。然后,Xcode自行修复了导致问题的原因。


15
谢谢!这对我有用,对于任何使用cordova生成ios平台的人,即使使用最新的cordova版本,我也遇到此错误。默认情况下会选中自动签名,但未选择任何团队。只有当我取消选择“管理签名”并选择“自动签名”时,团队才能够使此工作正常进行。谢谢艾琳!
Jtello

2
当我再次检查它时,代码签名会自动设置iOs Developer,但我需要将其设置为iOs Distribution,而当我再次通过上述相同的异常将其设置为iOs Distribution Xcode时。
ami rt

1
@amirt我有和你完全一样的问题。你修好了吗?
Kimi Chiu

@KimiChiu是的,我做过兄弟。
ami rt

2
是的,但是要澄清一点,这是我的经验:-您必须事先手动创建分发配置文件(通过Apple开发人员网站)。自动签名并不能帮您做到这一点。-如果以某种方式搞砸了“构建设置”中的代码签名身份:必须将其全部4个都设置为“ iOS开发人员”(甚至是要发布的版本),自动签名才能工作
jakob.j,

153

我遇到了同样的问题,我注意到,如果您要发布iOs应用并将其发布到App Store上,则根本不需要放入“代码签名身份”作为发布,只需将其保留为iOs开发人员。

转到您的项目->构建设置->代码签名身份,然后将所有内容交给iOs开发人员。

在此处输入图片说明


3
是的,这可行。但是对于临时构建,我必须禁用自动签名,然后转到那里并设置“ iOS Distribution”。苹果为何以这种方式实施它?这根本没有任何意义:(
阿尔格里德

最好的答案。当“存档”时,xcode将在本地重写设置。
Tom Marvolo Riddle

请查看存档后显示的“查看xxx.ipa内容:”,它是“证书:iOS发行版”。
Tom Marvolo Riddle

这应该是正确的答案。该问题的公认解决方案部分正确。
Sanchit Kumar Singh,

72

对于来自Ionic或Cordova的用户,可以尝试以下操作:

打开文件yourproject/platforms/ios/cordova/build-release.xcconfig并从此更改:

CODE_SIGN_IDENTITY = iPhone Distribution
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution

到这个:

CODE_SIGN_IDENTITY = iPhone Developer
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer

并尝试ios cordova build ios --release再次运行以编译发行版本。

参考:https : //forum.ionicframework.com/t/ios-build-release-error-is-automatically-signed-for-development-but-a-conflicting-code-signing-identity-iphone-distribution-has-手动指定/ 100633/7


3
在尝试了所有其他答案之后,这才是最终为我工作的答案。谢谢!
mikewagz

1
该文件现在称为build-release.xcconfig。您错过了一个'c'这是一个执行bash的脚本:``#!/ usr / bin / env bash sed -i“”“ s / iPhone Distribution / iPhone Developer / g” platform / ios / cordova / build-release.xcconfig出口0; ````
肯特·布尔

3
您也可以只注释掉这些行;在中设置了iPhone Developer设置build.xcconfig,这些行将覆盖它。
Jules

3
我只是删除了这两行,然后让Xcode自动管理签名。
Ryan H.

3
您可以使用cordova-custom-config插件通过config.xml中的以下行自动执行此操作:<custom-preference buildType =“ release” name =“ ios-XCBuildConfiguration-CODE_SIGN_IDENTITY” value =“ iPhone Developer” xcconfigEnforce =“ true“ /> <custom-preference buildType =” release“ name =” ios-XCBuildConfiguration-CODE_SIGN_IDENTITY [sdk = iphoneos *]“ value =” iPhone Developer“ xcconfigEnforce =” true“ />
FactualHarmony

64

您对此太想了。在Xcode 8中,该过程得到了极大的改进,并且非常容易。充分利用这一事实。

步骤1:请勿以任何形式或形式尝试在“构建设置”中设置“代码签名”设置。不要靠近他们。你绝对会把这个搞砸的。而是,编辑目标并在“常规”窗格中完成所有工作。最佳方法:设置自动代码签名的权限-只需输入您的团队并选中复选框,如下所示:

在此处输入图片说明

第二步:确保您具有iOS发行身份(证书)。您可以在Xcode偏好设置>帐户,查看详细信息下进行检查。这时也是一个好主意,请前往会员中心,为自己获取此应用程序的App Store移动供应,然后下载并安装它。

第三步:选择“通用iOS设备”作为目的地,然后选择“产品”>“存档”。该应用将被编译,存档已创建,您现在可以提交给App Store。


非常感谢!成功了。让我确认一下步骤2:下载“移动供应”。是“ iOS供应配置文件(分发)”吗?我只是双击下载的文件,这是您在此处提到的安装吗?
vanagar

对,就是这样。现在,下载的文件已被复制到Xcode的世界中(您可以丢弃原始文件),并且当您实际提交到App Store时,Xcode会看到该文件。
马特

在某些情况下,您可能不需要制作App Store移动配置文件,因为Xcode会自动为您创建文件。但是我发现无论如何还是一个好主意。
马特

2
有趣的是,我看过的所有部署教程都告诉您手动更改每个目标上的代码签名设置。我打开了“自动管理”功能,但我什至没有意识到。
Dan

1
@andreszs自动签名在创建开发证书和配置文件方面做得很好,而开发证书和配置文件是您开发和存档所需的全部。但是当需要分发到应用程序商店时,我发现最好手动创建分发配置文件并下载它,以备在导出过程中使用。
马特

52

如果收到此错误

应用的配置设置冲突。应用已自动签名,但已手动指定了配置文件“ ID”。在构建设置编辑器中将供应配置文件值设置为“自动”,或在项目编辑器中切换为手动签名。

然后确保目标构建设置中的PROVISIONING_PROFILE选项为空:

在此处输入图片说明


1
我没有区分用户和系统构建配置文件...所以感谢您指出它是“ PROVISIONING_PROFILE”
petrosmm


这是我搜索的错误,并获得了此SO问题的链接,但这是我需要的答案。请注意,尝试实际指定值“自动”是行不通的。即使错误消息另有说明,您也无需指定所有内容。对我来说,我们正在使用xcconfig文件,因此这是删除配置文件中的设置的问题。
user107172 '19

29

别忘了这样做

选择项目->构建设置。搜索PROVISIONING_PROFILE并删除其中所有的废话。


1
可能是唯一对我
有用的

4
我做到了这一点,同时取消选中并重新选中“常规”选项卡上的“自动管理签名”,然后重新选择团队。感谢Rein和Erin。(嘿,你的名字是字谜!)
Dave Levy

好吧,这很有趣@DaveLevy
Rein rPavi

我没有给我这么多的荣誉,因为我的PROVISIONING_PROFILE似乎不包含垃圾,它设置为“自动”并且看上去不错。但是,删除它并重新启用自动签名可以解决问题!
拉斐尔·诺布雷

1
设置为“自动”,无法删除。
Dror Bar

22

如果您来自离子世界。当您处于“存档”阶段时,可能会出现“冲突代码签名”错误,如下所示:

...已自动签名以进行开发,但是已手动指定了冲突的代码签名标识iPhone发行版。在构建设置编辑器中将代码签名标识值设置为“ iPhone Developer”,或在项目编辑器中切换为手动签名。SDK'iOS 10.x'中的产品类型'Application'需要代码签名

在这种情况下,请转到“构建设置” /“在签名下”,“代码签名身份”,然后选择“ iOS开发人员”而不是“发行版”。

再次进入菜单:产品/归档,此问题将得到解决。


2
问题是每次构建都会重置它...这使我们的自动化构建混乱了。知道如何在非交互式脚本中更改此设置吗?
Webberig '17

1
太好了,这为我解决了这个问题。事后看来,此解决方案非常合理,并且需要大量饮酒。
史蒂文·克雷默

18

对于来自Ionic或Cordova的用户,您可以尝试以下操作:之前将ios设备与计算机断开连接ios cordova build ios --release(似乎更改了用于xcode签名的目标设备)。


6
这是最愚蠢的答案,并且完全可以使用。我讨厌我们要使用Xcode才能使应用程序正常运行的所有变通方法。
Jordan Benge

这是对的。当我连接iPad而不是iPhone时,出现此错误。一旦断开所有ios设备的连接并从命令行构建它,此后它就可以正常工作。
尼尔

绝对正确。我整天都在尝试解决此问题,这是唯一对我有用的解决方案。
ulisesvera

1
IOS让我生气..一切都必须通过
摇晃

15

转到构建设置,搜索代码签名身份,然后为iOS Developer设置Any iOS SDK值:

在此处输入图片说明


4
是的,这正是错误消息要求执行的操作。但是您能解释一下为什么实际上使用“ iOS Developer”进行发行版本会有意义吗?
阿尔格里德

奇怪的是,这对于一段时间前的统一生成项目同样有效
ina

15

唯一的解决方案为我工作:

  1. 关闭Xcode项目
  2. 使用finder转到项目文件夹
  3. 右键单击.xcodeproj,然后选择“显示软件包内容”
  4. 右键单击project.pbxproj,然后选择“打开方式”,然后选择TextEdit
  5. 现在搜索错误消息中指定的您的配置文件instanceId。
  6. 删除所有找到的文本,并清理配置文件。
  7. 保存并关闭
  8. 开启Xcode
  9. 启用自动管理签名

请享用!希望它会有用!


我知道这会遇到一些Xcode问题。谢谢一个吨的人!它在“供应配置文件的构建设置”中显示为自动,但仍给出该错误。谢天谢地,我不是唯一遇到这个问题的人。
琥珀K

实际上,如果您拥有一个开发者帐户和一个应用程序,则可以使用它,但是对于许多应用程序,它会导致其他问题。
goraga1

9

对我来说,对和Code Signing Identity都要全部更改。iOS DeveloperDebugRelease

Code Signing StyleAutomatic

在此处输入图片说明


8

就我而言,我在“构建设置”中设置了“自动”选项。

在此处输入图片说明


7

请尝试以下任一方法

1,删除和添加ios平台并重建ios项目

ionic cordova platform rm ios
ionic cordova platform add ios
ionic cordova build ios --release

2.更改Xcode构建设置

解决方案是取消选中它,然后再次检查并重新选择团队。然后,Xcode自行修复了导致问题的原因。

3.在平台上更改以下代码

这对我来说没有任何意义,因为我已将项目设置为自动登录xcode。像您一样,检查和取消检查都无效。但随后,我阅读了给出的最后一个文件路径并遵循它。文件路径为APP>平台> ios> Cordova> build-release.xconfig

并且在该文件中,为“ CODE_SIGN_IDENTITY”显式设置了“ iPhone分发”。

更改:

CODE_SIGN_IDENTITY = iPhone Distribution
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution

至:

CODE_SIGN_IDENTITY = iPhone Developer
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer

7

我长期挣扎,尝试了所有建议的解决方案。对我没有任何帮助。

然后我发现了问题:“构建设置”选项卡的末尾有一个“ PROVISIONING_PROFILE”的“用户定义的设置”。我同时删除了Project和Target构建设置。然后,自动签名完美运行。

我希望这会对其他人有所帮助。:)


6

查找.xcodeproj文件并用文本编辑器打开

在下面找到字段并使它们像这样

CODE_SIGN_IDENTITY =“ iPhone开发人员”; “” CODE_SIGN_IDENTITY [sdk = iphoneos *]“ =” iPhone开发人员“;

PROVISIONING_PROFILE =“”;

PROVISIONING_PROFILE_SPECIFIER =“”;


6
  1. 常规->签名->检查自动管理签名并选择团队

  2. 构建设置->签名->代码签名身份->全部设置为“ IOS开发人员”


4

唯一的事情对我有用。

打开项目->选择目标->转到构建设置->搜索提供,然后删除选定的配置文件。


2

就我而言,我必须登录到Apple Developer网站并重置设备列表。

看来他们现在要求您每年在续订订阅时都进行此操作,然后才能添加新设备并生成证书。


2

我遇到了同样的问题,我的问题是通过在共享扩展的构建设置中搜索“配置文件”来解决的

然后,那里有两个“ Provisioning Profile”字段,一个为常规字段,一个为弃用字段。常规的是自动的,但不推荐使用的不是自动的。将其更改为自动也解决了我的错误。



2

使用Xcode 10:这里没有其他解决方案对我有用。

此错误似乎是您无法在Xcode 10中修复的错误

我必须还原到Xcode 9来解决此问题,然后再更新回Xcode 10,以便可以在非仿真器设备上的iOS 12上运行我的应用程序。

Xcode 10中使用的在Stack Overflow或其他地方找到的任何其他解决方案,都使我陷入了配置冲突或签署证书问题的无休止循环。无论您是使用自动方法还是手动选择配置文件和证书,Xcode 10中的签名似乎都被破坏了。

通过首先从“应用程序”文件夹中删除Xcode 10,可以还原到Xcode 9。然后,使用此Apple Developers页面上列出的.xip文件安装Xcode 9 。

在Xcode 9中,使用自动构建选项。您可能需要取消选中“自动管理签名”并重新选择它,还可能需要在developer.apple.com上吊销现有证书。

使应用程序成功在Xcode 9中构建后,可以使用App Store更新回Xcode 10。在Xcode 10中重新打开应用程序后,一切仍然正常。您可能不需要执行此操作,但是为了构建需要Xcode 10的iOS 12,我需要这样做。


尝试添加标志--buildFlag =“-UseModernBuildSystem = 0”
Redwolf



0

更新到Xcode 8.3.2之后,我在Cordova项目中遇到了相同的错误。我需要升级Cordova(v7.0.0)和iOS平台(v4.4.0)才能进行代码签名。


0

您需要添加生产证书和(或)从您的Development Acoount下载一个

在此处输入图片说明


0

请确保构建设置名称中的“产品捆绑包标识符”与实际的捆绑包标识符匹配。这对我有用。


0

对我来说,我需要从自动切换到手动,然后切换到自动,同样的错误。切换到手动,并更改那些配置文件和代码签名设置,构建并获取错误,然后切换回自动,然后就成功了。


0

我有同样的问题。我意识到这是因为我在使用xcode时正在使用它。由于更新未正确安装,因此导致出现这些错误。修复该问题的唯一方法是退出xcode并重新打开它。当我重新打开它时,它提示我安装更新。安装更新后,错误消失了。


0

问题出在科尔多瓦设置中。

请注意:

iPhone Distribution has been manually specified

这对我来说没有任何意义,因为我已将项目设置为自动登录xcode。像您一样,检查和取消检查都无效。但随后,我阅读了给出的最后一个文件路径并遵循它。文件路径是APP > Platforms > ios > Cordova > build-release.xconfig

并且在该文件中,iPhone Distribution已显式设置为 CODE_SIGN_IDENTITY

更改:

CODE_SIGN_IDENTITY = iPhone Distribution
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution

至:

CODE_SIGN_IDENTITY = iPhone Developer
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer

这很简单,并且错误消息确实清楚地说明了已经手动指定了iPhone Distribution,但是除非您遵循该路径,否则它实际上并不会说出位置。我看了一下xcode弄了三个小时,试图弄清楚这一点。希望这对将来的任何人有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.