准备工作(Android)

最近更新时间:2025-09-18 11:20:02

我的收藏

功能预览

TUILiveKit 是一个功能全面的直播组件,集成后可快速实现以下功能模块:
主播准备页
主播开播页
直播列表
观众观看页













准备工作

开通服务

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

环境要求

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

代码集成

步骤 1:下载 TUILiveKit 组件

GitHub 中克隆/下载代码,然后将 Android/tuilivekit 子目录拷贝到您当前 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")
include ':tuilivekit'

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 中已经内置了摄像头麦克风等权限的声明,在接入过程中您无需再关心这些权限的声明。