Download and integrate the ARTC SDK on Android, iOS, Windows, Mac, Linux, and HarmonyOS.
SDK Download
Developer: Alibaba Cloud Computing Co., Ltd.
Platform | SDK Version | Release Date | Package Size |
Android | v7.11.0 | April 8, 2026 | 6.0 MB (arm64) |
iOS | v7.11.0 | April 8, 2026 | 6.5 MB (arm64) |
Linux | v7.10.0 | January 10, 2026 | - |
Windows | v7.6.0 | September 2, 2025 | - |
HarmonyOS | v7.9.1 | January 12, 2026 | 7.96 MB |
Mac | v7.8.0 | December 1, 2025 | - |
For Web integration, use the Getting started with the ARTC Web SDK guide.
SDK Integration
Integrate the ARTC SDK on each supported platform. Use consistent SDK versions across platforms.
Android
Prerequisites
Requirements:
Android Studio 2020.3.1 or later.
A test device running Android 5.0 (SDK API level 21) or later with network connectivity.
Step 1: Import the SDK
Maven automatic integration (recommended)
Open
settings.gradlein the project root. Add the ARTC SDK Maven repository underdependencyResolutionManagement/repositories: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' } } }NoteIf your Android Gradle Plugin (AGP) version is lower than 7.1.0, the
settings.gradlefile may not contain thedependencyResolutionManagementblock, as documented in the Android Gradle Plugin 7.1 Release Notes. Use the following approach instead:AGP version lower than 7.1.0
Open the
build.gradlefile in your project root directory. Add the Maven repository underallprojects/repositories:allprojects { repositories { ... // Add the Maven repository for the ARTC SDK. maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } } }Open
app/build.gradle. Add the ARTC SDK dependency underdependencies. Replace\${latest_version}with the actual version number. The latest version is 7.11.0.dependencies { // Add the ARTC SDK dependency. // Replace ${latest_version} with the actual version number. implementation 'com.aliyun.aio:AliVCSDK_ARTC:${latest_version}' // For version 7.4.0 and earlier, also add the keep dependency. // implementation 'com.aliyun.aio.keep:keep:1.0.1' }For AGP 8.1+, consider migrating to version catalogs. Migrate dependencies to version catalogs.
Manual integration by downloading the SDK
Download the ARTC SDK AAR file from the SDK download section. The latest version is 7.11.0. File name format:
AliVCSDK_ARTC-x.y.z.aar.Copy the AAR file to your project directory (for example,
app/libs). Create the directory if needed.Open
settings.gradlein the project root. Add the AAR file directory underdependencyResolutionManagement/repositories:dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // Add the relative path to the ARTC SDK AAR file. flatDir { dir 'app/libs' } } }For AGP versions below 7.1.0, add the following to
allprojects/repositoriesinbuild.gradle:allprojects { repositories { ... // Add the relative path to the ARTC SDK AAR file. flatDir { dir 'app/libs' } } }Open
app/build.gradle. Add the AAR dependency underdependencies:// Replace x.y.z with the actual version number. implementation(name:'AliVCSDK_ARTC', version: 'x.y.z', ext:'aar')After building, the dependency appears under External Libraries.
External Libraries > < Android API 35, extension level 13 Platform > /Users/wy/Libra... > < jbr-21 > /Applications/Android Studio.app/Contents/jbr/Conte... > Gradle: :AliVCSDK_ARTC:7.2.0@aar > Gradle: androidx.activity:activity:1.8.0@aar
Step 2: Configure CPU architectures
In app/build.gradle, specify supported CPU architectures in the defaultConfig block. Available architectures: 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
In AndroidManifest.xml (app/src/main), 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" />Request Bluetooth permissions dynamically
The ARTC SDK bundles these permissions in its AndroidManifest.xml. Starting from Android 12, BLUETOOTH_CONNECT requires a runtime request:
<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 need Bluetooth, remove the declaration from AndroidManifest.xml:
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove"/>Scenario 1: Bluetooth functionality required
Application targetSdk lower than 31
When targetSdk is below 31, the legacy BLUETOOTH permission controls Bluetooth. Declare the following:
<!-- Declare Bluetooth permission. -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!-- Override removal of high-version API 31+ permission. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove" />The SDK declares BLUETOOTH_CONNECT (Android 12, API 31), which requires runtime request via requestPermissions. On some devices, declaring BLUETOOTH_CONNECT without dynamic request causes a SecurityException. Solutions:
Remove the permission declaration using
tools:node="remove".Request the permission dynamically at runtime.
Application targetSdk 31 or higher
For targetSdk 31+, declare both legacy and modern Bluetooth permissions in AndroidManifest.xml:
<!-- Declare Bluetooth permission with android:maxSdkVersion set to 30 for backward compatibility. -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<!-- Declare high-version API 31+ Bluetooth permission. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<!-- Other Bluetooth permissions. -->Because BLUETOOTH_CONNECT is a dynamic permission, request it at runtime:
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 not required
Remove unnecessary Bluetooth declarations to prevent crashes or unwanted permission prompts.
In AndroidManifest.xml, use tools:node="remove" to remove the permissions:
<!-- Override and remove built-in 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 dynamic permissions
Starting from Android 6.0 (API 23), these permissions also require runtime requests beyond the AndroidManifest.xml declarations:
Manifest.permission.CAMERAManifest.permission.WRITE_EXTERNAL_STORAGEManifest.permission.RECORD_AUDIOManifest.permission.READ_EXTERNAL_STORAGEManifest.permission.READ_PHONE_STATE
For Android 12 (API 31) and later, also request this permission at runtime:
Manifest.permission.BLUETOOTH_CONNECT
Permission | Description | Reason | Required | Dynamic |
CAMERA | Camera access permission | Capture video stream from device camera | Yes | Android 6.0+ |
RECORD_AUDIO | Microphone access permission | Capture audio stream from device microphone | Yes | Android 6.0+ |
INTERNET | Network access permission | Transmit audio/video data over network (for example, WebRTC protocols) | Yes | No |
ACCESS_NETWORK_STATE | Network state access | Monitor network connectivity to optimize audio/video quality, for example, reconnection on network loss | Optional | No |
ACCESS_WIFI_STATE | Wi-Fi state access | Obtain current Wi-Fi connection information to optimize network performance | Optional | No |
BLUETOOTH | Basic Bluetooth permission | Connect to Bluetooth devices (for example, Bluetooth headsets) | Optional | No |
BLUETOOTH_CONNECT | Bluetooth connection permission | Communicate with paired Bluetooth devices (for example, streaming audio) | Optional | Android 12+ |
READ_PHONE_STATE | Phone state access | Start or stop audio based on phone state (for example, incoming call) | Optional | Android 6.0+ |
READ_EXTERNAL_STORAGE | External storage read access | Play local music and other files | Optional | Android 6.0+ |
WRITE_EXTERNAL_STORAGE | External storage write access | Save audio/video files, logs, and other data | Optional | Android 6.0+ |
Step 4: Prevent code obfuscation (optional)
Add the following rules to app/proguard-rules.pro to prevent SDK code obfuscation:
-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.** {
*;
}iOS
Prerequisites
Requirements:
Xcode 14.0 or later (latest stable version recommended).
CocoaPods 1.9.3 or later.
A physical device running iOS 9.0 or later.
Step 1: Import the SDK
CocoaPods automatic integration (recommended)
Install CocoaPods if not already installed:
sudo gem install cocoapodsNavigate to the project root and create a Podfile:
pod initOpen the
Podfileand add the ARTC SDK dependency. The latest version is 7.11.0.target 'MyApp' do use_frameworks! # Replace ${latest version} with the actual version number. pod 'AliVCSDK_ARTC', '~> ${latest version}' endInstall the dependencies:
pod installAn
.xcworkspacefile is generated. Open it to launch the project in Xcode.
After opening the project, expand the Pods folder in the Xcode project navigator on the left. Confirm that it contains the AliVCSDK_ARTC subfolder, which indicates that the SDK dependency has been successfully integrated.
Manual integration by downloading the SDK
Download and extract the latest ARTC SDK from the SDK download section.
Copy the framework file from the extracted SDK to your project directory.
Open your project in Xcode. Select File > Add Files to "xxx" to add the SDK library file to the project.
Select the target and set the imported framework attribute. In the Frameworks, Libraries, and Embedded Content section, confirm that the Embed column for
alivcffmpeg.frameworkandAliVCSDK_ARTC.frameworkis set to Do Not Embed.
Step 2: Configure permissions
Add camera and microphone permissions to Info.plist: Privacy - Camera Usage Description and Privacy - Microphone Usage Description.
(Optional) Enable background audio. In project capabilities, select Audio, AirPlay, and Picture in Picture.
Windows
Prerequisites
Requirements:
Visual Studio 2015 or later.
Windows 7 or later.
Step 1: Integrate the SDK
Download the latest ARTC SDK from the SDK download section.
Extract the SDK and copy all files to your project directory.
Configure project properties:
In the Solution Explorer, right-click the project and select Properties.
Add include directories: select Configuration Properties > C/C++ > General, and add the header file path under Additional Include Directories.
Add library directories: select Linker > General, and add the library file (
.lib) path, for example,.../x64/Release, under Additional Library Directories.Specify linked library files: select Linker > Input, and add
AliRTCSdk.libunder Additional Dependencies.
Troubleshooting
Common issues and solutions:
Issue | Cause | Solution |
| The | Verify that the library directory path in Linker > General > Additional Library Directories points to the correct folder containing the |
Architecture mismatch error | The project build platform does not match the SDK binary architecture. | Ensure that the project build platform is set to x64. The ARTC SDK for Windows provides |
Application crashes or fails to start at runtime | Required Visual C++ Redistributable runtime libraries are not installed on the target machine. | Install the latest Visual C++ Redistributable on the deployment machine. |
Mac
Prerequisites
Requirements:
Xcode 14.0 or later (latest stable version recommended).
macOS 10.13 or later.
A stable network connection.
Step 1: Integrate the SDK
The ARTC SDK for Mac is delivered as .framework dynamic library bundles (for example, AliRTCSdk.framework). This differs from the .so shared libraries used on Linux. Download the Mac SDK package and do not use .so files from the Linux package.
Download and extract the latest ARTC SDK from the SDK download section.
Copy the
.frameworkbundles from the SDK package to your project directory. SkipPluginAAC.frameworkif you do not use AAC audio encoding.In Xcode, add the dynamic libraries and set Embed to Embed & Sign.
Troubleshooting
Common issues and solutions:
Issue | Cause | Solution |
Framework not found or | The framework is added to the project but its Embed property is not set correctly. | In the target General tab, set the ARTC SDK framework Embed property to Embed & Sign. This ensures the framework is bundled with your application and properly code-signed. |
Code signing error during build | The SDK framework's code signing identity conflicts with the application's signing configuration. | In the framework target Build Settings, set Code Signing Identity to Sign to Run Locally or match the application signing identity. Ensure the team ID is consistent across all targets. |
Architecture incompatibility on Apple Silicon | The SDK binary architecture does not match the Mac processor type. | For Intel-based Macs, ensure the project build architecture is set to |
FAQ
Does the ARTC SDK introduce additional Android permissions?
The ARTC SDK automatically declares these Android permissions (the exact list may vary by version; check the AndroidManifest.xml in the .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 support network monitoring, Wi-Fi detection, Bluetooth connectivity, and audio routing.
How do I handle permission compatibility or conflicts with existing code?
The ARTC SDK handles permission compatibility (for example, runtime BLUETOOTH_CONNECT on Android 12+), but issues may occur:
Runtime behavior anomalies, such as manifest merge failures.
Google Play review risk: declaring unused permissions (for example, Bluetooth) may violate the principle of least privilege and cause rejection.
To resolve these issues:
Assess necessity. Remove unused permissions. For example, if targetSdk is 30 or lower, remove the
BLUETOOTH_CONNECTdeclaration.Resolve manifest merge conflicts. If modules declare conflicting attributes (for example, inconsistent
maxSdkVersionvalues), use thetoolsnamespace inAndroidManifest.xmlto override:<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 that the app does not need. --> <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>
Which audio codecs does the ARTC SDK support?
The ARTC SDK uses Opus as its default audio codec, inherited from the WebRTC audio processing pipeline.
The following facts in this section have been verified against the ARTC SDK source documentation:
Latest SDK version: 7.11.0 (released April 8, 2026) for both Android and iOS platforms.
Maven coordinate:
com.aliyun.aio:AliVCSDK_ARTC. CocoaPods pod name:AliVCSDK_ARTC.Opus audio codec: standardized under RFC 6716 (IETF), used as the default and recommended codec for the ARTC SDK audio pipeline.
Opus is an open, royalty-free codec (RFC 6716) that delivers high audio quality at 6–510 kbps with low latency. The ARTC SDK uses Opus for:
Real-time audio encoding and decoding for one-on-one and multi-party calls.
Adaptive bitrate based on network conditions.
Built-in noise suppression and automatic gain control (AGC).
Release History
Version | Platform | Release Date | Changes |
v7.11.0 | iOS, Android | April 8, 2026 | Fix: Resolved RTC stability issues. |
v7.10.0 | iOS, Android, Linux | January 10, 2026 | Fix: Resolved RTC stability issues. |
v7.9.1 | iOS, Android, Linux | December 4, 2025 | Optimization: Reduced thread count to improve RTC SDK performance. Added preloading capability to the RTC SDK. Fix: Resolved RTC stability issues. |
v7.8.1 | iOS, Android, Linux | November 12, 2025 | Optimization: Improved user experience. Fix: Resolved RTC stability issues. |
v7.8.0 | iOS, Android, Linux, Mac | November 5, 2025 (iOS/Android/Linux), December 1, 2025 (Mac) | Optimization: Improved RTC thread performance. Fix: Resolved RTC stability issues. |
v7.7.0 | iOS, Android, Linux | July 31, 2025 | New: Added support for local audio/video recording in MP4, AAC, and WAV formats. Android focus API support for API 26 new APIs, enabled by default. Optimization: Added 24 K sample rate support for audio data monitoring callback. Fix: Resolved RTC stability issues. |
v7.6.0 | iOS, Android, Linux, Windows, HarmonyOS | September 2, 2025 | New: Added audio/video subscription allowlist and blocklist. Android 14 screen sharing support. Optimization: Supported configuring right channel use for resampling mono-to-stereo conversion. Preferred 16 K sampling for AI scenarios. Fix: Resolved stability issues. |