All Products
Search
Document Center

ApsaraVideo Live:Download and integrate ARTC SDK

Last Updated:Feb 03, 2026

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)

  1. Open the settings.gradle file in the root directory of your project and add the Maven repository for the ARTC SDK to the dependencyResolutionManagement/repositories field, 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:

Alternative solution

Open the build.gradle file in the root directory of your project and add the Maven repository to allprojects/repositories, as shown in the following example:

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' }
    }
}
  1. Open the app/build.gradle file and add the dependencies for the ARTC SDK to dependencies. 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

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

  2. Copy the downloaded AAR file to your project directory, such as app/libs. Create this folder if it is not available.

  3. Open the settings.gradle file in the root directory of your project and add the folder containing the AAR file to dependencyResolutionManagement/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'
        }
    }
}
  1. Open the app/build.gradle file and add the dependencies for the AAR file to dependencies. Sample code:

// Replace x.y.z with the specific version number.
implementation(name:'AliVCSDK_ARTC', version: 'x.y.z', ext:'aar')
  1. The corresponding dependency is generated under External Libraries.

    image

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" />
Note
  • 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_CONNECT declaration, the system will enforce that it must be requested at runtime, otherwise a SecurityException may 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

Camera permission.

To access the device camera for video capture.

Yes

Android >= 6.0

RECORD_AUDIO

Microphone permission.

To access the device microphone for audio capture.

Yes

Android >= 6.0

INTERNET

Network permission.

For transmitting audio/video data over the network (such as via WebRTC).

Yes

No

ACCESS_NETWORK_STATE

Allows the app to access network state.

To monitor connectivity for optimizing transmission quality (such as handling reconnection).

As needed

No

ACCESS_WIFI_STATE

Allows the app to access Wi-Fi state.

To retrieve Wi-Fi connection information for optimizing network performance.

As needed

No

MODIFY_AUDIO_SETTINGS

Allows the app to modify audio settings.

To adjust system volume and switch audio output devices.

As needed

No

BLUETOOTH

Basic Bluetooth permission.

To connect to Bluetooth devices, such as headsets.

As needed

No

BLUETOOTH_CONNECT

Bluetooth connection permission.

To communicate with paired Bluetooth devices, such as streaming audio.

As needed

android >= 12

READ_PHONE_STATE

Allows access to phone state information.

To start/stop audio based on phone call status.

As needed

android >= 6.0

READ_EXTERNAL_STORAGE

Allows the app to read from external storage.

To play local music files.

As needed

android >= 6.0

WRITE_EXTERNAL_STORAGE

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:

  1. 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's targetSdkVersion is 30 or lower, you do not need the BLUETOOTH_CONNECT permission.

  2. Use Manifest merge rules to resolve conflicts
    If multiple library modules declare the same permission with conflicting attributes (such as a different maxSdkVersion), you can use the tools namespace in your app's main AndroidManifest.xml file 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)

  1. Open Terminal and install CocoaPods. If you have already installed it, skip this step.

sudo gem install cocoapods
  1. Open Terminal, navigate to the root directory of your project, and run the following command to create a Podfile.

pod init
  1. Open 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}'
end
  1. In Terminal, run the following command to update the CocoaPods dependency library in your project.

pod install
  1. After successful execution, a project file with the .xcworkspace extension 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.

    image

Manual integration

  1. Download the SDK, obtain the latest ARTC SDK package, and decompress it.

  2. Copy the framework files from the decompressed package to your project directory.

  3. Open your project in Xcode, select File -> Add Files to "xxx" from the menu, and add the SDK library files to your project.

    image

  4. Select the target and set the imported framework files to "Embed & Sign".

image

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.

image.png

  • Enable audio background mode (optional).

As shown in the figure, check Audio, AirPlay, and Picture in Picture.

image.png

Windows

Environment requirements

  • Visual Studio 2015 or later.

  • Windows 7 or later.

Integrate SDK

  1. Download the SDK and obtain the latest ARTC SDK package.

  2. Decompress the package and copy the files in the directory to your project.

  3. Configure project properties:

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

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

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

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

  1. Download the latest ARTC SDK for macOS. Decompress the package.

  2. Copy the files to your project's directory. If you are not using AAC for audio encoding, you can omit PluginAAC.framework.

  3. 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:

  • The stability issues are resolved.

Android

Linux

V7.9.1

iOS

2025-12-04

  • Optimization:

    • The ARTC SDK performance is optimized by reducing the number of threads.

    • The ARTC SDK supports the preloading feature.

  • Fix:

    • The stability issues are resolved.

Android

V7.8.1

iOS

2025-11-12

  • Optimization:

    • The user experience is optimized.

  • Fix:

    • The stability issues are resolved.

Android

V7.8.0

iOS

2025-11-05

  • Optimization:

    • The thread performance is optimized.

  • Fix:

    • The stability issues are resolved.

Android

Mac

2025-12-01

V7.7.0

iOS

2025-09-30

  • New features:

    • Supports local recording for MP4, AAC, and WAV formats.

    • Enables modern Android Audio Focus APIs (API 26+) by default.

  • Optimizations:

    • Audio data callbacks support a 24 kHz sampling rate.

  • Fix:

    • The stability issues are resolved.

Android

V7.6.0

iOS

2025-09-02

  • New features:

    • Supports configuring allow and deny lists for subscribing to specific audio or video streams.

    • Supports screen sharing on Android 14.

  • Optimizations:

    • Supports selecting the right channel during stereo-to-mono audio conversion.

    • Prioritizes 16 kHz audio sampling for AI-related use cases.

  • Fix:

    • The stability issues are resolved.

Android

Windows

V7.5.0

iOS

2025-07-31

  • New features:

    • The SDK supports displaying a black frame when a user's camera is disabled.

    • Screen sharing is supported.

  • Optimizations:

    • Engine creation time is reduced.

    • The performance of the network engine is improved.

  • Fix:

    • Fixed a bug causing playback errors on iOS when subscribing to a stream published from a web client.

Android

V7.4.0

iOS

2025-07-01

  • The performance of 3A audio processing is improved.

  • The stability issues are resolved.

Android

V7.3.0

iOS

2025-05-30

  • ARTC performance in low-bandwidth, rate-limited scenarios is improved. 

  • The stability issues are resolved.

Android

V7.2.1

Windows

2025-05-12

  • Audio resampling is supported before playback.

  • The stability issues are resolved.

V7.2.0

iOS

2025-04-28

  • Audio resampling is supported before playback.

  • The settings of microphone mute mode are modified. Both Default and All indicate muting all audio.

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

  • External Pulse Code Modulation (PCM) inputs support Acoustic Echo Cancellation (AEC), Automatic Gain Control (AGC), and Automatic Noise Suppression (ANS).

  • H.265 software encoding is supported.

  • H.264 high profile is supported.

Android

2025-04-01

V7.0.0

iOS

2025-02-28

  • Automatic Gain Control (AGC), Automatic Noise Reduction (ANR), and Automatic Echo Cancellation (AEC) can be configured through APIs.

  • Video decoding is optimized.

Android

Windows

2025-03-31

  • A major version update.

V6.21.0

iOS

2025-01-22

  • The statistics capability is improved for AI real-time call scenarios.

Android

V6.20.0

iOS

2024-12-30

  • The accuracy of the profile that configures the audio latency is optimized. 

  • The speed of joining the channel is improved. 

  • Some stability issues are addressed.

Android

V6.19.0

iOS

2024-12-20

  • The accuracy of the profile that configures the end-to-end audio latency is optimized. Adaptation issues on specific devices are fixed.

Android

V6.18.0

iOS

2024-12-09

  • For AI + RTC scenarios, latency is reduced, connection speed is improved, and a profile that configures the end-to-end audio latency is supported.

Android

V6.17.0

iOS

2024-11-04

  • Scheduling is improved and latency is reduced for AI + RTC scenarios.

  • The method that is used to only configure the frame rate for camera capturing is added.

Android

V6.15.0

iOS

2024-09-24

  • The capability to withstand poor network conditions is improved for the communication link.

  • The adaptation to hardware decoding is improved.

Android

Windows

  • Screen sharing is supported.

  • H.265 is supported.

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

  • Audio and video latency is reduced.

  • The package size is reduced.

Android

V6.11.0-beta

HarmonyOS

2024-10-24

  • ARTC SDK for HarmonyOS is released.

V6.8.7

iOS

2024-06-03

  • The stream ingest retry policy is updated to improve the success rate of stream ingest.

Android

V6.8.5

iOS

2024-04-01

  • Cross-channel subscription is supported.

Android

V6.8.2

iOS

2024-03-04

  • External texture and cvPixelBuffer objects are supported on mobile clients.

  • The network disaster recovery capability is enhanced.

Android

V6.8.1

Windows

2024-03-19

  • ARTC SDK for Windows is released.

V6.4.3

iOS

2023-12-04

  • ARTC SDK for iOS and ARTC SDK for Android are released.

Android