本文档指导开发者完成阿里云移动监控 Flutter SDK 的接入配置,包含 SDK 下载、启动、验证等核心流程,支持 Android 和 iOS 平台。
一、前提条件
二、参考Demo
移动监控 Flutter SDK接入工程样例请参见Example工程。
三、将SDK添加到您的应用
在项目的
pubspec.yaml文件中添加alicloud_apm的依赖:dependencies: alicloud_apm: ${ApmVersion}重要SDK 版本
${ApmVersion}请从Flutter SDK 发布说明中获取最新版本。
运行
flutter pub get完成依赖下载管理。
四、使用SDK
方式一(推荐)
import 'dart:io' show Platform;
import 'package:alicloud_apm/alicloud_apm.dart';
Future<void> main() async {
final options = buildOptions();
if (options != null) {
await Apm.start(options);
}
runApp(const YourApp());
}
ApmOptions? buildOptions() {
if (Platform.isIOS) {
const appKey = 'Your iOS AppKey';
const appSecret = 'Your iOS AppSecret';
const appRsaSecret = 'Your iOS AppRsaSecret';
return const ApmOptions(
appKey: appKey,
appSecret: appSecret,
appRsaSecret: appRsaSecret,
// 以下是可选配置项(按需替换)
channel: 'Your Channel',
userNick: 'Your UserNick',
userId: 'Your UserId',
);
}
if (Platform.isAndroid) {
const appKey = 'Your Android AppKey';
const appSecret = 'Your Android AppSecret';
const appRsaSecret = 'Your Android AppRsaSecret';
return const ApmOptions(
appKey: appKey,
appSecret: appSecret,
appRsaSecret: appRsaSecret,
// 以下是可选配置项(按需替换)
channel: 'Your Channel',
userNick: 'Your UserNick',
userId: 'Your UserId',
);
}
// 其他平台(Web、Windows、macOS、Linux 等)不启动 APM
return null;
}方式二
以 Guarded Zone 启动
import 'dart:io' show Platform;
import 'package:alicloud_apm/alicloud_apm.dart';
Future<void> main() async {
await Apm.runGuarded(() async {
final options = buildOptions();
if (options != null) {
await Apm.start(options);
}
runApp(const YourApp());
});
}
ApmOptions? buildOptions() {
if (Platform.isIOS) {
const appKey = 'Your iOS AppKey';
const appSecret = 'Your iOS AppSecret';
const appRsaSecret = 'Your iOS AppRsaSecret';
return const ApmOptions(
appKey: appKey,
appSecret: appSecret,
appRsaSecret: appRsaSecret,
// 以下是可选配置项(按需替换)
channel: 'Your Channel',
userNick: 'Your UserNick',
userId: 'Your UserId',
);
}
if (Platform.isAndroid) {
const appKey = 'Your Android AppKey';
const appSecret = 'Your Android AppSecret';
const appRsaSecret = 'Your Android AppRsaSecret';
return const ApmOptions(
appKey: appKey,
appSecret: appSecret,
appRsaSecret: appRsaSecret,
// 以下是可选配置项(按需替换)
channel: 'Your Channel',
userNick: 'Your UserNick',
userId: 'Your UserId',
);
}
// 其他平台(Web、Windows、macOS、Linux 等)不启动 APM
return null;
}五、配置Gradle插件(Android)
由于性能分析依赖Gradle插件在字节码中注入代码来采集性能数据,所以需要添加相关的maven仓库和gradle插件。
添加Maven仓库
在<project>/android/build.gradle.kts里添加阿里云的Maven仓库。
allprojects {
repositories {
google()
mavenCentral()
//添加阿里云Maven仓库
maven {
url = uri("https://maven.aliyun.com/nexus/content/repositories/releases/")
}
}
}在<project>/android/settings.gradle.kts里添加阿里云的Maven仓库。
pluginManagement {
...
repositories {
google()
mavenCentral()
gradlePluginPortal()
//添加阿里云Maven仓库
maven {
url = uri("https://maven.aliyun.com/nexus/content/repositories/releases/")
}
}
}
plugins {
...
// 添加移动监控的gradle插件
id("com.aliyun.emas.apm") version "3.3.0" apply false
}应用Gradle插件
在<project>/android/app/build.gradle.kts里应用添加的插件。
plugins {
...
// 应用移动监控的gradle插件
id("com.aliyun.emas.apm")
}重要
由于冷启动数据采集,apm插件会在Application中插桩,所以确保您的项目里有自定义Application。
六、混淆配置(Android)
如果您的项目做了代码混淆,请在<project>/android/app/proguard-rules.pro保留以下混淆配置。
-keep class com.aliyun.emas.apm.**{*;}
-dontwarn com.google.auto.value.AutoValue
-dontwarn com.google.auto.value.AutoValue$Builder
-dontwarn com.alibaba.motu.crashreporter.MotuCrashReporter
-dontwarn com.alibaba.sdk.android.networkmonitor.NetworkMonitorManager
-dontwarn com.taobao.tao.log.TLogInitializer七、接入验证
Android
对于 Android,请查看 Android Studio Logcat输出,检查是否有以下日志信息:
Apm I Device unlocked: initializing Apm Apm-CrashAnalysis I Initializing Apm Crash Analysis 3.6.1 for com.aliyun.emas.apm.flutter Apm-CrashAnalysis I Initializing CrashAnalysis blocked main for 10 ms Apm I Apm initialization successful此日志表明 崩溃分析SDK 在 Native 层已成功启动。
iOS
[alicloud_apm] Alicloud APM started. Package version=1.1.0
[AlicloudApmCore] Started Successfully
[AlicloudApmSetting] Fetched Successfully此日志表明 SDK 分别在 Flutter 层和 Native 层成功启动,并且拉取配置成功。
八、扩展资料
该文章对您有帮助吗?