apm_flutter_plugin 1.0.0 copy "apm_flutter_plugin: ^1.0.0" to clipboard
apm_flutter_plugin: ^1.0.0 copied to clipboard

APM Flutter Plugin.

APM Flutter SDK基于原生APM SDK,具备采集上报App启动性能、崩溃、卡顿、错误、网络请求、终端设备、自定义上报等应用监控能力。

使用前提

  • 使用SDK前,您需要注册华为账号,并在App监控控制台创建移动端iOS、Android App。

操作步骤

  1. 接入SDK:
  • 添加APM Flutter SDK:

flutter_app/pubspec.yaml

dependencies:
  ...省略
  apm_flutter_plugin: {apm_flutter_plugin_version}
  • 添加APM Android SDK:

flutter_app/android/build.gradle.kts

buildscript {
    repositories {
        google()
        mavenCentral()
    }
   ...省略
    dependencies {
    ...省略
        classpath("io.github.apm-sdk:apm-sdk-plugin:{apm_android_plugin_version}")
    }
}

flutter_app/android/app/build.gradle.kts:

plugins {
    ...省略
    id("com.cloud.apm.plugin")
}

android {
    ...省略
    dependencies {
      ...省略
      implementation("io.github.apm-sdk:apm-sdk-android:{apm_android_sdk_version}")
    }
}
  • 添加APM iOS SDK:

flutter_app/ios/Podfile:

pod 'APMSDK', '{apm_ios_sdk_version}'
  1. 添加配置文件。

在创建移动端App过程中,会生成名为apm-sdk-config.json的配置文件:

参数名称 是否必填 默认值 描述
appId - 移动端AppID。
authorization - 用于App认证。
region - 上报APM所处的region,目前支持cn-north-4、ap-southeast-3。
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
samplingRate 1.0 采样率,取值范围0~1.0。

iOS App添加配置文件:

  • 用Xcode打开flutter_app/ios/Runner.xcworkspace
  • 下载配置文件,拖拽至Runner根目录

Android App添加配置文件:

  • 下载配置文件,拖拽至app模块根目录
  1. 启动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);
    }
}
  1. 自定义上报统计。
    方法名称 参数说明
    static Future 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&okhttp4
-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"
}
0
likes
115
points
187
downloads

Publisher

unverified uploader

Weekly Downloads

APM Flutter Plugin.

Homepage

Documentation

API reference

License

unknown (license)

Dependencies

flutter, plugin_platform_interface, uuid

More

Packages that depend on apm_flutter_plugin

Packages that implement apm_flutter_plugin