作者:邓曦
团队:腾讯移动品质中心TMQ
一、背景
APP发布后,在用户侧出现的问题统称为“线上问题”。如果“线上问题”出现了:
解决率低
存在时间长
的情况,那么对APP的口碑会有很大的负面影响。经过我们对2016年上半年手机QQ浏览器用户反馈分析,我们发现“线上问题”解决的主要困难来自于“对解决问题的关键信息获取困难”,统计数据如下:
图表——日志获取率和时间
大家可以看到:日志的获取率平均只有10%,平均一份日志获取时间至少30小时。那么有没有办法能够改善这种窘境呢?
二、解决方案
1、SDK架构
既然方向明确了,我们就来制造这个轮子。通过我们多轮迭代后,我们得到了如下的穿山甲SDK系统架构:
图表——穿山甲SDK架构
从架构图上,可以看出整个SDK分为两条线:以“日志数据”作为输入的“数据线”和以“Push Cmd/代码Cmd”作为输入的“控制线”。
这也是常用的系统设计思路,数据和控制分离的最佳实践。
下面将分开介绍。
2、数据线
从2-2的穿山甲SDK架构图中,我们可以看到“数据线”分为如下几个主要模块:
1)数据API
2)缓存模块
3)安全模块
4)扩展服务
(1)数据API
数据API就是打印日志的接口,和普通android打印日志基本一致。例子如下:
Logs.d(TAG, “key1=value1;key2=value2;…”);
在这里我们用了自