使用 Parse 的 iOS SDK pod 子规范
Using Parse's iOS SDK pod subspecs
我正在尝试为 Parse 的 FacebookUtils 框架使用新的(?)CocoaPods 子规范。
pod 的自述文件说:
If you wish to use the Facebook or Twitter utils or ParseUI, you can
now leverage Cocoapods 'subspecs'
ruby
pod 'Parse/FacebookUtils'
pod 'Parse/TwitterUtils'
pod 'Parse/UI'
Note that in this case, the Parse framework will contain all headers
and classes, so you just have to use:
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: Symbol not found: _OBJC_CLASS_$_PFFacebookUtils
Referenced from: .../myapp.app/myapp
Expected in: .../MyApp/Frameworks/Parse.framework/Parse
将 FacebookUtils 子规范添加到 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'
。
我正在尝试为 Parse 的 FacebookUtils 框架使用新的(?)CocoaPods 子规范。
pod 的自述文件说:
If you wish to use the Facebook or Twitter utils or ParseUI, you can now leverage Cocoapods 'subspecs'
ruby pod 'Parse/FacebookUtils' pod 'Parse/TwitterUtils' pod 'Parse/UI'
Note that in this case, the Parse framework will contain all headers and classes, so you just have to use:
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: Symbol not found: _OBJC_CLASS_$_PFFacebookUtils
Referenced from: .../myapp.app/myapp
Expected in: .../MyApp/Frameworks/Parse.framework/Parse
将 FacebookUtils 子规范添加到 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'
。