带有框架的iOS应用程序在设备上崩溃,dyld:未找到符号,Xcode 8

时间:2016-10-21 08:50:19

标签: ios xcode rx-swift carthage

我在Swift 3.0中启动了新的空项目并尝试使用RxAlamofire。我使用Carthage作为dependecies库(tutorial)但是我遇到了框架崩溃和消息:

dyld: Symbol not found: __TMp7RxSwift18ReactiveCompatible
  Referenced from: /Users/michu/Library/Developer/CoreSimulator/Devices/7249C3ED-2CBC-41E4-A66D-BBC010CD70CD/data/Containers/Bundle/Application/B625B9D2-687C-4703-A6BF-C9E5F8861F44/recipemaster.app/Frameworks/RxAlamofire.framework/RxAlamofire
  Expected in: /Users/michu/Library/Developer/CoreSimulator/Devices/7249C3ED-2CBC-41E4-A66D-BBC010CD70CD/data/Containers/Bundle/Application/B625B9D2-687C-4703-A6BF-C9E5F8861F44/recipemaster.app/Frameworks/RxSwift.framework/RxSwift
 in /Users/michu/Library/Developer/CoreSimulator/Devices/7249C3ED-2CBC-41E4-A66D-BBC010CD70CD/data/Containers/Bundle/Application/B625B9D2-687C-4703-A6BF-C9E5F8861F44/recipemaster.app/Frameworks/RxAlamofire.framework/RxAlamofire

我不知道哪里可能有问题。低于一般配置

general

2 个答案:

答案 0 :(得分:0)

在我的案例中:

  1. 在“Linked Frameworks a Libraries”下查找Foundation.framework,选择它并按下按钮上的减号(' - ')以删除此框架。
  2. 现在按下加号('+')并搜索Foundation.framework - 重新添加它,它应该可以修复你的崩溃。
  3. https://stackoverflow.com/a/24368642/3901620

答案 1 :(得分:0)

取自Carthage的github

“如果您正在为iOS,tvOS或watchOS构建

  1. 创建一个Cartfile,列出您要在项目中使用的框架。

  2. 运行carthage更新。这会将依赖项提取到Carthage / Checkouts文件夹中,然后构建每个文件夹。

  3. 在应用程序目标的“常规”设置选项卡的“链接的框架和库”部分中,将要使用的每个框架从磁盘上的Carthage / Build文件夹拖放。

    < / LI>
  4. 在应用程序目标的“构建阶段”设置选项卡上,单击“+”图标并选择“新建运行脚本阶段”。创建一个运行脚本,在其中指定shell(例如:bin / sh),将以下内容添加到shell下面的脚本区域:

    / usr / local / bin / carthage copy-frameworks

  5. 并在“输入文件”下添加要使用的框架的路径,例如:

    $(SRCROOT)/Carthage/Build/iOS/Box.framework
    $(SRCROOT)/Carthage/Build/iOS/Result.framework
    $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
    

    https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos