Firebase Performance Monitoring 使用入门 (Android)

准备工作

将 Firebase 添加到您的 Android 项目(如果尚未添加)。

请务必在您的项目级 build.gradle file 中的 buildscriptallprojects 部分添加 Google 的 Maven 代码库。

第 1 步:将 Performance Monitoring SDK 添加到您的应用

借助 Performance Monitoring SDK,您可以监控应用中的自动时长跟踪记录及任何其他自定义跟踪记录

  1. 在您的 模块(应用级) Gradle 文件(通常是 app/build.gradle)中:

    // ...
    
    dependencies {
      // ...
    
      // Add the dependency for the Performance Monitoring library
      implementation 'com.google.firebase:firebase-perf:19.0.8'
    }
    
  2. 重新编译您的应用。

第 2 步:将 Performance Monitoring 插件添加到您的应用

Performance Monitoring Gradle 插件会启用插桩 (instrumentation) 技术,以实现 @AddTrace 注释处理HTTP/HTTPS 网络请求自动监控

如需将 Performance Monitoring 插件添加到您的应用,请执行以下操作:

  1. 在您的模块(应用级)Gradle 文件(通常是 app/build.gradle)中,应用 Performance Monitoring 插件:

    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    // Apply the Performance Monitoring plugin
    apply plugin: 'com.google.firebase.firebase-perf'
    
    android {
      // ...
    }
    
  2. 根级(项目级)Gradle 文件 (build.gradle) 中添加规则,以纳入 Performance Monitoring 插件。

    buildscript {
    
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // Add the Bintray repository
          jcenter()
        }
    
        dependencies {
          // ...
    
          // To benefit from the latest Performance Monitoring plugin features,
          // update your Android Gradle Plugin dependency to at least v3.4.0
          classpath 'com.android.tools.build:gradle:3.4.0'
    
          classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
    
          // Add the dependency for the Performance Monitoring plugin
          classpath 'com.google.firebase:perf-plugin:1.3.1'  // Performance Monitoring plugin
        }
    }
    
  3. 重新编译您的应用。

第 3 步:生成性能事件以显示初始数据

Firebase 可以通过接收来自您的应用的事件信息(如应用交互)来检测该 SDK 是否已成功添加到您的应用。如果您仍在本地进行开发,请与您的应用交互,以生成 SDK 检测事件以及初始数据收集和处理事件。

  1. 继续使用符合以下要求的模拟器或测试设备开发应用:

    • 安装了最新映像和 Google Play 服务 15.0.0 或更高版本的 Android 模拟器

    • 安装了 Google Play 服务 15.0.0 或更高版本的测试设备

  2. 生成事件的方法包括:将应用在后台和前台之间切换数次、通过跨屏幕导航与应用进行交互,以及触发网络请求。

  3. 转到 Firebase 控制台的“性能”部分,查看 Firebase 是否已检测到该 SDK。

    如果您在将该 SDK 添加到应用后的 2 小时内没有看到“检测到 SDK”消息,请查看问题排查提示

  4. Performance Monitoring 会先处理性能事件数据,然后再将其显示在“性能”信息中心中。 您应该会在看到 SDK 检测消息后的 24 小时内看到您的初始数据。

    如果您没有看到初始数据,请查看问题排查提示

第 4 步:(可选)查看性能事件的日志消息

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

    <application>
        <meta-data
          android:name="firebase_performance_logcat_enabled"
          android:value="true" />
    </application>
    
  2. 检查您的日志消息中有无任何错误消息。

  3. Performance Monitoring 会使用 FirebasePerformance 标记其日志消息。借助 logcat 过滤功能,您可以运行以下命令来专门查看时长跟踪记录和 HTTP/HTTPS 网络请求日志记录:

    adb logcat -s FirebasePerformance
  4. 检查以下类型的日志,这些日志表明 Performance Monitoring 正在记录性能事件:

    • Logging trace metric: trace-name
    • Logging network request trace: url

如果您的应用未记录性能事件,请查看问题排查提示

第 5 步:(可选)为特定代码添加自定义监控功能

您可以创建自定义跟踪记录来监控与应用中的特定代码相关联的性能数据。

借助自定义跟踪记录,您可以衡量应用完成特定任务或任务集(例如加载一组图像或查询数据库)所需的时间。自定义跟踪记录的默认指标是其时长,但您也可以添加自定义指标,例如缓存命中数和内存警告。

在代码中,您可以使用 Performance Monitoring SDK 提供的 API 指定自定义跟踪记录的开始和结束(以及添加任何所需的自定义指标)。 对于 Android 应用,您还可以使用 @AddTrace 注释来监控特定方法的时长。

请访问为特定应用代码添加自定义监控功能,详细了解这些功能以及如何将其添加到您的应用中。

第 6 步:部署应用,然后查看结果

使用一个或多个测试设备验证 Performance Monitoring 后,您可以将更新后的应用版本部署给用户。

您可以在 Firebase 控制台的“性能”信息中心中监控性能数据。

已知问题

  • Performance Monitoring Gradle 插件 v1.1.0 可能导致 Guava 依赖项不匹配,造成以下错误:

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

    如果出现此错误,您可以采取以下任一措施:

    • 将 Performance Monitoring 插件升级到 v1.1.1 或更高版本(最新版本为 v1.3.1)。

    • 替换根级(项目级)Gradle 文件 (build.gradle) 中的 Performance Monitoring 插件依赖项行,如下所示:

      buildscript {
        // ...
      
        dependencies {
          // ...
      
          // Replace the standard Performance Monitoring plugin dependency line, as follows:
          classpath ('com.google.firebase:perf-plugin:1.1.0') {
                      exclude group: 'com.google.guava', module: 'guava-jdk5'
          }
        }
      }
      
  • Performance Monitoring 会根据 HTTP 内容长度标头中设置的值,报告 HTTP/HTTPS 网络请求的总载荷大小。此值有时可能并不准确。

  • 在多进程 Android 应用中,Performance Monitoring 仅支持其中的主进程。

后续步骤