Firebase 性能监控使用入门 (Android)

本指南将向您介绍如何在您的应用中使用 Firebase 性能监控,步骤如下:

  1. 前提条件
  2. 将 Firebase 添加至您的 Android 项目
  3. 将性能监控添加到您的应用
  4. (可选)在应用中定义一个自定义跟踪记录和一个或多个指标
  5. (可选)添加 @AddTrace 注释以跟踪特定方法
  6. 在 Firebase 控制台中查看性能监控结果
  7. 部署应用并在 Firebase 控制台中查看结果

前提条件

开始之前,需要在您的环境中设置几项内容:

  • 运行 Android 4.0 (Ice Cream Sandwich) 或更高版本以及 Google Play 服务 16.1.2 或更高版本的设备
  • Google 代码库中的 Google Play Services SDK,可通过 Android SDK Manager 获取
  • 最新版本的 Android Studio - 2.2 版或更高版本

将 Firebase 添加至您的 Android 项目

如果您在使用其他 Firebase 功能,可以使用 Firebase Assistant 从 Android Studio 将 Firebase 添加到您的应用。

要在 Android Studio 中打开 Firebase Assistant,请执行以下操作:

  1. 依次点击 Tools > Firebase 以打开 Assistant 窗口。
  2. 点击以展开所列功能之一(例如 Analytics),然后点击所提供的教程链接(例如 Log an Analytics event)。
  3. 点击 Connect to Firebase 按钮以关联至 Firebase,并向您的应用添加必要的代码。

如果您的应用未使用其他 Firebase 功能,则可手动将 Firebase 添加至您的应用。

将性能监控添加到您的应用

  1. 打开项目级 build.gradle 文件,并添加以下内容:
    1. buildscript -> repositories 部分中:
      jcenter()
    2. buildscript -> dependencies 部分中,添加 Firebase 依赖项:
      • 对于 Android Studio 2.x
        classpath 'com.google.firebase:firebase-plugins:1.1.1'
      • 对于 Android Studio 3.x
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
  2. 打开应用级 build.gradle 文件,并添加以下内容:
    1. apply plugin: 'com.android.application' 下方添加以下这行代码:
      apply plugin: 'com.google.firebase.firebase-perf'
    2. 将以下代码添加至 dependencies 部分:
      implementation 'com.google.firebase:firebase-perf:16.1.2'
  3. 重新编译您的应用。 现在,自动跟踪记录和 HTTP/HTTPS 网络请求即会受到监控。

(可选)在应用中定义一个自定义跟踪记录和一个或多个指标

自定义跟踪记录是与您应用中某些代码相关联的性能数据的报告。要详细了解自定义跟踪记录,请参阅性能监控概览。您的应用中可以有多项自定义跟踪记录,并且可以同时运行多项自定义跟踪记录。每项自定义跟踪记录都可以设置一个或多个指标来统计应用中与性能相关的事件,这些指标与创建它们的跟踪记录相关联。

  1. .java 文件的顶部导入这些性能监控类:

    Android

    import com.google.firebase.perf.FirebasePerformance;
    import com.google.firebase.perf.metrics.Trace;

  2. 在应用中您要开始跟踪的代码前面,添加下面这行代码以启动名为 test_trace 的跟踪:

    Android

    Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
    myTrace.start();
    
  3. 要统计您应用中发生的性能相关事件(例如缓存命中和缓存未命中),请在每次事件发生时添加与以下代码类似的一行代码(如果您要统计其他类型的事件,则使用除 item_cache_hititem_cache_miss 以外的字符串命名该事件):

    Android

    Item item = cache.fetch("item");
    if (item != null) {
        myTrace.incrementMetric("item_cache_hit", 1);
    } else {
        myTrace.incrementMetric("item_cache_miss", 1);
    }
    
  4. 在您要停止跟踪记录的代码后面,添加下面这行代码:

    Android

    myTrace.stop();
    

(可选)添加 @AddTrace 注释以跟踪特定方法

您可以向应用中的方法添加 @AddTrace 注释,并提供一个字符串来标识生成的跟踪记录。这会使得一条跟踪记录从该方法开始时开始,在方法完成时停止。以这种方式创建的跟踪记录没有可用的指标。

例如,要创建一个在系统调用 onCreate() 方法时运行的 onCreateTrace 跟踪记录,您应使用与以下内容相似的代码:

Android

@Override
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

在 Firebase 控制台中查看性能监控结果

  1. 在 Android Studio 中构建您的应用。
  2. 使用安装了最新映像和 Google Play 服务 15.0.0 或更高版本的 Android 模拟器,或使用安装了 Google Play 服务 15.0.0 或更高版本的测试设备来测试您的应用。
  3. 确认性能监控结果显示在 Firebase 控制台中。结果应会在 12 小时内显示。

部署应用并在 Firebase 控制台中查看结果

使用一台或多台测试设备验证性能监控之后,您可以将最新版本的应用部署给用户,并使用 Firebase 控制台来监控性能数据。

(可选)添加针对特定网络请求的监控

Firebase 性能监控会自动收集网络请求。这包括您的应用的多数网络请求,但部分请求可能不会纳入到报告中。要将特定网络请求纳入性能监控,请为您的应用添加以下代码:

Android
HttpMetric metric =
        FirebasePerformance.getInstance().newHttpMetric("https://www.google.com",
                FirebasePerformance.HttpMethod.GET);
final URL url = new URL("https://www.google.com");
metric.start();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
try {
    DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
    outputStream.write(data);
} catch (IOException ignored) {
}
metric.setRequestPayloadSize(data.length);
metric.setHttpResponseCode(conn.getResponseCode());
printStreamContent(conn.getInputStream());

conn.disconnect();
metric.stop();

您通过这种方式专门捕获的 HTTP/HTTPS 网络请求会与性能监控自动捕获的网络请求一起显示在 Firebase 控制台中。

已知问题

  • Firebase 插件 1.1.0 版可能导致 Guava 依赖项不匹配,造成以下错误:

    Error:Execution failed for task ':app:packageInstantRunResourcesDebug'.
    > com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;

    如果看到此错误,请升级到 1.1.1 版,或在项目级 build.gradle 文件的 buildscript -> dependencies 部分中使用以下代码替换上面显示的 classpath 语句:

    classpath ('com.google.firebase:firebase-plugins:1.1.0') {
                exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
  • 性能监控仅支持监控使用 OkHttp HTTP 客户端 3.x.x 版发送的 HTTP/HTTPS 网络请求。
  • 性能监控会根据 HTTP 内容长度标头中设置的值,报告 HTTP/HTTPS 网络请求的总负载大小。此值有时可能并不准确。
  • 在多进程 Android 应用中,性能监控仅支持其中的主进程。
  • com.google.firebase.firebase-perf gradle 插件与 DexGuard 不兼容,会导致停用自动跟踪记录和 HTTP/HTTPS 网络请求监控。如果您的应用使用 DexGuard,使用 SDK 添加的自定义跟踪记录会正常运行。
  • com.google.firebase.firebase-perf gradle 插件与已弃用的 Jack 不兼容。

调试集成

您可以在构建时为性能监控启用调试日志记录功能,方法是向应用的 AndroidManifest.xml 文件的 <application> 元素添加 <meta-data> 元素,如下所示:

<meta-data
  android:name="firebase_performance_logcat_enabled"
  android:value="true" />

您可以使用 logcat 过滤功能查看跟踪记录和 HTTP/HTTPS 网络请求日志记录。性能监控日志消息会被标记上 FirebasePerformance,您可使用以下命令将其过滤出来:

adb logcat -s FirebasePerformance

后续步骤

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面