This topic provides download links for the ARTC SDK and shows how to integrate it into your project.
Download SDK
Developed by: Alibaba Cloud Computing Co., Ltd.
Platform | Link | Release date |
Android |
| 2026-01-10 |
iOS |
| 2026-01-10 |
Windows |
| 2025-09-02 |
Mac |
| 2025-12-01 |
For Web SDK, see Getting started.
Integrate SDK
Android
Environment requirements
Android Studio 2020.3.1 or later.
Android device that runs Android 5.0 (API Level 21) or later and is connected to the Internet.
Step 1: Import SDK
Automatic integration through Maven (recommended)
Open the
settings.gradlefile in the root directory of your project and add the Maven repository for the ARTC SDK to thedependencyResolutionManagement/repositoriesfield, as shown in the following example:
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 are using Android Gradle Plugin version lower 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 dependencies for the ARTC SDK todependencies. You can obtain the latest version in Download SDK and replace${latest_version}with the specific version number. The latest available version is 7.10.0.
dependencies {
// Add the dependencies for the ARTC SDK
// Replace ${latest_version} with the specific version number.
implementation 'com.aliyun.aio:AliVCSDK_ARTC:${latest_version}'
// For versions 7.4.0 and below, add the keep dependency
// implementation 'com.aliyun.aio.keep:keep:1.0.1'
} If you are using Android Gradle Plugin version 8.1 or later, Android Studio recommends migrating dependency library information to the version catalog. For more information, see Migrate dependencies.
Manual integration
Download the ARTC SDK AAR file for the version you need (
AliVCSDK_ARTC-x.y.z.aar). The latest available version is 7.10.0.Copy the downloaded AAR file to your project directory, such as
app/libs. Create this folder if it is not available.Open the
settings.gradlefile in the root directory of your project and add the folder containing the AAR file todependencyResolutionManagement/repositories, as shown in the following example:
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 are using Android Gradle Plugin version lower 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 build.gradle file in the root directory of your project and 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 dependencies for the AAR file todependencies. Sample code:
// Replace x.y.z with the specific version number.
implementation(name:'AliVCSDK_ARTC', version: 'x.y.z', ext:'aar')The corresponding dependency is generated under
External Libraries.
Step 2: Configure supported CPU architectures
Open the app/build.gradle file and specify the CPU architectures supported by your project in defaultConfig, as shown in the following example. Available architectures include 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: Configure permissions
Configure the permissions required by your application:
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" />Bluetooth permissions
The AndroidManifest.xml file in the ARTC SDK includes declarations for several permissions. However, it does not contain the logic for requesting runtime permissions. The BLUETOOTH_CONNECT permission, in particular, is a runtime permission introduced in Android 12.
After importing the ARTC SDK, the permissions below are automatically merged into your app's manifest. We recommend that you handle permission requests based on your app's specific use case.
<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" />If your app does not require a specific permission, you can explicitly remove it in your main project's AndroidManifest.xml:
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove"/>Guidance for Bluetooth permissions:
Scenario 1: Bluetooth functionality is required
When your app's targetSdk is less than 31
Bluetooth functionality is controlled by the older BLUETOOTH permission. You can declare the following in your main app's manifest:
<!-- Declare the legacy Bluetooth permission -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!-- Override and remove the newer permission for API 31+ -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove" />The ARTC SDK includes a declaration for
BLUETOOTH_CONNECT, which is a permission introduced in Android 12 (API 31) that must be requested at runtime.On some devices, if an app's manifest includes the
BLUETOOTH_CONNECTdeclaration, the system will enforce that it must be requested at runtime, otherwise aSecurityExceptionmay occur. If you encounter this issue, you have two options:Option 1: Remove the permission declaration using
tools:node="remove".Option 2: Dynamically request the permission at runtime.
When your app's targetSdk is 31 or higher
You need to handle both legacy and new Bluetooth permissions. Declare the following in your AndroidManifest.xml:
<!-- Declare the legacy Bluetooth permission and set maxSdkVersion for older devices -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<!-- Declare the new Bluetooth permission for API 31+ -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<!-- Other Bluetooth permissions as needed -->Since BLUETOOTH_CONNECT is a runtime permission, you must also request it in your code:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
String[] permissions = {
android.Manifest.permission.BLUETOOTH_CONNECT
};
ActivityCompat.requestPermissions(activity, permissions, REQUEST_BLUETOOTH);
}Scenario 2: Bluetooth functionality is not required
To avoid potential crashes or permission pop-ups related to Bluetooth, it is recommended to remove unnecessary permissions.
In your main project's AndroidManifest.xml, use tools:node="remove" to override and remove the permissions:
<!-- Override and remove Bluetooth permissions from the ARTC SDK -->
<uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove" />Other runtime permissions
Since Android 6.0 (API 23), "dangerous" permissions must be requested at runtime. In addition to declaring them statically in AndroidManifest.xml, you must also request them in your code.
The permissions that require runtime requests include:
Manifest.permission.CAMERA
Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.RECORD_AUDIO
Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_PHONE_STATE
When targeting Android 12 (API 31) or higher, you must also request the following permission at runtime:
Manifest.permission.BLUETOOTH_CONNECT
Permission descriptions:
Permission name | Description | Purpose | Required | Runtime request |
| Camera permission. | To access the device camera for video capture. | Yes | Android >= 6.0 |
| Microphone permission. | To access the device microphone for audio capture. | Yes | Android >= 6.0 |
| Network permission. | For transmitting audio/video data over the network (such as via WebRTC). | Yes | No |
| Allows the app to access network state. | To monitor connectivity for optimizing transmission quality (such as handling reconnection). | As needed | No |
| Allows the app to access Wi-Fi state. | To retrieve Wi-Fi connection information for optimizing network performance. | As needed | No |
| Allows the app to modify audio settings. | To adjust system volume and switch audio output devices. | As needed | No |
| Basic Bluetooth permission. | To connect to Bluetooth devices, such as headsets. | As needed | No |
| Bluetooth connection permission. | To communicate with paired Bluetooth devices, such as streaming audio. | As needed | android >= 12 |
| Allows access to phone state information. | To start/stop audio based on phone call status. | As needed | android >= 6.0 |
| Allows the app to read from external storage. | To play local music files. | As needed | android >= 6.0 |
| Allows the app to write to external storage. | To save audio/video files, logs, and other data. | As needed | android >= 6.0 |
Step 4: Prevent code obfuscation (optional)
In the app/proguard-rules.pro file, configure rules for the SDK to prevent the interfaces provided by the SDK from being obfuscated, which leads to improper function calls.
-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 add extra permissions?
Yes. Importing the ARTC SDK will automatically add the following Android permissions to your app's manifest. The exact list may vary by SDK version. For the definitive list, refer to the AndroidManifest.xml file within the .aar library.
<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 primarily used for features such as network state detection, Wi-Fi information access, Bluetooth connectivity, and audio routing.
How can I handle permission conflicts or compatibility issues?
Although the ARTC SDK includes internal logic to handle Android version compatibility (such as the runtime permission requirement for BLUETOOTH_CONNECT on Android 12+), issues can still arise in certain scenarios:
Runtime issues: Your app may experience unexpected behavior, such as a manifest merge failure during the build process.
Google Play review risks: If your app declares a permission for a feature it doesn't use (such as Bluetooth), it may violate the principle of least privilege and lead to your app being rejected from the Play Store.
To resolve these issues, we recommend the following steps:
Evaluate permission necessity
First, assess whether your app needs all the permissions declared by the SDK. If a feature (such as Bluetooth) is not used, remove its permission declaration. For example, if your app'stargetSdkVersionis 30 or lower, you do not need theBLUETOOTH_CONNECTpermission.Use Manifest merge rules to resolve conflicts
If multiple library modules declare the same permission with conflicting attributes (such as a differentmaxSdkVersion), you can use thetoolsnamespace in your app's mainAndroidManifest.xmlfile to override the behavior.<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
Environment requirements
Xcode 14.0 or later. We recommend that you use the latest official version.
CocoaPods 1.9.3 or later.
A physical device running iOS 9.0 or later.
Step 1: Import SDK
Automatic integration through CocoaPods (recommended)
Open Terminal and install CocoaPods. If you have already installed it, skip this step.
sudo gem install cocoapodsOpen Terminal, navigate 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 RTC SDK dependency. The latest available version is 7.10.0.
target 'MyApp' do
use_frameworks!
# Replace ${latest version} with a 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 successful execution, a project file with the
.xcworkspaceextension is generated in the project folder. Double-click this file to open the project in Xcode to automatically load the CocoaPods dependencies in the workspace.
Manual integration
Download the SDK, obtain the latest ARTC SDK package, and decompress it.
Copy the framework files from the decompressed package to your project directory.
Open your project in Xcode, select
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: Configure permissions
You must add recording and camera permissions
Add camera and microphone permissions Privacy - Camera Usage Description and Privacy - Microphone Usage Description to the Info.plist file.

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

Windows
Environment requirements
Visual Studio 2015 or later.
Windows 7 or later.
Integrate SDK
Download the SDK and obtain the latest ARTC SDK package.
Decompress the package and copy the files in the directory to your project.
Configure project properties:
In the Solution Explorer window, right-click the project and select Properties in the menu.
Add include directories: Select Configuration Properties > C/C++ > General, and add the header file path to Additional Include Directories.
Add library directories: In the Properties window, select Configuration Properties > Linker > General, and add the path of the library files (.lib) to Additional Library Directories, such as
.../x64/Release.Specify link library files: In the Properties window, select Configuration Properties > Linker > Input, and add the name of the library file to be linked "AliRTCSdk.lib" to Additional Dependencies.
macOS
Environment requirements
Development tool: Xcode 14.0 or later. We recommend that you use the latest official version.
Test device: Mac computers that run macOS 10.13 or later.
Network: Stable connection.
ARTC application: AppID and AppKey of ARTC application. For more information, see Create an ARTC application.
Manual integration
Download the latest ARTC SDK for macOS. Decompress the package.
Copy the files to your project's directory. If you are not using AAC for audio encoding, you can omit
PluginAAC.framework.Open your project in Xcode and add the required dynamic libraries. Ensure the Embed attribute for each added framework is set to Embed & Sign.
Release history
Version | Platform | Release date | Revision |
V7.10.0 | iOS | 2026-01-10 | Fix:
|
Android | |||
Linux | |||
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 |
Note Pay attention to the mute-related interface after you update the SDK from V6.18.0 or later to V7.2.0. |
Android | 2025-04-28 | ||
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, an audio profile is provided for voice chat rooms to ensure that complete welcome messages are broadcasted. |
Android | 2024-09-14 | ||
V6.11.2 | iOS | 2024-08-16 |
|
Android | |||
V6.11.0-beta | HarmonyOS | 2024-10-24 |
|
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 |