简介

AppGallery Connect(简称AGC)性能管理(Application Performance Management,简称APM)服务提供分钟级应用性能监控能力,依据APM SDK,可以实现零代码快速集成,您能够在AGC查看和分析APM收集到的应用性能数据,从而全面了解所开发应用的性能特点,快速精准修复应用存在的性能问题,持续提升应用的用户体验。

您将建立什么

在本次Codelab中,您将建立一个能够集成APM的应用,通过手动触发ANR事件,以测试APM服务能否正常监控ANR报告。同时了解如何查看和分析ANR报告。

您将会学到什么

开发环境及技能要求

运行终端要求

准备一台Android设备,必须为Android 4.4及以上版本。

集成AGC APM,需要完成以下准备工作

具体操作,请按照《AppGallery Connect集成准备》中详细说明来完成。
  1. 登录AppGallery Connect网站,点击"我的项目"。
  2. 在项目列表中找到您的项目,在项目下的应用列表中选择需要开通性能管理服务的应用。
  3. 进入"质量 > 性能管理",如果APM服务未开通,请点击"立即开通",开通APM服务。

开启APM功能

  1. 在Android Studio项目级build.gradle文件中添加1.6.2.300及以上版本的AGC插件:
  2. buildscript { repositories { // Add the maven repository maven { url 'https://developer.huawei.com/repo/' } } dependencies { // To benefit from the latest APM features, update your Android Gradle Plugin // dependency to at least v3.5.3 classpath 'com.android.tools.build:gradle:3.5.3' // if you had add agc plugin dependence, please update the version to 1.6.2.300. if not, please add agc plugin dependence classpath 'com.huawei.agconnect:agcp:1.6.2.300' } }
  3. 在Android Studio应用级build.gradle文件中打开APM功能开关:
    apply plugin: 'com.android.application' // Apply the AGC plugin apply plugin: 'com.huawei.agconnect' // Set the value of enableAPMS is true, means that the APMS plugin is working. agcp { enableAPMS true } android { //.. }

集成APM SDK

针对Android Studio开发环境,开发前需集成APM SDK到您的Android Studio项目中。

  1. 登录AppGallery Connect网站,点击"我的项目"
  2. 在项目列表中找到您的项目,在项目下的应用列表中选择需要查看的应用。
  3. 点击"项目设置"中"应用"栏下的"agconnect-services.json"下载配置文件。
  4. 将"agconnect-services.json"文件拷贝到应用级根目录下。
  5. 打开Android Studio应用级build.gradle文件,添加如下代码集成APM SDK。
    dependencies { // Add APM SDK library dependency implementation 'com.huawei.agconnect:agconnect-apms:1.5.2.307' }
  6. 在APP模块(应用级)的混淆配置"proguard-rules.pro"文件中添加如下排除项:
    -keep class com.huawei.agconnect.apms.**{*;} -dontwarn com.huawei.agconnect.apms.** -keep class com.hianalytics.android.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;} -keep interface com.huawei.hms.analytics.type.HAEventType{*;} -keep interface com.huawei.hms.analytics.type.HAParamType{*;} -keepattributes Exceptions, Signature, InnerClasses, LineNumberTable
  7. 点击界面上的"Sync Now"链接同步已完成的配置。

本次Codelab中您可以在Android Studio工程中创建一个布局页面,参照下图进行UI设计,新增一个Button,描述为"Trigger ANR",点击后可触发ANR事件。

对于界面布局的activity_main.xml的layout文件,可以参考使用如下代码:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <LinearLayout android:layout_width="300dp" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <Button android:id="@+id/anr_test" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="false" android:text="Trigger ANR" /> </LinearLayout> </LinearLayout>

本次CodeLab中,您可以手动触发一次应用ANR并上报,然后在APM性能管理台上查看ANR数据是否正常。

  1. 在onCreate方法中添加如下点击事件,点击"Trigger ANR"按钮触发。
    Button triggeranrBtn = findViewById(R.id.anr_test); triggeranrBtn.setOnClickListener(v -> { Log.d("apmsAndroidDemo", "trigger ANR"); anrTestEnable = true; });
  2. 在MainActivity.java文件的onCreate外层添加如下代码,模拟应用ANR。
    private boolean anrTestEnable = false; @Override public boolean dispatchKeyEvent(KeyEvent event) { if (anrTestEnable) { try { Thread.sleep(20000); } catch (InterruptedException e) { e.printStackTrace(); } } return super.dispatchKeyEvent(event); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (anrTestEnable) { try { Thread.sleep(20000); } catch (InterruptedException e) { e.printStackTrace(); } } return super.dispatchTouchEvent(ev); }
  3. 多次点击"Trigger ANR"按钮,直到手机界面弹出"应用无响应"对话框,关闭应用后重新打开应用。

查看概览

  1. 登录AppGallery Connect网站,点击"我的项目"
  2. 在项目列表中找到您的项目,在项目下的应用列表中选择需要查看的应用。
  3. 选择"质量 > 性能管理",进入"性能管理"页面。
  4. 点击"概览",进入概览页面,概览页面展示应用近30天问题和指标概览,可以看到有一个ANR异常数据。

查看ANR数据

  1. 点击"ANR分析"页签,进入ANR报表页面。该页面呈现了目前ANR的走势,包含"近24小时TOP5问题(影响用户率前5的问题)"、ANR发生总次数、影响用户数、ANR率在时间、手机型号、系统版本、应用版本不同维度下的分布,以及ANR问题分类列表。
  2. 点击"问题列表"的"查看详情"可进入此类ANR问题详情页面,该页面展示了此类ANR问题的用户ANR率和次数ANR率随时间分布、影响用户数和发生次数随时间分布、ANR用户数在应用版本、手机型号、系统版本3个不同维度下的分布以及此类ANR问题发生的记录列表。
  3. 点击"发生记录"列表中某个记录的"查看详情"按钮,即可查看该次ANR发生时的详情。

祝贺您,您已经成功地构建了您的第一个集成AGC APM的应用程序,并学到了如何制造ANR事件,并在AGC页面对ANR事件进行查看和分析。

AGC APM的相关API介绍请参见API索引
本Codelab中所用demo源码下载地址如下:源码下载

Code copied