Firebase Analytics与iOS框架开发项目
我正在使用coocapods添加Firebase分析,我的Podfile是
platform :ios, '8.0' use_frameworks! workspace 'ProjectWorkspace.xcworkspace' abstract_target 'Shows' do pod 'SwiftProtobuf', git: 'https://github.com/apple/swift-protobuf.git', :tag => '0.9.24' pod 'Firebase/Core' pod 'Firebase/Messaging' target 'HostApp' do project 'HostAppFolder/HostApp.xcodeproj' end target 'HostAppReleaseTarget' do project 'HostAppFolderApp/HostApp.xcodeproj' end target 'FrameWorkProject' do project 'FrameworkProjectFolder/FrameWorkProject.xcodeproj' end end
如果我只将SwiftProtobuf作为依赖项添加,它对于主机应用程序以及Framework项目都可以正常工作。
如果我添加Firebase依赖项,则会出现运行时错误,并且应用程序会因错误消息而崩溃
Foo类同时在HostApplicationPath和FrameworkProjectPath中实现,其中一个将被使用。 哪一个是未定义的
为Firebase的每个类文件。
当我从框架项目中删除其他连接器标志$(inheritance),它工作正常,但我不能使用firebase到我的框架项目。
我的框架和主机应用程序是用Swfit 3.0编写的,而xcode版本是8.x
我的项目结构是我已经手动创build一个工作区,并将其命名为“EVAWorkspace.xcworkspace”,并将我的主机应用程序和框架项目添加到此工作区,然后我将cocoapods添加到工作区。
Eva是框架项目,EvaApp是主机应用程序项目。
在尝试以下每个步骤之前,请使用XCode中的“清理生成文件夹”选项,以确保您每次都能清理生成 。 如果你想确定,你可以在开始之前删除~/Library/Developer/Xcode
的DerivedData
文件夹(只要确保Xcode在删除的时候是closures的)
首先,确保您的Pods项目的Build Build Only设置为NO
。 然后尝试清理构build文件夹并重build。 这可能会解决您的问题,否则请继续阅读。
您所描述的问题最常见的原因是:“架构X的未定义符号”是您已经在代码中导入了一个库,但没有正确链接到它。
要解决这个问题,你应该:
-
在“BuildPhases”中将库添加到“链接的框架和库 ”
-
将库的path添加到“生成设置”下的“库searchpath” ,然后将“-1库”添加到“ 其他链接程序标志 ”。
如果这不能解决你的问题,那可能是链接器没有得到所需的标志。 您可以尝试将$(inheritance)添加回Build Settings的“Other Linker Flags”部分。
在尝试这些技术之前,不要忘记清理您的构build文件夹。
如果在完成所有这些之后,问题仍然存在,请删除项目中所有Cocoapods创build的文件,然后在此处发布pod install --verbose
的输出。