文章目录
一、前言
之前一直是用腾讯的bugly
目前受邀推荐使用友盟+U-APM,那就让我们来尝试体验一下
二、快速集成
2.1 账号注册
注册很快,没有繁琐的步骤和多余的信息填写,点赞
2.2 创建应用
2.3 Demo下载
为了快速体验,我们跳过SDK集成这一步,直接用官方提供的Demo。
SDK集成也很方便,直接看官方文档即可:Android SDK集成流程
Demo下载:MultiFunctionAndroidDemo:友盟多功能Android Demo
2.4 Demo导入
导入工程File
->New
->Import Porject
期间有遇到一个问题,如果大家也同样遇到这个问题可以参考博文:Android Studio Failed to open zip file的解决办法
2.5 Demo试跑
修改preInit(Context context,String appkey,String channel)
后,即可运行Demo
// SDK预初始化函数
// preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验
public static void preInit(Context context,String appkey,String channel)
preInit()
在App.java
里面调用,传入自己的appkey即可。
appkey在如下图中复制。
Demo跑起来后,再去后台看看,就会发现应用的状态变成:已集成
三、极致体验
3.1 第一个App崩溃
- 有点意外, 第一个崩溃信息出来的有点快。
- 首页->点击
统计UApp
->点击程序崩溃
Android友盟+U-APM快速集成与极致体验
3.2 查看后台崩溃信息(延时1分钟+)
- 这时候就要赶紧看下后台,有没有错误信息上报
- 一直刷新后台,同时对比实时时间,大概延时1分10秒左右,后台才显示出错误信息。与腾讯bugly对比略微好点,半斤八两吧
- 不过,错误信息倒是给的详细,直接找到
com.umeng.soexample.analytics.UappActivity
的第94行 - 认真一看,很明显的错误,"123"的字符串长度只有3,无法索引到10
findViewById(R.id.analytics_g3_b1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext, "已完成程序崩溃", Toast.LENGTH_SHORT).show();
"123".substring(10);
}
});
3.3 错误处理
- 把
未修复
改成已修复
- 首先,故意不修复代码,再制造一次程序崩溃
- 处理状态不变,还是
已修复
- 处理状态不变,还是
- 其次,修改App版本
versionCode
改成2,versionName
改成1.0.1,其他不变,再制造一次程序崩溃- 处理状态依旧不变,还是
已修复
。 - 不过版本范围变了
1.0 ~ 1.0.1
。这就有点参差了,对此我就有点意见了,详情见后文第四章节。
- 处理状态依旧不变,还是
3.4 告警设置
- 通过
错误列表
的告警
入口进来 - 新建告警计划
- 告警名称
- 触发条件:>3次
- 生效应用版本:全部
- 触达方式:邮箱、企业微信
3.5 企业微信机器人
- 添加一个群聊
- 添加群机器人
- 得到该机器人的Webhook
3.6 告警触发
-
告警设置成功后,就开始触发告警
-
点了好几次都没反应,奇奇怪怪
-
没关系,有点耐心,等~
-
终于被我等到了~
-
很明显看出来,告警触发是每小时一次的
-
基本都在每小时的07分左右推送
四、一点小建议
4.1 错误明细中缺乏App版本
- App版本号在错误列表中有体现,挺好的
- 但是在错误明细中没有体现,相反还多出一个SDK版本号,容易混淆
4.2 错误处理的逻辑流程
错误处理的逻辑流程可以优化成如下:
在崩溃分析
->错误列表
->处理状态
在勾选已修复
的时候,选择在XX.XX.XX版本
修复- 后续如果版本大于
XX.XX.XX版本
时,还有同样的错误上报,则把处理状态
自动修改成修复失败
- 增加一个
处理流程记录
,详细记录这个bug
在XX时间
被XX人
在XX版本
修复,然后在XX版本
又复发……
按照这个逻辑修改后,处理状态
是动态的,增加了更多的信息。
比起目前,一旦手动修改了处理状态
后,其状态一直不变,是不是强多了~
觉得好,就一键三连呗(点赞+收藏+关注)