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.json5
中useNormalizedOHMUrl
设置为true
{
"app": {
"products": [
{
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true
}
}
}
]
}
}
设置用户ID(可选)
import tingyun from '@tingyun/sdk-core'
tingyun.init({
// ...
})
// 设置应用的用户ID
tingyun.setUserId('<userId>')
权限配置
权限名称 | 用途 | 是否必须 |
---|---|---|
ohos.permission.INTERNET | SDK发送数据。不配置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 FREEZE | 1. 堆栈 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. 经纬度 |