我在Xcode 8中的项目设置似乎有问题。问题如下:
添加新的Pod
时 - 假设Pod Firebase
- 安装有效,并将必要的文件添加到我的项目中。然后我可以做@Import Firebase
到目前为止一切都很好。但是,只要我引用Firebase
API示例:[FirApp configure];
- 一切都还可以 - Xcode上的自动完成功能按预期工作,没有问题。但是,在构建I时,会出现编译时问题:
架构arm64的未定义符号: " _OBJC_CLASS _ $ _ FIRAppIndexing",引自: AppDelegate.o中的objc-class-ref ld:找不到架构arm64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我能够解决此问题的唯一方法是在我的项目中手动添加_FIRAppIndexing.framework
,在Link Libraries with Libraries
为此,我只需将框架工作从项目导航器拖放到链接库下的正确部分即可。
这有时有效;与Firebase SDK的其他部分一样,我遇到运行时崩溃。
因此,为了尝试找到根本原因,我创建了一个全新的测试项目,使用Pod install
安装了Pods - 但是我没有必要手动将framework
添加到库中 - 它实际上甚至没有列在那里。
测试项目中的所有内容在编译和运行时都运行良好。
这使我相信我的项目设置中的某些内容导致了这一点。
我尝试过的事情
pod deintegrate
完全删除了cocoapods并将其全部删除
其他痕迹。然后做了一个干净的构建。然后Pod install
Podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'MyApp' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
use_frameworks!
# Pods for MyApp
pod 'Crashlytics'
pod 'AsyncDisplayKit', '>= 2.0'
pod 'Firebase'
pod 'Firebase/Messaging'
pod 'FBSDKCoreKit'
pod "HockeySDK", :subspecs => ['AllFeaturesLib']
pod 'Fabric'
pod 'FirebaseAppIndexing'
pod 'AFNetworking', '~> 3.0'
pod '1PasswordExtension', '~> 1.8.4'
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
end
GitHub示例项目
https://github.com/TanderZA/MyApp
我复制了我当前的项目 - 并删除了所有文件。问题仍然存在。您将看到项目由于链接器错误而无法编译,并引用了Firebase AP。 通过手动将框架添加到链库与库,您将看到它应该编译。但这不是它应该如何运作的。当前项目有一个infoPlist.strings的问题,我没有解决。但该项目正在该州展示该问题。
答案 0 :(得分:2)
顺便说一下,这是一个xcode错误
但试试这个:
这应解决问题。
答案 1 :(得分:1)
您是否尝试过使用框架?
# platform :ios, '10.0'
use_frameworks!
target 'MyApp' do
答案 2 :(得分:1)
我不确定,但我认为你需要的是pod 'Firebase/Core'
。不是pod'Firebase'。
This link包含可以使用的Firebase框架列表。
并且,在页面顶部的视频中,它说明了没有可以安装的单个pod,您需要根据所需的功能在podfile上设置每个pod。
我猜他们在pod 'Firebase'
的某些地方误导了我们。我不认为他们意味着它应该做的工作。
som尝试以下方法:
# Pods for MyApp
pod 'Firebase/Core'
pod 'Firebase/Messaging'
.
.
我知道你说过你在另一个新项目上工作了。
答案 3 :(得分:1)
我检查了这个项目,看来你已经搞乱了方案。
正确创建新方案然后再次安装pod,因为项目在Obj-C中,您不需要在podfile中启用框架。
评论如# use_frameworks!
还使用pod update
然后选择新方案并在其中构建项目。
如果你无法做到,请告诉我。