Fabric 和 Objective C 中的多个目标上缺少 DYSM 错误
Posted
技术标签:
【中文标题】Fabric 和 Objective C 中的多个目标上缺少 DYSM 错误【英文标题】:Missing DYSM Error on multiple Target in Fabric and Objective C 【发布时间】:2016-08-08 09:09:52 【问题描述】:在我的应用中有两个目标:
Target 1 : MyApp - com.app.myapp
Target 2 : MyAppQA - com.app.myappQa
用于Fabric
注册的电子邮件ID 是same
用于两个目标。
我使用Fabric mac app
创建了两个应用程序。
在MyApp
中,Target Fabric 正在捕获所有崩溃并且工作正常。
但是当我使用目标MyAppQA
运行时,我得到Missing DYSM file error.
我无法理解为什么我的第二个目标没有捕获崩溃。
这是我尝试过的方法:
BitCode - 已禁用(虽然我没有使用 bitcode,但即便如此我也进行了交叉检查)
调试信息格式 - 使用 dSYM 文件设置为 DWARF(发布和调试)
尝试手动上传 DYSM 文件(我通过 Archiving the project 然后从右键 ClickMenu 中选择 ShowPackageContents 得到了 dysm 文件)
我已经尝试了互联网上所有可能的解决方案。而且我不想手动更新dysm,因为我现在没有iTunesConnect帐户。
【问题讨论】:
请检查崩溃日志是否显示在fabic仪表板中?? @MonikaPatel 不,我在仪表板中没有收到任何崩溃日志。 我已经在两天前集成了 crashlytics。并且集成成功。等等,我会详细提供所有步骤 请检查我的回答@RahulMishra 【参考方案1】:集成 Crashlytics 的步骤:-
1.在可可豆荚下方添加
pod 'Fabric'
pod 'Crashlytics'
2.在构建阶段添加一个运行脚本(对于这一步,您必须先登录到结构而不是获取 API 密钥)
"$PODS_ROOT/Fabric/run" 8252525b24e2d6fagsdg101ea7faf49edefa84ff3ec342b0dgsdrergadc2bd8agsdg50671jhga2ee8c017ddgsdg33fbbb
3.将您的 API Key 添加到 info.plist 文件中
<key>Fabric</key>
<dict>
<key>APIKey</key>
<string>your_key</string>
<key>Kits</key>
<array>
<dict>
<key>KitInfo</key>
<dict/>
<key>KitName</key>
<string>Crashlytics</string>
</dict>
</array>
</dict>
4.在AppDelegate文件中添加以下代码
AppDelegate.h:-
#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>
AppDelegate.m:-
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[Fabric with:@[[Crashlytics class]]]
5.对于强制崩溃在视图控制器的任何按钮点击事件上写下面的代码,不能写入应用委托文件
[[Crashlytics sharedInstance] crash];
6.更改构建设置:
click on project target >> Build setting >> Chnage value of “Debug information Format” set it to “DWARF with dSYM file”
click on project >> Build setting >> Chnage value of “Debug information Format” set it to “DWARF with dSYM file”
7.如何让应用崩溃
Xcode's debugger prevents us from processing crash reports.
To make sure a crash is reported during your simulator testing:
⁃ Launch simulator (Run your project and install app in simulator)
⁃ Press stop (stop from Xcode )
⁃ Launch your app and force a crash (Now do not run project, just open simulator and launch your app from simulator and press button that u write code for crash ` [[Crashlytics sharedInstance] crash];`)
⁃ Relaunch the app from simulator (again run app from simulator not from Xcode project)
⁃ See the crash report in the web dashboard
【讨论】:
感谢您的回答。我在运行脚本阶段缺少引号可能是因为我没有得到 DYSM 文件。 @MonikaPatel 欢迎来到@RahulMishra【参考方案2】:来自 Fabric 的 Mike。
上传 dSYM 后,我们将开始重新处理过去 7 天的所有崩溃,因此现在应该可以看到它。
要上传 dSYM,包括查看上传流程中的任何错误,您可以使用位于 Fabric OS X 应用程序 Fabric.app/Contents/MacOS/upload-symbols
和 Fabric CocoaPod 有效负载中 $PODS_ROOT/Fabric/upload-symbols
的 upload-symbols
脚本
使用以下命令运行脚本以上传给定文件夹中的所有 dSYM:
find <directory-to-search-for-dsyms> -name "*.dSYM" | xargs -I \\ /path/to/upload-symbols -a <api-key> -p <platform> \\
Documentation reference.
【讨论】:
感谢 Mike 抽出宝贵时间。抱歉迟了回应。尽管我对项目设置进行了一些更改并且它有效。我禁用了位代码并将调试信息格式更改为 DWARF,并带有用于调试和发布的 dysm 文件。我试过你的手动上传方式,它也有效。 :) 嗨@Mike,我第一次做这个运行脚本。如果你能举个例子,那将是一个帮助。谢谢 @MuhammadJabbar 您可能应该提出一个新问题,以免任何讨论与通过上传符号脚本上传 dSYM 混为一谈。 嗨@MikeBonnell,感谢您的回复。我找到了解决方案。 @MikeBonnell dsym 的位置将在运行时创建。那么我如何在运行脚本中指定它?鉴于此,派生数据文件夹不是静态的,每次运行应用程序时都会创建。如果我错了,请纠正我?以上是关于Fabric 和 Objective C 中的多个目标上缺少 DYSM 错误的主要内容,如果未能解决你的问题,请参考以下文章