跳到主要内容

SDK集成

更新时间:2025-02-12 11:32:05

解压SDK后将得到以下文件

提供的AppSDK文件名如下:RTCX_Android_AppSDK_{version}_{hash}_{datetime}_Release.zip

模块SDK说明备注
基础包libsdkcfg-Release.aar基础依赖SDK,为其他SDK提供基础服务。如日志打印,日志等级控制必选
libuserdevicemgr-Release.aar用户设备管理SDK,添加,列表,解绑等服务封装必选
libapiclient-Release.aarAPI通道SDK,提供API通道能力,平台接口调用通道。必选
libsdkcfg-Release.aar初始化SDK,提供SDK统一初始化及基础环境配置信息。必选
libsignaling-Release.aar长连接通道SDK,提供IoT业务协议封装的云端数据下行能力,为App提供发布消息的能力和支持请求响应模型必选
用户账号libaccount-Release.aar提供自建账号体系能力,包括登录、登出等功能必选
音视频libplayback-Release.aar视频录制事件相关服务接口封装音视频设备必选
libplayer-Release.aarRTCX App端SDK提供了音视频播放、语音对讲等功能音视频设备必选
设备控制libthing-Release.aar物模型 SDK 提供了 App 端的物模型可选
  • 基础包提供了基础服务能力,包括日志打印搜集、平台原子接口调用、SDK统一初始化、网络环境配置、长连接消息上下行收发、设备绑定与解绑、设备列表获取等,
  • 用户账号模块提供账号注册、登录、登出、密码管理、验证码收发能力,依赖于基础包。
  • 音视频模块提供了音视频设备的直播、回放、语音对讲等相关能力,依赖于基础包,为可选SDK,如果不需要音视频播放功能,可以不选
  • 设备控制模块提供了对设备的服务操作,如PTZ转动控制、设备属性状态的获取与设置等控制能力,依赖于基础包,为可选SDK,如果不需要操作设备,可以不选

拷贝SDK至libs目录下

拷贝解压出来的.aar至 …/{app模块}/libs文件夹下

配置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/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'


api fileTree(dir: "./libs", include: ["*.jar", "*.aar"])
}

配置权限

<!—存储权限 -->
<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 rtcx.im.sdk.**{*;}
-keep interface rtcx.im.sdk.**{*;}

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