SDK 初始化

最近更新时间:2025-10-17 18:56:51

我的收藏
本文将为您介绍 Harmony 平台如何进行 SDK 的初始化。

示例代码

初始化 Harmony SDK 日志诊断能力,完整的示例代码如下。
import { ILogInstance, TDLog, LogLevel, TDLogMode, TDDiag, TDDiagUploadParams } from 'rumPro';

public static initRumProDiagnose(context: Context) {
// 1、TDLog初始化(可选,如无自建日志组件推荐使用)
let logBuilder = new TDLogBuilder();

logBuilder.logDir = "xxx"; // 必填,日志的输出路径,填写示例如 getContext(this).filesDir + "/rumPro_tdlog"
logBuilder.namePrefix = "xxx"; // 必填,日志文件的前缀名称

logBuilder.consoleLog = true; // 可选,是否同时将日志打印到console
logBuilder.logLevel = LogLevel.LEVEL_ALL; // 可选,设置日志输出等级,详见初始化参数参考值
logBuilder.mode = TDLogMode.Async; // 可选,设置日志写入模式,分同步和异步,Release版本一定要用异步Async方式,Debug版本两个都可以,Sync可能有卡顿
logBuilder.pubKey = "xxx"; // 可选,可参考 https://github.com/Tencent/mars 使用 `gen_key.py` 生成公私钥,并联系RumPro小助手提供公私钥进行后台配置,同时在此传入公钥,即可在RumPro平台上传日志后进行解密,若后台无配置会导致线上日志解密失败
logBuilder.maxFileSize = 50 * 1024 * 1024; // 可选,设置单个日志文件的最大值,单位字节,默认50M
logBuilder.maxAliveTime = 7 * 24 * 60 * 60; // 可选,设置日志文件的保存时间,单位秒,默认7天
logBuilder.subLogDirs = subLogDirsArray; // 可选,如有设置日志子实例,需在初始化时提前设置所有子实例日志输出路径,用于RumPro平台捞取,设置类型为数组

TDLog.init(logBuilder);

// 2、TDDiag初始化
let diagBuilder = new TDDiagBuilder();

diagBuilder.appId = "xxx"; // 必填,RumPro平台提供的appId
diagBuilder.appKey = "xxxx"; // 必填,RumPro平台提供的appKey
diagBuilder.platform = TDDiagBuilder.PLATFORM_CLOUD; // 必填,OA版本填 [TDDiagBuilder.PLATFORM_OA], 专业版本填 [TDDiagBuilder.PLATFORM_PRO]
diagBuilder.appVersion = "1.0.0"; // 必填,设置app版本
diagBuilder.loggerAdapter = TDLog.getTDLogAdapter(); // 必填,设置日志适配器,如使用自建日志组件,需自实现LoggerAdapter接口,并传入实例

diagBuilder.xgTrafficQuota = 500 * 1024 * 1024; // 可选,每日可使用4G流量主动上报的日志大小,取值范围[0, 500],每日主动上报总流量大小(WIFI、4G)限制500M
diagBuilder.initiativeUploadWhiteListTags = whiteTags; // 可选,主动上报白名单tags列表,使用白名单中tag进行主动上报,将不受配额及上报频率限制
diagBuilder.logUploadListener = new DemoLogUploadListener(); // 可选,设置日志主动上报的回调接口

TDDiag.init(context, diagBuilder);

// 3、设置TDDiag Guid
TDDiag.setGuid("xxx"); // 必须初始化后设置,设置设备唯一标识Guid,用于日志捞取,设置后将触发配置拉取
}

接口说明

初始化参数参考类

enum LogLevel {
LEVEL_ALL = 0,
LEVEL_VERBOSE = 0,
LEVEL_DEBUG = 1,
LEVEL_INFO = 2,
LEVEL_WARNING = 3,
LEVEL_ERROR = 4,
LEVEL_FATAL = 5,
LEVEL_NONE = 6
}

enum TDLogMode {
Async = 0,
Sync = 1
}

主动上报回调接口

/**
* 主动上报回调接口实现
*/
class DemoLogUploadListener implements LogUploadListener {
onSuccess(): void {
console.info("do custom log upload callback, success!");
}

onFailure(): void {
console.info("do custom log upload callback, failure!");
}
}
注意:
context 需要传递 ApplicationContext 。
builder 类均需在init接口调用之前创建,且应避免重复调用 init 方法。
需要在调用 init 接口,完成初始化后,再调用 TDLog 或 TDDiag 的其他设置接口,否则设置可能不生效。

自实现日志组件适配接口(可选)

如需自实现日志组件,仅接入使用 RumPro 上报及捞取能力,可实现以下类,并将初始化时 diagBuilder.loggerAdapter 设置为自实现类的实例。
interface LoggerAdapter {
/**
* 设置日志染色级别
* @param level 染色级别
*/
setColorLevel(level: LogLevel): void;

/**
* 打印TDDiag日志
* @param level 日志等级
* @param tag 日志tag
* @param msg 日志内容
* @param e error
*/
printDiagnoseLog(level: LogLevel, tag: string, msg: string, e: Error | null): void;

/**
* 获取日志加密公钥
* @returns 不加密使用空串""
*/
getPubKey(): string;

/**
* 获取日志存放路径(如有日志子实例,需包含所有日志子实例输出路径),文件格式不限,按照创建时间捞取日志文件
* @returns
*/
getLogPaths(): Array<string>;
}