这是很现实的问题,搞这个模块的,其实涉及的东西很多,流程,界面等,那对于新人该如何下手呢? 带着问题去看代码,比你自己瞎抓好。
  测试同学上报的问题,肯定是从界面上入手,执行了哪些操作,发生了什么异常结果。要想快速的定位问题,熟悉代码是前提,代码该如何熟悉。可以分几个层次:
  模块整体结构
  分了哪几个层,特别是4.4开始,分层很多,这几个层次是什么关系以及有什么作用。这一步可以参考网上已有的分析,快速掌握。 这个不是解决问题必经的步骤,但是为了更好的分析解决问题。
  界面布局
  InCallUI的布局很有意思,不同的界面,不一样的Fragment(废话), 使用了MVP的模式。所以要弄清楚UI,这样可以解决一部分UI小bug。以及后续添加新的功能。
  关键流程
  这个也是重点,bug分析是按照流程来的,流程不熟,即使改了也可能产生其他问题。关键流程有: 1) MT / MO流程 也是来电/拨号的流程 2) 几个关键进程的初始化
  Call Settings
  这部分内容基本是在TeleServeice目录中,属于phone进程。 设置的内容比较多了,基本设置,通话设置, 黑名单设置,开关P-Sensor设置,FDN设置,单双卡设置。比如高通平台的,还把双卡设置独立成自己的apk,放在vendor/qcom/….目录下面。
  这里面很扯的是,不知是从4.4开始,在FDN输入框中的光标是在前面的,测试会报bug,要求光标移动到输入字符后面。好,那修改,因为Android原生是这么整的, 那修改TextView中的光标选取位置,一改百改。到后来 导致 CTS有一项过不了。 真是坑爹啊,那只能在上层使用的地方修改。其实,这个不应该是个问题。
  查看log
  这个又是一个累活, 先说应该看哪些log吧。 一般查看main、system, events, radio 。(废话) 涉及到通话流程的,如电话Dial失败, 自动挂断,掉网络的, 这个radio有用。直接查看 radio中的 如 >DIAL 看这个指令反馈的是什么,正常还是异常。如果RILJ得到的都是错误的,那很有可能是modem层有问题,或是网络有问题。这个需要抓取QXDM(高通平台) 涉及到界面的,特别是新手,不熟悉模块的代码,以及布局,又想快速的定位是在哪个界面。 推荐使用sdk中的工具 monitor.bat -> Hierarchy View, 都是厂商的工程机开发,非常方便。注意,出厂的手机是无法抓取的,有的厂商手机即使root了,也不能看到Hierarchy View monitor.bat 目录是在sdk ools, Window -> open Perspective -> Hierarchy View
  分工协作
  跟小组内部讨论,现在强调分工,你不可能面面俱到,特别是短时间内。所以,运用团队的力量,一起攻关。有人对协议熟悉,有人对界面熟悉,有人对流程熟悉。要知道MTK为什么支持力度那么好,给e-Service提交问题,很快得到回复,并且能及时解决。 那是因为他们专业,分工明确,过bug像流水线一样,每人负责自己的那一小片领域,一看知道问题所在点,快速解决。
  提问的技巧
  见过新人提交给支持厂商的bug,简直用惜墨如金来形容。导致的结果是 后续还得不断的补充材料。
  一个好的提问,应该有如下内容:
  1) 问题发生的版本号,平台相关的codebase号,不论是MTK还是Qcom都需要。
  2) 问题的详细描述,是否必现问题
  3) 提供全面的Log,根据厂商不一样,对应抓取log的工具不一样。以及关键的时间点。
  4) 你对问题的分析,以及疑问点,并在case单子中告知具体的Log位置
  5) 是否有视频, 复杂些的又能复现的问题,好给出视频,并告知关键的视频时间点。