规格: 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中 使此消息消失的框架(例如测试目标)。
答案 0 :(得分:0)
在使用AlamoFire第三方框架更新Swift 2.2项目时,我遇到了几个问题,就像您的问题包括可怕的dyld:未加载库......未找到图像。 花了几个小时阅读有关问题的不同解释,试图弄清楚自己,并实施许多建议的修复,我陷入了僵局。一些解决方案适用于模拟器,而不是iPhone,这让我(错误)鼓励继续尝试解决问题。
我最终得出结论,从一个干净的石板开始可能是一个更好的策略。我已经证明,一个新的Swift 3项目可以使用AlamoFire 4.0和其他第三方框架,如ReactiveSwift(通过cocoapds),没有问题。我认为这可能是一种通用策略,可以避免跟踪构建,构建阶段或文件位置问题的难度。
所以在这里。这很简单。创建一个新项目。使用cocoapods安装AlamoFire和所有其他框架并对其进行测试以确保其正常工作。此时删除要替换的文件,例如ViewController.swift和Main.Storyboard,然后拖动旧项目中的所有文件。在我这样做之前,我转换为swift 3以使事情更容易。我重建了这个项目,它第一次工作!即使故事板链接也像魔术一样被保存。工作1小时(如果那样)而不是几个!我希望这也适合你!