本文介绍如何减少集成声网 RTC Native SDK 后的 app 体积。
视频 SDK 支持音频和视频功能,包体积大。如果你只需使用音频功能,声网推荐你集成音频 SDK。
SDK 自 v3.3.0 起提供“插件列表”,即可选集成到项目的动态库。插件的命名以 extension
为后缀,插件功能和大小等信息详见插件列表。如果你不需要使用某些插件功能,你可以参考如下方式不集成这些插件,以减少 app 体积。
通过官网 SDK 下载链接集成时,你可以将不需要使用的插件文件直接删除。
通过 CocoaPods 集成 iOS/macOS SDK 时,你可以在 Podfile 中使用 subspecs
字段指定集成你需要的动态库,以排除你不需要使用的插件。动态库与 subspecs
字段的对应关系详见 subspecs 字段。
示例一:集成 3.6.2 版 iOS 视频 SDK,且使用所有插件时,Podfile 如下:
# platform :ios, '9.0'
target 'Your App' do
pod 'AgoraRtcEngine_iOS', '3.6.2'
end
示例二:集成 3.6.2 版 iOS 视频 SDK,且不使用所有插件时,Podfile 如下:
# platform :ios, '9.0'
target 'Your App' do
pod 'AgoraRtcEngine_iOS', '3.6.2', :subspecs => ['RtcBasic']
end
示例三:集成 3.6.2 版 iOS 视频 SDK 且只需要使用插件列表中的 AI 降噪插件和超分辨率插件时,Podfile 如下:
# platform :ios, '9.0'
target 'Your App' do
pod 'AgoraRtcEngine_iOS', '3.6.2', :subspecs => ['RtcBasic', 'AINS', 'SuperResolution']
end
subspecs
字段正确,否则 pod install
时会报错。例如,填写 pod 'AgoraRtcEngine_iOS', '3.6.2', :subspecs => ['RtcBasic', 'AgoraRtcAINS']
时,pod install
时会报错。
通过 Maven Central 集成 Android SDK 时,你可以修改 /Gradle Scripts/build.gradle(Module: <projectname>.app)
文件中的 dependencies
,以指定集成你需要的动态库,排除你不需要使用的插件。Android SDK 中各文件与 dependencies
中 implementation
字段的对应关系详见 implementation 字段。
示例一:集成 3.6.2 版 Android 视频 SDK,且使用所有插件时,dependencies
如下:
dependencies {
implementation 'io.agora.rtc:full-sdk:3.6.2'
...
}
示例二:集成 3.6.2 版 Android 视频 SDK,且不使用所有插件时,dependencies
如下:
dependencies {
implementation 'io.agora.rtc:full-rtc-basic:3.6.2'
...
}
示例三:集成 3.6.2 版 Android 视频 SDK 且只需要使用插件列表中的 AI 降噪插件和超分辨率插件时,dependencies
如下:
dependencies {
def agora_sdk_version = "3.6.2"
// 下述代码中包含 $,因此你必须使用 "",不能使用 ''
implementation "io.agora.rtc:full-rtc-basic:${agora_sdk_version}"
implementation "io.agora.rtc:full-ains:${agora_sdk_version}"
implementation "io.agora.rtc:full-super-resolution:${agora_sdk_version}"
...
}
一般情况下,你需要在编译 app 时打包所需的 .so
文件,且 SDK 从 app 的 nativeLibraryPath
中加载 .so
文件。
自 v3.6.2 起,SDK 提供 setAgoraLibPath
方法,支持在 app 运行时从指定的 app 私有目录动态加载所需的 .so
文件,从而减小 app 的安装包体积。你可以参考如下步骤实现该功能:
agora-rtc-sdk.jar
集成到你的项目中。.so
文件上传到你的服务器,并确保 app 可以通过网络下载目标架构的 .so
文件。.so
文件。如果没有,通过网络下载相应架构的 .so
文件,并保存至 app 的私有目录。setAgoraLibPath
, 并将 path
设置为保存 .so
文件的 app 私有目录。create
初始化 RtcEngine
实例时,SDK 根据指定路径自动加载 .so
文件。本节提供减少集成 SDK 后 app 体积的参考信息。
SDK 提供“插件列表”,即可选集成到项目的动态库。插件的命名以 extension
为后缀,插件功能和大小等信息详见下表:
framework
,而非下表中的 xcframework
。详见 3.6.2 版发版说明。SDK 默认开启传统降噪,以消除大部分平稳噪声。AI 降噪是指在传统降噪的基础上消除非平稳噪声。集成 AI 降噪插件后,你可以调用 enableDeepLearningDenoise
开启 AI 降噪。详见 3.3.0 版发版说明。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora_ai_denoise_extension.so |
1120 |
Android | armeabi-v7a | libagora_ai_denoise_extension.so |
792 |
iOS | arm64 | AgoraAIDenoiseExtension.xcframework |
502 |
iOS | armv7 | AgoraAIDenoiseExtension.xcframework |
448 |
macOS | arm64 | AgoraAIDenoiseExtension.xcframework |
496 |
macOS | x86_64 | AgoraAIDenoiseExtension.xcframework |
588 |
Windows | x86 | libagora_ai_denoise_extension.dll |
5312 |
Windows | x86_64 | libagora_ai_denoise_extension.dll |
5424 |
AV1 功能可以提升屏幕共享中文本共享的清晰度。如需使用该功能,请联系技术支持。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora_dav1d_extension.so |
696 |
Android | armeabi-v7a | libagora_dav1d_extension.so |
608 |
iOS | arm64 | AgoraDav1dExtension.xcframework |
959 |
iOS | armv7 | AgoraDav1dExtension.xcframework |
746 |
macOS | x86_64 | AgoraDav1dExtension.xcframework |
1316 |
Windows | x86 | libagora_dav1d_extension.dll |
1252 |
Windows | x86_64 | libagora_dav1d_extension.dll |
1756 |
JND(Just-noticeable difference,最小可觉差)功能用于视频感知编码,在保障同等画质的前提下降低带宽消耗。例如,在带宽受限场景下提升视频流畅性,在移动网络场景下降低流量消耗。如需使用该功能,请联系技术支持。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora_jnd_extension.so |
1172 |
Android | armeabi-v7a | libagora_jnd_extension.so |
816 |
iOS | arm64 | AgoraJNDExtension.xcframework |
78 |
iOS | armv7 | AgoraJNDExtension.xcframework |
69 |
macOS | arm64 | AgoraJNDExtension.xcframework |
720 |
macOS | x86_64 | AgoraJNDExtension.xcframework |
616 |
Windows | x86 | libagora_jnd_extension.dll |
1528 |
Windows | x86_64 | libagora_jnd_extension.dll |
1948 |
集成虚拟背景插件后,你可以调用 enableVirtualBackground
开启虚拟背景。详见 3.5.0 版发版说明。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora_segmentation_extension.so |
3331 |
Android | armeabi-v7a | libagora_segmentation_extension.so |
2232 |
iOS | arm64 | AgoraVideoSegmentationExtension.xcframework |
2210 |
iOS | armv7 | AgoraVideoSegmentationExtension.xcframework |
1514 |
macOS | arm64 | AgoraVideoSegmentationExtension.xcframework |
2802 |
macOS | x86_64 | AgoraVideoSegmentationExtension.xcframework |
2449 |
Windows | x86 | libagora_segmentation_extension.dll |
4401 |
Windows | x86_64 | libagora_segmentation_extension.dll |
5193 |
通过人脸或者虚拟背景分割算法识别人脸或人像,在编码过程中对 ROI(Region of Interest)区域使用更高的质量编码,达到人脸或人像更清晰的效果。如需使用该功能,请联系技术支持。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积 (KB) |
---|---|---|---|
Android | arm64-v8a | libagora_fd_extension.so |
1558 |
Android | armeabi-v7a | libagora_fd_extension.so |
977 |
iOS | armv7 | AgoraFDExtension.xcframework |
2602 |
iOS | arm64 | AgoraFDExtension.xcframework |
3534 |
macOS | x86_64 | AgoraFDExtension.xcframework |
1674 |
macOS | arm64 | AgoraFDExtension.xcframework |
904 |
Windows | x86_64 | libagora_fd_extension.dll |
1993 |
Windows | x86 | libagora_fd_extension.dll |
1605 |
集成超分辨率插件后,你可以调用 enableRemoteSuperResolution
开启超分辨率。详见 3.5.1 和 3.7.1 版发版说明。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora_super_resolution_extension.so |
837 |
Android | armeabi-v7a | libagora_super_resolution_extension.so |
550 |
iOS | arm64 | AgoraSuperResolutionExtension.xcframework |
342 |
iOS | armv7 | AgoraSuperResolutionExtension.xcframework |
340 |
macOS | arm64 | AgoraSuperResolutionExtension.xcframework |
249 |
macOS | x86_64 | AgoraSuperResolutionExtension.xcframework |
247 |
Windows | x86 | libagora_super_resolution_extension.dll |
1331 |
Windows | x86_64 | libagora_super_resolution_extension.dll |
1638 |
声网自 v3.6.0 提供视频增强插件,该插件提供基础美颜的能力。自 v3.6.2 起,声网在视频增强插件中还新增了视频降噪、暗光增强、色彩增强的能力。详见 3.6.0 版和 3.6.2 版发版说明。
你可以在集成视频增强插件后,调用如下方法开启你想要的视频增强功能:
setBeautyEffectOptions
: 设置基础美颜功能。setVideoDenoiserOptions
: 设置视频降噪功能。setLowlightEnhanceOptions
: 设置暗光增强功能。setColorEnhanceOptions
: 设置色彩增强功能。各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora_video_process_extension.so |
1290 |
Android | armeabi-v7a | libagora_video_process_extension.so |
962 |
iOS | arm64 | AgoraVideoProcessExtension.xcframework |
819 |
iOS | armv7 | AgoraVideoProcessExtension.xcframework |
768 |
macOS | arm64 | AgoraVideoProcessExtension.xcframework |
1785 |
macOS | x86_64 | AgoraVideoProcessExtension.xcframework |
895 |
Windows | x86 | libagora_video_process_extension.dll |
2171 |
Windows | x86_64 | libagora_video_process_extension.dll |
2541 |
自 v3.6.2 起,SDK 提供全格式音频解码插件,用于优化调用 startAudioMixing
播放音乐文件的体验,具体如下:
getAudioFileInfo
获取的音频时长更加准确。如果你希望体验这些优化,请确保已集成该插件;如果无需使用,你可以删除对应的插件,SDK 会自动切换到基础的音频解码库。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora-full-audio-format-extension.so |
4436 |
Android | armeabi-v7a | libagora-full-audio-format-extension.so |
4088 |
iOS | arm64 | AgoraFullAudioFormatExtension.xcframework |
4432 |
iOS | armv7 | AgoraFullAudioFormatExtension.xcframework |
3808 |
macOS | arm64 | AgoraFullAudioFormatExtension.xcframework |
4720 |
macOS | x86_64 | AgoraFullAudioFormatExtension.xcframework |
4720 |
Windows | x86 | libagora-full-audio-format-extension.dll |
5308 |
Windows | x86_64 | libagora-full-audio-format-extension.dll |
7736 |
集成视频截图上传插件后,你可以调用 enableContentInspect
开启视频截图上传。详见 3.6.2 版发版说明。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora_ci_extension.so |
1116 |
Android | armeabi-v7a | libagora_ci_extension.so |
986 |
iOS | arm64 | AgoraCIExtension.xcframework |
1344 |
iOS | armv7 | AgoraCIExtension.xcframework |
1104 |
macOS | arm64 | AgoraCIExtension.xcframework |
1328 |
macOS | x86_64 | AgoraCIExtension.xcframework |
1324 |
Windows | x86 | libagora_ci_extension.dll |
2229 |
Windows | x86_64 | libagora_ci_extension.dll |
2633 |
声网自 v3.7.0 起提供空间音效插件,该插件可以塑造远端用户声音的方位感和模拟声音在真实世界中的传播过程,实现本地用户听远端用户时的空间音效。如需使用该功能,请联系 sales@shengwang.cn。
各平台插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
Android | arm64-v8a | libagora_spatial_audio_extension.so |
3832 |
Android | armeabi-v7a | libagora_spatial_audio_extension.so |
3824 |
iOS | arm64 | AgoraSpatialAudioExtension.xcframework |
4864 |
iOS | armv7 | AgoraSpatialAudioExtension.xcframework |
4352 |
macOS | arm64 | AgoraSpatialAudioExtension.xcframework |
4880 |
macOS | x86_64 | AgoraSpatialAudioExtension.xcframework |
4848 |
Windows | x86 | libagora_spatial_audio_extension.dll |
5096 |
Windows | x86_64 | libagora_spatial_audio_extension.dll |
5232 |
自 v3.7.0 起,SDK 提供 startScreenCapture
方法和 AgoraReplayKitExtension.xcframework
插件库用于屏幕共享,用法详见屏幕共享。
插件名及集成后 app 增加的体积见下表:
平台 | 架构 | 库名 | 集成后 app 增加的体积(KB) |
---|---|---|---|
iOS | arm64 | AgoraReplayKitExtension.xcframework |
96 |
iOS | armv7 | AgoraReplayKitExtension.xcframework |
96 |
通过 CocoaPods 集成 iOS/macOS SDK 时,你可以在 Podfile 中使用 subspecs
字段指定集成你需要的动态库,以排除你不需要使用的插件。动态库与 subspecs
字段的对应关系详见下表:
动态库 | 类别 | subspecs 字段 |
---|---|---|
AgoraRtcKit.xcframework AgoraCore.xcframework Agorafdkaac.xcframework AgoraSoundTouch.xcframework Agoraffmpeg.xcframework |
必需 | RtcBasic |
AgoraAIDenoiseExtension.xcframework |
可选 | AINS |
AgoraDav1dExtension.xcframework |
可选 | AV1Dec |
AgoraJNDExtension.xcframework |
可选 | JND (< 3.7.0 且 ≥ 3.6.2) |
AgoraVideoSegmentationExtension.xcframework |
可选 | VirtualBackground |
AgoraFDExtension.xcframework |
可选 | ROIEnc |
AgoraSuperResolutionExtension.xcframework |
可选 | SuperResolution |
AgoraVideoProcessExtension.xcframework |
可选 | VideoPreprocess |
AgoraFullAudioFormatExtension.xcframework |
可选 | FullAudioFormat |
AgoraCIExtension.xcframework |
可选 | ContentInspect |
AgoraSpatialAudioExtension.xcframework |
可选 | SpatialAudio |
AgoraReplayKitExtension.xcframework |
可选 | ReplayKit (≥ 3.7.0) |
动态库 | 类别 | subspecs 字段 |
---|---|---|
AgoraRtcKit.xcframework AgoraCore.xcframework Agorafdkaac.xcframework AgoraSoundTouch.xcframework |
必需 | RtcBasic |
AgoraAIDenoiseExtension.xcframework |
可选 | AINS |
AgoraFullAudioFormatExtension.xcframework |
可选 | FullAudioFormat |
AgoraSpatialAudioExtension.xcframework |
可选 | SpatialAudio |
动态库 | 类别 | subspecs 字段 |
---|---|---|
AgoraRtcKit.xcframework AgoraCore.xcframework Agorafdkaac.xcframework AgoraSoundTouch.xcframework Agoraffmpeg.xcframework av1.framework |
必需 | RtcBasic |
AgoraAIDenoiseExtension.xcframework |
可选 | AINS |
AgoraDav1dExtension.xcframework |
可选 | AV1Dec |
AgoraJNDExtension.xcframework |
可选 | JND (< 3.7.0 且 ≥ 3.6.2) |
AgoraVideoSegmentationExtension.xcframework |
可选 | VirtualBackground |
AgoraFDExtension.xcframework |
可选 | ROIEnc |
AgoraSuperResolutionExtension.xcframework |
可选 | SuperResolution |
AgoraVideoProcessExtension.xcframework |
可选 | VideoPreprocess |
AgoraFullAudioFormatExtension.xcframework |
可选 | FullAudioFormat |
AgoraCIExtension.xcframework |
可选 | ContentInspect |
AgoraSpatialAudioExtension.xcframework |
可选 | SpatialAudio |
动态库 | 类别 | subspecs 字段 |
---|---|---|
AgoraRtcKit.xcframework AgoraCore.xcframework Agorafdkaac.xcframework AgoraSoundTouch.xcframework |
必需 | RtcBasic |
AgoraAIDenoiseExtension.xcframework |
可选 | AINS |
AgoraFullAudioFormatExtension.xcframework |
可选 | FullAudioFormat |
AgoraSpatialAudioExtension.xcframework |
可选 | SpatialAudio |
通过 Maven Central 集成 Android SDK 时,你可以修改 /Gradle Scripts/build.gradle(Module: <projectname>.app)
文件中的 dependencies
中的 implementation
字段,以指定需要集成的动态库。SDK 中各文件与 implementation
字段的对应关系详见下表:
文件 | 类别 | implementation 字段 |
---|---|---|
agora-rtc-sdk.jar include 文件夹下的头文件libagora-rtc-sdk.so libagora_fdkaac.so libagora_mpg123.so libagora-core.so libagora-soundtouch.so libagora-ffmpeg.so |
必需 | io.agora.rtc:full-rtc-basic |
libagora_ai_denoise_extension.so |
可选 | |
libagora_dav1d_extension.so |
可选 | io.agora.rtc:full-av1-dec |
libagora_jnd_extension.so |
可选 | io.agora.rtc:full-jnd (< 3.7.0 且 ≥ 3.6.2) |
libagora_segmentation_extension.so |
可选 | io.agora.rtc:full-virtual-background |
libagora_fd_extension.so |
可选 | io.agora.rtc:full-roi-enc |
libagora_super_resolution_extension.so |
可选 | io.agora.rtc:full-super-resolution |
libagora_video_process_extension.so |
可选 | io.agora.rtc:full-video-preprocess |
libagora_full_audio_format_extension.so |
可选 | |
libagora_ci_extension.so |
可选 | io.agora.rtc:full-content-inspect |
libagora_spatial_audio_extension.so |
可选 | io.agora.rtc:spatial-audio |
文件 | 类别 | implementation 字段 |
---|---|---|
agora-rtc-sdk.jar include 文件夹下的头文件libagora-rtc-sdk.so libagora_fdkaac.so libagora_mpg123.so libagora-core.so libagora-soundtouch.so |
必需 | io.agora.rtc:voice-rtc-basic |
libagora_ai_denoise_extension.so |
可选 | |
libagora_full_audio_format_extension.so |
可选 | |
libagora_spatial_audio_extension.so |
可选 | io.agora.rtc:spatial-audio |