跳到主要内容

HarmonyOS NEXT 部署

环境需求

最低支持API 11 (HarmonyOS NEXT Developer Preview2)

安装SDK

进入项目的根目录,执行以下命令

ohpm install @tingyun/sdk-core

初始化SDK

在入口Ability 的onCreate方法中初始化 SDK

import tingyun from '@tingyun/sdk-core'
import axios from '@ohos/axios'

export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
tingyun.init({
// redirect服务器地址, 在控制台设置页面获取
redirectHost: '<Redirect服务器地址>',
// appKey, 在控制台设置页面获取
appKey: '<AppKey>',
// 上下文
context: this.context,
// 如果使用axios, 可传入axios对象采集axios发送的网络请求
axios: axios
})
}
// ...
}

确认项目适配字节码格式HAR包

SDK HAR包为字节码格式, 需要将工程级build-profile.json5useNormalizedOHMUrl设置为true

{
"app": {
"products": [
{
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true
}
}
}
]
}
}

设置用户ID(可选)

import tingyun from '@tingyun/sdk-core'

tingyun.init({
// ...
})
// 设置应用的用户ID
tingyun.setUserId('<userId>')

权限配置

权限名称用途是否必须
ohos.permission.INTERNETSDK发送数据。不配置SDK无法启动
ohos.permission.GET_NETWORK_INFO获取网络连接信息。配置后可以获取网络类型和连接方式信息

验证数据上报

嵌码完成后,启动APP,在IDE中打开Log -> HiLog菜单,选择对应的APP,查看日志,检测存在init success关键字的日志后说明数据上报成功。

SDK 配置选项

import common from '@ohos.app.ability.common'

export enum LogLevel {
DEBUG,
INFO,
WARN,
ERROR,
NONE
}

export type RecordRule = {
// 需要采集此参数的域名/URL配置。目标URL包含于这项配置才会采集,如果不配置本条规则会对所有URL生效
url?: string
// 获取全部请求头, 默认空
reqHeaders?: string[]
// 请求体配置, 默认空
reqBody?: string[]
// 获取全部返回头, 默认空
resHeaders?: string[]
// 返回体配置, 默认空
resBody?: string[]
}

export type NetworkConfig = {
// 网络请求采集开关, 默认false
enabled?: boolean
// 跨应用追踪开关, 默认false
trackingEnabled?: boolean
// 采集数据白名单
recordConfig?: RecordRule[]
// 采集数据黑名单
recordBlockConfig?: RecordRule[]
// 采集的body截断长度, 单位KB
bodyMaxSize?: number
// 第三方apm请求头支持
apms?: string[]
// trace propagators
propagators?: string[]
}

export type CrashConfig = {
// 崩溃采集总开关, 默认true
enabled?: boolean
// js崩溃采集开关, 默认true
jsCrashEnabled?: boolean
// cpp崩溃采集开关, 默认true
cppCrashEnabled?: boolean
}

export type FreezeConfig = {
// 卡死监控开关, 默认false
enabled?: boolean
}

export type UserExperienceConfig = {
// 总开关, 默认false
enabled?: boolean
// 启动用户体验开关, 默认true
launchEnabled?: boolean
}

/**
* 应用配置
*/
export type InitConfig = {
// redirect服务器地址
redirectHost: string
// 应用appKey
appKey: string
// 上下文
context: common.Context
// 日志级别, 默认LogLevel.INFO
logLevel?: LogLevel
// 数据是否使用http发送数据, 默认false, 使用https发送
httpEnabled?: boolean
// axios对象, 需要拦截axios时需要传入
axios?: any
// 最大获取的栈深度
stackDepth?: number
// 是否使用历史数据协议上报,默认为false
legacyDataProtocol?: boolean
// 网络请求采集配置
network?: NetworkConfig
// Crash监控配置
crash?: CrashConfig
// AppFreeze监控配置
freeze?: FreezeConfig
// 用户体验配置
ue?: UserExperienceConfig
}

注: init传入的配置为SDK初始配置,在SDK与服务端通信后会优先以服务端下发的配置为准

功能支持列表

模块支持类性采集数据不支持类型
崩溃1. ArkTS 崩溃
2. C/C++ 崩溃
1. 堆栈
2. 线程信息
3. 系统日志
1. 轨迹
2. 自定义附加信息
3. 附加信息(CPU、内存等)
卡顿1. APP FREEZE1. 堆栈
2. 线程信息
3. 系统日志
4. 附加信息(CPU、内存等)
1. 轨迹
2. 自定义附加信息
网络模块1. Axios (@ohos/axios)
2. SDK基于@ohos.net.http的封装接口
1. 响应时间
2. 传输字节数
3. 3.0 跨应用及 apms
4. 状态码
5. HTTP 错误及网络错误
6. 请求内容采集
7. trace propagators
1. DNS时间
2. TCP 时间
3. SSL 时间
4. 首包时间
5. 剩余包时间
6. TCPPing
7. 2.0 跨应用
8. 2.0 cdnname
9. 黑白名单
基础信息1. 设备型号
2. 设备厂商
3. 应用名称
4. 运营商
5. 网络类型
6. 连接类型
7. 系统版本
1. 经纬度