Xcode 10:此可执行文件未找到有效的配置文件。

283

自从昨天我尝试在我的设备上运行应用程序时,就一直出现以下错误:

未找到此可执行文件的有效配置文件。

这是在升级到Xcode 10之后发生的。上周使用Xcode 9构建没有任何问题。我已经检查了关于该错误的其他讨论,但没有一个解决方案适用。

这个问题不仅限于我正在工作的单个项目,因为它影响了来自不同签名团队的几个项目。

到目前为止,我尝试了以下方法:

  • 清理项目

  • 清理派生数据

  • 卸载Xcode,删除与其相关的任何首选项和文件。

  • 在完全不同的Mac上安装Xcode

  • 使用不同的设备进行测试

  • 禁用开发者配置文件中的设备,然后让Xcode重新启用它。

  • 删除开发人员门户网站中的所有证书并重新创建它们

  • 取消选中并重新选中“自动管理签名”

  • 将配置文件移到废纸篓中,然后让Xcode重新创建它

  • 在开发人员配置文件中创建手动配置文件

该项目不包含任何测试,因此在该目标上的错误签名设置不可能是问题。日期/时间设置为自动。

需要注意的一点是,除了我创建的手动配置文件外,这里没有列出任何配置文件,详见:https://developer.apple.com/account/ios/profile/

我希望像其他客户端一样,xcode生成的配置文件也可以显示在这里。

下面是我当前使用的签名设置:

provisioning profile settings

我还没有尝试将Xcode降级到旧版本来查看是否可行。除此之外,我不知道还有什么其他方法可尝试。


你在Xcode偏好设置中添加了开发者账户吗? - Ankit Jayaswal
@AnkitJayaswal 多次尝试,但从未使其正常工作。然而,我通过降级到9.4.1版本解决了问题,因此问题似乎与Xcode 10有关。您应该能够在一段时间内使用旧的Xcode版本提交应用程序,对吧? - Daniel Andersson
2
是的,您可以从Xcode 9及其版本提交构建,直到2019年3月。https://developer.apple.com/ios/submit/ - Ankit Jayaswal
我也尝试了Xcode 10,并且没有遇到“缺少配置文件”的问题。 - Ankit Jayaswal
5
你是否将 iPhone 的日期更改为过期证书的日期?因为这个原因我也曾遇到过这个问题。 - Anuved Nayak
显示剩余3条评论
38个回答

515

今天我遇到了这个问题,非常令人沮丧。目前,只需进入"文件" > "项目设置..." (或在某些情况下是"工作区设置..."),然后从"Build System"下拉菜单中选择"Legacy Build System"


19
这是什么意思?它有什么影响,我们如何知道我们可以再次更改设置? - Siyah
4
这在 Cordova 构建中起作用——非常好的工作。显然,Cordova CLI 有一个跳过的参数:cordova build ios --buildFlag='-UseModernBuildSystem=0'。这里可以了解更多信息:https://github.com/apache/cordova-ios/issues/407 - Victor
8
在“文件”下没有“项目设置”。我不得不点击“工作区设置”,然后从共享和个人工作区设置的构建系统下拉菜单中选择“遗留的构建系统”。 - red-devil
14
无法正常工作 :((。我的Xcode版本是10.1。我的iPhone操作系统版本是12.1。 - Hamed Ghadirian
3
我正在使用xcframework,它绝对需要新的构建系统,因此我无法切换到旧的构建系统! - chengsam
显示剩余10条评论

111

[编辑] 2020注:我曾手动签署过这个项目。在我自动签署的项目中,我从未遇到此问题。 [/ edit]

我曾遇到同样的问题,并花了数小时搜索答案,删除配置文件、清理项目等。

您是否分发了您的应用程序? 您需要切换回开发者资料,但不是在项目设置的通用下,而是在构建设置下。

签名下,查看您的代码签名标识

确保您的Debug和Release都设置为您的iOS开发人员,而不是iOS分发,或者如果没有设置为自动值,则为您的iOS Developer Provisioning profile。

配置文件也是如此。 它应该是您的开发资料,而不是您的发布资料。 输入图像描述


1
说实话:不需要这样做。发生这种情况的一个可能原因是我不得不重新设置证书,可能在开发之前“安装”了分发版。这只是我的猜测,但是回答你的问题:我仍然将它们设置为开发模式,并在归档构建以上传到应用商店时选择了分发模式。 - Rickard Elimää
这对我有用。我只在尝试分析应用程序时遇到了问题,如果我正常运行它,它就可以正常工作。我有一个用于调试的开发人员帐户和一个用于发布的分发帐户。对我来说,这似乎是XCode / Profiling的错误。 - James
1
搞定了,但还需要一步。由于我正在处理一个连接的iPhone上的测试,所以我没有担心进入App Store并设置我的“iOS分发”证书。由于我正在进行开发,我假设只需要在App Store上设置“iOS开发”证书。好吧,在我拥有“iOS开发”和“iOS分发”证书之前,它不起作用。 - Stagr.Lee
终于找到了解决我的问题的方法。谢谢! - Raghuram
1
太棒了!!!我真的快被搞疯了,直到我读到这篇文章才解决了问题。 - Rahi
显示剩余7条评论

97

@Stephen 谢谢,这解决了我的问题。我只需要去 --> 文件 --> 工作区设置 --> 构建设置(在此更改为“Legacy Build System”)在此查看图片描述

在此查看图片描述


1
很令人沮丧,这也是我所做的一切。我注册了我的UDID,创建了我的配置文件,我有一个开发证书,它都与我正在开发的应用程序相关联,做了你应该做的一切以便能够直接在设备上运行,但每次都失败 - 直到我将其切换到遗留模式,第一次就成功了... - Grant
这个解决方案可能会变得越来越不稳定,直到最终无法使用。我建议不要尝试这个。 - Ky -

52

我已经尝试了上面提到的所有解决方法。

但是,在我的情况下,经过数小时的头痛之后,原因竟是测试项目没有有效的帐户来进行签署配置。在我选择了一个团队来为测试项目进行自动管理签名之后,这个问题就消失了。


你是怎么做到的? - red-devil
2
@red-devil,所以你将不得不更新所有目标项目中的签名管理。 - Chen
谢谢,伙计。以上所有答案都没有解决我的问题,而你的答案却起了魔法般的作用。 - HungrySoul

34

使用清理构建文件夹(Command+Shift+K)并重新构建应用程序可以快速解决此问题。但是,由于您已经清理了构建文件夹,因此构建时间将会增加。


1
这对我有用(加上删除派生数据),而使用传统模式的建议则没有起作用。 - Chris
1
结果对我来说,我的正常团队和测试目标团队不同,这导致了问题,只有删除派生数据才能重置。 - Chris
1
仅清理构建文件夹(command + shift + K)就解决了我的问题。感谢@JeromeLi! - Chilly
1
我先尝试了被接受的答案(“遗留模式”),对我起作用。然后我回到了“新建构建系统”并尝试了这个(“清空构建文件夹”)建议。它也运行良好。就我的情况而言,这是更好的答案。 - user1527225
1
这对我有用,谢谢。(顺便说一句:只有我的 iPhone 11 出现了这个问题,我的 iPhone Xs Max 没有出现这个问题,而 iPhone 11 是第一次安装我的测试项目) - RateRebriduo
显示剩余2条评论

25
以下是我的解决步骤:
  1. 进入此文件夹:~/Library/MobileDevice/Provisioning Profiles/
  2. 删除所有描述文件
  3. 在 Xcode 10 菜单栏中选择 > Product > Clean Build Folder
  4. 在 Xcode 10 菜单栏中选择 > Xcode > Preferences > Account > Download Manual Profiles
  5. 在 Xcode 10 菜单栏中选择 > Product > Build / Archive
以上步骤的原因是为了移除旧的描述文件,避免其干扰构建过程。

2
只有这个答案解决了我的问题。谢谢! - Yogesh Patel
在尝试了其他几个答案后,这个对我解决了问题。非常感谢您的发布。 - Chris B
对我没有起作用。 - Rohit Singh
@RohitSingh 或许你可以在一个新问题中详细阐述一下。 - Raptor

18

这并非每个人都会遇到的问题,但我还是想在这里发布一篇帖子,因为似乎没有任何与此相关的答案。

我的情况是,我正在开发一个用ReactNative编写的应用程序,我的问题是虽然我的主应用程序目标的签名是正确的,但测试目标并没有应用任何签名。
由于某种原因,React Native需要你的应用程序目标和测试目标都被签名,才能在设备上安装应用程序。
官方文档中 运行在设备上 有明确说明,但这是我见过的唯一一种情况,其中测试目标与应用程序一起构建,而不是仅用于测试。

要签署测试目标,请打开项目导航器(⌘1)并选择顶部的项目,进入项目设置。

在主编辑器中,在Targets下选择您的主应用程序目标(名称应与您的项目相同),确保签名正确,然后选择测试目标(可能就在您的主应用程序目标下面,它应该是相同的名称,并在末尾附加了Tests),并确保以相同的方式进行签名。

重新构建您的应用程序,它现在应该可以成功安装了。

感谢Leo Lei,他在这里的回答让我省去了很多麻烦:https://dev59.com/9VkS5IYBdhLWcg3wKjj1#48657358

作为旁注,如果有人知道为什么React Native需要在应用程序目标旁边构建测试目标,请让我知道。我唯一能想到的原因是为了简化界面,以便React可以构建一个单一的应用程序并同时进行运行和测试,而无需重新构建,但这只是我的猜测。

3
这个方法解决了我的问题,其他方法都没用。感谢您的发布。 - Christian Chown
3
非常感谢您指出这一点。我已经重命名了项目并更改了团队。测试目标上有一个旧的团队名称。我已经苦苦挣扎了几个小时了。再次感谢。 - Alok C
经过数小时的头痛,这个解决方案对我非常有用。非常感谢! - Johnson
在我的情况下,我也在使用React Native,但只需要将代码签名设置为自动,同时针对目标和测试目标,才能在设备上运行。这可以确保连接的设备具有其自己的证书和配置文件。 - cherucole

6
今天在安装一个应用程序到我的设备时,遇到了同样的错误。这个问题是在我升级到新的xCode 11.4之后出现的。
我做的解决方法:
  • 取消设备配对(Xcode > 窗口 > 设备和模拟器 > 单击设备以取消设备配对)。
  • 重启 iPhone
  • 清理构建文件夹(Xcode > 产品 > 清理构建文件夹)
  • 清理派生数据(位于../library/Developer/Xcode/DerivedData)
  • 再次清理构建文件夹(Xcode > 产品 > 清理构建文件夹)
  • 在设备上构建应用程序。

1
在我的情况下,我使用这些步骤解决了问题,而无需取消配对设备。 - Muhammad Yusuf

6
我已经按照上述步骤操作,但最终并未起作用。我创建了一个重复的目标,现在它可以正常工作了。我不知道出了什么问题,也许是缓存内存问题。
图片链接:enter image description here

运行成功!!!太简单了。你解救了我的一天。 - Kostiantyn Bykhkalo

6
对于我们的团队,以上所提到的答案和评论中的每一个步骤都没有帮助。我们尝试使用XCode 10和甚至是XCode 9.2在一个已经上架多年的应用上进行了几天的尝试。
问题始于升级到MacOS Mojave之后。不幸的是,回到HighSierra也没有帮助。
至少在我们创建了新的证书和配置文件之后,我们又能够成功地将应用提交到App Store了。但是我们不能再在真实设备上测试发布模式下的应用了,这对于测试应用内购买功能来说是必要的。
简而言之:打包和提交工作正常,但在真实设备上无法运行!
多名开发人员,多种设备,macbook,XCode版本......
最终我们不得不更改AppID才能再次在真实设备上进行测试。
因此,现在我们运行两个不同的项目:一个是使用真实AppID用于TestFlight/AppStore的发布,另一个是使用其他AppID用于开发目的。
尽管这只发生在我们公司的一个特定应用上,而不是所有其他应用上,但我们预计在未来会遇到类似的问题,因为随着苹果的开发工具变得更加复杂,情况会变得越来越糟糕......

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