本章节主要指导您完成
TUILiveKit UI 组件库接入的环境配置。功能预览
TUILiveKit UI 组件为您提供的是功能闭环、交互丰富的直播全链路逻辑,集成后可快速实现一套交互完整、业务丰富的直播系统。
视频直播
主播开播前预览 | 主播开播 | 观众观看 | 主播和观众连麦 |
![]() | ![]() | ![]() | ![]() |
准备工作
开通服务
环境要求
DevEco Studio:已安装 HarmonyOS SDK 6.1.1(API 24),并使用 DevEco 自带的 JBR 作为 JDK。
工程配置:Hvigor modelVersion 为 6.1.1;targetSdkVersion 为 6.1.1(24),compatibleSdkVersion 为 6.0.0(20),runtimeOS 为 HarmonyOS。
设备:HarmonyOS 6.0.0(API 20)及以上版本的手机设备。
代码集成
步骤1:下载 TUILiveKit 组件
1. 在 GitHub 中克隆/下载代码,将 live-v2/tuilivekit 目录拷贝到您的 Hvigor 工程根目录下(与 entry 模块同级)。

2. 声明依赖:在
entry/oh-package.json5 中声明本地组件与 AtomicXCore 核心库:{"name": "entry","version": "1.0.0","dependencies": {"tuilivekit": "file:../../TUILiveKit","@tencentcloud/atomicxcore": "5.3.0"}}
3. 注册模块:在工程根
build-profile.json5 的 modules 中注册组件模块,srcPath 大小写需与磁盘目录一致:{"app": {"products": [{"name": "default","targetSdkVersion": "6.1.1(24)","compatibleSdkVersion": "6.0.0(20)","runtimeOS": "HarmonyOS","buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": true}}}]},"modules": [{"name": "entry","srcPath": "./entry"},{"name": "tuilivekit","srcPath": "../TUILiveKit"}]}
4. 安装依赖:在工程根目录执行:
ohpm install --all
步骤2:工程配置
组件 HAR 自身不声明权限,音视频权限需由宿主 entry 模块声明。请在
entry/src/main/module.json5 的 module 节点中添加:{"module": {"name": "entry","type": "entry","mainElement": "EntryAbility","deviceTypes": ["phone"],"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"},{"name": "ohos.permission.CAMERA","reason": "$string:app_name","usedScene": {"abilities": ["EntryAbility"],"when": "inuse"}},{"name": "ohos.permission.MICROPHONE","reason": "$string:app_name","usedScene": {"abilities": ["EntryAbility"],"when": "inuse"}}]}}
同时在
AppScope/app.json5 中配置您的 bundleName,并在 DevEco Studio 的 File > Project Structure > Signing Configs 中完成调试签名配置。说明:
compatibleSdkVersion 请保持 6.0.0(20);提高到设备不支持的版本会导致安装失败。组件侧通过 applicationStateChange 监听前后台切换,无需在 module.json5 中额外声明后台模式。完成登录
代码集成完成后,您需要完成登录,这是使用 TUILiveKit 的关键步骤,因为只有在登录成功后才能正常使用 TUILiveKit 的各项功能,故请您耐心检查相关参数是否配置正确:
说明:
在示例代码中直接进行了登录接口的调用。但在实际项目场景下,强烈推荐您在完成自己的用户身份验证等相关登录操作后,再调用 TUILiveKit 的登录服务。这样可以避免因过早调用登录服务,导致业务逻辑混乱或数据不一致的问题。
import { LoginStore } from '@tencentcloud/atomicxcore'@Componentstruct LoginService {private readonly loginStore: LoginStore = LoginStore.shared()login(): void {// 1. 调用登录接口,userSig 应由您的业务服务端下发this.loginStore.login(1400000001, // 请替换为开通服务控制台的 SDKAppID'denny', // 请替换为您的 UserID'xxxxxxxxxxx', // 请替换为服务端生成的 UserSiggetContext(this),).then(() => {// 2. 登录成功console.info('login success')}).catch((error: Error) => {console.error(`login failed: ${error.message}`)})}build() {Column() {}}}
登录接口参数说明
参数 | 类型 | 说明 |
SDKAppID | Int | |
UserID | String | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。 |
UserSig | String | 用于腾讯云鉴权的票据。请注意: 开发环境:您可以采用本地 GenerateTestUserSig.genTestSig 函数生成 UserSig 或者通过 UserSig 辅助工具 生成临时的 UserSig。生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参见 服务端生成 UserSig。 |
登录异常状态处理【可选】
LoginStore 提供了登录事件订阅,方便您处理可能出现的登录异常情况,主要包括 被踢下线 和 签名过期 两种事件:
被踢下线:用户在线情况下被踢,SDK 会通过 LoginEvent.KICKED_OFFLINE 事件通知给您,此时可以在 UI 提示用户,并调用
LoginStore.shared().login 重新登录。签名过期:收到 LoginEvent.LOGIN_EXPIRED 事件说明 userSig 已过期,如果当前用户在您后台的登录态依然有效,可向后台请求新的 userSig 并重新登录。
import { LoginEvent, LoginStore } from '@tencentcloud/atomicxcore'@Componentstruct LoginEventObserver {private readonly loginStore: LoginStore = LoginStore.shared()observeLoginEvents(): void {this.loginStore.loginEventEmitter.subscribe(this, (event: LoginEvent) => {if (event === LoginEvent.KICKED_OFFLINE) {console.info('kicked offline')} else if (event === LoginEvent.LOGIN_EXPIRED) {console.info('login expired')}})}build() {Column() {}}}
下一步
恭喜您,现在您已经成功集成了直播组件并完成了登录。接下来,您可以根据您的业务场景实现主播开播、观众观看、直播列表等功能。
常见问题
集成后还需要添加摄像头、麦克风权限声明吗?
需要。组件 HAR 的
module.json5 不包含 requestPermissions,请在宿主 entry 模块中声明 INTERNET、GET_NETWORK_INFO、CAMERA、MICROPHONE 四项权限;组件内的开播页会在运行时动态申请相机与麦克风权限。ohpm 依赖解析失败或找不到 tuilivekit?
请在 Hvigor 工程根执行
ohpm install --all,并确认 entry/oh-package.json5 中的 file: 路径与 build-profile.json5 中 srcPath 指向真实的 TUILiveKit 目录。工程开启了 caseSensitiveCheck,路径大小写必须与磁盘一致。构建时报 Unable to locate a Java Runtime?
请将 JAVA_HOME 显式指向 DevEco Studio 自带的 JBR,并把
$JAVA_HOME/bin 加入 PATH,再重新执行构建命令。


