文档中心>直播 SDK>准备工作>准备工作(Android)

准备工作(Android)

最近更新时间:2026-03-03 18:01:02

我的收藏

功能预览

TUILiveKit 是一个功能全面的直播组件,集成后可快速实现以下场景功能。

视频直播

主播准备页
主播开播页
直播列表
观众观看页













语聊房

主播准备页
主播开播页
直播列表
观众观看页













准备工作

开通服务

在使用 TUILiveKit 前,请先参考 开通服务,领取 TUILiveKit 体验版或者开通付费版。

环境要求

Android Studio Arctic Fox (2020.3.1) 及以上版本。
Gradle 7.0 及以上的版本。
Android 5.0 及以上的手机设备。

代码集成

步骤 1:下载 TUILiveKit 组件

GitHub 中克隆/下载代码,然后将 live 子目录和 atomic_x 子目录拷贝到您当前 Android 项目的 app 文件夹同级目录中。


步骤 2:工程配置

1. 配置 JitPack 仓库

在工程根目录下的 settings.gradle.kts settings.gradle 文件中,添加 JitPack 仓库地址,项目中播放礼物 SVG 动画的第三方库托管在 JitPack 仓库中,需要从 JitPack 仓库中查找依赖项。
settings.gradle.kts
settings.gradle
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.ktssettings.gradle 文件中,增加以下代码以导入 tuilivekit 组件。
settings.gradle.kts
settings.gradle
include(":tuilivekit")
project(":tuilivekit").projectDir = File(settingsDir, "live/tuilivekit")

include(":atomic")
project(":atomic").projectDir = File(settingsDir, "atomic_x")
include ':tuilivekit'
project(':tuilivekit').projectDir = new File(settingsDir, "live/tuilivekit")

include(":atomic")
project(':atomic').projectDir = new File(settingsDir, "atomic_x")

3. 添加组件依赖

app 目录下找到 build.gradle.kts(或 build.gradle)文件,并在文件中增加以下代码,该步骤的作用是声明当前 App 对新加入的 tuilivekit 组件的依赖。
build.gradle.kts
build.gradle
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 的登录服务。这样可以避免因过早调用登录服务,导致业务逻辑混乱或数据不一致的问题,同时也能更好地适配您项目中现有的用户管理和权限控制体系。
Kotlin
Java
// 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() {
@Override
public void onSuccess() {
Log.i(TAG, "login success");
}

@Override
public 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
更多信息请参见 如何计算及使用 UserSig

登录异常状态处理【可选】

TUILogin 提供了登录状态回调机制,方便您处理可能出现的登录异常情况,主要包括 “被踢下线” 和 “签名过期” 这两种异常状态的回调:
被踢下线:用户在线情况下被踢,IM SDK 会通过 onKickedOffline 回调通知给您,此时可以在 UI 提示用户,并调用 TUILogin.login 重新登录。
签名过期:用户在线期间收到 onUserSigExpired 回调,说明您之前给该用户签发的 userSig 已经过期了,这个时候如果当前用户在您后台的登录态依然有效,您可以让您的 app 向您的后台请求新的 userSig,并调用 TUILogin.login 续签登录态。
kotlin
Java
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);
}

// 用户被踢下线回调
@Override
public void onKickedOffline() {
// 您的业务代码:UI 交互提示用户,然后重新登录
}

// 用户签名过期回调
@Override
public void onUserSigExpired() {
// 您的业务代码:如果当前用户在您后台的登录态依然有效,您可以让您的 app 向您的后台请求新的 userSig,并调用 TUILogin.login 续签登录态。
}
}

下一步

恭喜您,现在您已经成功集成了直播组件并完成了登录。接下来,您可以根据您的业务场景实现主播开播观众观看直播列表等功能。

视频直播场景

功能
描述
集成指引
主播开播
主播开播全流程功能,包括开播前的准备和开播后的各种互动。
观众观看
实现观众进入主播的直播间后观看直播,实现观众连麦、直播间信息、在线观众、弹幕显示等功能。
直播列表
展示直播列表界面和功能,包含直播列表、房间信息展示功能。

语聊房场景

功能
描述
集成指引
主播开播
主播创建语聊房全流程功能,包括开播前的准备和开播后的各种互动。
观众观看
观众进入语聊房后收听,实现上麦、弹幕显示等功能。
直播列表
展示语聊房列表界面和功能,包含语聊房列表、房间信息展示功能。

常见问题

每次进房都需要调用登录吗?

不需要。通常您只需要完成一次 TUILogin.login 调用即可,我们建议您将 TUILogin.loginTUILogin.logout 与自己的登录业务关联。

集成代码后产生如下图所示编译报错 allowBackup 异常,如何处理?




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




集成代码后还需要添加摄像头麦克风等权限的声明吗?

不需要,TUILiveKit 中已经内置了摄像头麦克风等权限的声明,在接入过程中您无需再关心这些权限的声明。