API 说明

最近更新时间:2025-08-20 17:51:32

我的收藏
本文详细介绍终端性能监控 Pro SDK 的各功能接口,帮助您更加灵活、深度的使用 SDK。

信息更新接口

SDK 初始化后,如需更新必要字段,接口如下。
/**
* 更新device id
* @param deviceId device id
*/
public static updateDeviceId(deviceId: string);

/**
* 更新user id
* @param userId user id
*/
public static async updateUserId(userId: string);

/**
* 更新device model
* @param deviceModel
*/
public static updateDeviceModel(deviceModel: string);

错误上报接口

SDK 支持通过如下两个接口上报 catch Error 或自定义错误。
/**
* 上报catch Error
* @param e Error
* @param extraData [可选] 随错误上报的附加信息,以userExtraByteData附件展示
*/
public static postError(e: Error, extraData?: string): void;


/**
* 上报自定义错误
* @param name 异常名
* @param message 异常msg
* @param stack 异常堆栈
* @param storeFirst [可选] 是否优先存储db不立即上报,默认为false,仅在异常现场时采集的错误可设置为true
* @param context [可选] 如果未初始化Bugly调用接口,传入context可记录错误
* @param extraData [可选] 随错误上报的附加信息,以userExtraByteData附件展示
*/
public static postCustomError(name: string, message: string, stack: string, storeFirst: boolean = false, context?: Context, extraData?: string): void;
如即时上报一条自定义错误,且添加附加信息,示例如下:
Bugly.postCustomError("testErrorName", "testErrorMsg", "at testErrorStack 1\\nat testErrorStack 2", false, undefined, "This is extra data file content");
说明:
postError 接口适用于 arkTs 中 catch 异常的捕获,直接传入 catch 错误的 Error 实例,会自动从 Error 实例中解析出对应的异常名称及堆栈信息。
postCustomError 接口适用于上报自定义异常,如采用跨端框架、游戏框架的异常。如果在正常环境下,storeFirst 参数无需设置,如果在进程可能被系统杀死环境下,建议设置 storeFirst 参数为 true,当前只以同步方式保存异常到本地文件,二次启动进程时上报。
postCustomError0.4.1 及之后的 SDK 版本支持跨线程上报错误,但需在主线程初始化 Bugly,或设置storeFirst 参数设置为 true。
上述错误上报接口在 0.4.1 及之后的 SDK 版本中支持携带附加信息,如有设置 extraData 附加信息参数,错误上报后,将在错误详情中以 userExtraByteData 附件的形式提供下载。
错误上报在 0.4.1 及之后的 SDK 版本中支持配置控制采样率,设置方式请参见 SDK 配置

自定义数据接口

SDK 0.2.0 开始支持设置自定义数据,自定义数据需在 CrashFreeze错误发生前进行设置,可以进行更新和移除操作,异常上报时会携带设置的自定义数据。
/**
* 添加或更新自定义数据
* @param key 自定义key
* @param value 自定义value
*/
public static putUserData(key: string, value: string);

/**
* 移除自定义数据
* @param key 自定义key
*/
public static removeUserData(key: string);

/**
* 清空自定义数据
*/
public static clearUserData();
上报的自定义数据将在问题详情 > 现场数据 > 自定义字段中进行展示,如下图所示。


自定义附件接口

SDK 0.2.0 开始支持设置业务自定义附件,自定义附件上报当前只支持 CrashFreeze。在发生异常前,通过如下接口设置自定义附件的路径。
/**
* 设置自定义文件路径
* 传入参数为string数组,受限于AppEvent参数限制,数组值长度需在1024个字符以内
* @param paths 自定义文件路径
*/
public static async setCustomFilePaths(paths: Array<string>);
发生异常重启进程后,自定义附件会进行打包上传,在附件中展示为 custom_log.gzip
注意:
自定义数据、自定义附件、自定义标签及现场信息的关联均会使用到系统 hiAppEvent.setEventParam 接口,该接口设置参数值长度需在1024个字符以内,且至多设置64个键值对。因此自定义附件 Array 的所有值长度和需在1024个字符以内,否则可能设置失败。
如果业务有自行设置系统 hiAppEvent.setEventParam 接口,请务必预留一定数量的键值对供 Bugly 设置(5个以上),否则可能影响自定义数据、附件或现场信息关联。

自定义标签接口

SDK 0.4.1 开始支持业务自定义个例标签设置,标签随异常个例上报。个例标签需先在控制台的 应用配置 > 平台配置 > 标签 中进行新建,如下所示。

接着通过如下 SDK 接口,在代码中设置自定义标签 ID,异常个例上报时会同时上报这些标签 ID。
/**
* 设置个例标签
* @param caseLabel 个例标签数组
*/
public static async setCaseLabel(caseLabel: Array<string>);
如设置如下自定义标签。
await Bugly.setCaseLabel(["22096", "22103", "22244"]);

日志导出接口

SDK 0.2.0 开始支持导出 Bugly 日志打印到业务日志系统中(不设置则默认打印到系统 HiLog 日志系统中),在初始化前调用如下接口进行设置
/**
* 设置Bugly日志适配器
* @param adapter 适配器
*/
public static setLogAdapter(adapter: BuglyLogAdapter);

/**
* Bugly日志适配接口
*/
export interface BuglyLogAdapter {
// debug级别日志
debug(tag: string, arg: string): void;
// info级别日志
info(tag: string, arg: string): void;
// warn级别日志
warn(tag: string, arg: string): void;
// error级别日志
error(tag: string, arg: string): void;
// fatal级别日志
fatal(tag: string, arg: string): void;
}
注意:
SDK 0.3.7 及之后的版本新增了日志导出接口 tag 参数,如有导出 Bugly 日志,请进行适配调整。

FaultLog 附件管理接口

Bugly 注册系统异常回调后,会自动管理系统异常 FaultLog 文件,默认上报完后会进行删除,否则缓存区满会影响后续 FaultLog 文件生成。如不希望 Bugly 对 FaultLog 文件进行删除,而是自行管理,可通过以下接口进行设置。
/**
* 设置是否在bugly上报完fault log附件后删除
* @param shouldDelete 是否需要bugly删除
*/
public static setDeleteFaultLogFileAfterUpload(shouldDelete: boolean);

异常回调接口

SDK 0.3.3 开始支持 Js Crash、Cpp Crash 的异常回调,方便在发生异常时,能回调业务进行一些自定义操作。
SDK 0.3.5 提供 HiAppEvent 收到异常信息时的回调,简化业务注册流程,设置接口如下。
/**
* 异常回调接口
*/
export interface ICrashListener {
/**
* 异常发生时回调
* @param crashType 异常类型,当前仅支持 JsCrash、CppCrash
* @param crashName 异常名称,具体异常名称
* @param crashMsg 异常信息,CppCrash不支持
* @param crashStack 异常堆栈,CppCrash不支持
*/
onCrash(crashType: string, crashName: string, crashMsg: string, crashStack: string): void;
/**
* HiAppEvent收到异常信息时回调,支持Crash和Freeze
* @param crashType 异常类型
* @param crashName 异常名称
* @param crashMsg 异常信息
* @param crashStack 异常堆栈
*/
onHiAppEventReceive(crashType: string, crashName: string, crashMsg: string, crashStack: string): void;
}
设置异常回调接口示例如下。
// 在 Bugly 初始化前定义接口实现
class DemoCrashListener implements ICrashListener {
onCrash(crashType: string, crashName: string, crashMsg: string, crashStack: string): void {
console.info('receive callback in demo.');
console.info(`Crash Type: ${crashType}`);
console.info(`Crash Name: ${crashName}`);
console.info(`Crash Message: ${crashMsg}`);
console.info(`Crash Stack: ${crashStack}`);
}
onHiAppEventReceive(crashType: string, crashName: string, crashMsg: string, crashStack: string): void {
console.info('[demo] receive hiAppEvent crash in demo.');
console.info(`[demo] Crash Type: ${crashType}`);
console.info(`[demo] Crash Name: ${crashName}`);
console.info(`[demo] Crash Message: ${crashMsg}`);
console.info(`Crash Stack: ${crashStack}`);
}
}

// Bugly 初始化逻辑
let builder = new BuglyBuilder();
...
// 初始化时将接口示例传递给 builder.crashListener 参数
builder.crashListener = new DemoCrashListener();
...
await Bugly.init(context, builder);
注意:
暂不支持 App Freeze 异常回调。
Cpp Crash 回调暂不支持提供堆栈信息。
请勿在回调中进行复杂操作,异常现场回调暂时无法保障稳定性,可能引入未知风险,请谨慎开启。

动态开关

SDK 支持质量和性能异常监控模块动态开关,可通过以下接口在业务需要的场景中动态开启或关闭异常监控上报。
/**
* 质量异常监听动态开关
* @param isFreeze true为Freeze监控,false为Crash监控(包括Js Crash和Cpp Crash)
* @param isAble 打开或关闭
*/
public static setCrashMonitorAble(isFreeze: boolean, isAble: boolean): void;

/**
* 性能模块动态开关
* @param modules 性能模块项或列表
* @param isAble 打开或关闭
*/
public static setPerfMonitorsAble(modules: string | Array<string>, isAble: boolean): void;