【问题标题】:iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta带有框架的 iOS 应用程序在设备上崩溃,dyld:库未加载,Xcode 6 Beta
【发布时间】:2014-08-11 14:35:11
【问题描述】:

此崩溃是一个阻塞问题,我使用以下步骤重现该问题:

  • 创建一个 Cocoa Touch 框架项目
  • 添加一个swift文件和一个类Dog
  • 为设备构建框架
  • 在 Swift 中创建单视图应用程序
  • 将框架导入应用项目
  • 在 ViewController 中从框架中实例化 swift 类
  • 在设备上构建和运行应用程序

应用程序在启动时立即崩溃,这是控制台日志:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
  Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
  Reason: image not found

我尝试在 iOS 7.1 和 8.0 设备上构建,它们都有相同的崩溃。但是,我可以构建一个应用程序并在模拟器上运行良好。另外,我知道我可以在 Link Binary With Libraries 中将框架更改为 Required 到 Optional,但它并没有完全解决问题,当我创建 Dog 的实例时,应用程序崩溃了。设备和模拟器上的行为不同,我怀疑我们无法使用 Xcode 的 beta 版本为设备分发框架。有人能解释一下吗?

【问题讨论】:

标签: ios swift crash frameworks dyld


【解决方案1】:

在目标的General标签中,有一个Embedded Binaries字段。当您在那里添加框架时,崩溃就解决了。

参考是 Apple 开发者论坛上的 here。

【讨论】:

  • 我在嵌入式二进制文件中有框架,并且复制阶段也设置为“框架”。无论如何它都会崩溃。
  • 这只能在调试模式下解决。归档或构建项目时会再次出现错误
  • 将@executable_path/Frameworks 添加到“运行路径搜索路径”解决了这个问题,即除了将框架添加到“嵌入式二进制文件”
  • 任何人都可以帮助如何从 POD 中添加嵌入式二进制文件中的框架?
  • 同上。我还想知道如何从 POD 添加,因为在 XCode 6.4 中使用 PODS 没有“常规 > 嵌入式二进制文件”
【解决方案2】:

适用于大于或等于 8 的 iOS

在目标的常规选项卡下,在嵌入式二进制文件部分添加框架。这会将框架复制到已编译的框架中,以便在运行时链接到它。

为什么会这样? : 因为您要链接到的框架被编译为动态链接框架,因此在运行时链接到。

** 注意:** 嵌入自定义框架仅在 iOS > 8 中受支持,因此适用于旧版本 iOS 的替代解决方案如下。

对于小于 8 的 iOS

如果您影响此框架(有权访问源代码/构建过程),您可以将此框架更改为静态链接而不是动态链接。这将导致代码包含在您编译的应用程序中,而不是在运行时链接到,因此不必嵌入框架。

** 方法:** 在框架的 Build Setting 选项卡下,在 Linking 部分,将 Mach-O Type 更改为 Static Library。您现在不需要将框架包含在嵌入式二进制文件下。

包含资产:要包含图像、音频或 xib/nib 文件等内容,我建议创建一个捆绑包(本质上是一个目录,更多信息请参见 bit.ly/ios_bundle),然后加载使用 NSBundle 从捆绑包中获取资产。

【讨论】:

  • 如果框架在 Pod 中,我如何将框架添加到嵌入式二进制文件?
  • “框架在 Pods 中”是什么意思?您的自定义框架是通过 CocoaPods 分发的吗?
  • 这应该是“大于或等于 8”。我也必须在 iOS 8 上执行此操作。
  • 错误Swift is not supported for static libraries
  • @TomazStoiljkovic 你明白了吗?我有同样的问题,我有我想构建为二进制的框架,但它依赖于通过可可豆荚的其他框架。
【解决方案3】:

仅仅将框架拖到您的项目中是不够的。这就像在同一个球场但找不到你的孩子。请按以下步骤操作:

1) 创建您的框架

  • 开发您的框架。
  • 开发完成后,COMMAND+B 构建您的框架并确保您收到“构建成功”。

2) 访问您的框架

  • 一旦您的框架项目成功构建,您就可以在项目的Products 文件夹中访问它。

  • 右键单击您的 .framework 并选择“在 Finder 中显示”。

3) 在您的项目中放置框架

  • 将 .framework 从 Finder 窗口拖放到应用项目的“Framework”文件夹中。

4)为框架配置应用项目

  • 选择项目的顶层

  • 选择你的目标

  • 转到“构建阶段”,然后转到“将二进制文件与库链接”,并确保包含您的框架并选择了可选。

  • 仍在“构建阶段”中,转到左上角并选择+ 按钮。在下拉菜单中选择“新建复制文件阶段”。

  • 向下滚动到新的“复制文件”部分并确保将Destination 设置为“框架”。将子路径留空。然后单击左下角的+ 按钮。

  • 您将看到您的项目层次结构。向下滚动到您在第 3 步中添加框架的“框架”文件夹,或在顶部的搜索栏中搜索它。选择您的框架并点击“添加”。

  • 确保您的框架包含在选中的“代码登录副本”中。

5)清理,然后运行您的项目

  • COMMAND+SHIFT+K
  • COMMAND+R

【讨论】:

  • 好点。它几乎对我有用。我做了一个框架 A,其中包括 Alamofire。我的主机应用程序(嵌入式框架 A)在模拟器中工作。但是当我尝试在真正的 iPhone 上运行它时,它会崩溃并出现错误:Alamofire: dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire 原因:找不到合适的图像。确实找到了:xxx/ddcdemo.app/Frameworks/iddc.framework/Frameworks/Alamofire.framework/Alamofire: mach-o,但是架构错误
  • @Brandon 使框架成为可选解决了我的问题。但是你能解释一下使框架成为可选的行为吗?
  • 谢谢!在您的第 5 步中,我选中了“仅在安装时复制”,这是我的问题。
  • 我在我的应用中找不到 Framework 文件夹
【解决方案4】:

首先尝试在 Command+Option+Shift+K 之后构建。如果仍然失败,请执行以下步骤。

如果有人在 Xcode 8 中遇到此错误,请在目标的“常规”选项卡下将您的框架状态更改为 可选,而不是“必需”。

【讨论】:

  • 这将使运行时无法识别框架中的类
  • @azimov 是正确的。我目前正面临这个困境。必需会导致“找不到图像”错误,如果我们尝试将其设置为可选,它将在运行时因“无法识别的选择器”而崩溃
  • 即使我的框架已经在 Link Binaries 和 Embed 中,我仍然需要添加一个复制阶段。 dyld:库未加载:@rpath/AFNetworking.framework/AFNetworking 引用自:/Users/{User}/Library/Developer/CoreSimulator/Devices/6833A85C-5783-45FA-A4D5-991D286B28C2/data/Containers/Bundle/Application/ B1A0A3B2-92A2-41B0-9884-6DB6995A0D7E/MyApp.app/MyApp 原因:找不到图像(lldb)解决方案:项目->目标->构建阶段->顶部添加新的复制文件阶段目标=框架选择框架需要复制的
  • @AdamMendoza 我的应用因此被拒绝。
  • @jbouaziz,是的,您可能遇到的错误是由于 .framework 太胖,这意味着除了必要的 armv7 arm64 之外,它还具有 iOS 不支持的架构,例如 i386 x86_64。商店会给你一个错误,但你可能在 Xcode 中看不到错误。使用 Xcode -> Open Developer Tool -> Application Loader 下的加载器。解决方案L让它变薄见-> ikennd.ac/blog/2015/02/…
【解决方案5】:

我使用 Swift3/Xcode 8.1 创建了一个框架,并在一个 Objective-C/Xcode 8.1 项目中使用它。为了解决这个问题,我必须在Build Options 下启用Always Embed Swift Standard Libraries 选项。

看看这个截图:

【讨论】:

  • 这对我在 at 确实有效。解决此问题的方法是转到 BuildPhases -> Copy Files -> 在 Destination 下选择 Framework 并添加您的框架。你的图书馆很可能在这里不见了。
  • @Harish,您建议的解决方案已经有几个人提出了建议,我首先肯定会解决这个问题。就我而言,框架已添加到那里,但仍然出现相同的问题。然后我自己挖。如果您对该解决方案投了反对票,我不知道为什么当它在我的情况下不起作用时您对自己的方式非常确定:S
  • @Harish 谢谢。你的回答对我的帮助更大,当然 NeverHopeless 也有 :) 谢谢你们
  • 这是唯一对我有用的东西。但我已经将框架“嵌入”到目标的Embedded Binaries 部分。那么为什么它会起作用呢?
  • 太棒了,因为如果使用 swift 库或 pod 嵌入到目标 C 项目中。 Objective C 项目经常有这个标志为否。
【解决方案6】:

我在 iOS 9.x 版本中遇到了同样的问题

问题是:我打开应用程序后立即崩溃,出现以下错误。

dyld:库未加载:/System/Library/Frameworks/UserNotifications.framework/UserNotifications 引用自:/var/containers/Bundle/Application/######/TestApp.app/TestApp 原因:找不到图片

我已通过将<b>Linked Frameworks and Libraries</b> 中的UserNotifications.framework 框架中的Required 更改为Optional 解决了这个问题。

【讨论】:

  • 这行得通。有人知道为什么吗?因为有些设备需要此设置,其他设备不需要。
  • 我收到“警告:无法执行支持代码来读取进程中的 Objective-C 类数据。这可能会降低可用类型信息的质量。”当我的库标记为可选时
  • 它成功了,可能是某些框架没有在模拟器中运行,这就是原因
  • @redent84 这个答案以及您的评论使我免于发疯。 AuthenticationServices.framework 遇到了这个问题,它需要 iOS 12。
【解决方案7】:

我必须(在此处提到的内容之上)将以下行添加到 Build Settings 选项卡下的 Runpath Search Paths:
@executable_path/Frameworks

【讨论】:

  • 这为我解决了这个问题。在向我的 iOS 9 应用程序添加应用程序扩展后,我开始遇到问题。在添加扩展之前,发现我的框架很好。添加复制文件构建阶段没有帮助,我已经嵌入了框架。
  • 奇怪的是默认不包含这个。如果您解压缩并查看您的 IPA,您应该在 Payloads/appname.app/Frameworks/ 中找到您的框架。但是,必须添加此搜索路径,应用程序才能在运行时查看此文件夹。很奇怪。
【解决方案8】:

您需要将框架添加到新的复制文件构建阶段,以确保在运行时将框架复制到应用程序包中。..

更多信息请参见How to add a 'Copy Files build phase' to my Target。

苹果官方文档:https://developer.apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html

【讨论】:

  • 在尝试了这么多事情之后,这就是为我解决的问题。我已经有了 Link Binary 和 Embed Framework 中的框架。我不认为我还必须添加复制阶段,但这解决了它。
【解决方案9】:

如果您使用的是 Xcode 11 或更新版本:

  1. 导航到目标设置并选择常规。

  1. 向下滚动到框架、库和嵌入式内容。

  2. 如有必要,请确保为 Embed 选项选择了 Embed & Sign 或 Embed without Signing 值。

【讨论】:

  • 我应该选择哪一个,这两个选项是什么意思?
  • 选择 Embed & Sign 会在 Build Phases > Embed Frameworks 下添加框架。这就像一条捷径。但是手动添加它对我不起作用。我不得不将其删除,然后选择“嵌入并登录”,然后问题就消失了。
【解决方案10】:

这是由Dynamic Linker引起的运行时错误

dyld: Library not loaded: @rpath/<some_path>
Referenced from: <some_path>
Reason: image not found

错误Library not loaded 和@rpath 表示Dynamic Linker 找不到二进制文件。

  1. 检查动态框架是否添加到front目标General -&gt; Frameworks, Libraries, and Embedded Content (Embedded Binaries)。使用Copy items if needed[About] 拖放框架以进行投影非常简单,并且错过了将框架添加为隐式依赖项
    Frameworks, Libraries, and Embedded Content(或签入Add to targets)。在这种情况下,在编译时 Xcode 将其构建为成功,但是当您运行它时会出现运行时错误

  2. 检查消费者(应用程序)和生产者(动态框架)之间的@rpath 设置:

  • 动态框架:
    • Build Settings -&gt; Dynamic Library Install Name
  • 应用:
    • Build Settings -&gt; Runpath Search Paths
    • Build Phases -&gt; Embed Frameworks -&gt; Destination, Subpath
  1. 框架的Mach-O file[About] - 动态库和应用程序的Frameworks, Libraries, and Embedded Content[About] - 不要嵌入。

动态链接器

Dynamic Library Install Name(LD_DYLIB_INSTALL_NAME) 被 loadable bundle(Dynamic framework 用作派生词)在其中 dyld 发挥作用
Dynamic Library Install Name - 二进制文件的路径(不是 .framework )。是的,它们具有相同的名称,但MyFramework.framework 是一个packaged bundle,其中包含MyFramework 二进制文件和资源。
此目录路径可以是绝对路径或相对路径(例如 @executable_path、@loader_path、@rpath)。相对路径更可取,因为它与锚点一起更改,当您将捆绑包作为单个目录分发时很有用

绝对路径 - Framework1 示例

//Framework1 Dynamic Library Install Name
/some_path/Framework1.framework/subfolder1

Relative path 允许您以动态方式定义路径。

@executable_path

@executable_path - 相对于加载框架的 executable 二进制文件
用例:Dynamic framework 内 Application(应用程序二进制路径 是@executable_path) 或更复杂的例子,App Extension[About] 是Containing App 的一部分,里面有Dynamic Framework。有 2 个 @executable_path 用于 Application 目标(应用程序二进制路径是 @executable_path)和 App Extension 目标(应用程序扩展二进制路径是 @executable_path)) - Framework2 示例

//Application bundle(`.app` package) absolute path
/some_path/Application.аpp

//Application binary absolute path 
/some_path/Application.аpp/subfolder1

//Framework2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

//Framework2 @executable_path == Application binary absolute path <-
/some_path/Application.аpp/subfolder1

//Framework2 Dynamic Library Install Name 
@executable_path/../Frameworks/Framework2.framework/subfolder1

//Framework2 binary resolved absolute path by dyld
/some_path/Application.аpp/subfolder1/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

@loader_path

@loader_path - 相对于导致框架被加载的包。如果它是一个应用程序,它将与@executable_path 相同
用例:带有嵌入式框架的框架 - Framework3_1 和 Framework3_2 内部

//Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1

//Framework3_2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1

//Framework3_1 @executable_path == Application binary absolute path <-
/some_path/Application.аpp/subfolder1

//Framework3_1 @loader_path == Framework3_1 @executable_path <-
/some_path/Application.аpp/subfolder1

//Framework3_2 @executable_path == Application binary absolute path <-
/some_path/Application.аpp/subfolder1

//Framework3_2 @loader_path == Framework3_1 binary absolute path <-
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1

//Framework3_2 Dynamic Library Install Name 
@loader_path/../Frameworks/Framework3_2.framework/subfolder1

//Framework3_2 binary resolved absolute path by dyld
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1/../Frameworks/Framework3_2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1

@rpath - 运行路径搜索路径

Framework2示例

以前我们必须设置一个框架来使用 dyld。这不方便,因为相同的框架不能用于不同的配置。由于此设置是在框架目标端进行的,因此无法为不同的消费者(应用程序)配置相同的框架

@rpath 是一个复合概念,依赖于外部(应用程序)和嵌套(动态框架)部分:

  • 应用:

    • Runpath Search Paths(LD_RUNPATH_SEARCH_PATHS) - @rpath - 定义将替换为 @rpath 的模板列表。消费者使用@rpath这个词指向这个列表

       @executable_path/../Frameworks
      
    • 查看Build Phases -&gt; Embed Frameworks -&gt; Destination, Subpath 以确定嵌入框架的确切位置

  • 动态框架:

    • Dynamic Library Install Name(LD_DYLIB_INSTALL_NAME) - 指出@rpath 与二进制文件的本地捆绑路径一起使用

      @rpath/Framework2.framework/subfolder1
      
//Application Runpath Search Paths
@executable_path/../Frameworks

//Framework2 Dynamic Library Install Name
@rpath/Framework2.framework/subfolder1

//Framework2 binary resolved absolute path by dyld
//Framework2 @rpath is replaced by each element of Application Runpath Search Paths
@executable_path/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

*../ - 转到当前目录的父目录

otool - 目标文件显示工具

//-L print shared libraries used
//Application otool -L
@rpath/Framework2.framework/subfolder1/Framework2

//Framework2 otool -L
@rpath/Framework2.framework/subfolder1/Framework2

//-l print the load commands
//Application otool -l
LC_LOAD_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2

LC_RPATH
@executable_path/../Frameworks

//Framework2 otool -l
LC_ID_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2

install_name_tool 使用 -rpath 更改动态共享库安装名称

CocoaPods 使用use_frameworks![About] 调节Dynamic Linker

[Vocabulary]

[Java ClassLoader]

【讨论】:

【解决方案11】:

在 Embedded Binaries 中添加框架

然后清理并构建。

【讨论】:

    【解决方案12】:

    令人惊讶的是,并非所有必要的部分都在这里记录,至少对于 Xcode 8。

    我的案例是作为同一工作区一部分的定制框架。事实证明,它的构建不正确。基于 jeremyhu 对此线程的最后回复:

    https://forums.developer.apple.com/thread/4687

    我必须在 Framework 项目的Build Settings 下设置Dynamic Library Install Name Base (DYLIB_INSTALL_NAME_BASE),然后重新构建它。它被错误地设置为$(LOCAL_LIBRARY_DIR),我不得不将其更改为@rpath。

    所以在 App 项目的链接处理阶段,它指示宿主 App 在运行时从 /Library/Frameworks/fw.Framework/fw(如运行时文件系统的根目录)动态加载框架,而不是比应用路径/Frameworks/fw.Framework/fw

    关于所有其他设置:确实必须在 Build Phases 中的 3 个位置,但是当您将其添加到 @ 的 Embedded Binaries 设置时,这些都是一次性设置的987654331@ 托管应用的标签。

    我确实没有必须设置一个额外的Copy Files 阶段,无论如何,这对于嵌入阶段来说似乎是多余的。通过检查构建记录的尾部,我们可以确保这不是必需的。

    PBXCp /Users/xyz/Library/Developer/Xcode/DerivedData/MyApp-cbcnqafhywqkjufwsvbzckecmjjs/Build/Products/Debug-iphoneos/MyFramework.framework
    

    [删除了许多冗长的行,但从 Xcode UI 中的简化脚本中可以清楚地看到。]

    我仍然不知道为什么 Xcode 错误地将 DYLIB_INSTALL_NAME_BASE 值设置在我身上。

    【讨论】:

    • 谢谢,这原来是我在 Xcode 11 中的问题。我正在导入我自己的一个框架,该框架以前可以工作,但开始发出“dyld: Library not loaded”错误。需要明确的是,您要在您尝试导入的框架的项目中将构建设置“动态库安装名称库”设置为“@rpath”,不是在您正在导入的项目中进入。不知何故,它被设置为“/Library/Frameworks”。
    • 很高兴这在 3 年后有帮助。相应地进行了编辑。
    【解决方案13】:

    最近在旧款 iphone(例如 iPhone 6)和 Xcode (11.3.1) 上导入 CoreNFC 时遇到了这个问题。我能够让它工作

    1. 在您的项目中,选择目标。
    2. 转到顶部的常规标签。
    3. 在“框架、库和嵌入式内容”部分下,添加框架(对我来说是 CoreNFC)。对其他目标重复此操作。
    4. 点击顶部的Build Phases并展开“Link Binary with Libraries”。
    5. 将麻烦的框架设为可选(从必需)。

    这使我无需更改任何代码即可为较旧/较新的 iPhone 进行编译。我希望这对其他人有帮助。

    【讨论】:

    • 不起作用,应用程序崩溃,并且在某些汇编代码上没有指示崩溃类型而不是断点的消息。
    • 为什么这需要成为可选的?
    【解决方案14】:

    我的环境:Cocos2d 2.0、Box2d、Objective C

    除了上面的其他答案之外,我最后去了常规选项卡并将 WatchKit 设为可选。

    【讨论】:

      【解决方案15】:

      在我的情况下,解决方案是从 Embedded Binaries 中删除已编译的框架,这是工作区中的一个独立项目,清理并重建它,最后重新添加到 Embedded Binaries。

      【讨论】:

        【解决方案16】:

        如果您使用第三方框架,并使用 Cocoapods 作为依赖项管理器,请尝试使用pod install 来刷新您的 pod。

        这个崩溃发生在我使用的第三方库上,很高兴上面的解决方案对我有用,希望它对你有用!

        【讨论】:

        • 太棒了!解决了我的问题。但是有没有办法避免在我的主机应用程序中安装 pod 依赖项?
        【解决方案17】:

        通过在 Build Phases->Embed Frameworks 上取消选择“仅在安装时复制”为我解决了问题

        【讨论】:

        • 如果系统不相信“调试安装”不是“安装”,那么知道这个复选框的意义会很好。无论如何,如果它导致应用程序在硬件上崩溃,而不是通过警告来禁止应用程序的运行,这就是另一个 Xcode 缺陷
        【解决方案18】:

        我有同样的问题。我尝试使用以前从未使用过的 iPhone 构建我的项目,并且没有添加新框架。对我来说,清理工作很好(Shift+Command+K)。也许是因为我使用 Xcode 7 的 beta 5 和带有 iOS 9 Beta 的 iPhone 6,但它确实有效。

        【讨论】:

        • 也许还有一个干净的构建文件夹(CMD+Shift+Alt+K)
        【解决方案19】:

        对于 Xcode 中使用 pod 的任何项目或框架项目,避免动态库 (dylb) 无法加载的一种简单方法是将 pod 文件设置为静态模式下的 ink。为此,请确保不要在您的 pod 文件中写入以下行。

        use_frameworks!
        

        从您保存的文件中删除该行后,只需从控制台运行:

        $ pod update
        

        【讨论】:

          【解决方案20】:

          就我而言,我的项目是由 Objective-c 编写的,并且在库中有 Swift 文件。所以我将项目构建设置选项卡中的“Always Embed Swift Standard Libraries”更改为Yes,结果完全没问题。

          【讨论】:

            【解决方案21】:

            简单的解决方案是按照这个截图然后崩溃就会消失:

            注意:这是 Xcode 11.5

            【讨论】:

              【解决方案22】:

              如果有开发 pod 从 pod 的模拟器安装中删除您的应用 -> 清理 -> 再次运行...

              【讨论】:

                【解决方案23】:

                当我创建一个新的配置和构建方案时也是如此。

                所以我的解决方案是运行

                pod install
                

                对于这个新创建的配置。

                【讨论】:

                  【解决方案24】:

                  对我来说,我必须将 XcodeKit.framework 从“不嵌入”->“嵌入和签名”切换

                  【讨论】:

                  • 这允许东西编译和运行,但我在上传到 App Store 时遇到了结构错误的模块问题。
                  【解决方案25】:

                  尝试将 Build Settings 中的标志 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES(在早期的 xcode 版本中:Embedded Content Contains Swift Code)从 NO 更改为 YES。

                  【讨论】:

                    【解决方案26】:

                    Xcode 11

                    1. 导航到目标设置并选择常规。
                    2. 查找“框架、库和嵌入式内容”
                    3. 保持“不嵌入”并确保您的所有目标(如果您有多个目标)只设置了自己的框架,而不是其他目标。

                    【讨论】:

                      【解决方案27】:

                      在 Xcode 11

                      我遇到了同样的问题

                      在常规选项卡 > “框架、库和嵌入内容” 中更改“不嵌入” 仍然会导致相同的错误。

                      为我解决的问题是在 Build Phases 选项卡 > Embed Frameworks 部分

                      中添加Framework

                      --更新--

                      我观察到在以前版本的Xcode中构建的项目中Embed Frameworks Section在Xcode 11中运行时不可用,请找到以下步骤来实现解决方案:

                      1:首先需要在Build Phases标签下添加New Copy Files Phase。

                      2:第二次将添加阶段的名称改为Embed Frameworks

                      3:将目标更改为Frameworks。

                      4:添加发生错误的框架。

                      【讨论】:

                        【解决方案28】:

                        对于 SumUp 用户,如果您要加载最新的 SumUpSDK.xcFramework,则需要确保从应用程序的 Target 的 General 选项卡中将其设置为“Embed & Sign”。

                        即把上面的说法颠倒过来(更容易理解):

                        1. 转到“项目导航器”(即显示所有项目项等的第一个图标)

                        2. 从树的顶部选择您的项目。

                        3. 在页面中间的菜单上(略向右),在“目标”下选择您的应用程序

                        4. 从顶部选项卡中,选择“常规”

                        5. 向下滚动到“框架、库和嵌入式内容”

                        6. 从列表中选择你的库

                        7. 从旁边的下拉列表中选择“嵌入并签名”。

                        8. 清洁

                        9. 重新构建并运行。

                        我希望这会有所帮助。

                        H

                        【讨论】:

                          【解决方案29】:
                          1. 转到 xcode 中的文件 -> 工作区设置
                          2. 点击/Users/apple/Library/Developer/Xcode/DerivedData旁边的箭头
                          3. 选择派生数据并将其移至废纸篓。
                          4. 关闭 xcode 并重新打开它。
                          5. 清理项目并再次运行。

                          以上步骤解决了我的问题。

                          【讨论】:

                            【解决方案30】:

                            在尝试了互联网上所有可用的方法和我自己的试错技巧 100 次之后。最后我能够解决它。 – Apeksha Sahu 6 分钟前
                            在 Mac 中转到 iTunes --> 帐户--> 授权这台计算机 – Apeksha Sahu 5 分钟前
                            第二步.... 在 iPad 和 iPhone 的设置中转到开发人员,并使用标识符重新索引并清除信任计算机的所有内容。它对我有用........ ....... 从 Mac OS seirra beta 最新版本重新安装 Mac OSHigh seria 10.13.15 版本后,在更新所有证书后重新安装 Xcode 最新版本。等等等等等等......尽可能多的方法,你可以认为我做了。 –

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 2015-11-19
                              • 1970-01-01
                              • 1970-01-01
                              • 2020-04-15
                              • 2014-08-08
                              • 1970-01-01
                              • 2011-12-24
                              • 1970-01-01
                              相关资源
                              最近更新 更多