Xcode 10 测试版中的 Google Fabric
Posted
技术标签:
【中文标题】Xcode 10 测试版中的 Google Fabric【英文标题】:Google Fabric in Xcode 10 beta 【发布时间】:2019-01-22 23:37:15 【问题描述】:我安装了 Xcode 10 Beta 6 并更新了所有内容,在此过程中我遇到了 Fabric 的一个小问题。 Fabric 的网站对 Xcode 10 有特殊说明:
当我在 Xcode 10 中时,我会在具有我的 Fabric 密钥的运行脚本上转到构建阶段,在 Input Fields
部分下方有一个 + 号
当我点击 + 时,它会自动生成 $(SRCROOT)/newInputFile
,其中 newInputFile
会自动突出显示。
我不理解 Fabric 的说明。我是否在$(SRCROOT)/
之后复制$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
是否将INFOPLIST_PATH 替换为我的info.plist 的文件路径?
我已经尝试了所有这些选项,但 Fabric 在 Xcode 10 中仍然崩溃。我知道这是 Fabric,因为我在我的 App Delegate 的 didFinishLaunchingWithOptions
中注释掉了 Fabric.with([Crashlytics.self])
【问题讨论】:
来自 Fabric 的 Mike。您能否确认您安装的是哪个版本的 Fabric 和 Crashlytics 以及 macOS 版本? @MikeBonnell 嗨,迈克,在我的 Podfile 中,我有 pod 'Fabric',所以无论我猜是什么最新的稳定版本。 macOS 版本为 10.13.6 你能分享你看到的崩溃吗? 分辨率是多少? 这应该是最佳答案!谢谢 【参考方案1】:仅适用于 Xcode 10,在 Fabric 的最终设置中遇到问题的用户是您的项目。
从 Xcode 10 开始,您需要在 Build Phase 的 Input Files 字段中再进行一项设置。
您只需复制此 $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) 并粘贴到 Run Script 下的 Build Phase 的 Input Files 字段,如下图所示。
在此链接上阅读更多信息:https://fabric.io/kits/ios/crashlytics/install
【讨论】:
有人知道 $(INFOPLIST_PATH) 是什么吗? @kidnapper 只需复制并粘贴该行,无需为此进行任何更改。 @HardikThakkar 我知道。只是好奇那到底是什么。【参考方案2】:如果你的 info.plist 像这样在你的根目录中,我也遇到了同样的问题:
你应该像这样更改$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
:
【讨论】:
嗨!欢迎来到 ***!我建议您至少详细描述一下图像的内容,以便更好地了解要在其中寻找什么。 如果 info.plist 在子组中,我会将其更改为 subGroupName/info.plist 吗? @RubberDucky4444 我认为您不应该这样做,如果您在 Finder 中转到项目文件,您会看到所有文件都在您的项目名称的文件夹中,而 Xcode 中的组只是向您显示使用该 GUI,但文件的路径不会改变。我不太确定,但这对我来说很有意义。【参考方案3】:我完全按照 Mahdi RB 的建议做了。也按照official manual guide 上的步骤操作,没有用。
当我使用 XCode 构建时,我看到它处理了大约 2k 个任务。当我启动机器、打开 xcode 并执行存档时,fabric 构建通常可以工作。之后,大部分时间构建开始中断。我正在使用 18 年 3 月 3 日下载的最新结构和 crashlytics。这真的很奇怪,因为它适用于我的其他项目,只是这个失败了。这始于 XCode 10 - 版本 10.0 (10A255)。它与以前的 XCode 9 一起工作。
这是我所说的一些证据:
我的解决方法是在调用结构命令之前添加此命令。例如
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 链接,它指向一个快捷方式,而那个快捷方式指向一个真实的文件。不知道为什么会失败。我猜这与执行脚本时文件不存在有关。延迟解决了这个问题。我希望这会有所帮助。
出于隐私考虑,我删除了原始应用名称。【讨论】:
什么是“aaaaaaaaa” 它们是我的面料钥匙。它们应该与您的项目相匹配。如果你登录了fabric网站,应该是来自这里的东西:fabric.io/kits/ios/crashlytics/manual-install?step=1 您可以尝试在“fabric run”行前添加“sleep 15” 睡眠的解决方法对我有用.. 1 实际上可以做到【参考方案4】:fabric info.plist 错误可以通过更改 Xcode 工作区设置-->构建设置--> 旧版构建系统来解决
【讨论】:
【参考方案5】:进入目标的构建设置。找到“调试信息格式”。在调试和发布中将其从“DWARF”设置为“DWARF with dSYM File”
source
【讨论】:
【参考方案6】:我通过将“运行脚本”移动到构建阶段的底部解决了这个问题。当然我改成了“DWARF with dSYM File”和$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
。
【讨论】:
【参考方案7】:-
在构建阶段结束时添加脚本运行阶段。
将脚本阶段的 Shell 设置为
/bin/bash
。
将输入文件设置为:
(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.
Check image for more reference
【讨论】:
【参考方案8】:我的解决方案是用这样的大括号替换圆括号
$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH
在脚本阶段调用echo $(BUILT_PRODUCTS_DIR)
可以检查路径是否真实存在。使用圆括号在 Xcode 构建控制台中为我提供了以下信息“BUILT_PRODUCTS_DIR:找不到命令”
用大括号替换圆括号将打印实际路径,因此脚本最终对我有用。
【讨论】:
【参考方案9】:以上都不适合我。如果有人使用 Cocoapods,请执行以下步骤。
将$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
添加到运行脚本部分的输入文件。
将运行脚本框中的 ./Fabric.framework/run
替换为 "$PODS_ROOT/Fabric/run"
。
转到构建设置,搜索Debug Information
,将其更改为DWARF with dSYM File
。
至少对我有用。
【讨论】:
【参考方案10】:对我来说,将构建系统更改为“旧版构建系统”修复了归档错误。 要更改构建系统,请转到 File -> Workspace Settings,并将构建系统从默认的“New Build system”更改为“Legacy Build system”。
【讨论】:
以上是关于Xcode 10 测试版中的 Google Fabric的主要内容,如果未能解决你的问题,请参考以下文章