Cocoapods项目设置问题

时间:2017-02-28 16:23:37

标签: ios xcode cocoapods

我在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
  • 将-objc添加到链接器标志

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的问题,我没有解决。但该项目正在该州展示该问题。

4 个答案:

答案 0 :(得分:2)

顺便说一下,这是一个xcode错误

但试试这个:

  1. 升级到最新版本的xcode和Pods
  2. 删除项目中的所有体系结构
  3. 清理项目
  4. 从开始添加arcitectures。
  5. 这应解决问题。

答案 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

更新广告连播

然后选择新方案并在其中构建项目。

如果你无法做到,请告诉我。