具有以下项目结构:
CocoaPods支持这种设置吗?
我的第一个尝试是做这样的事情:
platform :ios, '9.0'
use_frameworks!
target 'App' do
workspace 'App.xcworkspace'
project 'App.xcodeproj'
pod 'Material'
end
target 'Framework' do
workspace 'App.xcworkspace'
project 'Framework/Framework.xcodeproj'
pod 'AFNetworking'
end
但是应用程序在启动时崩溃,并显示以下错误:
dyld: Library not loaded: @rpath/AFNetworking.framework/AFNetworking
Referenced from: /Users/ruenzuo/Library/Developer/Xcode/DerivedData/App-aayvulxvruuarudtheuilepmmctk/Build/Products/Debug-iphonesimulator/Framework.framework/Framework
Reason: image not found
这是有道理的,因为CocoaPods不知道应用程序和框架是否相关。实际上,在pod安装之后,我会收到以下警告:
[!] The Podfile contains framework targets, for which the Podfile does not contain host targets (targets which embed the framework).
If this project is for doing framework development, you can ignore this message. Otherwise, add a target to the Podfile that embeds these frameworks to make this message go away (e.g. a test target).
然后,我尝试将Framework目标嵌入到Application目标中,如下所示:
platform :ios, '9.0'
use_frameworks!
target 'App' do
workspace 'App.xcworkspace'
project 'App.xcodeproj'
pod 'Material'
target 'Framework' do
workspace 'App.xcworkspace'
project 'Framework/Framework.xcodeproj'
pod 'AFNetworking'
end
end
但这没有用。我设法使其正常工作的唯一方法是:
platform :ios, '9.0'
use_frameworks!
target 'App' do
workspace 'App.xcworkspace'
project 'App.xcodeproj'
pod 'Material'
pod 'AFNetworking'
end
target 'Framework' do
workspace 'App.xcworkspace'
project 'Framework/Framework.xcodeproj'
pod 'AFNetworking'
end
但是重复使用AFNetworking连盒就感觉我做错了。另外,我也没有摆脱警告,因此很明显,我只是通过使CocoaPods通过AFNetworking Pane 复制到应用程序Frameworks目录来强制其工作。
有没有人设法使类似的东西工作?
最佳答案
技巧是将框架目标添加到应用程序目标的“目标依赖项”构建阶段,如下所示:
由于某些原因,CocoaPods依赖于“目标依赖项”-仅使您的库/框架处于“与二进制库链接”阶段是不够的。您的Podfile
应该如下所示:
project 'CocoapodsTest'
target 'CocoapodsTest' do
pod 'AFNetworking'
end
target 'SampleLibrary' do
pod 'Masonry'
end
运行
pod install
之后,您可以检查应用程序目标的“其他链接器标志”,以验证它是否将应用程序和库的依赖项都转发到链接器:关于ios - 如何正确设置同时具有框架目标和使用该框架的应用程序目标的Podfile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43400739/