减小 App 体积
- Android
更新时间不可用
了解实时互动 RTC 在不同平台上的减小 App 体积方式,包括接入流程、关键配置和平台差异。
App 体积是影响用户体验的重要因素之一,更小的包体积意味着用户可以消耗更少的带宽和时间下载 App。在以下场景中,减小 App 体积对提升用户体验具有重要意义:
- App 的应用场景对 App 体积有严格要求。例如运行在储存空间有限的智能穿戴设备上。
- App 的目标用户群体位于欠发达地区,网络环境较差,导致 App 下载时间过长。
本文介绍如何减少集成声网实时互动 SDK 的 App 体积。
使用音频 SDK
视频 SDK 支持音频和视频功能,包体积大。如果你只需使用音频功能,建议你集成音频 SDK,详见实现纯语音互动。
信息
目前,实时互动 SDK 在 Windows 和 macOS 平台仅提供视频 SDK 下载。
按需集成 FFmpeg 插件
自 v4.7.0 起,音频 SDK 将 FFmpeg 调整为可按需集成的插件 libagora_ffmpeg_extension.so,SDK 包中默认包含该插件。
FFmpeg 插件用于扩展 MediaPlayer 的音频文件播放能力,并依赖 libaosl.so。如果你的应用不需要 FFmpeg 提供的相关播放能力,可以在集成时移除或不链接 libagora_ffmpeg_extension.so,以减小 App 体积。移除后,MediaPlayer 将使用系统原生播放能力,实际支持的音频文件格式取决于系统支持的容器格式和音频编解码器;如需播放系统原生能力之外的音频格式,请继续集成 FFmpeg 插件。
使用 Lite SDK
自 v4.4.0 起,声网提供实时互动 Lite SDK,提供基本的音视频通话功能,包体积较小。如果你只需使用基本的音视频通话功能,建议你集成 Lite SDK,详见下载。
Lite SDK 仅包含以下插件,其他插件列表中的插件及相关功能均不支持:
- 视频编码插件
- 视频解码插件
注意
Lite SDK 默认无法与 RTC 小程序 SDK 互通。如果需要与小程序互通,请联系技术支持。
删除不需要的插件
SDK 提供了可选的插件动态库,插件的命名以 extension 为后缀,插件功能和大小等信息详见插件列表。你可以参考如下方式不集成这些插件,以减小 App 体积。
手动集成时删除插件
通过官网 SDK 下载链接集成时,你可以将不需要使用的插件文件直接删除。
Gradle 自动集成时删除插件
通过 Gradle 自动集成 Android SDK 前,请先确保已添加声网 Maven CDN 仓库。具体配置方式请参考下载 SDK。
通过 Gradle 自动集成 Android SDK 时,你可以修改 /Gradle Scripts/build.gradle(Module: <projectname>.app) 文件中的 dependencies,以指定集成你需要的动态库,排除你不需要使用的插件。Android SDK 中各文件与 dependencies 中 implementation 字段的对应关系详见 implementation 字段。
集成 4.0.1 版 Android 视频 SDK,且使用所有插件时,dependencies 如下:
dependencies {
implementation 'io.agora.rtc:full-sdk:4.0.1'
implementation 'io.agora.rtc:full-screen-sharing:4.0.1'
...
}集成 4.0.1 版 Android 视频 SDK,且不使用所有插件时,dependencies 如下:
dependencies {
implementation 'io.agora.rtc:full-rtc-basic:4.0.1'
...
}集成 4.0.1 版 Android 视频 SDK 且只需要使用插件列表中的 AI 降噪插件和美声插件时,dependencies 如下:
dependencies {
def agora_sdk_version = "4.0.1"
// 下述代码中包含 $,因此你必须使用 "",不能使用 ''
implementation "io.agora.rtc:full-rtc-basic:${agora_sdk_version}"
implementation "io.agora.rtc:full-ains:${agora_sdk_version}"
implementation "io.agora.rtc:audio-beauty:${agora_sdk_version}"
...
}参考信息
插件列表
本节提供实时互动 SDK 各插件简介和集成后 App 增加的体积参考。
信息
- 本节数据基于实时互动 v4.6.0 SDK。
- 自 v4.6.2 起,iOS 平台不再提供 armv7 架构的插件。
implementation 字段
通过 Gradle 自动集成 Android SDK 时,你可以修改 /Gradle Scripts/build.gradle(Module: <projectname>.app) 文件中的 dependencies 中的 implementation 字段,以指定需要集成的动态库。SDK 中各文件与 implementation 字段的对应关系详见下表:
| 文件 | 类别 | implementation 字段 |
|---|---|---|
| 必需 | io.agora.rtc:full-rtc-basic |
libaosl.so(自 v4.5.0 起,该模块成为 RtcBasic 依赖的一个底层库,集成 RtcBasic 时将自动集成该库) | 必需 | io.agora.infra:aosl |
libagora_ai_noise_suppression_extension.so | 可选 | io.agora.rtc:ains |
libagora_ai_noise_suppression_ll_extension.so | 可选 | io.agora.rtc:ains-ll (≥ v4.4.0) |
libagora_audio_beauty_extension.so | 可选 | io.agora.rtc:audio-beauty |
libagora_clear_vision_extension.so | 可选 | io.agora.rtc:clear-vision |
libagora_content_inspect_extension.so | 可选 | io.agora.rtc:full-content-inspect |
libagora_screen_capture_extension.so | 可选 | io.agora.rtc:screen-capture |
AgoraScreenShareExtension.aar | 可选 | io.agora.rtc:full-screen-sharing |
libagora_segmentation_extension.so | 可选 | io.agora.rtc:full-virtual-background |
libagora_spatial_audio_extension.so | 可选 | io.agora.rtc:spatial-audio |
libagora_pvc_extension.so | 可选 | io.agora.rtc:pvc (< v4.1.0) |
libagora_super_resolution_extension.so | 可选 | io.agora.rtc:full-super-resolution (< v4.1.1) |
libagora_drm_loader_extension.so | 可选 | io.agora.rtc:drm-loader (v4.1.0 至 v4.2.6) |
libagora_udrm3_extension.so | 可选 | io.agora.rtc:drm (v4.1.0 至 v4.2.6) |
libagora_ai_echo_cancellation_extension.so | 可选 | io.agora.rtc:aiaec (≥ v4.1.0) |
libagora_ai_echo_cancellation_ll_extension.so | 可选 | io.agora.rtc:aiaec-ll (≥ v4.4.0) |
libagora_video_quality_analyzer_extension.so | 可选 | io.agora.rtc:full-vqa (≥ v4.1.0) |
libagora_face_detection_extension.so | 可选 | io.agora.rtc:full-face-detect (≥ v4.1.1) |
libagora_face_capture_extension.so | 可选 | io.agora.rtc:full-face-capture (≥ v4.3.0) |
| 可选 | io.agora.rtc:full-video-codec-enc (≥ v4.2.0) |
| 可选 | io.agora.rtc:full-video-codec-dec (v4.2.0 至 v4.6.1) |
libagora_video_av1_encoder_extension.so | 可选 | io.agora.rtc:full-video-av1-codec-enc (≥ v4.3.0) |
libagora_video_av1_decoder_extension.so | 可选 | io.agora.rtc:full-video-av1-codec-dec (v4.3.0 至 v4.6.1) |
libagora_lip_sync_extension.so | 可选 | io.agora.rtc:full-lip-sync (≥ v4.3.1) |
| 文件 | 类别 | implementation 字段 |
|---|---|---|
| 必需 | io.agora.rtc:voice-rtc-basic |
libagora_ai_noise_suppression_extension.so | 可选 | io.agora.rtc:ains |
libagora_ai_noise_suppression_ll_extension.so | 可选 | io.agora.rtc:ains-ll (≥ v4.4.0) |
libagora_audio_beauty_extension.so | 可选 | io.agora.rtc:audio-beauty |
libagora_spatial_audio_extension.so | 可选 | io.agora.rtc:spatial-audio |
libagora_drm_loader_extension.so | 可选 | io.agora.rtc:drm-loader (≥ v4.1.0) |
libagora_udrm3_extension.so | 可选 | io.agora.rtc:drm (v4.1.0 至 v4.2.6) |
libagora_ai_echo_cancellation_extension.so | 可选 | io.agora.rtc:aiaec (≥ v4.1.0) |
libagora_ai_echo_cancellation_ll_extension.so | 可选 | io.agora.rtc:aiaec-ll (≥ v4.4.0) |