This topic provides download links for the ARTC SDK, explains the integration process, and includes other relevant information.
Integrate the SDK
Android
Environment requirements
Before you integrate the ARTC SDK, ensure your development environment meets the following requirements:
Android Studio 2020.3.1 or later.
A physical device that runs Android 5.0 (API Level 21) or later and is connected to the internet.
Step 1: Import the SDK
Maven (recommended)
Open the
settings.gradlefile in the root directory of your project. In thedependencyResolutionManagement/repositoriesblock, add the Maven repositories for the ARTC SDK, as shown in the following example:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// Add the Maven repositories for the ARTC SDK
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/public' }
}
}Note that if you use an Android Gradle Plugin version earlier than 7.1.0, you may not find the corresponding block in the settings.gradle file. For more information, see Android Gradle Plugin 7.1. In this case, use the following alternative:
Open the
app/build.gradlefile and add the dependency for the ARTC SDK in thedependenciesblock. You can find version information in SDK Downloads. Replace${latest_version}with the specific version number. The latest version is 7.11.0.
dependencies {
// Add the dependency 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 earlier, you must also add the keep dependency
// implementation 'com.aliyun.aio.keep:keep:1.0.1'
}If you are using Android Gradle Plugin 8.1 or later, Android Studio recommends migrating your dependencies to a version catalog. For more information, see Migrating dependencies to a version catalog.
Manual
From SDK Downloads, download the AAR file for the required version of the ARTC SDK. The latest version is 7.11.0. The filename is in the format
AliVCSDK_ARTC-x.y.z.aar.Copy the downloaded AAR file to your project directory, for example,
app/libs. If this directory does not exist, create it.Open the
settings.gradlefile in the root directory of your project. In thedependencyResolutionManagement/repositoriesblock, add the directory that contains the AAR file, as shown in the following example:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// Add the relative path to the directory that contains the ARTC SDK
flatDir {
dir 'app/libs'
}
}
}Note that if you use an Android Gradle Plugin version earlier than 7.1.0, you may not find the corresponding block in the settings.gradle file. For more information, see Android Gradle Plugin 7.1. In this case, use the following alternative:
Open the build.gradle file in the root directory of your project and add the following configuration to the allprojects/repositories block:
allprojects {
repositories {
...
// Add the relative path to the directory that contains the ARTC SDK
flatDir {
dir 'app/libs'
}
}
}Open the
app/build.gradlefile. In thedependenciesblock, add the dependency for the AAR file as follows:
// Replace x.y.z with the specific version number
implementation(name:'AliVCSDK_ARTC', version: 'x.y.z', ext:'aar')After the build is complete, you can find the corresponding dependency under External Libraries.

Step 2: Configure supported CPU architectures
Open the app/build.gradle file. In the defaultConfig block, specify the CPU architectures that your project supports. Valid architectures include armeabi-v7a, arm64-v8a, x86, and x86_64. Configure them based on your project requirements.
android {
defaultConfig {
// ...other default configurations
// Supports armeabi-v7a and arm64-v8a architectures
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
} Step 3: Set permissions
Configure the required permissions for your application based on its use case.
Navigate 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 runtime permissions
The AndroidManifest.xml file in the ARTC SDK includes declarations for several permissions but does not contain the logic for requesting them at runtime. The BLUETOOTH_CONNECT permission, in particular, is a runtime permission introduced in Android 12. After you import the ARTC SDK, the following permissions are automatically merged into your app's manifest. 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 application does not require a specific permission, you can explicitly remove its declaration in your main project's AndroidManifest.xml file:
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove"/>Follow this guidance for Bluetooth permissions:
Scenario 1: App requires Bluetooth
For apps with targetSdk < 31
When your project's targetSdk is less than 31, Bluetooth functionality is controlled by the legacy BLUETOOTH permission. You can declare the following in your app's manifest:
<!-- Declare the legacy Bluetooth permission -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!-- Override and remove the permission for API 31+ -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove" />The SDK includes the declaration for the
BLUETOOTH_CONNECTpermission, which was introduced in Android 12 (API level 31) and must be requested at runtime by usingrequestPermissions.On some devices, if an app's manifest includes the
BLUETOOTH_CONNECTdeclaration, the system requires you to request the permission at runtime. Failure to do so may cause aSecurityException. If you encounter this issue, you have two options:Option 1: Remove the permission declaration by using
tools:node="remove".Option 2: Request the permission at runtime.
For apps with targetSdk >= 31
When your project's targetSdk is 31 or higher, you need to handle both legacy and new Bluetooth permissions. Declare the permissions in your main app's AndroidManifest.xml file:
<!-- Declare the legacy Bluetooth permission and set android:maxSdkVersion to 30 for backward compatibility -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<!-- Declare the Bluetooth permission for API 31+ -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<!-- Other Bluetooth permissions -->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: App does not require Bluetooth
To avoid potential crashes or permission pop-ups related to Bluetooth, remove unnecessary Bluetooth permissions.
In your main project's AndroidManifest.xml file, use tools:node="remove" to override and remove the permissions:
<!-- Override and remove Bluetooth permission declarations 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
On Android 6.0 (API level 23) and later, you must request a dangerous permission at runtime. In addition to declaring the permission in the AndroidManifest.xml file, you must also request it in your code at runtime.
The following permissions require a runtime request:
Manifest.permission.CAMERA
Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.RECORD_AUDIO
Manifest.permission.READ_EXTERNAL_STORAGE
Manifest.permission.READ_PHONE_STATE
On Android 12 (API level 31) and later, you must also request the following permission at runtime:
Manifest.permission.BLUETOOTH_CONNECT
The following table describes relevant permissions.
Name | Description | Purpose | Required | Runtime request |
| Camera permission. | To access the device camera to capture video streams. | Yes | Android >= 6.0 |
| Microphone permission. | To access the device microphone to capture audio streams. | Yes | Android >= 6.0 |
| Network permission. | To transmit audio and video data over the network (for example, using protocols like WebRTC). | Yes | No |
| Allows the app to access the network state. | To monitor network connectivity to optimize transmission quality, such as handling reconnection. | As needed | No |
| Allows the app to access the Wi-Fi state. | To retrieve current Wi-Fi connection information to optimize 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 by streaming audio. | As needed | Android >= 12 |
| Allows access to the phone state. | To start or stop audio based on phone call status. | As needed | Android >= 6.0 |
| Allows the app to read files from external storage. | To play local music files. | As needed | Android >= 6.0 |
| Allows the app to write to external storage. | To save audio files, video files, and logs. | As needed | Android >= 6.0 |
Step 4: Prevent code obfuscation (optional)
In your app/proguard-rules.pro file, add the following rules for the SDK. These rules prevent obfuscation of the SDK's public interfaces, which can cause your application to fail.
-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 extra permissions?
After you import the ARTC SDK, the following Android permissions are automatically declared (The specific list may vary depending on the SDK version. For the definitive list, refer to the content of AndroidManifest.xml 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 primarily used for features such as network state detection, Wi-Fi information access, Bluetooth connectivity, and audio routing.
Handling permission conflicts
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:
Build or runtime issues: Your app may experience manifest merge failures during the build process or unexpected behavior at runtime.
Google Play review risks: If your app declares a permission for a feature it does not use (such as Bluetooth), it may violate the principle of least privilege and risk rejection from the Play Store.
To resolve these issues, use the following measures:
Evaluate permission requirements
First, evaluate if your app truly needs all the permissions declared by the SDK. If a feature, such as Bluetooth, is not used, you can remove the corresponding permission declaration. For example, if your app runs only on devices with Android API 30 or lower, you can remove the declaration for theBLUETOOTH_CONNECTpermission because yourtargetSdkversion is 30 or lower.Resolve conflicts by using Manifest merge directives
If multiple modules declare different attributes for the same permission, such as an inconsistentmaxSdkVersion, you can use thetoolsnamespace in the 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
Environment requirements
Before you integrate the ARTC SDK, ensure your development environment meets the following requirements:
Xcode 14.0 or later. The latest official version is recommended.
CocoaPods 1.9.3 or later.
A physical device running iOS 9.0 or later.
Step 1: Import the SDK
CocoaPods (recommended)
Open Terminal and install CocoaPods on your development device. If CocoaPods is already installed, 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 dependency for the ARTC SDK. The latest version is 7.11.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 dependencies in your project.
pod installAfter the command completes, a project file with the
.xcworkspaceextension is generated in the project folder. Double-click this file to open the project in Xcode. The workspace automatically loads the CocoaPods dependencies.
Manual
Download 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, choose
File -> Add Files to "xxx", and add the SDK library files to your project.
Select the target and set the Embed attribute for the imported frameworks to
"Embed & Sign".

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

Enable background audio mode (optional).
To enable this mode, select Audio, AirPlay, and Picture in Picture in your project's capabilities.

Windows
Environment requirements
Before you integrate the ARTC SDK, ensure your development environment meets the following requirements:
Visual Studio 2015 or later.
Windows 7 or later.
Integrate the SDK
Download the latest ARTC SDK package.
Decompress the package and copy the files into your project.
Configure project properties:
In the Solution Explorer window, right-click the project and select Properties.
Add include directories: Navigate to Configuration Properties → C/C++ → General, and add the header file path to Additional Include Directories.
Add a library directory. In the Properties window, select Configuration Properties > Linker > General. In the Additional Library Directories field, add the path to the library file (.lib), such as
.../x64/Release.Specify link library files: In the Properties window, navigate to Configuration Properties → Linker → Input, and add the library file name "AliRTCSdk.lib" to Additional Dependencies.
macOS
Environment requirements
Before you integrate the ARTC SDK, ensure your development environment meets the following requirements:
Development tool: Xcode 14.0 or later. The latest official version is recommended.
Test device: A Mac computer running macOS 10.13 or later.
Network environment: A stable network connection is required.
Application preparation: Obtain the AppID and AppKey for your real-time communication application. For more information, see Create an application.
Manual integration
Download the latest ARTC SDK package and decompress it.
Copy the files from the SDK package to your project directory. If you do not use AAC for audio encoding, omit the
PluginAAC.framework.Open Xcode and add the required dynamic library. Set the Embed attribute for the added dynamic library to Embed & Sign.
Release history
Version | Platform | Release date | Description |
v7.11.0 | iOS | 2026-04-08 |
|
Android | |||
v7.10.0 | iOS | 2026-01-10 |
|
Android | |||
v7.9.1 | iOS | 2025-12-04 |
|
Android | |||
v7.8.1 | iOS | 2025-11-12 |
|
Android | |||
v7.8.0 | iOS | 2025-11-05 |
|
Android | |||
macOS | 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 | In AI+RTC use cases, added a chatroom AudioProfile to ensure the complete playback of welcome messages. |
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 |