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

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

用户标识体系
团队的“提质增效”
远程控制
动态部署
远程调试
Holmes
Logan
Xlog
发临时包或者灰度包
本地尝试复现
课后作业
总结
动态调试
用户日志
传统排查手段
线上疑难问题排查和跟踪
参考文章

该思维导图由 AI 生成,仅供参考

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

用户日志

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

本文介绍了移动应用开发中的线上疑难问题排查和跟踪的挑战,以及针对这些问题的排查手段和工具。作者首先提到了传统的排查手段,包括本地尝试复现和发临时包或者灰度包。接着介绍了两种日志工具:Xlog和Logan,以及Holmes的实现。Xlog是一个高性能的日志工具,可以让全量用户全天候打开日志,而Logan整合了各式各样的日志平台,打造成一个统一的日志平台。Holmes的实现需要对每个方法进行插桩来记录方法执行路径,但其实用性受到了质疑。总的来说,本文介绍了针对线上疑难问题排查和跟踪的一些工具和方法,为移动应用开发者提供了有益的参考和思路。文章还探讨了远程动态调试、动态部署和远程控制等方法,以及使用Lua脚本语言进行动态执行代码的能力。最后,强调了团队的“提质增效”需要寻找团队中的痛点,思考如何去改进,无论是流程的自动化还是开发新的工具、新的平台,都是朝着这个目标前进。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

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

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

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

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

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

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

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

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

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