插件介绍
Metrics Center 是一个轻量级的 Flutter 插件,用于支持多种性能指标的生成和收集。它提供了统一的数据格式和接口,支持将性能指标发送到不同的目标平台(如 Skia 性能仪表板、Cocoon 仪表板等)。
该插件的主要功能包括:
- 定义统一的性能指标数据格式
- 支持多种性能指标生成器(如设备实验室、CI 机器人等)
- 提供将指标发送到不同目标平台的接口
- 支持性能数据的唯一标识和更新
在鸿蒙平台上,Metrics Center 可以用于收集 Flutter 应用在鸿蒙设备上的性能数据,如帧率、内存使用、启动时间等,并将这些数据发送到指定的性能分析平台。
版本兼容性
| 平台 | 支持版本要求 |
|---|---|
| 鸿蒙 | API 9+ |
| Flutter | >=3.7.0 |
| Dart | >=2.19.0 <4.0.0 |
依赖配置
由于这是自定义修改版本,需要通过 Git 方式引入依赖。在 Flutter 项目的 pubspec.yaml 文件中添加以下配置:
dependencies:
metrics_center:
git:
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
path: "packages/metrics_center"
添加依赖后,执行以下命令获取依赖包:
flutter pub get
API 调用示例
1. 导入必要的包
import 'package:metrics_center/metrics_center.dart';
2. 创建性能指标点
// 创建一个简单的性能指标点
final MetricPoint frameRatePoint = MetricPoint(
60.0, // 帧率值
{
'name': 'frame_rate', // 指标名称
'unit': 'fps', // 单位
'timestamp': DateTime.now().toIso8601String(), // 时间戳
'platform': 'ohos', // 平台
'device': 'HarmonyOS Device', // 设备信息
'git_revision': 'abc123', // Git 版本号
'config': 'release', // 构建配置
},
);
// 或者使用 FlutterEngineMetricPoint(针对 Flutter 引擎的便捷类)
final FlutterEngineMetricPoint enginePoint = FlutterEngineMetricPoint(
'startup_time', // 指标名称
1250.0, // 启动时间(毫秒)
'def456', // Git 版本号
moreTags: {
'platform': 'ohos',
'device': 'HarmonyOS Device',
'config': 'release',
},
);
3. 创建指标目标(Destination)
Metrics Center 支持通过不同的方式创建指标目标,以下是两种常用的方式:
3.1 使用服务账号 JSON 创建目标
// 从文件或字符串加载服务账号 JSON
final Map<String, dynamic> credentialsJson = {
// 服务账号 JSON 内容
'type': 'service_account',
'project_id': 'your-project-id',
'private_key_id': 'your-private-key-id',
'private_key': 'your-private-key',
'client_email': 'your-client-email',
'client_id': 'your-client-id',
'auth_uri': 'https://accounts.google.com/o/oauth2/auth',
'token_uri': 'https://oauth2.googleapis.com/token',
'auth_provider_x509_cert_url': 'https://www.googleapis.com/oauth2/v1/certs',
'client_x509_cert_url': 'your-client-cert-url',
};
// 创建 Flutter 指标目标
final FlutterDestination destination = await FlutterDestination.makeFromCredentialsJson(
credentialsJson,
isTesting: false, // 是否为测试环境
);
3.2 使用访问令牌创建目标
// 使用现有的访问令牌创建目标
final FlutterDestination destination = await FlutterDestination.makeFromAccessToken(
'your-access-token', // OAuth 访问令牌
'your-project-id', // Google Cloud 项目 ID
isTesting: false, // 是否为测试环境
);
4. 发送性能指标
// 准备要发送的指标点列表
final List<MetricPoint> points = [
frameRatePoint,
enginePoint,
// 可以添加更多指标点
];
// 设置提交时间和任务名称
final DateTime commitTime = DateTime.now();
final String taskName = 'ohos_performance_test';
// 发送指标到目标平台
try {
await destination.update(points, commitTime, taskName);
print('性能指标发送成功');
} catch (e) {
print('性能指标发送失败: $e');
}
5. 完整示例代码
import 'dart:convert';
import 'dart:io';
import 'package:metrics_center/metrics_center.dart';
Future<void> main() async {
// 1. 收集性能数据
print('开始收集鸿蒙平台性能数据...');
// 模拟收集帧率数据
final double frameRate = 59.8;
print('帧率: $frameRate fps');
// 模拟收集启动时间
final double startupTime = 1320.5;
print('启动时间: $startupTime ms');
// 模拟收集内存使用
final double memoryUsage = 128.3;
print('内存使用: $memoryUsage MB');
// 2. 创建性能指标点
final List<MetricPoint> points = [
MetricPoint(
frameRate,
{
'name': 'frame_rate',
'unit': 'fps',
'timestamp': DateTime.now().toIso8601String(),
'platform': 'ohos',
'device': 'HarmonyOS P40',
'git_revision': 'abc123',
'config': 'release',
},
),
MetricPoint(
startupTime,
{
'name': 'startup_time',
'unit': 'ms',
'timestamp': DateTime.now().toIso8601String(),
'platform': 'ohos',
'device': 'HarmonyOS P40',
'git_revision': 'abc123',
'config': 'release',
},
),
MetricPoint(
memoryUsage,
{
'name': 'memory_usage',
'unit': 'MB',
'timestamp': DateTime.now().toIso8601String(),
'platform': 'ohos',
'device': 'HarmonyOS P40',
'git_revision': 'abc123',
'config': 'release',
},
),
];
// 3. 配置指标目标
try {
// 注意:在实际项目中,应该从安全的地方加载这些凭据
final Map<String, dynamic> credentialsJson = json.decode(
File('service_account.json').readAsStringSync(),
);
final FlutterDestination destination = await FlutterDestination.makeFromCredentialsJson(
credentialsJson,
isTesting: true, // 测试环境
);
// 4. 发送指标
print('发送性能指标...');
await destination.update(points, DateTime.now(), 'ohos_performance_collection');
print('性能指标发送成功!');
} catch (e) {
print('性能指标发送失败: $e');
}
}
鸿蒙平台注意事项
-
网络权限:确保应用已获得网络访问权限,因为指标数据需要发送到远程服务器。
-
凭据安全:在生产环境中,不要将服务账号 JSON 或访问令牌硬编码在应用中。可以考虑使用安全存储或环境变量来管理这些敏感信息。
-
性能影响:收集和发送性能指标本身可能会对应用性能产生轻微影响。建议在非关键路径上执行这些操作,或只在特定的测试构建中启用。
-
兼容性:Metrics Center 依赖于一些 Google 服务库,确保这些库在鸿蒙平台上能够正常工作。
-
测试环境:在开发和测试阶段,可以将
isTesting参数设置为true,以便使用测试环境而不影响生产数据。
总结
Metrics Center 是一个强大的 Flutter 插件,用于收集和发送性能指标数据。在鸿蒙平台上,它可以帮助开发者:
- 统一管理不同来源的性能数据
- 将鸿蒙平台的性能指标与其他平台进行对比分析
- 持续监控应用在鸿蒙设备上的性能表现
- 支持 CI/CD 流程中的自动化性能测试
使用该插件时,需要注意正确配置依赖、安全管理凭据、并合理使用 API 以避免对应用性能产生负面影响。通过合理利用 Metrics Center,开发者可以更好地了解应用在鸿蒙平台上的性能表现,从而进行有针对性的优化。
1106

被折叠的 条评论
为什么被折叠?



