This topic provides download links for the ApsaraVideo Real-time Communication (ARTC) SDK, shows you how to integrate the SDK, and provides related information.
Integrate the SDK
Android
Preparations
Before you integrate the ARTC SDK, make sure that your development environment meets the following requirements:
Android Studio 2020.3.1 or a later version.
A test device that runs Android 5.0 (API Level 21) or a later version and is connected to the internet.
Step 1: Import the SDK
Automatic integration using Maven (recommended)
In the root directory of your project, open the
settings.gradlefile. Add the Maven repository for the ARTC SDK to thedependencyResolutionManagement/repositoriesfield.
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// Add the Maven repository for the ARTC SDK.
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/public' }
}
}Note: If you use a version of the Android Gradle Plugin earlier than 7.1.0, you may not find the corresponding field in the settings.gradle file. For more information, see Android Gradle Plugin 7.1. In this case, use the following alternative solution:
Open the
app/build.gradlefile and add the dependency on the ARTC SDK todependencies. You can find the version number in SDK downloads. Replace${latest_version}with the specific version number. The latest version is 7.8.1.
dependencies {
// Import the dependency on the ApsaraVideo Real-time Communication SDK.
// Replace ${latest_version} with the specific version number.
implementation 'com.aliyun.aio:AliVCSDK_ARTC:${latest_version}'
// For v7.4.0 and earlier, you must add keep.
// implementation 'com.aliyun.aio.keep:keep:1.0.1'
}If you use the Android Gradle Plugin 8.1 or a later version, Android Studio recommends that you migrate dependency information to the version catalog. For more information, see Migrate dependencies to version catalogs.
Manual integration by downloading the SDK
From SDK downloads, download the AAR file of the ARTC SDK for the version that you need. The latest version is 7.8.1. The file is named
AliVCSDK_ARTC-x.y.z.aar.Copy the downloaded AAR file to your project directory, such as
app/libs. If this folder does not exist, you can create it.In the root directory of your project, open the
settings.gradlefile. Add the folder that contains the AAR file todependencyResolutionManagement/repositories.
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// Add the relative directory where the ARTC SDK is located.
flatDir {
dir 'app/libs'
}
}
}Note: If you use a version of the Android Gradle Plugin earlier than 7.1.0, you may not find the corresponding field in the settings.gradle file. For more information, see Android Gradle Plugin 7.1. In this case, use the following alternative solution:
In the root directory of your project, open the build.gradle file. Add the following field to allprojects/repositories:
allprojects {
repositories {
...
// Add the relative directory where the ARTC SDK is located.
flatDir {
dir 'app/libs'
}
}
}Open the
app/build.gradlefile and add the dependency on the AAR file todependencies.
// Replace x.y.z with the corresponding version number.
implementation(name:'AliVCSDK_ARTC', version: 'x.y.z', ext:'aar')After the build is complete, the corresponding dependency is generated under External Libraries.

Step 2: Configure supported CPU architectures
Open the app/build.gradle file. In defaultConfig, specify the CPU architectures that your project supports, such as armeabi-v7a, arm64-v8a, x86, and x86_64.
android {
defaultConfig {
// ...other default configurations
// Support armeabi-v7a and arm64-v8a architectures.
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
} Step 3: Set permissions
You can set the permissions that are required by your application as needed. The procedure is as follows:
Go to the app/src/main directory, open the AndroidManifest.xml file, and add the required permissions.
<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" />Note: For Android 6.0 (API 23) and later, you must request dangerous permissions dynamically. In addition to declaring them statically in the AndroidManifest.xml file, you must also request permissions at runtime.
You must request some permissions dynamically. These permissions include the following:
Manifest.permission.CAMERA
Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.RECORD_AUDIO
Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_PHONE_STATE
If the Android system version is 12 or later (API_LEVEL >= 31), you must also dynamically request the following permission:
Manifest.permission.BLUETOOTH_CONNECT
The following describes some of the permissions that may be required:
Permission name | Permission description | Reason for request | Required | Dynamic permission |
CAMERA | Camera permission. | Access the device camera to capture video streams. | Yes | Android 6.0 or later |
RECORD_AUDIO | Microphone permission. | Access the device microphone to capture audio streams. | Yes | Android 6.0 or later |
INTERNET | Network permission. | Transmit audio and video data over the network (for example, using protocols such as WebRTC). | Yes | No |
ACCESS_NETWORK_STATE | Allows the application to get the network status. | Monitor the network connection status to optimize audio and video transmission quality, for example, for reconnection after a network disconnection. | As needed | No |
ACCESS_WIFI_STATE | Allows the application to get the Wi-Fi status. | Get the current Wi-Fi connection information to optimize network performance. | As needed | No |
MODIFY_AUDIO_SETTINGS | Allows the application to modify audio configurations. | Adjust the system volume, switch audio output devices, and so on. | As needed | No |
BLUETOOTH | Bluetooth permission (basic feature) | Connect to Bluetooth devices (such as Bluetooth headsets). | As needed | No |
BLUETOOTH_CONNECT | Bluetooth connection permission | Communicate with paired Bluetooth devices (for example, to transmit audio streams). | As needed | Android 12 or later |
READ_PHONE_STATE | Allows the application to access information related to the device's phone state. | Start or stop audio based on the phone state. | As needed | Android 6.0 or later |
READ_EXTERNAL_STORAGE | Allows the application to read files from external storage. | Play local music, and so on. | As needed | Android 6.0 or later |
WRITE_EXTERNAL_STORAGE | Allows the application to write to external storage. | Save audio and video files, logs, and so on. | As needed | Android 6.0 or later |
Step 4: Prevent code obfuscation (optional)
In the app/proguard-rules.pro file, configure rules for the SDK to prevent its interfaces from being obfuscated. This ensures that the interfaces can be called correctly.
-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.** {
*;
}FAQ
Does the ARTC SDK introduce additional permissions?
After you import the ARTC SDK, the following Android permissions are automatically declared. The specific list may vary based on the SDK version. For the exact list, check the AndroidManifest.xml file in the integrated .aar file.
<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" />These permissions are mainly used to support features such as network status detection, Wi-Fi information retrieval, Bluetooth connection, and audio routing.
How do I handle compatibility or conflict issues with SDK permissions?
Although the ARTC SDK internally handles Android version compatibility for permissions, such as the runtime permission requirement for BLUETOOTH_CONNECT on Android 12+ (API 31), issues can still arise. These issues include runtime errors, such as a failed manifest merge, or Google Play review rejections for violating the principle of least privilege if your app declares permissions for features it does not use, such as Bluetooth.
Runtime errors, such as a failed manifest merge.
Rejection during Google Play review: Declaring a permission for an unused feature, such as Bluetooth, violates the principle of least privilege. This can cause Google Play to reject your application's listing.
To resolve these issues, perform the following steps:
Assess permission necessity
First, assess whether your application needs all the permissions that are declared by the SDK. If a feature such as Bluetooth is not used, consider removing the corresponding permission declaration. For example, if your application runs only on devices with Android API 30 or lower (targetSdk is below 30), you can remove theBLUETOOTH_CONNECTpermission declaration.Use manifest merge rules to resolve conflicts
If multiple modules declare different attributes for the same permission, such as an inconsistentmaxSdkVersion, you can use thetoolsnamespace in your mainAndroidManifest.xmlfile to resolve the conflict:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- Example: Remove a permission declared by the SDK but not needed by the app --> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove" /> <!-- Example: Override a permission attribute --> <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" tools:replace="android:maxSdkVersion" /> </manifest>
iOS
Preparations
Before you integrate the ARTC SDK, make sure that your development environment meets the following requirements:
Xcode 14.0 or a later version. We recommend that you use the latest official version.
CocoaPods 1.9.3 or a later version.
A physical device that runs iOS 9.0 or a later version.
Step 1: Import the SDK
Automatic integration using CocoaPods (recommended)
Open Terminal and install CocoaPods. If you have already installed CocoaPods, you can skip this step.
sudo gem install cocoapodsOpen Terminal, go to the root directory of your project, and run the following command to create a Podfile.
pod initOpen and edit the generated Podfile to add the dependency on the ARTC SDK. The latest version is 7.8.1.
target 'MyApp' do
use_frameworks!
# Replace ${latest version} with the specific version number.
pod 'AliVCSDK_ARTC', '~> ${latest version}'
endIn Terminal, run the following command to update the CocoaPods dependency library in your project.
pod installAfter the command runs successfully, a project file with the .xcworkspace extension is generated in the project folder. Double-click this file to open the project in Xcode. The CocoaPods dependencies in the workspace are automatically loaded.

Manual integration by downloading the SDK
From SDK downloads, obtain the latest ARTC SDK file and decompress it.
Copy the framework files from the decompressed SDK package to your project directory.
Open your project in Xcode, choose
File -> Add Files to "xxx"from the menu, and add the SDK library files to your project.
Select the target and set the imported framework files to
"Embed & Sign".

Step 2: Set permissions
You must add permissions for the microphone and camera.
In the Info.plist file, add the Privacy - Camera Usage Description and Privacy - Microphone Usage Description permissions for the camera and microphone.

Enable audio background capture mode (optional).
As shown in the following figure, select Audio, AirPlay, and Picture in Picture.

Windows
Preparations
Before you integrate the ARTC SDK, make sure that your development environment meets the following requirements:
Visual Studio 2015 or a later version.
Windows 7 or a later version.
Integrate the SDK
From SDK downloads, obtain the latest ARTC SDK file.
Decompress the ARTC SDK file and copy the files from the directory to your project.
Configure project properties:
In the Solution Explorer window, right-click the project and select Properties.
Add include directories: Go to Configuration Properties > C/C++ > General. In Additional Include Directories, add the header file path.
Add library directories: In the Properties window, go to Configuration Properties > Linker > General. In Additional Library Directories, add the path of the library files (.lib), such as
.../x64/Release.Specify link library files: In the Properties window, go to Configuration Properties > Linker > Input. In Additional Dependencies, add the name of the library file to be linked, which is "AliRTCSdk.lib".
Release history
Version number | Platform | Update date | Revisions |
v7.8.1 | iOS | 2025-11-12 |
|
Android | |||
Linux | |||
v7.8.0 | iOS | 2025-11-05 |
|
Android | |||
Linux | |||
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 | For AI+RTC scenarios, provides an AudioProfile for chat rooms to ensure that welcome messages are played completely. |
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 |