我正在使用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依赖项,则会出现运行时错误,应用程序崩溃并显示错误消息
Class Foo在HostApplicationPath和FrameworkProjectPath中实现,将使用其中一个。哪一个未定义。
为Firebase的每个类文件。
当我从框架项目中删除其他链接器标志$(继承)时,它工作正常,但我不能将firebase用于我的框架项目。
我的框架和主机应用程序是用Swfit 3.0编写的,xcode版本是8.x
我的项目结构是 我手动创建了一个工作区,并将其命名为“EVAWorkspace.xcworkspace”,并将我的宿主应用程序和框架项目添加到此工作区,然后我将cocoapods添加到工作区。
Eva是框架项目,EvaApp是主机应用项目。
答案 0 :(得分:0)
在尝试以下各项之前,请使用XCode中的“Clean Build Folder”选项,以确保每次都获得干净的构建。如果你想确实确定,你可以在开始之前删除DerivedData
中的~/Library/Developer/Xcode
文件夹(只需确保在删除Xcode时关闭它)
首先,确保您的Pod项目在其Build设置中将“Build Active Architecture”设置为NO
。然后尝试清理构建文件夹并重建。这可能会解决您的问题,否则请继续阅读。
您所描述的问题的最常见原因是:“架构X的未定义符号”是您在代码中导入了库但未正确链接库。
要解决这个问题,你应该:
将库添加到 “BuildPhases”中的 “链接的框架和库” < / p>
将库的路径添加到Build Settings下的 “Library Search Paths” ,然后将“-l {your library}”添加到“ 其他链接标记 “。
如果这不能解决您的问题,可能是链接器没有获得所需的标志。您可以尝试将$(继承)添加回构建设置的 “其他链接器标志” 部分。
在尝试这些技巧之前,不要忘记清理构建文件夹。
如果完成所有这些后问题仍然存在,请删除项目中所有Cocoapods创建的文件,然后在此处发布pod install --verbose
的输出。