在Xcode 10 beta中使用Google Fabric

22

我安装了 Xcode 10 Beta 6,并正在更新所有内容,在此过程中,我在 Fabric 方面遇到了一些小问题。Fabric 的网站有关于 Xcode 10 的特殊说明,如下:

Xcode 10 Instructions

当我在 Xcode 10 中时,我进入 Build Phases 并在 Run Script 下的 Fabric 密钥处有一个 + 号,位于 Input Fields 部分下面。

当我点击 + 号时,它会自动生成 $(SRCROOT)/newInputFile,其中 newInputFile 自动高亮显示。

我不理解 Fabric 的说明。我是否要将 $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) 复制到 $(SRCROOT)/ 后面?我是否要用 info.plist 文件路径替换 INFOPLIST_PATH?

我已尝试了所有这些选项,但 Fabric 在 Xcode 10 中仍然崩溃。我知道是 Fabric 的问题,因为我已在我的 App Delegate 的 didFinishLaunchingWithOptions 中注释掉了 Fabric.with([Crashlytics.self])


Fabric 的 Mike 在这里。您能确认一下您正在安装哪个版本的 Fabric 和 Crashlytics 以及 macOS 版本吗? - Mike Bonnell
@MikeBonnell 你好 Mike,在我的 Podfile 中,我有 pod 'Fabric',所以我猜是最新的稳定版本。macOS 版本是 10.13.6。 - RubberDucky4444
你能分享一下你遇到的崩溃问题吗? - Mike Bonnell
解析度是多少? - tzuer
这应该是最佳答案!谢谢。 - Mihail Salari
10个回答

21

仅适用于Xcode 10,面对在fabric最终设置项目时遇到问题的用户。

从Xcode 10开始,您需要在Build Phase's Input Files字段中进行一项额外的设置。

您只需复制此处的$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)并将其粘贴到Run Script下的Build Phase's Input Files字段中,如下图所示。

输入图像描述

了解更多,请访问此链接:https://fabric.io/kits/ios/crashlytics/install


1
有人知道$(INFOPLIST_PATH)是什么吗? - andrew54068
1
@kidnapper 只需复制并粘贴该行,无需更改任何内容。 - Hardik Thakkar
2
@HardikThakkar 我知道。只是好奇那具体是什么。 - andrew54068

12

我曾经遇到过同样的问题,如果你的 info.plist 文件在根目录下,像这样:

Root directory tree

你需要像这样更改 $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

Path image


你好!欢迎来到StackOverflow!我建议您至少详细描述一些图像内容,以便更好地了解要查找的内容。 - norok2
1
如果 info.plist 在一个子组中,我需要将其更改为 subGroupName/info.plist 吗? - RubberDucky4444
@RubberDucky4444 我认为你不应该这样做,如果你在Finder中打开项目文件,你会看到所有的文件都在以你的项目名称命名的文件夹中,而Xcode中的组只是用GUI显示给你看,但文件的路径并没有改变。我不太确定,但这对我来说是有道理的。 - andrew54068

6
我完全按照Mahdi RB的建议去做了,也遵循了官方手册指南中的步骤,但都没有奏效。
当我使用XCode进行构建时,我看到它处理了大约2k个任务。通常情况下,当我启动机器、打开XCode并执行存档操作时,Fabric构建通常会起作用。之后,这种构建大多数时间都会出现问题。我下载了最新版本的Fabric和Crashlytics,日期为2018年10月3日。这真的很奇怪,因为它对我的其他项目有效,只有这一个失败了。这是从XCode 10 - Version 10.0 (10A255)开始的。而在之前的XCode 9中它是可以工作的。
以下是一些我所说的证据: XCode pic 我的解决方法是在调用Fabric命令之前添加此命令。例如:
sleep 15
"${PROJECT_DIR}/Fabric.framework/run" aaaaa aaaa

我在我的Mac控制台应用程序中注意到了很多这种错误,不确定它是否相关:
IBAgent-iOS - assertion failed - libxpc.dylib - and some numbers here.

XCode报错

2018-10-03 13:53:58.698 uploadDSYM[46168:550157] Fabric.framework/run 1.7.2 (210)
2018-10-03 13:53:58.704 uploadDSYM[46168:550157] Using API Key: "123"
2018-10-03 13:53:58.704 uploadDSYM[46168:550157] Launched uploader in validation mode
error: Fabric: Info.plist Error

Unable to process Info.plist at path /Users/someuser/Library/Developer/Xcode/DerivedData/SampleApp-amwweapikvrbgafmmnyeyorkiufq/Build/Intermediates.noindex/ArchiveIntermediates/SampleApp/BuildProductsPath/Release-iphoneos/SampleApp.app/Info.plist
This could be a timing issue, make sure the Fabric run script build phase is the last build phase and no other scripts have moved Inspector.app from the location Xcode generated it. You can also add '$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)' as an "Input Files" dependency for your Fabric run script build phase.

我试图打开那个plist链接,它指向一个快捷方式,而那个快捷方式又指向一个真正的文件。不确定为什么会失败。我猜想可能与文件在脚本执行时不存在有关。延迟修复了这个问题。希望这能有所帮助。

  • 出于隐私保护考虑,我删除了原始应用程序名称。

什么是“aaaaa aaaa”? - RubberDucky4444
这些是来自 Fabric 的我的密钥。它们应该与您的项目匹配。如果您已登录 Fabric 网站,则应该从此处获取:https://fabric.io/kits/ios/crashlytics/manual-install?step=1 - Danilo Gomes
1
你可以尝试在“fabric run”行之前添加“sleep 15”。 - Danilo Gomes
解决方法是使用sleep,这对我很有效。实际上,我可以做到这一点。 - OneBigQuestion

2
进入您的目标构建设置。找到“调试信息格式”。将其从调试和发布中的“DWARF”设置为“带有dSYM文件的DWARF”。 来源 设置图像

2

将Xcode工作区设置更改为“构建设置” ->遗留构建系统,可以解决fabric info.plist错误。

翻译后的内容是:更改Xcode工作区设置为“构建设置” ->遗留构建系统,即可解决fabric info.plist错误。


1
我通过将"运行脚本"移到编译阶段的底部解决了这个问题。当然,我改成了"DWARF with dSYM文件"和$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

1
  1. Add script run phase at end of build phases.
  2. Set Shell for script phase to /bin/bash.
  3. Set input files to:

    (1) $(PROJECT_DIR)/$(INFOPLIST_FILE).
    (2) $(PROJECT_DIR)/Scripts/set_bundle_build_number.sh 
        Change path to path of  script so changes you make to the script 
        cause a re-run.
    (3) $(TARGET_BUILD_DIR)/$(INFOPLIST_PATH) 
         Fixes XCode 10 issues of duplicate output phases.
    

查看更多参考图片


0
我的解决方案是将圆括号替换为花括号,像这样: ${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}
如果在脚本阶段调用echo $(BUILT_PRODUCTS_DIR),您可以检查路径是否实际存在。使用圆括号会在Xcode构建控制台中给我以下信息:“BUILT_PRODUCTS_DIR:未找到命令”,而将圆括号替换为花括号将打印实际路径,因此脚本最终对我起作用了。

0

对我来说,将构建系统更改为“Legacy Build system”解决了归档错误。 要更改构建系统,请转到“文件” ->“工作区设置”,并将构建系统从默认的“New Build system”更改为“Legacy Build system”。


0

以上方法都对我没用。如果有人使用Cocoapods,请执行以下步骤。

  1. 在“Run Script”部分的“Input Files”中添加$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

  2. 将“Run Script”框中的./Fabric.framework/run替换为"${PODS_ROOT}/Fabric/run"

  3. 进入“Build Settings”,搜索Debug Information,将其更改为DWARF with dSYM File

对我来说有效,至少。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接