在 Xcode 14 中使用没有 dSYM 的 Crashlytics

fph*_*elp 35 xcode ios firebase crashlytics

我的项目多年来一直在使用 Firebase 的 Crashlytics,并且我总是将 dSYM 文件从 App Store Connect 上传到 Firebase。然而,在 Xcode 14 中,Apple 取消了提交启用 Bitcode 的应用程序的功能,这意味着 dSYM 文件无法从 App Store Connect 下载。

我从 Xcode 14 向 App Store 上传了新版本,现在无法上传 dSYM 文件来查看应用程序中发生的任何崩溃。Crashlytics 甚至还有一个 dSYMs 部分来上传这些文件,但我无法上传任何内容

有没有人找到解决这个问题的方法?在不上传 dSYM 文件的情况下,自动上传崩溃从来没有真正对我有用过,并且只显示我使用方法手动记录的非致命崩溃Crashlytics.crashlytics().record(error: error)

我尝试过的:

  • 我已经多次查看了 Crashlytics 设置说明,它的调用似乎与 Xcode 更改之前相同。
  • 花了几天时间在互联网上搜索,但找不到任何适合这个的东西
  • 上传“myapp.app.dSYM”以及来自每个存档的“包内容”内的所有其他 .dSYM 文件(使用拖放到 Firebase 和脚本中的方式)

设置: 我附上了我的 Crashlytics 脚本的图像(来自 Crashlytics 教程)。我使用 Cocoapods 安装 Crashlytics,如下所示:

platform :ios, '14.0'

target `My App` do
   use_frameworks!
   pod 'FirebaseCrashlytics'
   pod 'Firebase/AnalyticsWithoutAdIdSupport'
end
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

先感谢您!我已经为此苦苦挣扎了一段时间,希望这也能对其他人有所帮助!

sac*_*red 7

我们也有同样的情况 - 在 xcode14(并且禁用位码)之后,存档文件夹内没有 uuid'ed dSYM,因此 Fabric 没有要上传的项目。

我们尝试上传一个大型 dsym AppName.app.dSYM,farbric 能够处理我们最新的崩溃日志。


Kvy*_*sky 5

我在 Xcode 14 中遇到了同样的问题,当我按“下载调试符号”时,出现下一个错误“未找到 dSYM”,但当您按(右键单击)存档时 -> 在 Finder 中显示 -> 显示包内容 -> 仍然存在 dSYM包含您可以上传到 crashlytics 的所有 dSYM 文件的文件夹。

Xcode 14 中 dSYMs 文件夹的屏幕截图


tim*_*mfr 5

我的团队遇到了同样的问题,随着苹果在应用程序构建中弃用位码,我们突然无法选择为我们刚刚发布的构建下载调试符号。在接下来的几天里,未解决的事件开始累积,我们担心我们只能忍受这一点,但幸运的是我们找到了解决方法!

您在问题中提到的构建脚本应该解析构建过程中生成的符号并将其上传到 Firebase。根据我们的经验,效果充其量是平庸的,因为我们总是必须手动上传符号,但我们认为我们可以在事后使用相同的脚本来上传 dSYM。

要运行该脚本,请使用终端。在以下示例中,假设您位于 iOS 项目的根目录:

./Pods/FirebaseCrashlytics/upload-symbols -gsp PATH/TO/GoogleService-Info.plist -p ios PATH/TO/DSYMS_DIR
Run Code Online (Sandbox Code Playgroud)

在我们的例子中,最终命令如下所示:

./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios ~/Library/Developer/Xcode/Archives/2022-09-30/myapp.xcarchive/dSYMs
Run Code Online (Sandbox Code Playgroud)

为了使这种方法发挥作用,重要的是使用在将构建上传到 AppStoreConnect 的计算机上生成的 dSYM 来运行脚本,我们一开始无法让它工作,因为我们是在另一台计算机上重建并使用新生成的符号。

  • 嘿!感谢您的指点。使用 Fastlane,我可以指定构建脚本将存档输出到 CI 工作文件夹,然后 upload-symbols 会自动在那里找到它 (2认同)

Ada*_*fer 5

苹果代表最近对此发表了看法

想必现在本地 dSYM 在直接上传到 Firebase Crashlytics 时应该正确符号化,而不是首先从 App Store Connect 下载它们(现在似乎不可能)。

如果您使用 Fastlane,该gym命令会导出一个名为 的环境变量DSYM_OUTPUT_PATH,您可以使用该变量将upload-symbols工具定向到您的Fastfile

upload_symbols_to_crashlytics(dsym_path: ENV["DSYM_OUTPUT_PATH"])
clean_build_artifacts
Run Code Online (Sandbox Code Playgroud)

当然,您需要为上传命令设置其余变量。如果我遇到问题,我会编辑我的答案。