本章节介绍 Android 推/拉流 SDK 的支持系统、开发环境和集成方式。根据如下步骤进行操作,即可完成 Android 推/拉流 SDK 集成工作。
已获取 License 文件。
直播支持在线集成和离线集成 2 种 SDK 集成方法。
本章节为您介绍在线集成的具体步骤。
Step 1:配置 Maven 仓库
SDK 的集成需要配置多个 Maven 仓库,以确保所有必要的依赖项都能被正确下载。配置步骤如下:
打开根目录下的 build.gradle 文件。
配置主仓库服务器的 URL。主仓库的 URL 为: https://artifact.bytedance.com/repository/Volcengine/,集成代码示例如下:
allprojects { repositories { google() mavenCentral() maven { url "https://artifact.bytedance.com/repository/Volcengine/" // volc public maven repo } } }
配置其他 Maven 仓库。由于基础推拉流功能和其他相关组件分布在不同的 Maven 仓库中,您需要额外配置其他 Maven 仓库以确保所有依赖项都能被正确获取。
apply from: 'https://ve-vos.volccdn.com/script/vevos-repo-base.gradle'
https://ve-vos.volccdn.com/script/vevos-repo-base.gradle 中的 Maven 配置拷贝到 settings.gradle 文件的 dependencyResolutionManagement 配置块下。Step 2:配置环境和依赖
打开主工程下的 build.gradle 文件并完成以下配置:
defaultConfig 中配置 App 使用的 CPU 架构。支持 armv7a 和 arm64 架构。dependencies 中添加依赖。android { defaultConfig { ndk { //设置 SO 库架构,支持 armv7a 和 arm64 架构。 abiFilters 'armeabi-v7a', 'arm64-v8a' } } } dependencies { ...... //普通直播功能(不包含 RTM 和 QUIC 协议拉流功能) implementation 'com.bytedanceapi:ttsdk-ttlivepush:x.x.x.x' implementation 'com.bytedanceapi:ttsdk-ttlivepull_standard:x.x.x.x'
其中,
implementation 'com.bytedanceapi:ttsdk-ttlivepull_standard:x.x.x.x 替换为 implementation 'com.bytedanceapi:ttsdk-ttlivepull_premium:x.x.x.x'。implementation 'com.bytedanceapi:ttsdk-ttquic:x.x.x.x' 依赖。说明
x.x.x.x 替换为 SDK 的指定版本。推荐使用最新版本。版本号详见 Android 推拉流 SDK 发布历史。单击 Sync Now 按钮同步 SDK,SDK 将自动下载集成到工程。如果出现集成失败,请检查您与 jcenter 仓库的网络连接。
在 AndroidManifest.xml 文件中声明应用间交互的权限。
<!-- 使用权限 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.INTERNET" /> <!-- 以下权限仅用于推流 SDK: --> <uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 针对 Android 12 及以上版本,需额外声明以下权限: --> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
添加动态申请权限代码。
private boolean checkPermission(int request) { String permissions[] = new String[]{ Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.MODIFY_AUDIO_SETTINGS, Manifest.permission.ACCESS_NETWORK_STATE }; List<String> permissionList = new ArrayList<>(); for (String permission : permissions) { boolean granted = ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED; if (granted) continue; permissionList.add(permission); } if (permissionList.isEmpty()) return true; String permissionsToGrant[] = new String[permissionList.size()]; permissionList.toArray(permissionsToGrant); ActivityCompat.requestPermissions(this, permissionsToGrant, request); return false; }
拷贝 License 文件到工程目录下。例如下图所示,将 License2_test.lic 文件拷贝到 assets 目录下。

在 proguard-rules.pro 文件中,将 SDK 相关类加入不混淆名单。
-keep class com.pandora.**{*;} -keep class com.ss.**{*;} -keep class com.bytedance.**{*;} -keep class com.pandora.ttlicense2.**{*;} -keep class com.bytertc.**{*;} -keep class log.**{*;}
注意
如果您集成了 RTC SDK,除上述混淆规则外,您还需要配置 RTC 版本混淆规则