简体   繁体   English

Firebase Crashlytics:缺少可选的 dSYM

[英]Firebase Crashlytics: missing OPTIONAL dSYMs

We've moved from fabric.io to Firebase and everything seems to be ok except one thing.我们已经从 fabric.io 转移到 Firebase ,除了一件事,一切似乎都很好。 We're using Unity 2019.2.6 , target platform is iOS , target architecture is " Universal ".我们使用Unity 2019.2.6 ,目标平台是iOS ,目标架构是“通用”。

For dSYMs uploading I pack dSYMs folder from *.xcarchive to dSYMs.zip and upload it to Firebase via the following code对于 dSYM 上传,我将 dSYMs 文件夹从 *.xcarchive 打包到 dSYMs.zip 并通过以下代码将其上传到 Firebase

./upload-symbols -gsp <path_to_plist>/GoogleService-Info.plist -p ios <path_to_dSYMs.zip>/dSYMs.zip

As a result I see the following lines in my terminal:结果,我在终端中看到以下几行:

Successfully submitted symbols for architecture arm64 with UUID <uuid_1> in dSYM: <path_to_unzipped_dsyms>/dSYMs/<myapp>.app.dSYM
Successfully submitted symbols for architecture armv7 with UUID <uuid_2> in dSYM: <path_to_unzipped_dsyms>/dSYMs/<myapp>.app.dSYM
Successfully uploaded Crashlytics symbols

After that I can see desymbolicated crashes in Crashlytics dashboard之后,我可以在 Crashlytics 仪表板中看到去符号化的崩溃

But also in Crashlytics dSYMs tab I see the following:但也在 Crashlytics dSYMs 选项卡中,我看到以下内容:

Missing dSYMs 

UID <uuid_3> Version <my_version> Status **Optional** Crash count <count_1>
UID <uuid_4> Version <my_version> Status **Optional** Crash count <count_2>
<...>

So the questions are:所以问题是:

  1. Why these missing dsyms are Optional ?为什么这些缺失的 dsym 是可选的?

  2. Where do these missing dsyms uuids are come from?这些丢失的 dsyms uuid 是从哪里来的?

  3. If these uuid_3, uuid_4 are uuids of architectures supported by my app and other than arm64 and armv7, then why they doesn't exsist in dSYMs.zip from *.xcarchive?如果这些 uuid_3、uuid_4 是我的应用程序支持的架构的 uuid,而不是 arm64 和 armv7,那么为什么它们在 *.xcarchive 的 dSYMs.zip 中不存在?

(dwarfdump shows only armv7 and arm64 architectures in *.xcarchive dSYMs) (dwarfdump 仅显示 *.xcarchive dSYM 中的 armv7 和 arm64 架构)

  1. Where can I find all required dsyms for my app?在哪里可以找到我的应用所需的所有 dsym?

Firebaser here - Firebaser在这里-

dSYMs will generate for all the binaries and frameworks in your app, and those will often be marked as "required" dSYMs. dSYM 将为您应用程序中的所有二进制文件和框架生成,并且这些通常会被标记为“必需”dSYM。 Frameworks you're linking in your app will also have dSYMs generated, and those will often be marked as "optional."您在应用程序中链接的框架也会生成 dSYM,这些通常会被标记为“可选”。 So, the required and optional dSYMs are coming from different libraries but in the end they're all coming from your app and any frameworks you're linking.因此,必需和可选的 dSYM 来自不同的库,但最终它们都来自您的应用程序和您正在链接的任何框架。

If you don't upload your optional dSYMs, the behavior you may see (most of the time) is that some of your crashes will not have a few of the stackframes symbolicated;如果您不上传可选的 dSYM,您可能会看到的行为(大部分时间)是您的某些崩溃不会有一些堆栈帧符号化; most likely in those cases your app ran through a method or two of a framework linked in your app, and you'll often see it surrounded by symbolicated stackframes from other libraries.在这些情况下,您的应用程序最有可能通过应用程序中链接的框架的一两个方法运行,并且您经常会看到它被来自其他库的符号化堆栈帧包围。 But, most of the time the optional dSYMs are not that important to upload to Crashlytics.但是,大多数情况下,可选的 dSYM 对于上传到 Crashlytics 并不那么重要。

Crashlytics will stop crash reports from coming through to your dashboard until any "required" missing dSYMs that are associated with that crash report are uploaded. Crashlytics 将阻止崩溃报告进入您的仪表板,直到上传与该崩溃报告相关联的任何“必需”缺失的 dSYM。 Once uploaded, the crashes will be processed and appear on your dashboard.上传后,崩溃将被处理并显示在您的仪表板上。 If only optional dSYMs are missing, those crashes will not be stopped from appearing on your dashboard.如果仅缺少可选的 dSYM,则不会阻止这些崩溃出现在您的仪表板上。

Finally, in terms of locating and uploading your dSYMs, I recommend starting here: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=ios .最后,在定位和上传 dSYM 方面,我建议从这里开始: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=ios You can use tools like dwarfdump -u </path/to/dSYMs> to check if the dSYMs you've downloaded match the UUIDs of the missing dSYMs in your dashboard.您可以使用dwarfdump -u </path/to/dSYMs>之类的工具来检查您下载的 dSYM 是否与仪表板中缺少的 dSYM 的 UUID 匹配。

DSyms are iOS-Artefacts that are created together with IPAs (aka the actual build files). DSym 是与 IPA(也就是实际的构建文件)一起创建的 iOS 人工制品。 They are not necessary to run an app, but can be used for Crashlytics (both Fabric & Firebase) to provide additional information on crashes.它们不是运行应用程序所必需的,但可用于 Crashlytics(Fabric 和 Firebase)以提供有关崩溃的其他信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM