All Products
Search
Document Center

ApsaraVideo Live:SDK download and integration

Last Updated:Aug 17, 2026

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)

  1. Open settings.gradle in the project root. Add the ARTC SDK Maven repository under dependencyResolutionManagement/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' }
        }
    }
    Note

    If your Android Gradle Plugin (AGP) version is lower than 7.1.0, the settings.gradle file may not contain the dependencyResolutionManagement block, 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.gradle file in your project root directory. Add the Maven repository under allprojects/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' }
        }
    }
  2. Open app/build.gradle. Add the ARTC SDK dependency under dependencies. 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

  1. 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.

  2. Copy the AAR file to your project directory (for example, app/libs). Create the directory if needed.

  3. Open settings.gradle in the project root. Add the AAR file directory under dependencyResolutionManagement/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/repositories in build.gradle:

    allprojects {
        repositories {
            ...
            // Add the relative path to the ARTC SDK AAR file.
            flatDir {
                dir 'app/libs'
            }
        }
    }
  4. Open app/build.gradle. Add the AAR dependency under dependencies:

    // Replace x.y.z with the actual version number.
    implementation(name:'AliVCSDK_ARTC', version: 'x.y.z', ext:'aar')
  5. 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" />
Note

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.CAMERA

  • Manifest.permission.WRITE_EXTERNAL_STORAGE

  • Manifest.permission.RECORD_AUDIO

  • Manifest.permission.READ_EXTERNAL_STORAGE

  • Manifest.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)

  1. Install CocoaPods if not already installed:

    sudo gem install cocoapods
  2. Navigate to the project root and create a Podfile:

    pod init
  3. Open the Podfile and 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}'
    end
  4. Install the dependencies:

    pod install
  5. An .xcworkspace file 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

  1. Download and extract the latest ARTC SDK from the SDK download section.

  2. Copy the framework file from the extracted SDK to your project directory.

  3. Open your project in Xcode. Select File > Add Files to "xxx" to add the SDK library file to the project.

  4. Select the target and set the imported framework attribute. In the Frameworks, Libraries, and Embedded Content section, confirm that the Embed column for alivcffmpeg.framework and AliVCSDK_ARTC.framework is 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

  1. Download the latest ARTC SDK from the SDK download section.

  2. Extract the SDK and copy all files to your project directory.

  3. Configure project properties:

    1. In the Solution Explorer, right-click the project and select Properties.

    2. Add include directories: select Configuration Properties > C/C++ > General, and add the header file path under Additional Include Directories.

    3. Add library directories: select Linker > General, and add the library file (.lib) path, for example, .../x64/Release, under Additional Library Directories.

Troubleshooting

Common issues and solutions:

Issue

Cause

Solution

DLL load failed or cannot open AliRTCSdk.lib

The .lib or .dll file path is not correctly configured in the project properties.

Verify that the library directory path in Linker > General > Additional Library Directories points to the correct folder containing the .lib file. Copy the accompanying .dll file to your application output directory or system PATH.

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 x64 binaries only. Using x86 (32-bit) or ARM configurations will cause link errors.

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.

  1. Download and extract the latest ARTC SDK from the SDK download section.

  2. Copy the .framework bundles from the SDK package to your project directory. Skip PluginAAC.framework if you do not use AAC audio encoding.

  3. In Xcode, add the dynamic libraries and set Embed to Embed & Sign.

Troubleshooting

Common issues and solutions:

Issue

Cause

Solution

Framework not found or image not found at runtime

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 x86_64. For Apple Silicon (M1/M2) Macs, use arm64. Use the lipo -info command to verify which architectures the SDK framework supports.

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:

  1. Assess necessity. Remove unused permissions. For example, if targetSdk is 30 or lower, remove the BLUETOOTH_CONNECT declaration.

  2. Resolve manifest merge conflicts. If modules declare conflicting attributes (for example, inconsistent maxSdkVersion values), use the tools namespace in AndroidManifest.xml to 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.

Note

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.