很久没写博客了,一是最近太忙,没空;二是不知道该写点啥。
前言
以前解析 Crash 的时候,我习惯用命令行工具,比如 symbolicatecrash
和 atos
。遇到特殊格式的 Crash log,比如友盟这样的,写个 Python 脚本就搞定了。
最近在工作中发现,不是所有人都喜欢用命令行,即使把脚本分享出去,用的人也是少数。索性就研究一下,写了职业生涯第一个 Mac App - SYM。
SYM 简介
先看看截图吧:
目前的 SYM 实现了以下功能:
- 自动解析崩溃日志,提取加载地址、UUID 等信息。
- 根据 UUID 自动匹配 dSYM 文件。
- 支持 Apple、友盟的崩溃日志格式。
- 自动高亮关键 frame。
原理
对于 Apple 的 crash log,SYM 通过调用 Xcode 里内置的那个 symbolicatecrash
Perl 脚本来符号化。而对于友盟,则在 SYM 上层通过日志解析来获取关键信息,然后通过 atos
来符号化。
dSYM 文件的自动匹配,是通过 Spotlight 来实现的。
下载地址
SYM 代码已开源,代码地址:https://github.com/zqqf16/SYM 。
PS: 第一个 Swift 项目,初学,较水,见谅
最新版本的下载地址:Github
开发感受
Mac
第一次接触 Mac App 的开发,一开始以为有 iOS 基础,没怎么看文档就直接上手了。结果发现 Mac 跟 iOS 差别很大,比如:
- 坐标系不一样
- NSWindow 的作用比 UIWindow 要大得多
- NSView 默认不是 layer-based 的,设置个 background color 都费劲
- NSTextView 怎么用怎么别扭
总的下来,感觉 Cocoa 比 Cocoa Touch 落后太多,整个开发过程都是面向 Stack Overflow 编程。
Swift
第一次用 Swift 写完整的 App,之前语法都没看全,用起来也不是很顺。比如:
- 超级强大的 enum
- struct 与 class 的选择
- Optional 用起来感觉并不是很方便
总之,用 Swift,就得给大脑重新切换个上下文,抛弃 Objective-C 的思想。但是 Swift 的很多东西又基于 Objective-C,有时候还不得不切换回来...
最后
很久不写东西,有点生了,见谅。
还有,欢迎使用 SYM。