如何调试“无效的捆绑包”错误,仅在提交到应用商店后才会发生

问题描述 投票:32回答:12

我的应用程序中有很多框架。应用程序在临时版本/企业版中正常运行。仅当我提交到应用商店进行testflight测试时,我才会从Apple收到此错误电子邮件:

亲爱的开发者,

我们发现您最近的交货中有一个或多个“我的应用程序的名称在这里”问题。要处理您的交付,请执行以下操作问题必须纠正:

无效的捆绑包-dylib搜索路径中不存在您的应用程序引用的一个或多个动态库。

一旦解决了这些问题,您就可以重新交付更正后的二进制文件。

问候,

App Store团队

这里没有具体信息。我该如何调试?

ios testflight appstore-approval
12个回答
33
投票

得到了Apple开发人员技术支持的答复,该答复说这是Apple方面的错误。这是下面建议的解决方法,对我不起作用:

要诊断此问题,应导出要发送到的IPAXcode的App Store。由于IPA是zip文件,因此您可以通过右键单击并说打开方式>存档将其解压缩效用。您应该在解压缩后找到主可执行文件文件夹结构并在命令行中运行otool以查看库列表:otool -L

您获得的路径列表应与您在内部找到的路径匹配IPA。您所有的库都应以@rpath开头。一个简单的此列表中所有内容与未压缩IPA文件夹的比较应该显示丢失的内容。

一旦您知道缺少什么,请进入Xcode构建阶段设置。复制文件或嵌入应有一个构建阶段包含缺少库的框架-您只需添加库到列表。如果您看不到这两个构建阶段中的任何一个,您可以通过添加新的“复制文件”构建阶段来重新创建它,设置框架的目标,并将库添加到列表中,确保已选中“代码登录副本”。

如果您在主二进制文件中找不到任何内容,请确保对您可能拥有的其他任何二进制文件执行相同的搜索,例如watchOS应用或iOS应用扩展。

如果您发现所有框架都处于此构建阶段,请查看您应用目标的“嵌入式二进制文件”部分常规页面,如果您看到多个级别的../ next,请告诉我到找到的二进制文件丢失。

请让我知道它是否适合您!


0
投票

有相同的问题。这是发生在我身上的原因,因为我的框架目标之一已添加到“与库链接二进制文件”中的主要目标中,但未添加到“目标依赖项”和“嵌入式二进制文件”中。


0
投票

我们遇到了同样的问题,即使经过all the steps(请参阅“缺少框架捆绑包”),唯一起作用的是禁用位码


0
投票

我还从苹果公司收到了类似的邮件:

亲爱的开发者,

我们确定了您的应用的最近交付中的一个或多个问题,“ ********。请更正以下问题,然后再次上传。

ITMS-90562:无效的捆绑软件-一个或多个动态库dylib搜索路径中不存在您的应用程序引用的内容。

最诚挚的问候,

App Store团队

我为手表应用使用了自己的框架。我通过在扩展目标中将框架选项更改为“无需签名嵌入”来解决了这个问题。默认选项是“不嵌入”。

enter image description here


12
投票

在将具有手表支持的应用上传到应用商店时,我遇到了相同的问题。

我能够使用第一个答案的提示来解决它,使用otool -L分析来自ipa或xcarchive的二进制文件。但是,问题不是我的框架(在@rpath),而是一个快速的lib。我注意到Frameworks文件夹中缺少libswiftWatchKit.dylib

适用于我的解决方案非常简单,只需在watch应用程序(或watch app扩展程序,但不能同时使用两者)的构建设置中设置EMBEDDED_CONTENT_CONTAINS_SWIFT=YES。之后,所有必需的swift库都已正确复制到归档文件中的watch app路径,并上载到app store正常。

显然,如果您仅在主应用程序的文件夹中提供必要的快速库,则watch应用程序可以工作并上传通行证。


11
投票

向我的项目添加自定义Swift框架之后,将应用程序上传到iTunes connect后,我收到了此电子邮件。

我从iTunes store收到此电子邮件,

Invalid Bundle-您的应用程序引用的一个或多个动态库不在dylib搜索路径中。

此问题的修复很简单,

第1步:确保将您的自定义框架添加到目标的常规选项卡中的嵌入式二进制文件中。enter image description here

第2步:在构建设置下,

主项目目标设置Always Embed Swift Standard Libraries = Yes

并为自定义框架目标设置Always Embed Swift Standard Libraries = No

这解决了我的问题,我能够将二进制文件上传到iTunes connect

Ref


3
投票

尝试过上述所有解决方案,但对我不起作用。

我最近在Xcode 10.1中遇到了这个问题,并且我的所有框架都得到了正确的引用(没有otool -L且所有内容都已对齐)。

[似乎苹果验证过程中有一些更改,可能是错误,可能不是苹果的终结,但是我以前的所有构建都已上载并经过验证,并且此后我未添加任何新框架。

将二进制文件上传到iTunesConnect时,会看到以下错误:

Invalid Bundle-引用的一个或多个动态库您的应用程序不在dylib搜索路径中。

Invalid Bundle-应用程序使用Swift,但是其中一个二进制文件无法链接到它,因为找不到它。检查应用程序是否捆绑使用“始终嵌入Swift”可以正确嵌入Swift标准库标准库”的构建设置,以及每个使用的二进制文件Swift拥有正确的嵌入式Swift标准搜索路径使用“运行路径搜索路径”构建设置的库。

我的解决方案:

  • 经过数天的调试,对我有用的是从Xcode组织者上载档案后禁用'包括iOS内容的位码'。似乎此选项修改了导致验证程序失败的二进制文件。

enter image description here

  • 或者您可以在构建设置中禁用位码

2
投票

我的问题:我在嵌入式框架中也遇到了同样的错误。

  1. App项目具有Custom Framework项目
  2. 自定义框架项目内部是另一个自定义框架项目

为模拟器和设备构建的应用程序没有问题,但没有通过Apple测试,返回了“无效的捆绑包”。

我像技术支持人员告诉Taha一样检查了包裹,一切都正确无误!

我的解决方案:我对项目进行了重组,以使两个自定义框架并排放置,并且一个框架不再嵌入另一个框架中。

这似乎是一个Apple验证问题,因为在设备和模拟器上一切正常,但是解决方法很简单。


2
投票

就我而言,在构建设置中,当我将以下内容添加到库的构建设置中时,此问题已得到修复:

 DYLIB_INSTALL_NAME_BASE = @rpath

提示是链接器警告:'您的图书馆的安装名称以“ /”开头,但不是来自指定的SDK'


1
投票

我有同样的问题,这是由于应用程序捆绑包的Frameworks子文件夹中没有一个框架。

我通过添加“复制字段”构建阶段并在其中添加缺少的.framework文件来解决此问题。


1
投票

此错误消息也在Apple技术说明TN2435中得到解决在应用程序中嵌入框架:https://developer.apple.com/library/archive/technotes/tn2435/_index.html

您可以在标题“ Missing Framework Bundle”下找到包含故障排除步骤的错误消息。


0
投票

所以我为此挣扎了两天。原来是我在存档中检查了UITests,以查看要归档的方案的构建。

[从存档中取消选中它,重新对其进行归档,然后对其进行验证(尽管在始终通过之前对其进行验证),然后“上传到AppStore”,但是我没有从Apple收到通知我无效的Swift支持的电子邮件。取而代之的是,我收到了一封已处理并很高兴的电子邮件!

© www.soinside.com 2019 - 2024. All rights reserved.