Android 开发高手课
张绍文
前微信高级工程师,Tinker 负责人
52202 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
导读 (1讲)
模块一 高质量开发 (25讲)
Android 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

32 | 线上疑难问题该如何排查和跟踪?

“95% 以上的崩溃都能解决或者规避,大部分的系统崩溃也是如此”,这是我在专栏“崩溃优化”中曾经夸下的海口。
虽然收集了尽可能丰富的崩溃现场,但总会有一些情况是事先没有预料到的,我们无法直接从崩溃日志里找到原因。事实上我们面临的难题远远不止崩溃,比如说用户投诉文件下载到 99% 之后无法继续,那如何确定是用户手机网络不好,是后台服务器出错,还是客户端代码的 Bug?
我们的业务逻辑越来越复杂,应用运行的环境也变得越来越复杂,因此在实际工作中总会遇到大大小小的线上疑难问题。对于这些问题,如何将它们“抽丝剥茧”,有哪些武器可以帮助我们更好地排查和跟踪呢?

用户日志

对于疑难问题,我们可以把它们分为崩溃和非崩溃两类。一般有哪些传统的排查手段呢?
本地尝试复现。无论是崩溃还是功能性的问题,只要有稳定的复现路径,我们都可以在本地采用各种各样的手段或工具进行反复分析。但是真正的疑难问题往往都很难复现,它们可能跟用户机型、本地存储数据等环境有关。
发临时包或者灰度包。如果发临时包给用户,整个过程用户配合繁琐,而且解决问题的时间也会很长。很多时候我们根本无法联系到用户,这个时候只能通过发线上灰度包的方式。但是为了一步步缩小问题的范围,我们可能又需要一次次地灰度。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • eyeandroid
    请教下,系统日志是否有办法捞取

    作者回复: 可以的,具体可以参考专栏第一章的置顶留言

    1
  • luffy
    您好,看了一下Xlog和Logan,很不错的设计思想,只不过都没有开放对应的类似于bugly的平台,可以实时看到崩溃日志。而且日志也经过加密,那么我们移动端的小伙伴使用了这两个框架该如何查看日志呢?

    作者回复: 现在的确是没有的,一般公司都是自己搞一个服务

    3
    1
  • 很明显感觉到这篇文章涉及到的内容很多很深,要全部搞透不容易啊

    作者回复: 是的,线上疑难问题,特别是类似libhwui这种系统崩溃并不是那么容易

    1
  • Kristin
    应用该如何实现自己的用户标识体系兼容android Q

    作者回复: 各个厂商都有搞一个唯一标识出来,这块需要去适配

  • zhongchao
    能讲讲libhwui类似疑难问题排查的方法和关键点么
    1
    8
  • kbjay
    对lua做了封装,可以很方便的动态调用java方法。实现文中提到的DB 查询、上报普通文本、ShardPreferences 查询、查询权限、追加埋点到本地、上传文件等综合能力;项目地址https://github.com/kbjay/KJLua;供参考,期待star。
    归属地:北京
  • 跳跳
    课后作业:ROM开发者应生成伪标识,为不同应用的用一个用户生成不同的标识,以防止应用恶意追踪,同时,自己也应不恶意追踪用户行为。
    归属地:上海
  • hello作者,不知道你还在不在,关于lua我有些问题 我找到了一个安卓集成lua的工程,大概懂了lua的原理。 我认为是这样的,我们使用jni的方式集成lua的虚拟机,这样就提供了lua脚本语言的运行时环境了。 然后会在我们java代码的关键点提前打上lua脚本的调用方法,我认为这就是就是你文中说的预设。 当我们程序出问题的时候,我们可以下载的方式下载下来lua脚本。然后通过提前预设的lua脚本调用执行lua代码得到返回值,然后将返回值传给服务器这样就达到了动态下发、动态执行、回传日志的效果了。我认为这种方式的前提是我们必须提前预设好代码调用的点,不知道我理解的对不对。 目前对于lua的使用我只能理解这么多,作者能不能把给一个更具体的实际项目中使用lua的例子给我醍醐灌顶一下
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部