ChatGPT解决这个技术问题 Extra ChatGPT

Xcode 5:代码签名权利错误

我已经构建了一个将支持 IOS 7 的新应用程序。我获得了新的 XCode 5 GM 并尝试使用我的新配置文件和分发证书签署我的应用程序,但我在分发时遇到了问题。我经常收到以下错误:

“无效的代码签名权利。您的应用程序包签名中的权利与配置文件中包含的权利不匹配。根据配置文件,捆绑包包含一个不允许的键值:'[XXXX.com.sample .company ]' 用于键“keychain-access-groups”。

对于名为 application-identifier 的键值也存在相同的错误。

错误截图:

https://i.stack.imgur.com/wrSZf.png


B
Benjamin de Bos

解决方案在于 Xcode 5 中的新选项,即配置文件。只需将项目目标的配置文件设置为正确的,它就会工作。

https://i.stack.imgur.com/2Hm5T.png


添加到这个答案 - 我有用于配置文件的分发和发布类型。我遇到了同样的错误,这是因为我为 Release 类型设置了开发配置文件(我以为我使用的是 Distribution 类型,但没有注意到 Release 类型)。一旦我将其设置为我的发行版配置文件,它就起作用了。
为了进一步澄清这个答案,我一直在尝试使用组合视图在每个的顶层行设置我的配置文件和代码签名身份。这样做仍然会将其恢复为 。然而,当我展开这两行时,我看到每个配置的“任何 iOS SDK”子行都设置为 None,尽管 Debug/Release 行确实列出了正确的配置文件/签名身份。在这种状态下存档仍然给我错误,直到我明确地将所有“任何 iOS SDK”行设置为它们的正确值。
我们在这个上花了好几天!不好的是,在构建 IPA 时,我们仍然必须再次选择相同的配置文件。本杰明,你是怎么找到这件事的?
不幸的是,它对我不起作用。我在 developer.apple.com 网站上查看了我的个人资料,并启用了 Game Center 和应用内购买。我不使用任何一个,想知道这是否是个问题。
要进一步说明,请注意 Xcode 允许您为项目和目标选择 Provisioning 配置文件信息。您需要确保更改目标的设置而不仅仅是项目。
V
VGruenhagen

如果您像我一样,并且认为您尝试了所有方法,将项目存档了十多次,将头撞在键盘上,仍然会出现此错误。请帮自己一个忙,只需重新启动 XCode,它对我有用。有时苹果...我恨你。


我确实在一个 xcode 会话中构建了两个不同的应用程序并得到了 1000 个错误。重新启动工作。谢谢你!
这对我也有用。我正在使用 Xcode 6.3。我无法选择苹果开发帐户进行代码签名。每次“ios app id 'xxxxxxxxx' 不支持更改地图功能”时都会显示完全不相关的错误消息。一个简单的 xcode 重启为我修复了它。
如果我能给你投票 1000 次,我会的。这对我有用。这发生在 XCode 7.1 上。
J
Joe Regan

我经历了上述许多步骤,但最终对我有用的是在 Xcode 中刷新我的个人资料。不知道为什么有必要,因为我的应用程序的分发配置文件已经显示在列表中。以下是步骤:

Xcode Preferences Accounts tab 选择您的 Apple ID 点击 Apple ID 详细信息面板中的查看详细信息按钮 点击左下角的刷新按钮


完成此操作后,您还应该重新运行 Build and Archive 命令以确保应用了新配置文件。 (至少,这对我来说是必要的。)
n
novecapa

就我而言,我在 Xcode 中激活了与 developer.apple.com 的应用程序服务中相同的功能。那对我有用

https://i.stack.imgur.com/7j2CV.png

https://i.stack.imgur.com/TPhSU.png


这对我有用——无法在开发人员中心关闭这些功能,而且似乎 iOS 7.0 与 Xcode 5.1.1 一起编译需要它们开启。
R
RickJansen

就我而言(抱歉)我在 -> General -> Identity 中将“Team”切换为“None”

在另一种情况下,我需要将此身份从“无”切换到管理身份和配置文件的开发人员帐户。

看起来,Xcode 有时会在代码签名方面搞得一团糟。或者,当然,我们这些凡人根本不够聪明,无法理解它在做什么。不要放弃,我们有时都会经历一些代码签名的折磨!


哇,你拯救了我的夜晚,谢谢。但是......为什么它起作用了?
为什么它会起作用……我认为 Xcode 是一个极其复杂的产品,身份和配置分析的东西从一开始就很麻烦。我想没有人对相互关系有充分的了解了。我不。有时它是反复试验,正如这个线程所示。
B
Beny Boariu

就我而言,我必须为 Release 设置正确的 Provision Profile,然后必须重新启动 Xcode。在重新启动之前,它具有相同的配置文件,并且没有工作。所以,有时重启可以创造奇迹。也许这对某人有帮助。


b
beryllium

https://i.stack.imgur.com/8J0ww.png

此操作很可能会将 Game Center 权利添加到 App ID 并自行处理。


V
Vlad 25 WLD

1.进入项目文件夹,删除*.entitlements文件。 2.然后进入 xcode 项目目标 -> 构建设置 -> 代码签名权利 - 删除值 3.Clean 4.Run


C
Chris Klingler

啊,这个光荣的错误。对我来说,每当我看到此错误时,我都会检查以下内容:

1. 允许 XCode 始终访问您的配置文件信息 - 如果 XCode 一直询问您何时启动它以访问您计算机的私人文件,以便它可以获取配置文件信息,并允许始终访问,而不是现在,或仅一次 - 将其设置为始终允许访问

2. 如果您的项目中有任何旧的权利文件,请摆脱它们和任何迹象 - 如果您在项目中看到 .entitlements 文件,请将其删除(或者如果您不确定,至少删除对它的引用您已准备好彻底删除它),然后确保“构建设置”中“代码签名”部分下的“代码签名权利”行为空

3. 在线检查您的应用程序服务并将它们与应用程序的 XCode 中的服务匹配 - 转到 Apple 会员中心并检查您的应用程序的应用程序 ID,单击应用程序以查看其“应用程序服务”并查看您的应用程序已检查,然后转到 XCode 并检查您的“功能”部分,以确保两者在两者上都有相同的 Apple 服务列表

4. 确保在验证之前为您的应用分配有效的配置文件 - 在 Apple 会员中心仔细检查您的应用程序的配置文件,确保它没有过期,具有正确的应用程序 ID 和正确的包 ID 和分发.下载并单击新的配置文件以确保 XCode 具有它,或者转到 XCode > 首选项 > 帐户 > 单击您的帐户并“查看详细信息”,然后单击底角按钮将所有配置文件同步到 XCode。您现在应该可以在“代码签名”部分中选择配置文件。拥有正确的配置文件后,您可以将“代码签名身份”行设置为该配置文件的正确选项。

注意 - 如果进行分发证书,它可以帮助将所有“代码签名身份”行设置为您用于分发的身份,包括调试行

5. IF ALL ELSE FAILS - 清理你的项目并重新启动 XCode 和一些 Apple 魔法可能会在你下次打开项目并尝试验证时正常工作


J
Jonas Byström

如果您正在构建一个旧的 3.1.5 项目,那么 Xcode 5 有一些错误,不幸的是,这些错误使 Benjamin 的答案变得不可能,因为没有可供选择的 Provisioning 配置文件。在对 Xcode 项目文件进行了数小时的痛苦阅读之后,我想出了这个对我有用的解决方案:

在 Xcode 5 的 Utilities 窗格(右侧)中,在项目 Document 下,从 Xcode 3.1-compatible 更改为 Xcode 3.2 compatible。

输入您的组织名称。

关闭项目。

打开您的项目文件,例如 open -a TextEdit path/to/name.xcodeproj/project.pbxproj 删除两个 Distribution 子句 (isa=XCBuildConfiguration)。删除 buildConfiguration 中的两行(一行在 PBXNativeTarget 中,另一行在 PBXProject XCConfigurationLists 中)

删除两个 Distribution 子句 (isa=XCBuildConfiguration)。

删除 buildConfiguration 中的两行(一行在 PBXNativeTarget 中,另一行在 PBXProject XCConfigurationLists 中)

现在您已准备好重新打开、存档并提交到 App Store - 瞧!它再次起作用!

我认为它是如何工作的

我认为这是可行的,因为苹果公司决定放弃对任何单独的分发配置的需求,这是一件好事。当我归档时,Xcode 会自动对符号进行编码以进行分发。这就是它应该首先实现的方式,Apple 不能让自动迁移成为 IDE 的一部分,这只是一种耻辱;相反,他们迫使我们开发人员花费数十年的时间来使这些东西发挥作用。


D
Daniel

我已经为这个问题苦苦挣扎了一天多,尝试了这里和互联网上其他地方建议的各种解决方案。没有任何效果...

但是,我终于设法解决了这个问题!

我遇到的问题是一个我 3 年多没有接触过的旧应用程序,现在我即将发布一个期待已久的更新。自从我发布应用程序以来,Apple 一直在更新证书和应用程序 ID 的工作方式。他们引入了似乎推荐使用的团队 ID 的概念。尤其是 Apple 的“证书、标识符和配置文件”网站,此后发生了很多变化。

在那里,我意识到我用于 App Store Distribution 的 Provisioning Profile 已连接到 App Id ED8xxxxxxx.com.rostsolutions.*,但查看我将要提交的游戏的 App Id,我注意到 App Id 是 ATMxxxxxxx.com.rostsolutions.Swisch。所以 App Id 前缀不匹配!这似乎是问题的根源。所以我所做的是创建一个连接到 App Id ATMxxxxxxx.com.rostsolutions.Swisch 的新配置文件。使用该配置文件,我成功地将我的应用程序提交到 App Store,现在我只是保持手指交叉,其他一切在 Apple 方面都可以正常工作。

(我首先尝试将新的配置文件连接到通配符 ID ATMxxxxxxx.com.rostsolutions.*,但这似乎不起作用)。

但令我困惑的是,当我在 iTunes Connects 中查看旧 App 并转到 Binary Details 时,它显示 App Id 为 ED8xxxxxxx.com.rostsolutions.Swisch。那么为什么“证书、标识符和配置文件”页面将 App Id 列为 ATMxxxxxxx.com.rostsolutions.Swisch


感谢您发布此丹尼尔。我看到类似的行为阻止使用所需的证书和配置文件。每次我下载证书或允许 Xcode 执行此操作时,都会出现一个“幻像”团队 ID,在我的情况下“破坏”iCloud 功能(使用)。我还没有解决方案。
我的天啊!超过 50 个应用程序也在发生同样的问题!呃,幻影小队正在杀了我们。为什么苹果为什么!????
B
Brainware

我的问题是通过从 Preferences->Accounts 中删除我的 Apple ID 然后重新添加来解决的。然后我的所有配置文件都显示在查看详细信息实用程序面板上。我错误地选择了“Mac Team Provisioning Profile:*”而不是项目的实际分发配置文件,认为这是一个通用选择。供应文件必须特定于项目。哦,顺便说一句,确保您的配置文件具有正确的权利(例如,地图)。我设法在没有授权的情况下发布了一个带有 OSX Maps 的应用程序,Apple 批准了它——但生产版本中没有地图出现!


H
Hector

就我而言,我遇到了同样的问题,我的解决方案是在执行存档之前更改构建设置中的“发布配置文件”。我这样做了两次,一次用于 App Store 分发,另一次用于 Ad Hoc 分发。我还对我的档案添加了评论。我的结论是“存档重新签名”有些问题。


l
lukas

this 网站上有解决该问题的非常好的教程。

它表示,当您的项目包标识符与您在 iTunes Connect Website 中输入的标识符不同时,可能会出现此问题。


s
superarts.org

我认为 xcode 5 使用“发布”而不是您自己创建的“分发”。


W
WINSergey

如果以上都不起作用(在我的情况下,几天后没有运气尝试一切)我只有一个 Mac 应用程序。小心撤销!

1)手动撤销所有“Mac App Distribution”& “Mac 安装程序分发”
2) 清除钥匙串中的相关证书和打开密钥(警告: 删除前导出)
3) 重新启动 Xcode 4) 转到(在 Safari 中){1 } 5) 在 Keychain->Certificate assistant
中创建 CertificateSigningRequest.certSigningRequest 6) 在 developer.apple.com 上手动创建“Mac App Distribution”和“Mac 安装程序分发”与您的 *.certSigningRequest
7) 配置文件 ->分布 ->为 AppStore 创建/修复自定义配置(我专门将其命名为“AppStore 的 Mac 配置文件”
8)Xcode ->设置->帐户->您的帐户 ->刷新 9) Xcode Clean ->存档 ->证实


T
Tomek Cejner

我一直在努力解决类似的问题(我正在为 Ad-Hoc 分发构建)。自上次成功部署以来唯一发生的变化是将两个设备添加到配置文件中。

在对所有构建设置进行了两次和三次检查后,我重新生成了配置文件(没有更改任何内容),重新下载并且运行良好。

所以请注意:如果没有逻辑解释,您可以随时尝试好的旧 IT 巫术。

我还推荐 iPhone Configuration Utility,尽管它的名字,它对于检查您在计算机上的配置文件很有用。


h
hi0001234d

错误 ITMS-9000:“此捆绑包无效。提交到 App Store 的新应用和应用更新必须使用公共 (GM) 版本的 XCode 5.1.1 或更高版本以及 iOS 7 SDK 构建。不要提交使用 beta 软件构建的应用程序。


h
hasan

如果多个开发者使用同一个会员中心账号。他们中的一个人不能使用其他人创建的证书,因为他们使用了使用他们的计算机创建的证书请求。

您需要使用您创建的证书(使用您的计算机创建的证书请求)。

或者,告诉他们向您发送开发者资料。不确定名字。使用在另一台计算机上创建的证书。


M
Muhammad Shauket

代码签名权利发生是因为您的资源在资源中不包含权利文件,只需转到构建设置并搜索代码签名权利删除条目以进行调试和发布,再次构建项目您将看到没有错误。干杯


j
jimpavloff

我遇到了同样的问题,但这里写的没有任何东西对我有用。但是,我找到了一种对我有用的简单方法。这是如何做到的:

1) 在您的项目和目标构建设置中,为所有供应配置文件选择“无”,并为所有代码签名身份选择“不进行代码签名”。

2) 现在,选择您的目标并转到构建设置。在代码签名身份发布设置中,为“任何 iOS SDK”选择“iOS 分发”。然后,在 Provisioning Profile Release 设置中,为“Any iOS SDK”选择您的分发配置文件。之后,您的代码签名身份发布设置应自动更改为“iPhone 分发”。

3) 归档您的构建并验证。现在它应该可以正常工作了。而已!