请求不在存档或iTunes Connect dSYM文件中的dSYM的结构

时间:2016-02-25 18:53:15

标签: ios objective-c swift crashlytics twitter-fabric

我安装了Crashlytics的应用程序。要获取它的dSYM文件,我总是去Window / Organizer,右键单击以在finder中显示,右键单击“显示包内容”并转到dSYM目录以获取它们。

在这个例子中,Crashlytics说它缺少一个dSYM文件,它是一个随机的数字和字母串(65cbd90a2b443d36ab7a6a419b797a71)。当我使用上述方法去寻找它时,我只看到一个名为MyApp.app.dSYM的文件和dSYM文件,这些文件是我通过CocoaPods整合的几个框架。我尝试使用拖放该文件,但Fabric坚持使用随机字符串。

我已尝试显示MyApp.app.dSYM的包内容,但除了“Contents”文件夹和带有DWARF子目录的“Resources”文件夹以及没有名为“我的应用程序“。

在审核这篇文章后,我99%确定我不能build an archive and resubmit it

我还尝试直接从iTunesConnect下载dSYM,如in this post所述。

我尝试“按原样”上传dSYM并将其压缩(dSYM.zip),但Fabric仍然希望随机字符串在本地存档和iTunesConnect上的dSYM中都不存在。

任何建议:我可能会得到Crashlytics要求的dSYM文件的其他方法非常感谢。

3 个答案:

答案 0 :(得分:11)

从iTunes Connect下载DSYM软件包时,您几乎就在那里!下载后,添加.zip扩展名,然后双击解压缩。

在制作的DSYM文件夹中,会有一个名为65cbd90a2b443d36ab7a6a419b797a71的文章(Crashlytics要求的文件)。如果它不在那里 - 仔细检查你在Crashlytics和iTunes连接上查看相同的版本。

仅将该文件上传到Crashlytics。

问题解决了。

答案 1 :(得分:7)

对于启用非Bitcode的应用,Crashlytics会自动上传您的dSYMs。如果您在应用中启用了Bitcode,那么您需要手动上传dSYM。

启用Bitcode的应用程序需要从Xcode下载他们的dSYM,然后将其上传到Crashlytics以表示崩溃。可以从Xcode的管理器下载支持Bitcode的应用程序的DSYM。选择应用程序的特定存档,然后单击“下载dSYM”按钮,将按钮将Bitcode编译的dSYM插入原始存档。

enter image description here

手动上传dSYM

如果您发现未收到dSYM,可以手动添加它们,方法是转到app settings page,选择一个应用,然后点击“缺少DSYM”标签上传dSYM。

enter image description here

要帮助找到dSYM所在的位置,请在打开的终端中运行此命令:

mdfind "com_apple_xcode_dsym_uuids == <UUID>"

要查找所有dSYM,请尝试

mdfind "com_apple_xcode_dsym_uuids == *"

此外,如果您将dSYM上传到Fabric,则应检查UUID是否与丢失的UUID匹配。在打开的终端中运行此命令将为您提供dSYM的UUID。

dwarfdump -u <PathToYourAppsDsym>

参考

Crashlytics Advanced Setup

答案 2 :(得分:2)

创建二进制文件时,符号位于文件内的特定位置。当没有符号时,崩溃日志将指示二进制中某些点的偏移,例如someFramework.someFunction +100

因此创建了一个dSYM文件来帮助索引特定二进制文件。重新归档修改后的代码库或项目将导致新二进制文件中的不同偏移量,因此您不能简单地重新归档和上载。

这就是为什么用例如release-v2.1标记你的git repo很重要,所以如果你需要,你可以返回并重新存档,并且偏移应该是相同的。

就Fabric而言,它需要一个dSYM文件的压缩版本,你发布的那个号码可能是zip文件的哈希值,我不是100%肯定的。

如果您的系统上安装了Fabric应用程序,则在设备上运行版本会导致自动上传dSYM文件(如果您反复构建和运行项目,可能会破坏上传带宽,但仍会上传每个文件每个版本的dSYM文件。)

你最好的选择是在你的git repo中找到确切的时间点,并在模拟器中重新运行应用程序,这应该上传dSYM,并希望与旧的配对,尽管我&#39;我不确定它会起作用。否则,如果您认为自己拥有完整的dSYM,请尝试压缩并上传。

如果这不起作用,您将不得不采用旧式方式并使用终端和崩溃日志中的偏移量手动重新对其进行符号化。这需要一些时间,但使用atos

可行
atos [-o AppName.app/AppName] [-l loadAddress] [-arch architecture]