Flutter SDK接入
APM Flutter SDK基于原生APM SDK,具备采集上报App启动性能、崩溃、卡顿、错误、网络请求、终端设备、自定义上报等应用监控能力。
使用前提
使用SDK前,您需要注册华为账号,并在App监控控制台创建移动端iOS、Android App。
传输协议
HTTPS。
版本更新说明
|
版本号 |
更新说明 |
系统 |
|---|---|---|
|
1.0.0 |
|
Flutter 3.35.6+、Dart 3.9.2+、iOS 15+、Android 7+、Gradle 8.11.1+、AGP:8.9.1+、KGP 2.1.0+、JDK 17+、APM iOS SDK 2.1.0+、APM SDK 2.1.0+ |
操作步骤
- 接入SDK。
- 添加APM Flutter SDK到flutter_app/pubspec.yaml中。相关代码如下:
dependencies: ...省略 apm_flutter_plugin: 1.0.0
- 添加APM Android SDK到flutter_app/android/build.gradle.kts中。相关代码如下:
buildscript { repositories { google() mavenCentral() } ...省略 dependencies { ...省略 classpath("io.github.apm-sdk:apm-sdk-plugin:2.1.0") } } - 添加APM Android SDK到flutter_app/android/app/build.gradle.kts中。相关代码如下:
plugins { ...省略 id("com.cloud.apm.plugin") } android { ...省略 dependencies { ...省略 implementation("io.github.apm-sdk:apm-sdk-android:2.1.0") } } - 添加APM iOS SDK到flutter_app/ios/Podfile中。相关代码如下:
pod 'APMSDK', '2.1.0'
- 添加APM Flutter SDK到flutter_app/pubspec.yaml中。相关代码如下:
- 添加配置文件。
在创建移动端App过程中,会生成名为apm-sdk-config.json的配置文件,配置文件参数如下:
参数名称
是否必填
默认值
描述
appId
是
-
移动端AppID。
authorization
是
-
用于App认证。
region
是
-
上报APM所处的region,目前支持cn-north-4。
uid
否
-
用户自定义ID。
tag
否
-
用户自定义标签,多个时使用英文逗号隔开。
url
否
-
要上报APM的公网地址域名。
networkWhiteList
否
-
网络监控白名单,排除监控。
cacheThreshold
否
200条
当本地数据库存储条数达到该值会触发上报,取值范围为30-1000条。
timeInterval
否
60秒
定时器每隔该值会触发上报,取值范围为60-1800秒。
reportBackground
否
true
是否开启APP切后台上报功能。
reportLaunch
否
false
是否开启APP启动时上报功能。
enableNetwork
否
false
是否开启网络采集。
enableCrash
否
false
是否开启崩溃采集。
enableLaunch
否
false
是否开启启动采集。
enableANR
否
false
是否开启卡顿采集。
enableError
否
false
是否开启错误采集。
enableDevice
否
false
是否开启终端设备采集。
enableEvent
否
false
是否开启用户自定义上报。
traceType
否
apm
链路追踪类型,开启:otel,关闭:apm。
logLevel
否
off
调试日志等级:debug|info|warn|error|off。
samplingRate
否
1.0
采样率,取值范围0~1.0。
- 启动SDK。
- 启动APM Flutter SDK
import 'package:apm_flutter_plugin/apm_flutter_plugin.dart'; void main() { APMFlutterSDK.runApp(() async { // (可选)设置自定义ID APMFlutterSDK.setUid("自定义ID"); // (可选)设置自定义标签 APMFlutterSDK.addTag("自定义标签1,自定义标签2,自定义标签3"); // 运行App return runApp(const MyApp()); }); } - 启动APM Android SDK
import com.cloud.apm.APMSDK; import com.cloud.apm_flutter_plugin.APMFlutterPlugin; public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // 启动APM SDK var extraConfig = new HashMap<String, Object>(); extraConfig.put("crossPlatformUA", APMFlutterPlugin.crossPlatformUA()); APMSDK.start(this, extraConfig); } }
- 启动APM Flutter SDK
- 自定义上报统计。
方法名称
参数说明
static Future<void> event(String key, Object value)
key:事件名称,最大长度为2048个字符。value:事件内容,支持String,List,Map,num,转JSON字符串最大长度为30720个字符。
代码示例:
// 事件统计 APMFlutterSDK.event("User Information", {"name": "XXX"}); APMFlutterSDK.event("Error Description", "The request timed out."); APMFlutterSDK.event("Call Stack", ["0x0000000101ee9c6c", "0x0000600000e61d80"]); // 数值统计 APMFlutterSDK.event("Custom Load Time", 0.238); APMFlutterSDK.event("Purchase Statistics", 1);
混淆配置
如App对代码进行混淆,请在混淆配置文件proguard-rules.pro添加代码:
# 请根据App自身要求选择性设置:保留源文件名、源代码行号
-keepattributes LineNumberTable, SourceFile
# 防止APM SDK被混淆
-keep class com.cloud.apm_flutter_plugin.** {*;}
-keep class com.cloud.apm.**{*;}
# 请自行选择使用下面的配置
-keepclasseswithmembers class okhttp3.**{*;} # 使用okhttp3&okhttp
-dontwarn okhttp3.** # 未使用okhttp3&okhttp4
-keepclasseswithmembers class com.squareup.okhttp.**{*;} # 使用 okhttp2
-dontwarn com.squareup.okhttp.** # 未使用 okhttp2
ASM版本配置
如发生以下编译错误:
java.lang.UnsupportedOperationException: NestMember requires ASM7
at org.objectweb.asm.ClassVisitor.visitNestMember(ClassVisitor.java:265)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:697)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:425)
at com.cloud.apm.plugin.tasks.trace.methodTrace.MethodTracer.innerTraceMethodFromJar(MethodTracer.kt:184)
at com.cloud.apm.plugin.tasks.trace.methodTrace.MethodTracer.traceMethodFromJar$lambda-4$lambda-3(MethodTracer.kt:89)
请在flutter_app/android/gradle.properties添加如下代码:
com.cloud.apm.asmApi=ASM7
数据上报策略
SDK支持四种上报策略:阈值上报、定时上报、应用切后台以及启动时上报。根据场景选择合适的值配置cacheThreshold、timeInterval、reportBackground、reportLaunch等参数。
开启调试日志
在开发过程中可以开启调试日志,借助控制台实时查看SDK运行状况,观察日志并根据需要进行调整。日志级别有:debug、info、warn、error、off(关闭)。
请开发者在App上线前关闭调试日志功能,即设置为off。
示例:在配置文件apm-sdk-config.json中设置日志级别。
{
"logLevel": "debug"
}



