子项目的依赖关系导致dyld:库未加载错误

时间:2016-12-16 19:13:28

标签: ios cocoapods

规格: Xcode 8.2, CocoaPods 1.1.1, OSX 10.12.2

我将项目拆分为2个项目。一个包含我的提供者(api调用,数据库访问等),另一个包含UI。

UI项目取决于提供者项目。我的配置正在使用模拟器,但不适用于设备。

在设备上,我得到:

  

dyld:未加载库:@ rpath / Alamofire.framework / Alamofire
  参考自:   /private/var/containers/Bundle/Application/EAD65532-DD02-4DA6-9877-7937F9D69F26/xxxxx.app/Frameworks/Providers.framework/Providers   原因:未找到图像

这是我的podfile:

use_frameworks!

workspace 'xxxxx.xcworkspace'

project 'xxxxx.xcodeproj'
project 'Providers/Providers.xcodeproj'


def shared
    pod 'QorumLogs'
    pod 'Reachability', '~> 3.2'
    pod 'RealmSwift'
end

target 'Providers' do
    project 'Providers/Providers.xcodeproj'
    pod 'Alamofire', '~> 4.0'
    pod 'Valet'
    pod 'Starscream'
    pod 'ChameleonFramework/Swift', :git => 'https://github.com/ViccAlexander/Chameleon.git'
    shared
end

target 'xxxxx' do
    project 'xxxxx.xcodeproj'
    platform :ios, '8.0'
    pod 'SwiftValidator', :git => 'https://github.com/i-schuetz/SwiftValidator.git', :branch => 'remove_delegate_callback'
    pod 'SwiftCharts', :git => 'https://github.com/i-schuetz/SwiftCharts.git'
    pod 'Google/SignIn'
    pod 'SwipeView', '~> 1.3.2'
    pod 'CMPopTipView', '~> 2.0'
    pod 'KLCPopup', '~> 1.0'
    pod 'ChameleonFramework/Swift', :git => 'https://github.com/ViccAlexander/Chameleon.git'
    pod 'HockeySDK'
    shared
end

我还在“嵌入式​​二进制文件”

下将提供者的二进制文件添加到我的UI目标中

似乎UI项目无法加载Providers项目的依赖项。不知道这是否有意义,但我也尝试将我的UI项目的配置嵌套在提供者中,在podfile中,并向其中添加inherit! :search_paths,但它也没有帮助。

仅当我在两个项目中使用相同的依赖项时才有效。

想法?

修改

我在执行pod install时也会收到此警告,不知道它是否相关:

  

[!] Podfile包含Podfile所做的框架目标   不包含主机目标(嵌入框架的目标)。如果这   项目是用于框架开发,你可以忽略这一点   信息。否则,将目标添加到嵌入这些目标的Podfile中   使此消息消失的框架(例如测试目标)。

1 个答案:

答案 0 :(得分:0)

在使用AlamoFire第三方框架更新Swift 2.2项目时,我遇到了几个问题,就像您的问题包括可怕的dyld:未加载库......未找到图像。 花了几个小时阅读有关问题的不同解释,试图弄清楚自己,并实施许多建议的修复,我陷入了僵局。一些解决方案适用于模拟器,而不是iPhone,这让我(错误)鼓励继续尝试解决问题。

我最终得出结论,从一个干净的石板开始可能是一个更好的策略。我已经证明,一个新的Swift 3项目可以使用AlamoFire 4.0和其他第三方框架,如ReactiveSwift(通过cocoapds),没有问题。我认为这可能是一种通用策略,可以避免跟踪构建,构建阶段或文件位置问题的难度。

所以在这里。这很简单。创建一个新项目。使用cocoapods安装AlamoFire和所有其他框架并对其进行测试以确保其正常工作。此时删除要替换的文件,例如ViewController.swift和Main.Storyboard,然后拖动旧项目中的所有文件。在我这样做之前,我转换为swift 3以使事情更容易。我重建了这个项目,它第一次工作!即使故事板链接也像魔术一样被保存。工作1小时(如果那样)而不是几个!我希望这也适合你!