功能预览
TUILiveKit 是一个功能全面的直播组件,集成后可快速实现以下功能模块:
主播准备页 | 主播开播页 | 直播列表 | 观众观看页 |
![]() | ![]() | ![]() | ![]() |
准备工作
开通服务
环境要求
Android Studio Arctic Fox (2020.3.1) 及以上版本。
Gradle 7.0 及以上的版本。
Android 5.0 及以上的手机设备。
代码集成
步骤 1:下载 TUILiveKit 组件

步骤 2:工程配置
1. 配置 JitPack 仓库
在工程根目录下的
settings.gradle.kts
或 settings.gradle
文件中,添加 JitPack 仓库地址,项目中播放礼物 SVG 动画的第三方库托管在 JitPack仓库中,需要从 JitPack 仓库中查找依赖项。dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()// 添加 JitPack 仓库地址maven { url = uri("https://jitpack.io") }}}
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()// 添加 JitPack 仓库地址maven { url 'https://jitpack.io' }}}
2. 导入 TUILiveKit 组件
在工程根目录下的
settings.gradle.kts
或 settings.gradle
文件中,增加以下代码以导入 tuilivekit 组件。include(":tuilivekit")
include ':tuilivekit'
3. 添加组件依赖
在
app
目录下找到 build.gradle.kts
(或 build.gradle
)文件,并在文件中增加以下代码,该步骤的作用是声明当前 App 对新加入的 tuilivekit 组件的依赖。dependencies {// 添加 tuilivekit 依赖api(project(":tuilivekit"))}
dependencies {// 添加 tuilivekit 依赖api project(':tuilivekit')}
说明:
TUILiveKit 内部已默认依赖 TRTC SDK、IM SDK 等公共库,您无需单独配置。
4. 配置混淆规则
由于 SDK 内部使用了 Java 反射,请在
proguard-rules.pro
文件中添加以下代码,将相关类加入不混淆名单,以确保功能正常运行。-keep class com.tencent.** { *; }-keep class com.tencent.beacon.** { *; }-keep class com.tencent.cloud.iai.lib.** { *; }-keep class com.tencent.qimei.** { *; }-keep class com.tencent.xmagic.** { *; }-keep class com.trtc.uikit.livekit.component.gift.store.model.** { *; }-keep class com.trtc.uikit.livekit.livestreamcore.** { *; }-keep class com.tcmediax.** { *; }# Google 序列化/反序列化框架 Gson 库相关混淆-keep class com.google.gson.** { *; }# 美颜特效相关混淆-keep class androidx.exifinterface.** { *; }-keep class com.gyailib.** { *; }-keep class org.extra.** { *; }-keep class org.libpag.** { *; }-keep class org.light.** { *; }# 播放礼物SVG
动画相关混淆-keep class com.opensource.svgaplayer.proto.** { *; }-keep class com.squareup.wire.** { *; }
5. 修改 AndroidManifest.xml
为了防止编译时
AndroidManifest
合并过程中产生属性冲突,您需要在 app/src/main/AndroidManifest.xml
文件的 <application>
节点中,添加 tools:replace="android:allowBackup"
和 android:allowBackup="false"
,用以覆盖组件内的设置。<application...// 添加如下配置覆盖 依赖的 sdk 中的配置android:allowBackup="false"tools:replace="android:allowBackup">
6. 完成项目同步
在您完成上述步骤后,通常情况下 Android Studio 会自动为您弹出 Sync Now 按钮,您需要点击该同步按钮完成项目的同步,若 IDE 没有自动弹出同步按钮,请您手动点击工具栏中的同步按钮进行项目的同步,同步后 IDE 会完成项目的构建配置和索引等工作,您就可以在您的项目中正常使用 TUILiveKit 组件了。

完成登录
代码集成完成后,您需要完成登录。这是使用 TUILiveKit 的关键步骤,因为只有在登录成功后才能正常使用 TUILiveKit 的各项功能,故请您耐心检查相关参数是否配置正确:
说明:
在示例代码中,直接进行了登录接口的调用。但在实际项目场景下,强烈推荐 您在完成自己的用户身份验证等相关登录操作后,再调用 TUILiveKit 的登录服务。这样可以避免因过早调用登录服务,导致业务逻辑混乱或数据不一致的问题,同时也能更好地适配您项目中现有的用户管理和权限控制体系。
// 1.导入依赖import com.tencent.qcloud.tuicore.TUILogin// 2.调用登录接口,推荐您在自己登录业务完成后再调用 TUILogin 登录TUILogin.login(applicationContext,1400000001, // 请替换为开通服务控制台的 SDKAppID"denny", // 请替换为您的 UserID"xxxxxxxxxxx", // 您可以在控制台中计算一个 UserSig 并填在这个位置object : TUICallback() {override fun onSuccess() {Log.i(TAG, "login success")}override fun onError(errorCode: Int, errorMessage: String) {Log.e(TAG, "login failed, errorCode: $errorCode msg:$errorMessage")}})
// 1.导入依赖import com.tencent.qcloud.tuicore.TUILogin// 2.调用登录接口,推荐您在自己登录业务完成后再调用 TUILogin 登录TUILogin.login(context,1400000001, // 请替换为开通服务控制台的 SDKAppID"denny", // 请替换为您的 UserID"xxxxxxxxxxx", // 您可以在控制台中计算一个 UserSig 并填在这个位置new TUICallback() {@Overridepublic void onSuccess() {Log.i(TAG, "login success");}@Overridepublic void onError(int errorCode, String errorMessage) {Log.e(TAG, "login failed, errorCode: " + errorCode + " msg:" + errorMessage);}});
登录接口参数说明
参数 | 类型 | 说明 |
SDKAppID | Int | |
UserID | String | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。 |
userSig | String | 用于腾讯云鉴权的票据。请注意: 开发环境:您可以采用本地 GenerateTestUserSig.genTestSig 函数生成 UserSig 或者通过 UserSig 辅助工具 生成临时的 UserSig。生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参见 服务端生成 UserSig。 |
登录异常状态处理【可选】
TUILogin
提供了登录状态回调机制,方便您处理可能出现的登录异常情况,主要包括 “被踢下线” 和 “签名过期” 这两种异常状态的回调:被踢下线:用户在线情况下被踢,
IM SDK
会通过 onKickedOffline
回调通知给您,此时可以在 UI 提示用户,并调用 TUILogin.login
重新登录。签名过期:用户在线期间收到
onUserSigExpired
回调,说明您之前给该用户签发的 userSig 已经过期了,这个时候如果当前用户在您后台的登录态依然有效,您可以让您的 app 向您的后台请求新的 userSig,并调用 TUILogin.login
续签登录态。class YourLoginService : TUILoginListener() {// 监听登录状态回调fun addObserver() {TUILogin.addLoginListener(this)}// 取消监听登录状态回调fun removeObserver() {TUILogin.removeLoginListener(this)}// 用户被踢下线回调override fun onKickedOffline() {// 您的业务代码:UI 交互提示用户,然后重新登录}// 用户签名过期回调override fun onUserSigExpired() {// 您的业务代码:如果当前用户在您后台的登录态依然有效,您可以让您的 app 向您的后台请求新的 userSig,并调用 TUILogin.login 续签登录态。}}
class YourLoginService extends TUILoginListener {// 监听登录状态回调public void addObserver() {TUILogin.addLoginListener(this);}// 取消监听登录状态回调public void removeObserver() {TUILogin.removeLoginListener(this);}// 用户被踢下线回调@Overridepublic void onKickedOffline() {// 您的业务代码:UI 交互提示用户,然后重新登录}// 用户签名过期回调@Overridepublic void onUserSigExpired() {// 您的业务代码:如果当前用户在您后台的登录态依然有效,您可以让您的 app 向您的后台请求新的 userSig,并调用 TUILogin.login 续签登录态。}}
下一步
恭喜您,现在您已经成功集成了视频直播组件并完成了登录。接下来,您可以实现主播开播、观众观看、直播列表等功能,可参考下表:
常见问题
每次进房都需要调用登录吗?
不需要。通常您只需要完成一次
TUILogin.login
调用即可,我们建议您将 TUILogin.login
和 TUILogin.logout
与自己的登录业务关联。集成代码后产生如下图所示编译报错 allowBackup 异常,如何处理?


问题原因:多个模块的
AndroidManifest.xml
中都配置了 allowBackup
属性 ,造成冲突。解决方法:您可以在您工程的
AndroidManifest.xml
文件中删除 allowBackup
属性或将该属性改为 false
,表示关闭备份和恢复功能;并在 AndroidManifest.xml
文件的 application 节点中添加 tools:replace="android:allowBackup"
表示覆盖其他模块的设置,使用您自己的设置。修复示例如图所示:

集成代码后还需要添加摄像头麦克风等权限的声明吗?
不需要,TUILiveKit 中已经内置了摄像头麦克风等权限的声明,在接入过程中您无需再关心这些权限的声明。
