跳到主要内容

SDK集成

更新时间:2026-04-03 13:13:59

解压SDK后将得到以下文件

通过AIRTC控制台下载最新的Flutter AppSDK文件,文件名一般为:AIRTC_Flutter_AppSDK_Latest.zip。

在项目跟目录创建dependencies后,解压Flutter AppSDK后,放到dependencies目录下 在 pubspec.yaml 文件中添加依赖

dependencies:
flutter:
sdk: flutter

airtc_engine:
# When depending on this package from a real application you should use:
# See https://dart.dev/tools/pub/dependencies#version-constraints
# The example app is bundled with the plugin so we use a path dependency on
# the parent directory to use the current plugin's version.
path: dependencies/airtc_engine

android端配置

Android项目需要以下配置才能正常使用SDK。

拷贝SDK文件

解压后的sdk文件夹后,将文件夹中的android目录的local-aar文件夹下的.aar文件全部拷贝至项目的android/libs目录下。 如下图所示:

图片

Gradle配置

如果您需要编译运行在 Android 平台,您还需要进行如下配置: 首先,需要在工程的 android/app/build.gradle 文件中对应位置添加:

android{
packagingOptions {
exclude 'META-INF/proguard/coroutines.pro'

pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libpolarisavcodec.so'
pickFirst 'lib/arm64-v8a/libpolarisavutil.so'
pickFirst 'lib/arm64-v8a/libpolarisfreetype.so'
pickFirst 'lib/arm64-v8a/libpolarisswresample.so'
pickFirst 'lib/arm64-v8a/libpolarisswscale.so'
pickFirst 'lib/arm64-v8a/libpolarisavfilter.so'
pickFirst 'lib/arm64-v8a/libpolarisavformat.so'

pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libpolarisavcodec.so'
pickFirst 'lib/armeabi-v7a/libpolarisavutil.so'
pickFirst 'lib/armeabi-v7a/libpolarisfreetype.so'
pickFirst 'lib/armeabi-v7a/libpolarisswresample.so'
pickFirst 'lib/armeabi-v7a/libpolarisswscale.so'
pickFirst 'lib/armeabi-v7a/libpolarisavfilter.so'
pickFirst 'lib/armeabi-v7a/libpolarisavformat.so'
}

defaultConfig {
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
}
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.12.0'

implementation 'com.alibaba.fastjson:1.2.83'
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.9.20'
implementation 'org.conscrypt:conscrypt-android:2.2.1'

implementation(fileTree(mapOf("dir" to "../libs", "include" to listOf("*.jar", "*.aar"))))
}

配置权限

打开/android/app/src/main/AndroidManifest.xml文件。 在其中添加如下权限:

<!--存储权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--读存储(媒体和文件)权限,Android 13及更高版本申请-->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<!— wifi状态权限 配网需要 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

配置混淆

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

-keep class com.iperf3.jni.** { *;}
-keep interface com.iperf3.jni.** { *;}

# keep fastjson
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.**{*;}
-keep interface com.alibaba.fastjson.** { *;}

-dontwarn com.polaris.iot.appsdk.**
-keep class com.polaris.iot.appsdk.**{*;}
-keep interface com.polaris.iot.appsdk.**{*;}

-keep class com.polaris.MultiStreamSource.** {*;}
-keep class com.polaris.MediaPlayer.** {*;}
-keep interface com.polaris.MediaPlayer.** {*;}
-keep class org.webrtc.** {*;}
-keep interface org.webrtc.** {*;}
-keep class com.polaris.PicStitch.** { *;}
-keep interface com.polaris.PicStitch.** {*;}

-keep class rtcx.im.sdk.**{*;}
-keep interface rtcx.im.sdk.**{*;}

#需要mqtt功能添加
-keep class org.eclipse.paho.client.mqttv3.** {*;}
-keep interface org.eclipse.paho.client.mqttv3.** {*;}

-keep class kotlin.jvm.** {*;}
-keep class kotlin.reflect.jvm.** {*;}
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-keep class okio.** { *; }
-keep interface okio.** { *; }
-dontwarn okhttp3.**
-dontwarn okio.**

iOS端配置

iOS项目需要以下配置才能正常使用SDK

配置权限

需要在 Info.plist 的第一级<dict>目录下加入对相机和麦克风的权限申请:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSMicrophoneUsageDescription</key>
<string>需要麦克风权限用于: 与设备端双向对讲</string>
<key>NSCameraUsageDescription</key>
<string>需要相机权限用于:扫描设备二维码和视频通话</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>需要相册访问权限用于:保存截图录像</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要定位权限用于:获取当前WiFi信息</string>
<key>NSLocalNetworkUsageDescription</key>
<string>需要本地网络权限:检测与您本地网关的连通性</string>

Build Settings 配置

Xcode -> Build Settings -> Enable Bitcode 设置为 NO
Xcode -> Build Settings -> Other Linker Flags 值加入 -ObjC

Flutter依赖更新

Android与iOS端配置之后,可以通过以下命令更新依赖。

  1. 打开终端(Terminal),进入项目根目录。
  2. 执行命令:
flutter clean
  1. 清理完成后,建议重新获取依赖并重新构建:
flutter pub get

连接设备后,通过Android Studio或者Visual Studio Code‌运行到设备上。