首页 > 解决方案 > Fabric 多目标错误:Crashlytics “致命错误:'Crashlytics/Crashlytics.h' 文件未找到”

问题描述

我使用的是Fabric,之前没有任何问题,直到我添加了一个“今日扩展”所需的新目标。

"Multiple Targets" of type "Today Extension"

我已经向这个新创建的目标添加了一个“运行”脚本构建阶段,其参数与“主要目标”相同,以及两个目标的 Info.plist 中的 Fabric 键。

Run Script: "${PODS_ROOT}/Fabric/run" hex_value.... hex_value...

当我构建项目时,我收到构建错误,指出:

fatal error: 'Crashlytics/Crashlytics.h' file not found

我的导入语句是这样的,并且位于共享并选择用于两个目标(目标成员资格)的文件中。

#import <Crashlytics/Crashlytics.h>

标签: iosobjective-cxcodegoogle-fabric

解决方案


Fabric 运行脚本是构建脚本的一部分,应该添加到每个目标中,并且应该是构建阶段列表中的最后一项。

例如,将运行脚本添加到“Today Extension”目标。

(注意:不需要将 Fabric 详细信息添加到“Today Extension”目标的 plist 文件中)。

找不到的头文件与“搜索路径”有关,如果 Fabric 是通过 CocoaPods 安装的。

确保 Podfile 为两个目标都安装了它。

编辑 Podfile 后运行“pod install”命令。注意:这两个目标都包括 Fabric。

例如

   platform :ios, '9.0'
  # Uncomment this line if you're using Swift
  # use_frameworks!

  use_frameworks!

  target 'MyApp' do
  pod 'Fabric'
  pod 'Crashlytics', '~>  3.9'
  end

  target 'MoTodayExtenstion' do
  pod 'Fabric'
  pod 'Crashlytics', '~>  3.9'
  end

  post_install do |installer|
  puts("Update debug pod settings to speed up build time")
  Dir.glob(File.join("Pods", "**", "Pods*{debug,Private}.xcconfig")).each do |file|
  File.open(file, 'a') { |f| f.puts "\nDEBUG_INFORMATION_FORMAT = dwarf" }
  end

请注意Podfile 中的post_install部分,此步骤更新/创建驻留在 Xcode 中的 xcconfig 文件。查看 Xcode 应用程序项目中的“Pods”文件夹;

这些文件中有几个变量

FRAMEWORK_SEARCH_PATHS 
GCC_PREPROCESSOR_DEFINITIONS 
HEADER_SEARCH_PATHS   
LD_RUNPATH_SEARCH_PATHS 
OTHER_CFLAGS 
OTHER_LDFLAGS 
PODS_BUILD_DIR
etc....

具体来说,“HEADER_SEARCH_PATHS”应该包含找不到的头文件的路径。


推荐阅读