APP性能监测工具之友盟的 U-APM产品入门使用

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 最近公司做了一款新的APP,要求能够看到用户每天的新增量和活跃量,还有一些页面的点击量、停留时间等的监测,还有更重要的一点就是能够监测到app的异常情况。于是开始对第三方工具开始一番研究,对比之后我选择使用了友盟。

前言:

最近公司做了一款新的APP,要求能够看到用户每天的新增量和活跃量,还有一些页面的点击量、停留时间等的监测,还有更重要的一点就是能够监测到app的异常情况。于是开始对第三方工具开始一番研究,对比之后我选择使用了友盟。废话不多说,开始介绍下我的集成过程。

这里有一个整体的流程图

1.jpg

正文:

第一步:集成准备

友盟的应用性能监控平台 U-APM的传送门:https://at.umtrack.com/HHDSrm

2.jpg

如果没有账号可以先注册一下,注册完登录后,直接点击进入后台

3.jpg

进入后台后,点击立即创建,填写上应用的相关信息,点击注册应用即可

4.jpg

5.jpg

 

这里的AppKey很重要哦,集成的时候要用到的,然后点击继续集成,下面就可以愉快的集成了。

6.jpg

第二步:开始集成,集成分自动集成和手动集成两种模式

还是先来看下整个集成的流程图

7.jpg

自动集成(推荐)

通过在Android Studio工程build.gradle配置脚本中添加maven线上依赖,导入最新版本组件化统计SDK。

maven依赖配置

在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】SDK新maven仓库地址。

maven { url 'https://repo1.maven.org/maven2/' }

8.jpg

在工程App 对应build.gradle配置脚本dependencies段中添加统计SDK库和其它库依赖:

 

dependencies {

   implementation fileTree(include:['*.jar'], dir:'libs')

 

// 下面各SDK根据宿主App是否使用相关业务按需引入。

// 友盟统计SDK

   implementation  'com.umeng.umsdk:common:9.4.2'// 必选

   implementation  'com.umeng.umsdk:asms:1.4.1'// 必选

   implementation 'com.umeng.umsdk:apm:1.4.2' // 错误分析升级为独立SDK,看crash数据请一定集成,必选

   implementation  'com.umeng.umsdk:abtest:1.0.0'//使用U-App中ABTest能力,可选

}

 

注意:在Android Studio 3.1及以上版本开发环境下,指定引用最新版本依赖写法”latest.integration”可能导致下载库超时,此时需要指定具体版本号。

 

 

清单文件中的权限配置

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<uses-permission android:name="android.permission.INTERNET"/>

 

如果应用使用了代码混淆,请添加如下配置,以避免【友盟+】SDK被错误混淆导致SDK不可用

-keep class com.umeng.** {*;}

 

-keepclassmembers class * {

  public <init> (org.json.JSONObject);

}

 

-keepclassmembers enum * {

   public static **[] values();

   public static ** valueOf(java.lang.String);

}

 

 

方法调用

在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit(),正式初始化函数UMConfigure.init可以按需调用(可以在预初始化函数之后紧接着调用,也可以放到后台线程中延迟调用,但还是必须调用,不能遗漏),但确保App首次冷启动时,在用户阅读《隐私政策》并取得用户授权之后,才调用正式初始化函数UMConfigure.init(),如果用户不同意《隐私政策》授权,则不能调用UMConfigure.init()初始化函数。

 

// SDK预初始化函数不会采集设备信息,也不会向友盟后台上报数据。

// preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验

public static void preInit(Context context, String appkey, String channel)

 

/**

* 注意: 即使您已经在AndroidManifest.xml中配置过appkey和channel值,也需要在App代码中调

* 用初始化接口(如需要使用AndroidManifest.xml中配置好的appkey和channel值,

* UMConfigure.init调用中appkey和channel参数请置为null)。

*/

UMConfigure.init(Context context, String appkey, String channel, int deviceType, String pushSecret);

代码示例

9.jpg

手动集成(不推荐)

手动集成没有使用,我这里就不做介绍了,有需要的小伙伴可以点开 https://developer.umeng.com/docs/119267/detail/118584#h1-u6743u9650u6388u4E883 进行学习使用。

 

到这里已完成了对数据统计和异常情况监测的sdk集成。

但是呢,平时生产反馈的异常问题,我们哼哧哼哧调试好半天才搞定,浪费了本该逍遥快活的大好时间。所以我们就想对app异常情况做更进一步的分析反馈。不要着急,友盟也给我们想好了,友盟给我们预留了崩溃回调方法,当崩溃发生时,可以在该回调方法中返回string类型的业务自定义数据,该数据会写入到崩溃文件中并上传到服务器展示。注意:崩溃回调中返回string类型数据的长度限制为256个字符。

接口示例

UMCrash.registerUMCrashCallback(newUMCrashCallback(){

    @Override

    publicString onCallback(){

          return"崩溃时register的自定义内容字符串";

   }

});

上传后即可在错误详情-自定义字段中查看到回调信息

10.jpg

我们还可以自定义异常接口,如果捕获了错误,需要手动上传到【友盟+】服务器可以调用下面两种方法:

方法一:

public static void UMCrash.generateCustomLog(Throwable e,String type)

方法一示例:

try{

     // 抛出异常的代码

}catch(Exception e){

     UMCrash.generateCustomLog(e,"UmengException");

}

方法二:

public static void UMCrash.generateCustomLog(String e,String type)

方法二示例:

String e ="自定义异常代码";

UMCrash.generateCustomLog(e,"UmengException");

使用自定义错误,查看时请在错误列表页面选择【自定义异常】。

 

好了,开始运行项目,看下友盟后台是不是有数据了,如果有用户数据那说明集成成功,可以庆祝了。

11.jpg

由于异常情况的数据还没有,只能给大家截个样式图了,但效果都是一样的。

12.jpg

整个集成过程还是比较简单的,目前友盟的功能还是比较强大的,包括应用的各种数据统计、异常日志的反馈、推送、分享等,以后会慢慢学习研究,加入到项目里,使应用的监控和功能更加丰富。

总结:

U-APM 是友盟+推出的App稳定性监控、性能监控和云真机测试平台。通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力,及卡顿、启动分析等性能能力,支持多场景、多通道智能告警监控,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。这一块的功能是我比较喜欢的,建议大家不管是统计的集成,还是推送、分享的集成,都可以试试运用上U-APM的功能,你会发现不一样的使用和便捷。

 

 对产品的建议是:产品本身还是比较成熟的,暂时没有发现什么需要改进的地方。



作者:王太达

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
6月前
|
移动开发 JavaScript 小程序
从入门到实践:Uni-app跨平台开发与应用
从入门到实践:Uni-app跨平台开发与应用
374 1
|
9天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
42 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
小程序 JavaScript 前端开发
uni app 入门
uni app 入门
30 2
|
3月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
104 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
3月前
|
网络协议 物联网 测试技术
App Inventor 2 MQTT拓展入门(保姆级教程)
本文演示的是App和一个测试客户端进行消息交互的案例,实际应用中,我们的测试客户端可以看着是任意的、支持MQTT协议的硬件,通过订阅及发布消息,联网硬件与我们的App进行双向数据通信,以实现万物互联的智能控制效果。
196 2
|
3月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
3月前
|
存储 开发框架 监控
【Azure Logic App】添加 Storage Account 来提升 Logic App 的性能
【Azure Logic App】添加 Storage Account 来提升 Logic App 的性能
|
5月前
|
监控 小程序 前端开发
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
169 0
|
5月前
|
移动开发 小程序 安全
基础入门-APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter
基础入门-APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter
|
6月前
|
机器学习/深度学习 运维 监控
有人想让我讲讲应用性能管理(APM)工具
有人想让我讲讲应用性能管理(APM)工具
352 2