有以下项目结构:
- 应用程序目标位于Xcode项目(App.xcodeproj),依赖于位于不同Xcode项目中的框架目标(Framework.xcodeproj)。
- 应用程序目标依赖于Material Pod
- 框架目标依赖于AFNetworking Pod。
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 install后我收到以下警告:
[!] 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 pod 让我感觉做错了什么。而且,我没能成功消除警告,很明显我只是通过让 CocoaPods 将 AFNetworking pod 复制到应用程序框架目录中来强行解决这个问题。
有人成功实现过这样的操作吗?