专栏首页EAWorld呦,应用又闪退啦?

呦,应用又闪退啦?

在iOS开发中,bug从来都叫人尴尬又头秃,bug中又以线上崩溃最为致命。本地尚且能相视一笑而后猥琐排查,如果线上应用崩溃,就需要考验职业素养了。

在下的经验是做好实名被喷的准备,但面上一定要稳如老狗,要知道应用的崩溃信息是什么,从而获取应用的崩溃信息,找到问题点,尽可能不露痕迹的把这个锅甩出去。

常见收集用户使用时出现的崩溃信息方式有三种(新版iTunes Connect已经不能查看崩溃日志了)

利用Xcode导出相关的崩溃信息

直接导出错误日志适用于能复现闪退的场景,将手机连接到Mac,选择Xcode->Windows->Device and Simulator,点击View Device Logs,会看到很多Log,其中Type为Crash的就是崩溃的Log,如下图:

使用第三方SDK

如鹅厂的Bugly、友盟、KSCrash 等

Bugly首先需要注册账号,创建应用,创建成功之后会获取Appid 和 Appkey

接下来在测试项目中初始化SDK并人为的制造一个崩溃(哈哈哈哈哈哈哈写bug我可太有经验了)

需要注意的是,debug模式下无法收集异常,需要改为Release

刷新平台,很快就能看到收集的异常,这个就很优秀了,点个赞哇~

友盟集成前同样需要在平台注册账号,创建应用,获取 Appkey

接下来在测试项目中初始化SDK,由于收集app使用过程中产生的Crash信息,统计SDK默认是开启Crash收集机制的,所以我们就直接初始化统计SDK

同样是测试一个闪退,能看到收集到的错误列表。友盟有个问题是错误统计并不及时,这个就比较头疼。同学们需要注意检查是否有集成其他第三方错误统计SDK,或自己获取错误信息的方法,如有此情况,则U-App无法统计到错误信息。

到这里基本能满足一般的日志收集需求,但是有时候美丽而迷人的产品大大可能会觉得为什么我们要把自己的信息放到别人的服务上,这样真的好吗?你们就不能优化一下吗??!!!

我可以,我当然可以,成年的社畜怎么能说自己不行!

我们来康康KSCrash吧!KSCrash集成同样可以选择自动集成或者手动集成,一般就直接引入了

KSCrash主要提供了多种安装收集方式:

  • KSCrashInstallationStandard(崩溃日志发到服务器)
  • KSCrashInstallationHockey(隐式收集)
  • KSCrashInstallationEmail(将崩溃日志发到邮箱)
  • KSCrashInstallationConsole(输出崩溃日志)

更多信息有兴趣的小宝贝可以到github查看

https://github.com/kstenerud/KSCrash

通过KSCrash类来设置各项属性

事情到这里已经很好了对不对,但是如果你的产品大大也和我的一样希望获取Crash日志然后转成Apple format 作为参数之一再自己实现上传Crash文件,那么可以来看看KSCrashReportFilterAppleFmt这个类

到这里,就得到了Apple format 的Crash文件,接下来你可以对它做任何处理,想怎么传就怎么传!

通过iOS自带的函数

函数NSSetUncaughtExceptionHandler

程序启动的时候添加 NSSetUncaughtExceptionHandler,在程序发生异常的时候可以捕捉到异常信息,再进行适当的处理反馈,需要注意的是自定义NSSetUncaughtExceptionHandler可能会会导致第三方监听失效哦~

以上是常用的几种收集日志的方式。

最理想的情况当然是手机连接直接导出日志,但实际开发过程中,尤其是应用发布之后,这种好事大多数时候只是一个理想值。

使用大厂的成品SDK也是一个不错的收集方式,集成方便且资料齐全,日志数据也都清晰明了,但是缺点是将数据放到三方平台,可能会有安全性问题。

相比之下集成开源SDK,将Crash日志传到自家的服务则可以避免这个问题,但是缺陷也很明显,这种方式不会像平台化的产品给到统计趋势分析分类。

所以具体实战过程中,要根据需求和侧重点进行取舍。

欢迎大家一起探讨!

好啦,就到这里啦,等产品妹子再揍我的时候,我再来和大家侃侃日志解析,爱你们呦~啵~~~~~~

本文分享自微信公众号 - EAWorld(eaworld),作者:李二

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 普元容器云关键设计和实践之路

    目前,DevOps,微服务与容器云,可以说是炙手可热的三大话题,甚至可以说它们是云时代企业新一代IT架构的三大基石也不为过。微服务主要解决的是开发期的设计问题,...

    yuanyi928
  • DevOps平台中的自动化部署框架设计

    本文目录: 一、背景 二、我们的需求是什么? 三、概念澄清 四、概念模型 五、总体设计 六、关键点设计 七、总结 一、背景 说到自动化部署,大家肯定都会想到一些...

    yuanyi928
  • 2018年最受欢迎的3种编程语言以及他们的年薪

    原题:Top 3 most popular programming languages in 2018 (and their annual salaries)

    yuanyi928
  • Composer介绍

    Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。 依赖管理 Composer 不是一个包管理器。...

    wangxl
  • Slow ReadProcessor&Error Slow BlockReceiver错误日志分析

    Fayson
  • 《强化学习》可复现性?稳健性?Joelle Pineau无情揭示问题

    Joelle Pineau,图源:https://research.fb.com/why-diversity-matters-in-ai-research/

    J.Q.Wang@2048
  • 可复现性?稳健性?Joelle Pineau无情揭示强化学习的问题

    Joelle Pineau,图源:https://research.fb.com/why-diversity-matters-in-ai-research/

    机器之心
  • iOS开发-单例模式(ARC与MRC)

    单例一般作为工具类 单例命名:一般情况下如果一个类是单例,那么就会提供一个类方法用于快速创建单例对象 而且这个类方法的名称是有一定的规则:share + 类...

    雷潮
  • 经典故障分析 - ASSM引发的索引争用与 enq HW -contention 等待事件

    作者介绍: 孙加鹏 云和恩墨技术顾问 六年Oracle技术顾问经验,所服务的行业包括电信运营商、金融业、制造业等。 擅长Oracle的故障诊断、高可用架构、升级...

    数据和云
  • python发送邮件和附件

    发送邮件的时候,需要发送人,收件人,和一台邮件服务器,这里使用python发送一个邮件,主要需要引入smtplib和email库。 下面是源码,粘贴即可用:

    py3study

扫码关注云+社区

领取腾讯云代金券