集成 SDK

更新时间: 2023/05/25 07:46:30

本文为您介绍了 Android 端集成 SDK 的操作步骤,帮助您快速集成 SDK 并实现互动直播的基本功能。

前提条件

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

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

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 中加入以下代码。

    javaapi '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:
      javaimplementation 'com.netease.yunxin:report:2.0.3'
      
    • V4.5.0:
      javaimplementation '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 路径。

    javaandroid {
          ...
        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 文件,添加必要的设备权限。

例如:

java//网络相关
 <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 公共类名称。

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

后续步骤

实现互动直播

常见问题

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

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