本章节介绍 Android 推/拉流 SDK 的支持系统、开发环境和集成方式。根据如下步骤进行操作,即可完成 Android 推/拉流 SDK 集成工作。
直播支持在线集成和离线集成 2 种 SDK 集成方法。
本文介绍在线集成的具体步骤。
Step 1:配置 Maven 仓库
在根目录的 build.gradle 中配置 Maven 仓库,自动下载更新推/拉流 SDK。
打开根目录下的 build.gradle。
定义 Maven 仓库。并配置仓库服务器的 URL。URL 为 https://artifact.bytedance.com/repository/Volcengine/
。集成代码示例如下所示。
allprojects { repositories { google() mavenCentral() maven { url "https://artifact.bytedance.com/repository/Volcengine/" // volc public maven repo } } } apply from: 'https://ve-vos.volccdn.com/script/vevos-repo-base.gradle'
Step 2:配置环境和依赖
打开主工程下的 build.gradle。
在 defaultConfig 中配置 App 使用的 CPU 架构。支持 armv7a 和 arm64 架构。
在依赖 dependencies 中添加 TTSDK 的在线集成地址。
android { defaultConfig { ndk { //设置 SO 库架构,支持 armv7a 和 arm64 架构。 abiFilters 'armeabi-v7a', 'arm64-v8a' } } } dependencies { ...... //添加 TTSDK 在线集成地址,推荐使用最新稳定版,获取方式请参考[SDK 下载]章节 //普通直播功能(不包含 RTM 推拉流或连麦功能) implementation 'com.bytedanceapi:ttsdk-ttlivepush:x.x.x.x' implementation 'com.bytedanceapi:ttsdk-ttlivepull:x.x.x.x' //添加第三方依赖。 implementation 'commons-net:commons-net:3.6' // 开启 HTTPDNS 解析 implementation 'com.squareup.okhttp3:okhttp:4.2.1' }
其中,如果您需要使用 RTM 协议推拉流功能,则需要将 TTSDK 的在线集成地址替换为:
implementation 'com.bytedanceapi:ttsdk-ttlivepush_rtc:x.x.x.x' implementation 'com.bytedanceapi:ttsdk-ttlivepull_rtc:x.x.x.x'
说明
单击 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" />
添加动态申请权限代码。
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 版本混淆规则