【问题标题】:Xcode 11.2 - Unable to install App file to device?Xcode 11.2 - 无法将 App 文件安装到设备?
【发布时间】:2020-02-27 22:35:39
【问题描述】:

我最近将我的操作系统更新为 Catalina,并将 Xcode 更新为 11.2。因为这样做,当我尝试在我的设备上运行我的应用程序的发布版本时,我只是得到了错误:

无法安装应用程序。

当我点击“详细信息”时,它会为我提供以下信息:

应用安装失败域:com.apple.dtdevicekit 代码:-402620395 失败原因:此可执行文件的有效配置文件是 没找到。

用户信息:{ DVTRadarComponentKey = 487927; “com.apple.dtdevicekit.stacktrace”=(0 DTDeviceKitBase 0x000000011baff6e7 DTDKCreateNSError + 109 1 DTDeviceKitBase
0x000000011baffde9 DTDK_AMDErrorToNSError + 792 2 DTDeviceKitBase
0x000000011bb3f56a 90-[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:]_block_invoke + 164 3 DVTFoundation 0x000000010356f156 DVTInvokeWithStrongOwnership + 73 4 DTDeviceKitBase
0x000000011bb3f301 -[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:] + 1589 5 IDEiOSSupportCore 0x000000011b9c7a25 __118-[DVTiOSDevice(DVTiPhoneApplicationInstallation) processAppInstallSet:appUninstallSet:installOptions:completionBlock:]_block_invoke.352 + 4523 6 DVTFoundation 0x00000001036a03ba __DVT_CALLING_CLIENT_BLOCK
+ 7 7 DVTFoundation 0x00000001036a1a92 __DVTDispatchAsync_block_invoke + 809 8
libdispatch.dylib 0x00007fff68220583 _dispatch_call_block_and_release + 12 9 libdispatch.dylib 0x00007fff6822150e _dispatch_client_callout + 8 10 libdispatch.dylib 0x00007fff68226ace_dispatch_lane_serial_drain + 597 11 libdispatch.dylib 0x00007fff68227452 _dispatch_lane_invoke + 363 12 libdispatch.dylib 0x00007fff68230a9e _dispatch_workloop_worker_thread + 598 13 libsystem_pthread.dylib 0x00007fff6847a71b _pthread_wqthread + 290 14 libsystem_pthread.dylib 0x00007fff6847a57b start_wqthread + 15 ); }

我的配置文件是 100% 正确的,我的证书也是如此。我不知道为什么会这样,我已经尝试了一切来让它安装/运行。我试过了:

  • 仔细检查了“运行”选项卡下的“方案”是否已发布
  • 确认选择了正确的配置文件
  • 从我的设备中删除应用程序
  • 创建新的配置文件
  • 更改我的捆绑包 ID
  • 创建新证书
  • 清理构建文件夹,重启 Xcode
  • 重新安装 Xcode
  • 删除派生数据文件夹

上述方法均未奏效。我已经在这工作了 2 天 - 非常感谢您的帮助。我能够将应用文件成功安装到我的设备的唯一方法是先将其上传到 TestFlight(每次我想测试一个小的更改时,我都无法做到这一点)。

【问题讨论】:

  • 您是否能够使用第二台设备验证这一点?
  • 是的,我尝试将应用程序安装到 2 个不同的设备上,每次都出现相同的错误。 @CodeBender
  • 您提到您最近更新到11.2,这是您第一次使用Xcode 11.x 构建吗?对于 Apple 开发者网站中的分发配置文件,有一个特定于 Xcode 11 的新选项&你在使用它吗?
  • 还在“构建系统”下的“文件”>“工作区设置”下您选择了什么?
  • 快把我逼疯了!!!我仍然有这个问题,这里的解决方案都没有解决它。还有其他想法吗?

标签: ios xcode


【解决方案1】:

转到文件 -> 工作区设置,并确保您的构建系统设置为旧版构建系统。

我在 Catalina 和 Xcode 11.2 上遇到了同样的问题,这为我解决了。

从 Xcode 11 开始,Apple 开始强制执行一些以前仅适用于基于 .ipa 提取的 AppStore 构建和设备构建的构建标准。

到目前为止我遇到过:

  • 对于旧项目或使用旧框架的项目的设备部署需要上述旧版构建系统设置
  • 删除未使用的架构以从存档中提取 ipa

【讨论】:

  • @drewster 我也有同样的错误,它与构建中未使用的架构有关。有时框架会在 arm 架构之上指定 x86 架构。运行script specified in this SO article 为我解决了这个问题。
  • 不幸的是,更改为旧版构建系统对我不起作用:/
  • 在这上面花了几个小时。我在工作区中添加了一个项目,该项目生成了我作为目标创建的框架。然后我将工作区中的主项目嵌入/链接到该框架项目。使用 11.2.1 GM 中的新构建系统,导出 IN HOUSE 将在受监督的设备上显示“无法安装...”。阅读这篇文章后,我切换到旧版构建系统。这样做是显示错误!!!告诉我 lipo 在归档时无法剥离错误的架构。所以这指向了正确的方向,然后我修复了没有正确构建的框架。谢谢你的遗产!
  • 旧版构建系统已弃用。这就是它在我的 Xcode 编辑器中显示的内容。
  • @Markus 是的,它已经被弃用了几年,但目前仍受支持。这确实意味着 XCode 可以在未来的任何日期停止支持。它可以让开发人员有机会在放弃对旧版构建系统的支持之前更新他们的项目。
【解决方案2】:

Xcode 11.2 于 2019 年 11 月 5 日被 Apple 弃用

即使你可以在你的设备上安装它,你也无法通过 AppStore:See here for logs

下载the latest valid to AppStore versionxip文件。

Xcode 11.2 有一些问题和崩溃 older iOS devices 并且无法安装在较新的 iOS 设备上。所以现在你可以:

所以解决方案是:

  1. 将 macOS 更新到 10.15.1
  2. 安装Xcode 11.2.1 GM seed
  3. 在更新的设备上构建并安装应用程序(13.2.2 现已推出)

【讨论】:

  • 现在正在下载 Xcode 11.2.1 GM 种子...如果它解决了问题,我会告诉你们。很高兴不仅仅是我 - 开始觉得我正在使用 Xcode 11.2 服用疯狂的药丸。
  • 根据链接的 SO 帖子,崩溃与具有 UITextView 的 iOS 13 之前的设备有关。那里没有关于“在较新的 iOS 设备上”的安装问题
  • 该帖子包含许多链接,因为Apple制造混乱。 @shim 但现在苹果接受了这个问题并完全弃用 Xcode 11.2 并将其从 AppStore 中删除。
  • 这个答案与问题无关,我使用 Xcode 11.2.1 测试了应用程序部署,问题仍然存在。我可以将应用程序部署到具有 Xcode 11.2.1 的设备的唯一方法是将“文件 -> 工作区设置 -> 构建系统”设置为“旧版构建系统”
  • @MojtabaHosseini 我什至无法解压缩文件夹。现在在它的中间 - 奇怪的是,它似乎每次几乎完成拆包时都会停止。谁知道这个文件夹有多大?是否应该花很长时间才能打开包装?
【解决方案3】:

在找到this solution 之前,我遇到了同样的问题。我必须清除所有旧证书和配置文件,然后使用“Apple Development”和“Apple Distribution”而不是“iOS...”选项创建新证书。

【讨论】:

    【解决方案4】:

    我也有同样的问题,问题是我使用的是非付费账户,免费开发配置文件总数已达到,所以你必须使用付费账户

    详情:

    失败原因:已达到免费开发配置文件的最大应用数量

    【讨论】:

    • 我遇到了同样的问题。我阅读了详细信息并随后意识到
    【解决方案5】:

    使用自动管理签名

    解决这个问题。

    【讨论】:

      【解决方案6】:

      我在第一次清洁时设法解决了这个问题:

      cmd + k
      shift + cmd + k
      

      然后我删除了 Deriving Data 的所有内容 文件夹的路径应该是这样的

      /Users/youruser/Library/Developer/Xcode/DerivedData
      

      或者你可以在里面查看

      Xcode -> Preferences -> Locations
      

      【讨论】:

      • 这对我有用!我只是做了前两个快捷方式(cmd + kshift + cmd + k,然后安装我的应用程序相应地进行了。
      【解决方案7】:

      这对我有用:

      1. 从设备中删除应用和配置文件
      2. 重新安装它们。

      【讨论】:

      • 经典解决方案:)
      • 使用 Xcode 11.3 多次面对这个问题,这是最快和最简单的解决方案。
      • 天啊!有时它很烦人,我已经更新了 pod,尝试了很多其他的东西,但这解决了我……奇怪
      【解决方案8】:

      对我来说,这是由于我在应用程序中添加的动态框架。最初,我为动态框架选择了(嵌入+不签名)选项。

      为此类框架将其更改为(嵌入和签名)解决了我的问题。

      【讨论】:

      • 刚刚添加了带有“Embed without Sign”的外部框架,遇到了同样的问题。将其更改为嵌入和签名 - 干得好!
      • 谢谢!! Cocoapods 创建的“Pods_MyApp.framework”需要“嵌入和签名”。就我而言,我需要按照你和 Shim 所说的去做。
      【解决方案9】:

      我在运行一个项目时遇到此错误,该项目在 Embed Frameworks 下有一个未选中 Code Sign on Copy 的库。勾选此项为我解决了这个问题。

      【讨论】:

        【解决方案10】:

        此问题仅与代码签名

        有关

        但是,这里要注意的关键点是,如果您使用的是 XCode 11.x 版本。 不仅是您项目中的代码签名,我们还应该检查我们添加到项目中的第三方 SDK 或依赖项中的代码签名。

        验证第 3 方 SDK 代码签名的步骤:

        1. 下载你需要的框架源码
        2. 使用 XCode 11.x 从源代码打开 .xcproj 文件
        3. 转到目标 -> 签名和功能 -> 选择所有选项卡 -> 捆绑标识符 如果您发现标识符中有任何不均匀,例如带有 4 个分隔符的标识符(例如:com.company.mac.app)

          改成com.*并回车。

        4. 确保使用 XCode 11.x 设置 XCODE 命令行工具

        5. 现在,使用以下命令重建 SDK,并在上述步骤 3 中完成更改

            carthage build --no-skip-current --cache-builds --platform iOS
          
        6. 现在复制从源代码的carthage文件夹生成的框架,并替换项目中现有的SDK。

        对项目中的所有 3rd 方 SDK 重复相同的流程。

        注意:确保在

        中将所有第 3 方 SDK 标记为 Embed & Sign
        Targets => General => Frameworks, Libraries, and Embedded Content
        

        【讨论】:

        • 投票支持捆绑标识符修复,这正是我的情况。
        • 就我而言,我需要将所有框架设置为“不嵌入”
        【解决方案11】:

        “-402620395 失败原因:找不到此可执行文件的有效配置文件。”

        我也遇到了这个问题并解决了:

        这意味着您的配置文件未设置为开发。您需要为开发创建一个新的供应配置文件,这与用于分发的配置文件集不同。然后,在签名和功能中,在 xcode 上的应用程序设置中,如果您想在设备上安装,请选择您的开发配置文件。不要担心与您的开发配置文件一起分发,您必须选择在推送到应用商店时要使用的配置文件(设置为无,您需要切换它)。

        另一种解决方案是选择自动管理登录设置,但在推送到您可能不想要的应用商店时设置了默认值。

        【讨论】:

        • 这才是真正的解决方案。谢谢!
        【解决方案12】:

        这可能是由于正在运行分发/发布方案。将方案更改为调试对我有用。希望这可以帮助某人。

        【讨论】:

        • 这并不能解决问题,它会导致捆绑包获取开发配置文件,而不是您可能想要的分发配置文件。
        【解决方案13】:

        尝试清理Provisioning Profiles[About]

        Xcode -> Window -> Devices and Simulators 
        -> Right click on your device -> Show Provisioning Profiles...
        -> Select Provisioning Profile -> - Remove selected profiles
        

        【讨论】:

          【解决方案14】:

          在我的情况下,问题是由 pbxproj 中的空框架引用引起的。删除它们后,问题得到解决。

          【讨论】:

            【解决方案15】:

            为此苦苦挣扎了很久。为我解决的问题是删除 Xcode 生成的所有缓存数据,例如设备支持、存档、派生数据等...

            【讨论】:

              【解决方案16】:

              对我来说,是因为我尝试使用的手表没有解锁,所以我不得不再次锁定和解锁手表,然后它就可以正常工作了。

              【讨论】:

                【解决方案17】:

                删除derivedData文件夹

                rm -rf ~/Library/Developer/Xcode/DerivedData
                

                【讨论】:

                  【解决方案18】:

                  经过一整天的精神痛苦,我解决了这个问题。

                  对于 WebDriverAgentRunner 包,WebDriverAgentRunner --> 构建设置 --> Product Bundle Identifier --> 提供自定义的包标识符名称

                  注意:复制您刚刚提供的包标识符名称。

                  移动到 WebDriverAgentRunner --> Info --> Bundle Identifier --> 在此处提供您刚刚复制的包标识符名称

                  对您要推送的 APP 包执行相同的步骤。

                  清理构建文件夹并开始构建,APP 应该可以顺利推送。在 Xcode 11.7 上测试

                  【讨论】:

                    【解决方案19】:

                    在 Xcode 12 中,我收到一个错误窗口:Unable to install "AppName"
                    我点击了Details,发现我的iPhone没有空间了。

                    【讨论】:

                      【解决方案20】:

                      这是一个协同设计问题。

                      您可以检查 iOS 设备日志以查看哪个框架出了问题。过滤“已安装”过程。您可以清楚地说出哪个框架代码设计是错误的。所以只要找出并修复它!

                      0x16fa53000 +[MICodeSigningVerifier _validateSignatureAndCopyInfoForURL:withOptions:error:]: 77: Failed to verify code signature of /var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.dABVKh/extracted/Your.app/Frameworks/xxx.framework : 0xe8008001 (An unknown error has occurred.)
                      0x16fa53000 -[MIInstaller performInstallationWithError:]: Verification stage failed
                      

                      【讨论】:

                      • 这是最有意义的,因为它准确地描述了问题所在
                      【解决方案21】:

                      在我的情况下,只需删除我手机中的现有构建,然后再次运行它即可完美运行。

                      【讨论】:

                        【解决方案22】:

                        这很奇怪,但对我来说 pod deintegrate 然后pod install 工作。

                        如果上述方法都不适合您,请尝试此解决方案

                        【讨论】:

                          【解决方案23】:

                          我在更新我的 MacOS(特定于 Big Sur)和 Xcode(到版本 12.5)后收到此错误消息。 对我来说,解决问题的只是从设备中删除应用程序并重新安装

                          【讨论】:

                            【解决方案24】:

                            是的,在多个xcodecocoapods 版本中多次遇到此问题。 当每个 pod 框架在项目中找不到特定的 info.plist 文件时,就会出现此问题。 当然不知道为什么pod install之后,每个pod框架都找不到info.plist。 就我而言,我已经手动链接到每个 pod 框架的 project main info.plist。 :) 如下所示。

                            在此之后,我可以成功地将应用程序安装到devicesimulator。 希望对大家有所帮助。

                            【讨论】:

                              【解决方案25】:

                              在“签名和功能”上使用自动签名

                              【讨论】:

                                【解决方案26】:

                                我的情况

                                最终解决方案:

                                • XCode 13.0升级到XCode13.1

                                根本原因

                                XCode 的错误,没有为 iOS 应用程序/项目生成正确的 Provisioning Profile

                                以后再说:

                                • 无法安装应用程序:Unable to install
                                • 无法调试应用程序:failed to get the task for process

                                这两个内部的具体错误原因是:

                                A valid provisioning profile for this executable was not found

                                【讨论】:

                                  【解决方案27】:

                                  对我来说,答案都不起作用。

                                  解决方案是让我进入您的项目,然后在“TARGETS”下选择您的项目。转到“Build Phases”->“[CP] Embeb Pods Frameworks”并取消选择“For Install Builds Only”。

                                  是的,默认情况下这是禁用的,但我曾因遇到问题而将其打开。

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2018-03-01
                                    • 2011-04-10
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2017-08-02
                                    • 1970-01-01
                                    • 2013-01-09
                                    相关资源
                                    最近更新 更多