更新时间:2025-09-08 GMT+08:00
分享

Harmony SDK接入

APM Harmony SDK拥有以下应用监控能力:采集上报App崩溃、卡顿、错误信息、网络请求、终端设备、自定义事件等。

支持平台

API 12及以上。

传输协议

HTTPS

版本更新说明

表1 版本更新说明

版本号

SDK下载地址

更新说明

系统

2.0.6

SDK下载

1.解决用户在初始化之后setUid和setTag不生效的问题。

2.解决用户ID在特殊场景下自动刷新的问题。

3.封装HTTP请求方法,监听HTTP请求下的API数据。

API 12 及以上

2.0.5

SDK下载

1.解决setUid和setTag方法被混淆的问题。

API 12 及以上

2.0.3

SDK下载

  1. 添加参数校验。
  2. 添加调试日志。

API 12 及以上

2.0.2

SDK下载

  1. 解除SDK中对其他包的依赖。

API 12 及以上

2.0.1

SDK下载

  1. 提供采集上报App启动性能、崩溃、卡顿、错误、网络请求、终端设备、自定义上报等应用监控能力。

API 12 及以上

集成SDK

  1. 项目引入Harmony SDK。

    方法一:从Harmony仓库拉取SDK。

    • 使用如下命令,从Harmony仓库拉取SDK。
       ohpm install apm_harmony_sdk
    • 配置文件中添加依赖并引入SDK。
      在app/oh-package.json5中添加依赖
        dependencies {
          ...
          "apm_harmony_sdk": "2.0.6"
          ...
         }
      
        // 在终端中运行以下命令安装SDK
        ohpm install

    方法二:手动引入SDK。

    1. 下载应用性能监控SDK包
    2. 将下载到的har静态库文件添加到您的项目工程中(以下以根目录下的plugin文件夹为例)。
    3. 在app/oh-package.json5文件中添加依赖。
      dependencies {
            ...
            "apm_harmony_sdk": "file:../plugin/apm_harmony_sdk.har" // HAR包存放地址
            ...
          }
    4. 在终端中运行以下命令使能SDK。
      ohpm install

  2. 数据上报与获取网络状态需要在module.json5中打开相关权限,文件路径application > src > main > module.json5。

    "requestPermissions":[
          {
            "name": "ohos.permission.INTERNET"
          },
          {
            "name": "ohos.permission.GET_NETWORK_INFO"
          }
        ],

配置参数

  1. 登录APM控制台,创建Harmony App应用,详细操作参见Harmony快速接入
  2. 下载配置文件apm-sdk-config.json,并将文件拖入项目资源目录中,项目资源目录路径src > main > resources > rawfile。

    表2 鸿蒙配置参数列表

    配置参数

    说明

    是否必填

    默认值

    appId

    APM移动端AppID

    -

    authorization

    用于App认证

    -

    region

    上报APM所处的region,目前支持cn-north-4

    -

    uid

    用户自定义ID

    -

    tag

    用户自定义标签,多个时使用英文逗号隔开

    -

    url

    要上报APM的公网地址域名

    -

    networkWhiteList

    网络监控白名单,排除监控

    -

    cacheThreshold

    上报缓存阈值

    200

    timeInterval

    定时上报时间间隔

    60

    reportBackground

    App切换到后台时,是否上报

    true

    logLevel

    调试日志等级:debug|info|warn|error|off

    off

    enableNetwork

    使能网络采集

    false

    enableCrash

    使能崩溃采集

    false

    enableANR

    使能卡顿采集

    false

    enableError

    使能错误采集

    false

    enableDevice

    使能终端设备采集

    false

    enableEvent

    使能用户自定义统计

    false

    traceType

    trace类型:otel\apm

    apm

SDK使能

  1. 引入依赖模块。

    import { APMSDK } from "apm_harmony_sdk";

  2. 启动及自定义参数设置。

    // 启动SDK,在onCreate函数中添加以下代码:
     APMSDK.start(this.context.getApplicationContext());
    
     // 设置自定义ID
     APMSDK.setUid(自定义ID);
    
     // 设置自定义标签
     APMSDK.addTag(自定义标签);

其他方法

  1. 自定义上报错误数据。

    // 在try...catch...中添加捕获错误并上报到APM平台
     // 1.捕获Error类型
     import { APMSDK } from "apm_harmony_sdk";
     try {
       ...
     } catch(e) {
       APMSDK.reportError(e);
     }
     // 2.捕获BusinessError类型
     const response = await session.fetch(request).then((rep: rcp.Response) => {
        ...
     }).catch((err: BusinessError) => {
        ...
        APMSDK.reportBusinessError(err);
     });

  2. 使用rcp拦截器,上报API数据到APM平台。

    // 代码示例:
     import { APMRcpInterceptor, ResponseCache } from "apm_harmony_sdk";
     async function testInterceptor() {
      const cache: ResponseCache = new ResponseCache();
      const session = rcp.createSession({
        interceptors: [new APMRcpInterceptor(cache)]
      });
      const response = await session.get('上报地址');
    }

  3. 自定义埋点,主动上报数据。

    // APMCallbackHttp:监听带有url,OPTIONS,CALLBACK三个参数的请求
    import { APMCallbackHttp } from "apm_harmony_sdk";
    try {
        APMCallbackHttp(
        // 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
        "EXAMPLE_URL",
        {
          method: http.RequestMethod.GET, // 可选,默认为http.RequestMethod.GET
          // 开发者根据自身业务需要添加header字段
          header: {
            'Content-Type': 'application/json'
          }}, (err: BusinessError, data: http.HttpResponse) => {
        if (!err) {
          // data.result为HTTP响应内容,可根据业务需要进行解析
          console.info('Result:' + JSON.stringify(data.result));
          console.info('code:' + JSON.stringify(data.responseCode));
          // data.header为HTTP响应头,可根据业务需要进行解析
          console.info('header:' + JSON.stringify(data.header));
          console.info('cookies:' + JSON.stringify(data.cookies)); // 8+
        } else {
          console.error('error:' + JSON.stringify(err));
        }
      });
    } catch (e) {
      console.log(e);
    }
    
    // APMPromiseHttp:监听带有url,OPTIONS两个参数返回PROMISE的请求
    import { APMPromiseHttp } from "apm_harmony_sdk";
    try {
      let httpRequest = http.createHttp();
      const res = await APMPromiseHttp(
        // 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
        "http://EXAMPLE_URL/apm2/web/cmdb/business/v1/test2",
        {
          method: http.RequestMethod.GET, // 可选,默认为http.RequestMethod.GET
          // 开发者根据自身业务需要添加header字段
          header: {
            'Content-Type': 'application/json'
          }});
      console.log('res:' + JSON.stringify(res));
    } catch (e) {
      console.log(e);
    }

相关文档