一、被动式
主要通过捕获系统异常,记录并打印异常日志上传至后台,通常使用第三方统计平台(友盟、bugly、Google Analysis),以下是我处理崩溃的途径:
1、友盟统计平台收集的日志
便于定位问题,建议将上传至商店的打包好中dSYM文件,压缩成 zip 格式,上传友盟崩溃日志中,对应版本的符号表管理中。
注:每个版本都要有备份,要不就不能解析并定位问题了。
2、Xcode 工具收集的日志(路径:window->Organizer->Crashes)
二、主动式
1、预防崩溃 AvoidCrash可以有效截获由于数据异常导致崩溃现象,并可以将截获的崩溃日志上传到自家服务器或三方统计平台上 注:此类库作者暂停维护
SafeKit github.com/JJMM/SafeKi…
2、容错处理(异常数据导致崩溃) 1).JKDataHelper 2).NullSafe(推荐) 3).YRClassSafeCategory 4).使用 AF 网络框架 移除 null
相关链接:
www.cnblogs.com/fengmin/p/8… www.jianshu.com/p/b6215e922… blog.csdn.net/u010124617/… www.jianshu.com/p/5ce66c0a6… github.com/nicklockwoo… github.com/YueRuo/YRCl…
3、优化
1).自动静态代码工具
1>.Clang Static Analyzer 优点:和 Xcode 集成度高、好用,支持命令行 缺点:对 oc 检查不全
2>.OCLint 优点:更多的检查规则和定制、和工具集成
3>.Infer 优点:效率高、规模大]支持增量、分解分析
4>.coverity
5>.DeployMate 检查 Api 的兼容性
每个静态扫描工具都有各自特点,建议根据自家工程代码量的规模、复杂度有针对的选择或结合使用
相关链接:
www.jianshu.com/p/b81a9f5bc… testerhome.com/topics/9742 www.cocoachina.com/ios/2017080…
2).内存泄漏检测工具
原始工具:xcode 集成 Instrument 的 Leak/Allocations
第三方工具:
1>.MLeaksFinder
2>.PLeakSniffer
3>.FBRetainCycleDetetor
使用结果:
PLeakSniffer 模拟器大概率检测不到内存泄漏 MLeaksFinder 误检测内存泄漏大,通过FBRetainCycleDetetor(部分)定位循环引用路径
相关链接
wereadteam.github.io/2016/02/22/… mrpeak.cn/blog/leak/ www.cocoachina.com/ios/2017010… github.com/skyming/iOS…