如何使用 Fabric SDK 在 Swift iOS 应用程序中强制崩溃?
How do I force a crash in Swift iOS app with Fabric SDK?
我能找到的只有 Is there a quick way to force a crash?,它表示:
[[Crashlytics sharedInstance] crash];
我认为 Swift 会是
Crashlytics.sharedInstance.crash()
但这似乎不存在。 (也许文档已经过时并且不再适用,因为 Fabric 吞噬了 Crashlytics?)
我看到有一个 Crashlytics.crash(self:Crashlytics) ...没关系,friggin XCode 的完成对我来说总是失败的。请参阅下面的答案。
(如果它在您的 AppDelegate 以外的文件中,您将需要 import Crashlytics
,然后只需执行 Crashlytics.sharedInstance().crash()
在 firebase 中创建项目和应用程序
如果您有现有的 firebase 项目或创建 firebase 项目并在 firebase 控制台中创建新应用程序,请在 firebase 控制台中添加一个新的 iOS 应用程序。
将 Firebase 添加到 iOS 应用
首先,在第 1 步中,通过在向 firebase 创建 iOS 应用程序时添加包标识符来注册您的应用程序。在第 2 步中,下载配置文件 GoogleService-Info.plist 将其添加到您的工作区,如下图所示。
通过 CocoaPods 添加 Crashlytics SDK
首先,将 Crashlytics SDK 框架文件添加到您的项目中。对于大多数项目,最简单的方法是添加 Crashlytics CocoaPods。
pod 'Firebase/Core'
pod 'Fabric', '~> 1.7.2'
pod 'Crashlytics', '~> 3.9.3'
测试您的实施
启用 Crashlytics 调试模式:为了在调试模式下启用 crashlytics,我们需要在 AppDelegate.swift.
中将 Fabric.sharedSDK().debug 模式设置为 true
import UIKit
import Firebase
import Crashlytics
import Fabric
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
Fabric.sharedSDK().debug = true
return true
}
强制崩溃以测试实现:在撰写本文时,我有一个视图控制器,在 viewController 中间有一个名为 (Click to crash app) 的按钮。出于测试目的,当用户单击按钮时,应用程序崩溃了。
然后在模拟器或设备中查看以下代码和 运行 控制器并检查 Firebase 仪表板。您会发现所有崩溃报告。
import UIKit
import Crashlytics
class ViewController: UIViewController {
变量name:String!
var number:Int!
override func viewDidLoad() {
super.viewDidLoad()
name = "12"
}
@IBAction func crashBtnAction(_ sender: Any) {
//creshreportMethod()
print("name of the value",name)
var myDict = [String:Any]()
myDict = ["name":number!]
print("my dict value",myDict)
}
}
如果您的构建在启动时附加调试器,Crashlytics 无法捕获崩溃。调整构建设置以更改项目的调试信息格式:
在 Xcode 导航器中仍选择您的项目的情况下,打开构建设置选项卡。
单击选项卡顶部的全部以显示所有构建设置。
搜索“调试信息格式”。
使用 dSYM 文件将调试信息格式设置为 DWARF。
如果您使用的是新的 Firebase Crashlytics SDK,请注意 import Crashlytics
已被 import FirebaseCrashlytics
取代。 crash()
方法在新的 SDK 中不再可用。根据 Firebase 的建议,只需使用:
Swift:
fatalError()
对象 C:
assert(NO);
我能找到的只有 Is there a quick way to force a crash?,它表示:
[[Crashlytics sharedInstance] crash];
我认为 Swift 会是
Crashlytics.sharedInstance.crash()
但这似乎不存在。 (也许文档已经过时并且不再适用,因为 Fabric 吞噬了 Crashlytics?)
我看到有一个 Crashlytics.crash(self:Crashlytics) ...没关系,friggin XCode 的完成对我来说总是失败的。请参阅下面的答案。
(如果它在您的 AppDelegate 以外的文件中,您将需要 import Crashlytics
,然后只需执行 Crashlytics.sharedInstance().crash()
在 firebase 中创建项目和应用程序
如果您有现有的 firebase 项目或创建 firebase 项目并在 firebase 控制台中创建新应用程序,请在 firebase 控制台中添加一个新的 iOS 应用程序。
将 Firebase 添加到 iOS 应用
首先,在第 1 步中,通过在向 firebase 创建 iOS 应用程序时添加包标识符来注册您的应用程序。在第 2 步中,下载配置文件 GoogleService-Info.plist 将其添加到您的工作区,如下图所示。
通过 CocoaPods 添加 Crashlytics SDK
首先,将 Crashlytics SDK 框架文件添加到您的项目中。对于大多数项目,最简单的方法是添加 Crashlytics CocoaPods。
pod 'Firebase/Core'
pod 'Fabric', '~> 1.7.2'
pod 'Crashlytics', '~> 3.9.3'
测试您的实施
启用 Crashlytics 调试模式:为了在调试模式下启用 crashlytics,我们需要在 AppDelegate.swift.
中将 Fabric.sharedSDK().debug 模式设置为 trueimport UIKit
import Firebase
import Crashlytics
import Fabric
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
Fabric.sharedSDK().debug = true
return true
}
强制崩溃以测试实现:在撰写本文时,我有一个视图控制器,在 viewController 中间有一个名为 (Click to crash app) 的按钮。出于测试目的,当用户单击按钮时,应用程序崩溃了。
然后在模拟器或设备中查看以下代码和 运行 控制器并检查 Firebase 仪表板。您会发现所有崩溃报告。
import UIKit
import Crashlytics
class ViewController: UIViewController { 变量name:String! var number:Int!
override func viewDidLoad() {
super.viewDidLoad()
name = "12"
}
@IBAction func crashBtnAction(_ sender: Any) {
//creshreportMethod()
print("name of the value",name)
var myDict = [String:Any]()
myDict = ["name":number!]
print("my dict value",myDict)
}
}
如果您的构建在启动时附加调试器,Crashlytics 无法捕获崩溃。调整构建设置以更改项目的调试信息格式:
在 Xcode 导航器中仍选择您的项目的情况下,打开构建设置选项卡。 单击选项卡顶部的全部以显示所有构建设置。 搜索“调试信息格式”。 使用 dSYM 文件将调试信息格式设置为 DWARF。
如果您使用的是新的 Firebase Crashlytics SDK,请注意 import Crashlytics
已被 import FirebaseCrashlytics
取代。 crash()
方法在新的 SDK 中不再可用。根据 Firebase 的建议,只需使用:
Swift:
fatalError()
对象 C:
assert(NO);