本文提供实时音视频原子ARTC SDK下载链接,介绍如何集成SDK,以及SDK相关信息。
SDK集成
Android
环境准备
在集成 ARTC SDK 之前,请确保满足如下开发环境:
Android Studio 2020.3.1 及以上版本。
Android 5.0(SDK API Level 21)及以上版本的测试设备,且需要连接网络环境。
步骤一:导入SDK
Maven自动集成(推荐)
打开项目根目录下的
settings.gradle文件,在dependencyResolutionManagement/repositories字段中添加 ARTC SDK 所需的Maven地址,如下所示:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// 添加ARTC SDK所在的Maven地址
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/public' }
}
}注意,如果您使用的 Android Gradle Plugin 版本低于 7.1.0,可能无法在settings.gradle文件中找到对应字段,相关信息请参考Android Gradle 插件 7.1。此时,请采用如下方案作为替换:
打开
app/build.gradle文件,在dependencies中添加对 ARTC SDK 的依赖,你可以在SDK下载中获取版本信息,并将${latest_version}替换为具体版本号,最新版本7.9.1。
dependencies {
// 引入实时音视频SDK依赖
// ${latest_version}替换为具体版本号
implementation 'com.aliyun.aio:AliVCSDK_ARTC:${latest_version}'
// 7.4.0及以下版本需添加keep
// implementation 'com.aliyun.aio.keep:keep:1.0.1'
}如果使用的 Android Gradle Plugin 为 8.1 以上版本,Android Studio 推荐将依赖库信息迁移到版本目录,相关信息请参考迁移依赖项目到版本目录。
下载SDK手动集成
在SDK下载中下载所需版本的 ARTC SDK aar 文件,最新版本7.9.1,例如
AliVCSDK_ARTC-x.y.z.aar。将下载的 aar 文件拷贝到您的项目目录下,例如
app/libs,如果没有该文件夹则新建。打开项目根目录下的
settings.gradle文件,在dependencyResolutionManagement/repositories下添加 aar 所在文件夹,如下所示:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// 添加ARTC SDK所在位置的相对目录
flatDir {
dir 'app/libs'
}
}
}注意,如果您使用的 Android Gradle Plugin 版本低于 7.1.0,可能无法在settings.gradle文件中找到对应字段,相关信息请参考Android Gradle 插件 7.1。此时,请采用如下方案作为替换:
打开项目根目录下的build.gradle文件,在allprojects/repositories中添加如下字段:
allprojects {
repositories {
...
// 添加ARTC SDK所在位置的相对目录
flatDir {
dir 'app/libs'
}
}
}打开
app/build.gradle文件,在dependencies下添加 aar 文件的依赖,如下所示:
//x.y.z替换为对应版本号
implementation(name:'AliVCSDK_ARTC', version: 'x.y.z', ext:'aar')构建后即可在 External Libraries 下生成对应依赖。

步骤二:配置项目支持的 CPU 架构
打开app/build.gradle文件,在defaultConfig中指定项目支持的 CPU 架构,如下所示。可选架构包括armeabi-v7a、arm64-v8a、x86、x86_64,根据实际需要进行配置。
android {
defaultConfig {
// ...其他默认配置
// 支持 armeabi-v7a 和 arm64-v8a 架构
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
} 步骤三:设置权限
根据实际需求设置应用所需的权限,具体流程如下:
进入app/src/main目录,打开AndroidManifest.xml文件,添加所需权限。
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Request legacy Bluetooth permissions on older devices. -->
<uses-permission
android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<!-- Needed only if your app communicates with already-paired Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />蓝牙权限动态申请说明
ARTC SDK 内部 AndroidManifest.xml 中自带了部分权限的声明(对于动态权限内部没有申请的逻辑),其中 BLUETOOTH_CONNECT 权限为 Android 12 开始引入的动态权限。导入 ARTC SDK 后下面的权限会自动引入到 APK 中,但是仍推荐根据您的业务场景自行申请权限。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />根据您的业务场景,如果不需要下面的某项权限,可以在您的主项目 AndroidManifest.xml 文件中声明移除:
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove"/>特别针对蓝牙权限:
场景一: 需要蓝牙功能
应用targetSdk < 31
当您的项目 targetSdk < 31 时,蓝牙功能由低版本权限 BLUETOOTH 控制。可以在您的主应用中声明:
<!-- 声明蓝牙权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!-- 覆盖移除高版本API 31+ 权限 -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove" />SDK 中会自带
BLUETOOTH_CONNECT权限的声明,而BLUETOOTH_CONNECT是Android 12(API 31)引入的权限,需要在运行时通过requestPermissions动态申请。部分设备上应用如果包含
BLUETOOTH_CONNECT的声明则要求动态申请该权限,否则可能出现SecurityException异常,如果出现此类问题:方式一:通过 tools:node="remove"移除该权限声明。
方式二:动态申请该权限。
应用targetSdk >= 31
当您的项目 targetSdk >= 31 时,则需要考虑低版本和高版本的蓝牙权限。可在您的主应用AndroidManifest.xml中声明权限:
<!-- 声明蓝牙权限并设置android:maxSdkVersion为30以兼容更低版本设备 -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<!-- 声明高版本API 31+ 蓝牙权限 -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<!-- 其他蓝牙权限 -->同时,由于BLUETOOTH_CONNECT为动态权限,需要在运行时主动申请权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
String[] permissions = {
android.Manifest.permission.BLUETOOTH_CONNECT
};
ActivityCompat.requestPermissions(activity, permissions, REQUEST_BLUETOOTH);
}场景二: 完全不需要蓝牙功能
为了避免因蓝牙权限引发崩溃或弹窗提示,推荐移除不必要的蓝牙权限。
操作步骤:在主项目的AndroidManifest.xml中通过tools:node="remove"覆盖移除权限:
<!-- 覆盖移除ARTC SDK中自带的蓝牙权限声明 -->
<uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove" />其他权限动态申请说明
Android 6.0(API 23)之后危险权限需要动态申请,除了在AndroidManifest.xml文件中静态申请外,还需要在代码运行时请求权限。
其中部分权限需要动态申请, 需要动态申请的权限包含:
Manifest.permission.CAMERA
Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.RECORD_AUDIO
Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_PHONE_STATE
当Android系统版本>=12(API_LEVEL>=31) 时, 需要额外动态申请以下权限:
Manifest.permission.BLUETOOTH_CONNECT
可能涉及到的部分权限说明如下:
权限名 | 权限说明 | 申请原因 | 必要性 | 是否动态权限 |
| 摄像头权限。 | 访问设备摄像头以采集视频流。 | 是 | Android >= 6.0 |
| 麦克风权限。 | 访问设备麦克风以采集音频流。 | 是 | Android >= 6.0 |
| 网络权限。 | 音视频数据通过网络传输(如 WebRTC等协议)。 | 是 | 否 |
| 允许应用获取网络状态。 | 监控网络连接状态以优化音视频传输质量,例如断网重连。 | 按需 | 否 |
| 允许应用获取 WiFi 状态。 | 获取当前 WiFi 连接信息以优化网络性能。 | 按需 | 否 |
| 允许应用修改音频配置。 | 调整系统音量、切换音频输出设备等。 | 按需 | 否 |
| 蓝牙权限(基础功能) | 连接蓝牙设备(如蓝牙耳机)。 | 按需 | 否 |
| 蓝牙连接权限 | 与已配对的蓝牙设备进行通信(如传输音频流)。 | 按需 | android >= 12 |
| 允许应用访问与设备电话状态相关的信息 | 根据电话状态启停音频。 | 按需 | android >= 6.0 |
| 允许应用读取外部存储中的文件。 | 播放本地音乐等。 | 按需 | android >= 6.0 |
| 允许应用写入外部存储。 | 保存音视频文件、日志等。 | 按需 | android >= 6.0 |
步骤四:防止混淆代码(可选)
在app/proguard-rules.pro文件中,为 SDK 配置规则,防止 SDK 对外提供的接口被混淆导致无法正常调用。
-keep class com.aliyun.allinone.** {
*;
}
-keep class com.aliyun.rts.network.AliHttpTool {
*;
}
-keep class com.aliyun.common.AlivcBase {
*;
}
-keep class com.huawei.multimedia.alivc.** {
*;
}
-keep class com.alivc.rtc.** {
*;
}
-keep class com.alivc.component.** {
*;
}
-keep class org.webrtc.** {
*;
}常见问题
ARTC SDK 是否会引入额外权限?
导入 ARTC SDK 后,会自动声明以下 Android 权限(具体列表可能因 SDK 版本而异,请以所集成的 .aar 文件中 AndroidManifest.xml 的内容为准):
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />这些权限主要用于支持网络状态检测、Wi-Fi 信息获取、蓝牙连接及音频路由等功能。
如何处理 SDK 权限与现有代码的兼容性或冲突问题?
尽管 ARTC SDK 内部已对权限进行了 Android 版本适配(例如针对 BLUETOOTH_CONNECT 在 Android 12+ (API 31)的运行时权限要求),通常不会导致编译错误,但仍可能在以下场景中引发问题:
运行时行为异常:如Manifest 合并失败;
Google Play 审核风险:若应用实际未使用某项功能却声明了相关权限(如蓝牙),可能违反最小权限原则,导致上架被拒。
建议采取以下措施进行兼容性处理:
评估权限必要性
首先评估你的应用是否确实需要 SDK 声明的所有权限。若某些功能(如蓝牙)未被使用,可考虑移除对应权限声明,例如您的程序仅在 Android API 30 及以下设备上运行(targetSdk 版本为 30 以下时,可以移除BLUETOOTH_CONNECT权限的声明)。通过 Manifest 合并指令解决冲突
若多个模块对同一权限声明了不同属性(例如maxSdkVersion不一致),可在主AndroidManifest.xml中使用tools命名空间进行干预:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- 示例:移除 SDK 中声明但应用不需要的权限 --> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove" /> <!-- 示例:覆盖权限属性 --> <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" tools:replace="android:maxSdkVersion" /> </manifest>
iOS
环境准备
在开始集成 ARTC SDK 之前,请确保开发环境满足以下要求:
Xcode 14.0 及以上版本,推荐使用最新正式版本。
CocoaPods 1.9.3 及以上版本。
准备 iOS 9.0 及以上版本的真机。
步骤一:导入SDK
CocoaPods 自动集成(推荐)
打开终端,在您的开发设备上安装 CocoaPods 工具,如果您已经完成安装,可以跳过此步骤。
sudo gem install cocoapods打开终端,进入项目根目录,在终端窗口中输入以下命令,创建 Podfile 文件。
pod init打开并编辑生成的 Podfile文件,添加RTC SDK依赖,最新版本7.9.1。
target 'MyApp' do
use_frameworks!
# 将${latest version}替换为具体的版本号
pod 'AliVCSDK_ARTC', '~> ${latest version}'
end在终端窗口中输入以下命令更新项目中的CocoaPods依赖库。
pod install成功执行后,项目文件夹下将生成一个后缀为
.xcworkspace的工程文件,双击该文件通过 Xcode打开项目即可加载工作区自动集成 CocoaPods 依赖。
下载SDK手动集成
在SDK下载中,获取最新的 ARTC SDK 文件并解压。
将解压后的 SDK 包内的 framework 文件拷贝到项目目录下。
使用 Xcode 打开项目,选择
File -> Add Files to "xxx",菜单,添加 SDK 的库文件到项目。
选择目标,将导入的 framework 文件设置为
"Embed & Sign"。

步骤二:设置权限
务必添加录音权限和相机权限
在Info.plist文件中添加摄像头和麦克风权限Privacy - Camera Usage Description、Privacy - Microphone Usage Description。

开启音频后台采集模式(可选)。
如图所示,勾选Audio,AirPlay,and Picture in Picture即可。

Windows
环境准备
在开始集成 ARTC SDK 之前,请确保开发环境满足以下要求:
Visual Studio 2015 或以上版本。
WIndows 7 或以上版本。
集成SDK
在SDK下载,获取最新的 ARTC SDK 文件。
解压 ARTC SDK 文件,并将目录下的文件拷贝到您的项目中。
配置项目属性:
在解决方案资源管理器窗口中,右键单击项目,进入“属性”界面。
添加包含目录:选择配置属性(Configuration Properties) → C/C++ → 常规(General),在附加包含目录(Additional Include Directories)中添加头文件路径。
添加库目录:在 Properties 窗口中,选择配置属性(Configuration Properties) → 链接器( Linker)→ 常规(General),在附加库目录( Additional Library Directories) 中添加库文件(.lib)的路径,例如
.../x64/Release。指定链接库文件:在 Properties 窗口中,选择配置属性(Configuration Properties)→ 链接器( Linker)→ 输入(Input),在附加依赖项(Additional Dependencies)中添加需要链接的库文件名“AliRTCSdk.lib”。
Mac
环境准备
在开始集成 ARTC SDK 之前,请确保开发环境满足以下要求:
开发工具:Xcode 14.0 及以上版本,推荐使用最新正式版本。
测试设备:Mac 10.13 及以上版本的Mac设备。
网络环境:需要稳定的网络连接。
应用准备:获取实时音视频应用的AppID和AppKey,详情请参见创建应用。
下载SDK手动集成
在SDK下载中,获取最新的 ARTC SDK 文件并解压。
将 SDK 包内的文件,拷贝到你的项目路径下,如果不使用aac做音频编码,可以不添加PluginAAC.framework。
打开 Xcode,添加对应动态库,确保添加的动态库 Embed 属性设置为 Embed & Sign。
发布历史
版本号 | 平台 | 更新日期 | 修改内容 |
v7.9.1 | iOS | 2025-12-04 |
|
Android | |||
v7.8.1 | iOS | 2025-11-12 |
|
Android | |||
v7.8.0 | iOS | 2025-11-05 |
|
Android | |||
Mac | 2025-12-01 | ||
v7.7.0 | iOS | 2025-09-30 |
|
Android | |||
v7.6.0 | iOS | 2025-09-02 |
|
Android | |||
Windows | |||
V7.5.0 | iOS | 2025-07-31 |
|
Android | |||
v7.4.0 | iOS | 2025-07-01 |
|
Android | |||
v7.3.0 | iOS | 2025-05-30 |
|
Android | |||
v7.2.1 | Windows | 2025-05-12 |
|
v7.2.0 | iOS | 2025-04-28 |
|
Android | |||
v7.1.0 | iOS | 2025-04-01 |
|
Android | 2025-04-01 | ||
v7.0.0 | iOS | 2025-02-28 |
|
Android | |||
Windows | 2025-03-31 |
| |
v6.21.0 | iOS | 2025-01-22 |
|
Android | |||
v6.20.0 | iOS | 2024-12-30 |
|
Android | |||
v6.19.0 | iOS | 2024-12-20 |
|
Android | |||
v6.18.0 | iOS | 2024-12-09 |
|
Android | |||
v6.17.0 | iOS | 2024-11-04 |
|
Android | |||
v6.15.0 | iOS | 2024-09-24 |
|
Android | |||
Windows |
| ||
v6.11.3 | iOS | 2024-09-14 | 针对AI+RTC场景,提供聊天室的AudioProfile,保证欢迎语完整播报。 |
Android | 2024-09-14 | ||
v6.11.2 | iOS | 2024-08-16 |
|
Android | |||
v6.8.7 | iOS | 2024-06-03 |
|
Android | |||
v6.8.5 | iOS | 2024-04-01 |
|
Android | |||
v6.8.2 | iOS | 2024-03-04 |
|
Android | |||
v6.8.1 | Windows | 2024-03-19 |
|
v6.4.3 | iOS | 2023-12-04 |
|
Android |