Flutter应用性能监控插件appdynamics_agent的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter应用性能监控插件appdynamics_agent的使用

简介

Pub Version

AppDynamics Flutter Plugin 是 AppDynamics SDK 的扩展,允许您对 Flutter 应用进行性能监控并接收分析数据。此插件封装了原生 SDK,并需要有效的 AppDynamics 移动许可证。

功能特性

  • 网络请求跟踪:通过 TrackedHTTPClientRequestTracker 类。
  • 自动崩溃报告:支持自定义崩溃报告配置。
  • 屏幕跟踪:通过 NavigationObserverWidgetTracker
  • ANR(应用程序无响应)检测和报告
  • 会话帧机制:跟踪自定义用户流。
  • 错误和自定义指标报告
  • 自动捕获截图和用户触点(仅限 iOS)。
  • 自定义用户数据:在网络请求、崩溃报告或会话中添加。
  • 记录面包屑:跟踪 UI 组件或自定义用户交互。
  • 计时器:跟踪跨越多个方法的事件。
  • 方法执行标记
  • 多会话分割
  • 自动报告设备指标(内存、存储、电池)和连接转换事件。

快速开始

安装

您可以使用 flutter pub add appdynamics_agent 来安装插件。

对于 Android 应用,还需要额外的配置:

  1. android/build.gradle 文件中添加依赖:

    dependencies {
        classpath "com.appdynamics:appdynamics-gradle-plugin:22.2.2"
        // ... other dependencies
    }
    
  2. android/app/build.gradle 文件底部应用 adeum 插件:

    dependencies {
        // ... project dependencies
    }
    
    // Bottom of file
    apply plugin: 'adeum'
    
  3. AndroidManifest.xml 中添加权限:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.myawesomepackage">
    
        <!-- add these two permissions -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
        <!-- other permissions -->
    
        <application>
            <!-- other settings -->
        </application>
    </manifest>
    

开始监控

main.dart 中启动监控:

import 'package:appdynamics_agent/appdynamics_agent.dart';
import 'package:flutter/material.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final config = AgentConfiguration(
      appKey: "<EUM_APP_KEY>",
      loggingLevel: LoggingLevel.verbose, // 可选,用于更好的调试。
      collectorURL: "<COLLECTOR_URL>", // 可选,主要用于内部部署。
      screenshotURL: "<SCREENSHOT_URL>" // 可选,主要用于内部部署。
  );
  await Instrumentation.start(config);

  runApp(const MyApp());
}

示例代码

以下是一个完整的示例,展示了如何使用所有 Flutter agent 的功能:

/*
* Copyright (c) 2022. AppDynamics LLC and its affiliates.
* All rights reserved.
*
*/

/// Complete example with all Flutter agent's features.

import 'dart:async';

import 'package:appdynamics_agent/appdynamics_agent.dart';
import 'package:appdynamics_agent_example/routing/on_generate_route.dart';
import 'package:appdynamics_agent_example/routing/route_paths.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 设置全局错误处理程序
  FlutterError.onError = Instrumentation.errorHandler;
  PlatformDispatcher.instance.onError = (error, stack) {
    final details = FlutterErrorDetails(exception: error, stack: stack);
    Instrumentation.errorHandler(details);
    return true;
  };
  
  // 自定义崩溃报告回调
  crashReportCallback(List<CrashReportSummary> summaries) async {
    // 处理崩溃报告
  }

  // 配置 Agent
  AgentConfiguration config = AgentConfiguration(
      appKey: "<EUM_APP_KEY>",
      loggingLevel: LoggingLevel.verbose,
      collectorURL: "https://www.<collector-url>.com",
      screenshotURL: "https://www.<screenshots-url>.com",
      crashReportCallback: crashReportCallback,
      screenshotsEnabled: true,
      crashReportingEnabled: true
  );

  // 启动监控
  await Instrumentation.start(config);

  // 运行应用
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        initialRoute: RoutePaths.settings,
        onGenerateRoute: onGenerateRoute,
        navigatorObservers: [NavigationObserver()]);
  }
}

文档

您可以访问 pub.dev 文档 或查看 官方文档 获取更多关于代理自定义的信息。


通过以上步骤,您可以轻松地将 AppDynamics 的性能监控集成到您的 Flutter 应用中,确保应用的稳定性和性能得到全面监控。


更多关于Flutter应用性能监控插件appdynamics_agent的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用性能监控插件appdynamics_agent的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter应用中使用AppDynamics进行性能监控可以通过appdynamics_agent插件来实现。以下是一个基本的代码案例,展示了如何在Flutter项目中集成和使用appdynamics_agent插件。

1. 添加依赖

首先,你需要在你的pubspec.yaml文件中添加appdynamics_agent依赖。确保你的Flutter环境已经配置正确,并且网络连接正常,以便能够下载依赖包。

dependencies:
  flutter:
    sdk: flutter
  appdynamics_agent: ^x.y.z  # 请替换为实际的版本号

然后运行flutter pub get来安装依赖。

2. 初始化AppDynamics Agent

在你的Flutter应用的入口文件(通常是main.dart)中,初始化AppDynamics Agent。你需要提供你的AppDynamics应用密钥、服务名称和其他必要的配置信息。

import 'package:flutter/material.dart';
import 'package:appdynamics_agent/appdynamics_agent.dart';

void main() {
  // 初始化AppDynamics Agent
  AppDynamicsAgent.initialize(
    applicationKey: 'your-app-key',  // 替换为你的AppDynamics应用密钥
    serviceName: 'your-service-name',  // 替换为你的服务名称
    // 其他可选配置参数
    // ...
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter App with AppDynamics',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter App with AppDynamics'),
      ),
      body: Center(
        child: Text('Hello, AppDynamics!'),
      ),
    );
  }
}

3. 监控页面导航和自定义事件

你可以使用AppDynamics Agent来监控页面导航和记录自定义事件。例如,你可以在每个页面跳转时记录一个导航事件,或者在用户执行特定操作时记录一个自定义事件。

import 'package:flutter/material.dart';
import 'package:appdynamics_agent/appdynamics_agent.dart';

// ... (main函数和MyApp类保持不变)

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  void _navigateToSecondPage() {
    // 记录页面导航事件
    AppDynamicsAgent.recordCustomEvent(eventName: 'Navigate to Second Page');

    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => SecondPage()),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter App with AppDynamics'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Hello, AppDynamics!'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _navigateToSecondPage,
              child: Text('Go to Second Page'),
            ),
          ],
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Page'),
      ),
      body: Center(
        child: Text('Welcome to the Second Page!'),
      ),
    );
  }
}

在这个例子中,当用户点击按钮导航到第二个页面时,AppDynamicsAgent.recordCustomEvent方法被用来记录一个自定义事件,事件名称为"Navigate to Second Page"。

注意事项

  • 确保你已经正确配置了AppDynamics服务,并且你的应用密钥和服务名称是有效的。
  • appdynamics_agent插件的具体API和使用方法可能会随着版本的更新而有所变化,请参考官方文档或插件的README文件获取最新信息。
  • 性能监控涉及到敏感数据和隐私,确保你遵守相关的法律法规和隐私政策。

这个代码案例展示了如何在Flutter应用中集成和使用appdynamics_agent插件进行性能监控。根据你的具体需求,你可能需要进一步自定义和扩展这个基础实现。

回到顶部