音视频通话 2.0
Android
动态与公告
更新日志(V4.6)
更新日志(V5)
活动与公告
【活动】音视频通话内容安全检测限时补贴
【活动】赠送100万分钟音视频通话时长
【邀测】音视频通话2.0V5.3邀请公测
关于RTC反垃圾送检计费变更的说明
新手接入指南
产品简介
产品介绍
功能特性
产品优势
应用场景
基本概念
使用限制
性能指标
产品计费
按量计费
资源包
体验 Demo
下载 SDK 和示例代码
升级指南
快速开始
快速跑通 Sample Code
接入流程
创建应用
开通服务
集成 SDK
实现音视频通话
Token 鉴权
高级 Token 鉴权
基础功能
设置音频属性
设置视频属性
设置视频旋转方向
设置通话音量
屏幕共享
音频共享
监测发言者音量
通话前网络质量探测
通话中质量监测
进阶功能
音频管理
客户端音频录制
原始音频数据
美声变声与混响
耳返
自定义音频采集与渲染
音效与伴音
设置音频订阅优先级
音频裸流传输
媒体补充增强信息SEI
视频管理
视频截图
水印
云信美颜
相芯美颜
自定义视频采集
虚拟背景
视频图像畸变矫正
视频裸流传输
多房间管理
设备管理
视频设备管理
音频设备管理
媒体流管理
跨房间媒体流转发
媒体流加密
视频流回退
云端录制
使用云代理
本地服务端录制
AI 融合功能
AI 超分
AI 降噪
场景实践
1 对 1 娱乐社交
语聊房
PK连麦
在线教育
互联网问诊
最佳实践
音视频参数配置推荐
房间连接状态管理
实现音视频安全检测
轻松构建本土Clubhouse
API 参考
Android API 参考
服务端 API
错误码(V5)
错误码(V4.x)
控制台指南
常见问题处理
FAQ
错题集
获取音频 Dump 文件
音频常见问题排查
视频常见问题排查
服务协议

集成SDK

更新时间: 2023/06/01 14:36:00

本文为您介绍了 Android 端集成 SDK 的操作步骤,帮助您快速集成 SDK 并实现实时音视频通话的基本功能。

前提条件

在开始运行工程之前,请您准备以下开发环境:

  • Android SDK API 等级 19 或以上。
  • Android Studio 3.0 或以上版本。
  • Android 系统 4.4 或以上版本的移动设备。
  • Gradle 6.7.1 以及以上版本。

SDK 目录

  • 目录结构
Android
|
|-- lib                      //推荐放置在 /app/libs/ 目录
|   |
|   |-- nertc-sdk-4.x.xx.jar    
|
|-- partlib                  //推荐放置在 /app/libs/ 目录(若仅集成 NERTC SDK,可忽略此文件夹)
|   |
|   |-- nertc-sdk-part-4.x.xx.jar
|   |-- yunxin-catcher-1.0.2.jar
|   |-- yunxin-nos-1.0.3.jar
|   |-- yunxin-report-2.1.0.jar
|   |-- GrowDevice-1.7.2.4.jar
|
|-- jniLibs                  //推荐放置在 /app/src/main/jniLibs/ 目录
|   |
|   |-- armeabi-v7a           
|       |
|       |   |-- libnertc_sdk.so
|       |   |-- libgrowease.so
|       |   |-- libNERtcnn.so
|       |   |-- libNERtcBeauty.so
|       |   |-- libNERtcFaceDetect.so
|       |   |-- libNERtcPersonSegment.so
|       |   |-- libNERtcAiDenoise.so
|       |   |-- libNERtcAiHowling.so
|       |   |-- libNERtcFaceEnhance.so
|       |   |-- libNERtcSuperResolution.so
|       |   |-- libNERtcVideoDenoise.so
|   |
|   |-- arm64-v8a
|       |
|       |   |-- libnertc_sdk.so
|       |   |-- libgrowease.so
|   |
|   |-- x86
|       |
|       |   |-- libnertc_sdk.so
|       |   |-- libgrowease.so
  • 目录内容
文件/文件夹名称 是否必选 说明
lib-nertc-sdk 音视频库。
libnertc_sdk.so
partlib-nertc-sdk-part G1 兼容库。
partlib-yunxin-catcher 崩溃捕获。
partlib-yunxin-nos 日志上报。
partlib-yunxin-report
partlib-GrowDevice 智企库。
libgrowease.so 智企库(自 V4.6.20 起提供)。
libNERtcnn.so 是(V5.3.1及之后版本:否) 神经网络库(自 V4.6.20 起提供,以实现插件化)。
  • V4.6.20 ~V4.6.x 版本:libNERtcnn.so动态库必选。
  • V5.3.1 及之后版本,只有集成美颜、虚拟背景、音频 AI 降噪、音频啸叫检测、人脸增强插件时,才需要集成 libNERtcnn.so 库文件。基础音视频不需要集成该库文件。
libNERtcBeauty.so 美颜库(自 V4.6.20 起提供,以实现插件化)。
libNERtcFaceDetect.so 人脸检测库(自 V4.6.20 起提供,以实现插件化)。
libNERtcPersonSegment.so 背景分割库(自 V4.6.20 起提供,以实现插件化)。
libNERtcAiDenoise.so AI 降噪库(自 V4.6.40 起提供,以实现插件化)。
libNERtcAiHowling.so AI 啸叫检测库(自 V4.6.40 起提供,以实现插件化)。
libNERtcFaceEnhance.so 人脸增强库(自 V5.3.0 起提供,以实现插件化)。
libNERtcSuperResolution.so 视频超分库(自 V5.3.0 起提供,以实现插件化)。
libNERtcVideoDenoise.so 视频降噪库(自 V5.3.0 起提供,以实现插件化)。

集成 SDK

Maven 集成(推荐)

  1. (可选)创建新项目。
您可以参考此步骤创建新项目,若是需要集成到已有的项目中,请忽略该步骤。
  1. 在 Android Studio 里,在顶部菜单依次选择 File > New > New Project 新建工程,再依次选择 Phone and Tablet > Empty Activity,单击 Next
    image
  2. 创建 Android 项目成功后,Android Studio 会自动开始同步 gradle, 您需要等同步成功后再进行下一步操作。
  1. 配置项目的 Gradle 文件。

    进入项目根目录,打开 app/build.gradle 文件,在 allprojects 中加入以下代码。

    allprojects {
        repositories {
            mavenCentral()
            maven { url 'https://www.jitpack.io' }
            google()
            
        }
    }
    

    app/build.gradle 文件中设置 Java 编译版本。

    android {
            compileOptions {
            // SDK 依赖的JDK版本为Java 8
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
            }
    
        }
    
    
  2. 引入 NERTC Android SDK。

    请在项目对应模块的 build.gradle 中加入以下代码。

    api 'com.netease.yunxin:nertc:x.x.x'
    

    其中,x.x.x 为待集成的 NERTC SDK 版本号。建议使用最新版本,您可以在网易云信 SDK 下载中心查看 NERTC SDK 最新版本的版本号。若要使用其他版本,请联系网易云信技术支持获取对应的版本号。

    若您对包体积大小有要求,请集成 V4.6.20 及之后版本的 NERTC SDK,实现以插件化的方式按需集成动态库,您可以参考以下代码实现:

    //集成 SDK 但不使用任何插件
    api 'com.netease.yunxin:nertc-base:x.x.x'
    
    //V4.6.20~V4.6.X版本,集成 SDK 且使用部分插件,以美颜为例
    implementation 'com.netease.yunxin:nertc-base:4.6.20'
    implementation 'com.netease.yunxin:nertc-beauty:4.6.20'
    implementation 'com.netease.yunxin:nertc-facedetect:4.6.20'
    
    //V5.3.0及以后版本,集成 SDK 且使用部分插件,以美颜为例
    implementation 'com.netease.yunxin:nertc-base:5.3.1'
    implementation 'com.netease.yunxin:nertc-nenn:5.3.1'
    implementation 'com.netease.yunxin:nertc-beauty:5.3.1'
    implementation 'com.netease.yunxin:nertc-facedetect:5.3.1'
    

    artifactId 中请填入待引入的动态库的名称,具体说明如下表所示。

    功能/插件 artifactId 的值 集成的动态库
    音视频 com.netease.yunxin:nertc-base 必选基础库( libnertc_sdk.solibgrowease.so 等)
    神经网络 com.netease.yunxin:nertc-nenn 神经网络库: libNERtcnn.so
    • V4.6.20 ~V4.6.x 版本:libNERtcnn.so动态库必选。
    • V5.3.1 及之后版本,只有集成美颜、虚拟背景、音频 AI 降噪、音频啸叫检测、人脸增强插件时,才需要集成 libNERtcnn.so 库文件。基础音视频不需要集成该库文件。
    美颜 com.netease.yunxin:nertc-beauty 美颜库: libNERtcBeauty.so
    com.netease.yunxin:nertc-facedetect 人脸检测库: libNERtcFaceDetect.so
    虚拟背景 com.netease.yunxin:nertc-segment 背景分割库:libNERtcPersonSegment.so
    AI 降噪 com.netease.yunxin:nertc-aidenoise AI 降噪库:libNERtcAiDenoise.so
    AI 啸叫检测 com.netease.yunxin:nertc-aihowling AI 啸叫检测库:libNERtcAiHowling.so
    人脸增强 com.netease.yunxin:nertc-faceenhance 人脸增强库:libNERtcFaceEnhance.so
    视频超分 com.netease.yunxin:nertc-superresolution 视频超分库:libNERtcSuperResolution.so
    视频降噪 com.netease.yunxin:nertc-videodenoise 视频降噪库:libNERtcVideoDenoise.so
  3. (可选)如果您使用的是 V3.7.x 或 V4.5.0 版本的 NERTC Android SDK,需要额外添加 report 库依赖。

    • V3.7.x:
      implementation 'com.netease.yunxin:report:2.0.3'
      
    • V4.5.0:
      implementation 'com.netease.yunxin:report:2.1.0'
      

      后续集成其他版本时,建议删除该行。

  4. 指定 App 使用的 CPU 架构

    请在项目对应模块的 build.gradledefaultConfig 中加入以下代码。

    defaultConfig {
        ndk {
                abiFilters "armeabi-v7a", "arm64-v8a", "x86", 
        }
    }
    
    • 目前 NERTC Android SDK 支持 armeabi-v7a、arm64-v8a 和 x86 架构。
    • 建议根据实际情况决定要支持的架构。通常在发布 App 时只需要保留 "armeabi-v7a" 和 "arm64-v8a" 即可,可以减少 APK 包大小。

手动集成

  1. (可选)创建新项目。
您可以参考此步骤创建新项目,若是需要集成到已有的项目中,请忽略该步骤。
  1. 在 Android Studio 里,在顶部菜单依次选择 File > New > New Project 新建工程,再依次选择 Phone and Tablet > Empty Activity,单击 Nextimage
  2. 创建 Android 项目成功后,Android Studio 会自动开始同步 gradle, 您需要等同步成功后再进行下一步操作。
  1. 前往 SDK 下载页面获取当前最新版本SDK,或联系网易云信技术支持获取对应版本的SDK。

  2. 解压后将对应的文件拷贝至项目路径中。

    文件/文件夹 项目路径
    nertc-sdk-x.x.x.jar /app/libs/
    arm64-v8a
    arm64-v7a
    x86
    /app/src/main/jniLibs/

    add_jar.png

    • 若无对应文件夹,您需要在对应路径下新建文件夹。
    • 无特殊情况,可忽略 part 文件夹。
    • 自 V4.6.20 版本起,armeabi-v7a 目录下的动态库包括美颜等可选库,请按需拷贝到对应的目录,具体请参见下表。
    功能/插件 集成的动态库
    音视频 必选基础库: libnertc_sdk.solibgrowease.sopartlib-nertc-sdk-partpartlib-yunxin-catcherpartlib-yunxin-nospartlib-yunxin-reportpartlib-GrowDevicelibgrowease.solibNERtcnn.so
    • V4.6.20 ~V4.6.x 版本:libNERtcnn.so动态库必选。
    • V5.3.1 及之后版本,只有集成美颜、虚拟背景、音频 AI 降噪、音频啸叫检测、人脸增强插件时,才需要集成 libNERtcnn.so 库文件。基础音视频不需要集成该库文件。
    美颜 美颜库: libNERtcBeauty.so
    • 人脸检测库: libNERtcFaceDetect.so
    • 神经网络库: libNERtcnn.so
    虚拟背景
    • 背景分割库:libNERtcPersonSegment.so
    • 神经网络库: libNERtcnn.so
    AI 降噪
    • AI 降噪库:libNERtcAiDenoise.so
    • 神经网络库: libNERtcnn.so
    AI 啸叫检测
    • AI 啸叫检测库:libNERtcAiHowling.so
    • 神经网络库: libNERtcnn.so
    人脸增强
    • 人脸增强库:libNERtcFaceEnhance.so
    • 神经网络库: libNERtcnn.so
    视频超分 视频超分库:libNERtcSuperResolution.so
    视频降噪 视频降噪库:libNERtcVideoDenoise.so
  3. app/build.gradle 文件中设置 libs 路径。

    android {
          ...
        compileOptions {
            // SDK 依赖的JDK版本为Java 8
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
        ...
        
        dependencies {
            implementation fileTree(dir: "libs", include: ["*.jar"])
            ...
        }
    }
    
  4. 指定 App 使用的 CPU 架构。

    请在项目对应模块的 build.gradledefaultConfig 中加入以下代码。

    defaultConfig {
        ndk {
                abiFilters "armeabi-v7a", "arm64-v8a", "x86", 
        }
    }
    
    • 目前 NERTC Android SDK 支持 armeabi-v7a、arm64-v8a 和 x86 架构。
    • 建议根据实际情况决定要支持的架构。通常在发布 App 时只需要保留 "armeabi-v7a" 和 "arm64-v8a" 即可,可以减少 APK 包大小。
  5. 单击 File > Sync Project With Gradle Files 按钮,直到同步完成。

添加权限

打开 app/src/main/AndroidManifest.xml 文件,添加必要的设备权限。

例如:

//网络相关
 <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
//防止通话过程中锁屏
 <uses-permission android:name="android.permission.WAKE_LOCK"/>
//视频权限
 <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.BLUETOOTH"/>
//蓝牙连接权限,此权限还需在运行应用时动态申请,否则 Android 12 及以上的设备蓝牙无法正常工作
 <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
//外置存储卡写入权限
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//蓝牙 startBluetoothSco 会用到此权限
 <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
 //获取设备信息
 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
//允许应用程序使用camera硬件资源
 <uses-feature android:name="android.hardware.camera"/>
 //自动对焦
 <uses-feature android:name="android.hardware.camera.autofocus"/>
 ......//APP需要的其他设备权限

您需要在代码中动态申请 android.permission.BLUETOOTH_CONNECT 权限,否则 Android 12 及以上系统版本的设备会无法使用蓝牙功能,具体信息请参见 Android 官方说明

配置防代码混淆

代码混淆是指使用简短无意义的名称重命名类、方法、属性等,增加逆向工程的难度,保障 Android 程序源码的安全性。为了避免因重命名类,导致调用 NERTC SDK 异常,您需要配置防代码混淆。

proguard-rules.pro 文件中,为 NERTC SDK 添加 -keep 类的配置,防止混淆 NERTC SDK 公共类名称。

-keep class com.netease.lava.** {*;}
-keep class com.netease.yunxin.** {*;}

后续步骤

实现音视频通话

常见问题

  • 如何减小集成 SDK 后的 App 包体积?

  • 集成时编译错误

    问题现象

    使用 Maven 下载的包进行集成时,出现编译错误,提示:Cannot run Flutter plugin: AAPT: error: unexpected element <uses-native-library>

    问题解决

    Gradle 版本升级到 6.7.1 或更高版本。由于旧版 Gradle 不支持 <uses-native-library> 标签,因此升级到新版本后即可解决该问题。

此文档是否对你有帮助?
有帮助
我要吐槽
  • 前提条件
  • SDK 目录
  • 集成 SDK
  • Maven 集成(推荐)
  • 手动集成
  • 添加权限
  • 配置防代码混淆
  • 后续步骤
  • 常见问题