我正在尝试将新的(?)CocoaPods子规用于Parse的FacebookUtils框架。
pod的自述文件说:
如果您想使用Facebook或Twitter工具或ParseUI,您现在可以利用Cocoapods的子规格'
ruby pod 'Parse/FacebookUtils' pod 'Parse/TwitterUtils' pod 'Parse/UI'
请注意,在这种情况下,Parse框架将包含所有标头和类,因此您只需使用:
swift import Parse
objc @import Parse;
导入主要的Parse类就是这样的。但是,Xcode编译器无法识别子指定的FacebookUtils和UI!
它只是说“PFFacebookUtils”是一个未声明的标识符。
注意:我在podfile的顶部使用use_frameworks!
,这导致我的“Link Binary With Libraries”列表中的Pods_PROJECT.framework。
我有点迷失在这里,真的很感激一些帮助。
更新:
我发现问题似乎是iMessage扩展的podfile部分:
target 'MyApp' do
pod 'Parse/UI'
pod 'Parse/FacebookUtils'
end
target 'iMessage App' do
pod 'Parse/Core'
end
不知何故,这会导致编译成功,但启动时崩溃并出现错误:
dyld:未找到符号:_OBJC_CLASS _ $ _ PFFacebookUtils 参考自:... / myapp.app/myapp 预期在:... / MyApp / Frameworks / Parse.framework / Parse
将FacebookUtils subspec添加到iMessage扩展时,崩溃消失了,一切都很好......除了FacebookUtils包含扩展中不允许的引用(UIApplication)。 >:U
崩溃是由CocoaPods脚本Pods-YourProject-frameworks.sh
安装Parse-Core-FacebookUtils-TwitterUtils/Parse.framework
和Parse-Core/Parse.framework
到完全相同的位置引起的,有效地覆盖了前者
install_framework "${BUILT_PRODUCTS_DIR}/Parse-Core-FacebookUtils-TwitterUtils/Parse.framework"
install_framework "${BUILT_PRODUCTS_DIR}/Parse-Core/Parse.framework"
我通过在CocoaPods运行脚本之前添加以下运行脚本来解决它
/usr/bin/sed -i '' '/Parse-Core\/Parse.framework/d' "${PODS_ROOT}/Target Support Files/Pods-YourProjectName/Pods-YourProjectName-frameworks.sh"
这将从CocoaPods脚本中删除违规行并解决崩溃问题。
注意:删除-Core
部分,如果您使用pod 'Parse'
而不是pod 'Parse/Core'
。