Aardvark
Aardvark 使得创建可操作的错误报告变得非常简单。
Aardvark 由一组框架组成,提供不同的错误报告和日志记录组件。
- CoreAardvark - Aardvark 的核心结构。可以安全地在应用扩展中运行。
- Aardvark - 构建错误报告的核心工具。
- AardvarkMailUI - 一种使用电子邮件编辑器发送错误报告的错误报告实现。
- AardvarkLoggingUI - 用于在 iOS 应用中查看 Aardvark 日志的 UI 组件。
入门指南
使 Aardvark 日志记录和错误报告运行起来,只需三个步骤。
1) 安装 Aardvark
最快的方式是将 AardvarkMailUI 框架作为一个依赖项添加进来,以便 Aardvark 能够正常运行。
CocoaPods
使用pod 'AardvarkMailUI'
Carthage
使用github "Square/Aardvark"
使用 Git Submodules
使用以下命令手动检出子模块: git submodule add [email protected]:Square/Aardvark.git
,将 Aardvark.xcodeproj 拖动到您的项目中,并列 AardvarkMailUI 作为构建依赖项。
2) 使用单次方法调用设置电子邮件错误报告
最好在加载应用程序 UI 时执行此操作。
In Swift
Aardvark.addDefaultBugReportingGestureWithEmailBugReporter(withRecipient:)
In Objective-C
[Aardvark addDefaultBugReportingGestureWithEmailBugReporterWithRecipient:]
log
替换 print
的调用。
3) 用 在 Swift 中,用 log
替换 print
的调用。在 Objective-C 中,用 ARKLog
替换 NSLog
。
报告错误
完成上述操作后,用户可以通过双指长按手势来报告错误。此手势触发了显示警报窗口,询问用户出了什么问题。当用户输入此信息时,将生成一个包含附加应用程序截图和包含最后 2000 个日志的文本文件的电子邮件错误报告。屏幕截图由 Aardvark 创建和存储,不需要相机胶卷访问。
想要在设备上查看日志吗?添加 AardvarkLoggingUI 框架作为依赖,并在屏幕上推送一个 ARKLogTableViewController 实例来查看日志。
性能
日志被分配到内部后台队列上的日志记录器,永远不会减慢您的应用程序的运行速度。观察到的日志被逐步附加到磁盘上,而不是存储在内存中。
要启用未捕获异常的日志记录,请调用 ARKEnableLogOnUncaughtException()
。当发生未捕获异常时,堆栈跟踪将被记录到默认日志分配器。要在示例应用程序中测试此功能,请至少在屏幕上按住一只手指5秒钟。
一旦异常被记录,就会传播到任何现有的未捕获异常处理器。默认情况下,异常将被记录到默认的日志分发器。要记录到不同的分发器,请调用 ARKEnableLogOnUncaughtExceptionToLogDistributor(...)
。您可以通过多次调用该方法来启用对多个日志分发器的记录。
自定义Aardvark
想要自定义如何提交错误报告?传递符合 ARKBugReporter 协议的自己的对象以及所需的 UIGestureRecognizer
子类到 [Aardvark addBugReporter:triggeringGestureRecognizerClass:]
。您可以通过修改返回的手势识别器来进一步自定义错误报告的触发方式。
想要更改日志的格式吗?或者为不同的功能使用不同的日志文件?或者将日志发送到第三方服务?请查看 日志文档。
想使用Aardvark进行日志记录,但又不想使用Aardvark的错误报告工具?将依赖项更改为对 Aardvark
的依赖,并在入门指南的第 #2 步跳过。
扩展
- AardvarkReveal 提供了生成包含 Reveal 文件的错误报告附件的组件,这在调试UI问题时非常有帮助。
- AardvarkCrashReport 提供了生成包含崩溃报告的错误报告附件的组件,无论是来自最近启动的应用崩溃还是显示每个线程当前状态的实时报告。
需求
- Xcode 11.0 或更高版本
- iOS 12.0 或更高版本
- watchOS 4.0 或更高版本
贡献力量
欢迎您对Aardvark感兴趣,并且非常乐意看到您能将它带到哪里。请在提交Pull Request之前阅读我们的贡献力量指南。
谢谢,祝您使用愉快!