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

前言:

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

这里有一个整体的流程图

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

正文:

第一步:集成准备

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

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

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

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

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

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

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

 

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

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

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

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

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

自动集成(推荐)

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

maven依赖配置

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

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

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

在工程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);

代码示例

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

手动集成(不推荐)

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

 

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

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

接口示例

UMCrash.registerUMCrashCallback(newUMCrashCallback(){

     @Override

     publicString onCallback(){

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

    }

});

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

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

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

方法一:

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");

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

 

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

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

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

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

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

总结:

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

 

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



作者:王太达

上一篇:冬季实战营第四期学习报告


下一篇:App监控和性能优化实战