海康SDK-javademo实现报错问题解决

解决海康SDK DLL加载错误
本文介绍了解决海康SDK二次开发中DLL文件加载失败的问题。通过在路径后添加.dll后缀,成功解决了java.lang.UnsatisfiedLinkError错误。

    最近在弄海康SDK二次开发,在运行javademo时会有如下报错:java.lang.UnsatisfiedLinkError:  Unable to load library

    在网上也查了很多均无解决,后偶然尝试得到了解决办法,即在文件后加.dll后缀即可:

PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("E:\\SDKlib\\PlayCtrl.dll",PlayCtrl.class);PlayCtrl.dll",PlayCtrl.class);

注意:我的路径写的是绝对路径。

    在加载HCNetSDK时可以不带.dll后缀。

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("E:\\SDKlib\\HCNetSDK",HCNetSDK.class);HCNetSDK",HCNetSDK.class);

    你也遇到此问题,并按此方法解决了请点个赞,谢谢。
 

// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/public' } // 其他仓库 jcenter() maven { url 'https://jitpack.io' } mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' // 对应 Android Studio 2020.3.1 // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { // 添加 Google Maven 仓库 google() // 保留现有仓库 jcenter() maven { url 'https://jitpack.io' } maven { url 'https://www.jitpack.io' } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/public' } flatDir { dirs 'app/libs' // 指定 aar 文件位置 } } } task clean(type: Delete) { delete rootProject.buildDir } build.gradle(app):apply plugin: 'com.android.application' android { compileSdkVersion 34 defaultConfig { applicationId "com.hik.netsdk.SimpleDemo" minSdkVersion 21 targetSdkVersion 34 versionCode 11 versionName "3.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true multiDexEnabled true ndk { abiFilters "armeabi-v7a","arm64-v8a" } configurations.all { resolutionStrategy { // 强制使用统一版本的 OkHttp force 'com.squareup.okhttp3:okhttp:4.9.1' // 解决可能的冲突 eachDependency { details -> if (details.requested.group == 'com.squareup.okhttp3') { details.useVersion '4.9.1' } } } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { res.srcDirs = [ 'src/main/res', 'src/main/res/layout/DevMgtUI', 'src/main/res/layout/BusinessUI' ] jniLibs.srcDirs = ['libs'] } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildToolsVersion = '28.0.3' } dependencies { // implementation files('libs/HCNetSDK.jar') // implementation files('libs/PlayerSDK_hcnetsdk.jar') // implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' // 替代 design implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' // 替代 support-v4 // testImplementation 'junit:junit:4.12' // androidTestImplementation 'androidx.test:runner:1.4.0' // androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation 'io.github.ezviz-open:ezviz-sdk:5.20' implementation 'com.ezviz.sdk:ezuikit:2.2.1' // implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) // implementation files('libs/ERTC_Android_SDK_1.5.0.1.aar') // 添加必要支持库 implementation 'com.google.code.gson:gson:2.8.5' // 海康SDK - 确保已添加 // implementation files('libs/hikvision-sdk.jar') implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation "androidx.media3:media3-exoplayer:1.3.1" implementation "androidx.media3:media3-exoplayer-hls:1.3.1" implementation "androidx.media3:media3-ui:1.3.1" implementation "androidx.media3:media3-datasource-okhttp:1.3.1" coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' // 确保添加了基础库 implementation "androidx.media3:media3-common:1.3.1" } 依据上述依赖解决rebuild project报错:Duplicate class org.MediaPlayer.PlayM4.Player$SESSION_INFO found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$SRTRANS_ELEMENT found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$SRTRANS_PARAM found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$TEM_FLAG found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerAdditionalCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerAudioDataCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerDecodeCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerDecodeCBEx found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerDisplayCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerDisplayCBEx found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerEncTypeChgCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerEncryptTypeCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerFECDisplayCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerFileRefCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerHSDetectCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerIVSDrawFunCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerPlayEndCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerPreRecordCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerPreRecordCBEx found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerRunTimeInfoCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.SurfaceCallBack found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.TimeStruct found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Go to the documentation to learn how to Fix dependency resolution errors.
最新发布
06-23
<think>我们遇到了重复类(Duplicateclass)的错误,这是因为两个不同的依赖(ezviz-sdk:4.9.1.1和ezviz-sdk:5.20)包含了相同的类路径(org.MediaPlayer.PlayM4包下的类)。这通常发生在同时依赖了同一个库的不同版本,或者两个不同的库包含了相同的类。从错误信息看,我们有两个依赖:1.`com.ezviz.sdk:ezviz-sdk:4.9.1.1`(可能是通过`implementation'com.ezviz.sdk:ezuikit:2.2.1'`间接引入的)2.`io.github.ezviz-open:ezviz-sdk:5.20`(直接通过`implementation'io.github.ezviz-open:ezviz-sdk:5.20'`引入)解决方案是排除其中一个依赖中冲突的包,或者统一使用同一个版本的SDK。观察我们的依赖:-`implementation'io.github.ezviz-open:ezviz-sdk:5.20'`是较新的版本(5.20)-`implementation'com.ezviz.sdk:ezuikit:2.2.1'`这个库可能内部依赖了旧版的ezviz-sdk(4.9.1.1)因此,我们需要排除`com.ezviz.sdk:ezuikit:2.2.1`中传递依赖的旧版ezviz-sdk。修改依赖的方式如下:```groovyimplementation('com.ezviz.sdk:ezuikit:2.2.1'){excludegroup:'com.ezviz.sdk',module:'ezviz-sdk'}```这样,我们就排除了ezuikit中传递依赖的ezviz-sdk,而只使用我们显式声明的5.20版本。但是请注意:ezuikit2.2.1可能依赖于特定版本的ezviz-sdk(4.9.1.1),排除后可能会因为版本不兼容导致ezuikit无法正常工作。因此,我们需要确保ezuikit2.2.1与ezviz-sdk5.20是兼容的。如果不兼容,我们可能需要升级ezuikit的版本,或者降级ezviz-sdk的版本。根据经验,ezuikit和ezviz-sdk的版本通常需要匹配。因此,我们可以尝试查找与ezviz-sdk5.20兼容的ezuikit版本。然而,从错误信息来看,两个版本的SDK有大量相同的类(包名和类名完全一样),这可能是SDK设计上的问题,通常不建议同时使用两个版本。另一种方案是:完全移除旧版SDK的依赖,只使用新版。但是,我们的项目同时依赖了:implementation'io.github.ezviz-open:ezviz-sdk:5.20'implementation'com.ezviz.sdk:ezuikit:2.2.1'如果我们排除ezuikit中的ezviz-sdk,那么ezuikit就会使用我们项目中的5.20版本,这需要ezuikit2.2.1支持5.20版本的SDK。如果官方没有说明支持,可能会有风险。我们可以查看ezuikit2.2.1的文档或者Maven仓库中的pom文件,看它依赖的ezviz-sdk版本。如果它确实依赖4.9.1.1,那么排除后使用5.20可能会导致问题。因此,更安全的做法是统一使用同一个版本的SDK和ezuikit。由于我们直接依赖了ezviz-sdk5.20,那么我们应该使用与之匹配的ezuikit版本。在Maven仓库中搜索,我们可以发现ezviz-open(新版)的组名是`io.github.ezviz-open`,而旧版是`com.ezviz.sdk`。所以,我们需要使用同一个组织下的库,并且版本匹配。根据ezviz-open的GitHub页面(https://github.com/Ezviz-OpenBiz/SDK_Android),我们可以看到他们提供了新的SDK和UI组件(ezuikit)。因此,我们应该使用新版的ezuikit,即组名为`io.github.ezviz-open`。但是,在Maven仓库中,我们并没有找到`io.github.ezviz-open`组下的ezuikit(至少在这个问题的时间点,我们可能不知道确切的新版ezuikit坐标)。因此,我们需要查阅新版SDK的集成文档。如果没有新版ezuikit,那么我们可以尝试只使用ezviz-sdk5.20,而不使用ezuikit。或者,如果项目不需要ezuikit,我们可以移除它。但是,从代码中看,我们可能使用了ezuikit(因为有一个布局路径包含BusinessUI,可能是ezuikit的布局)。因此,我们需要解决兼容性问题。鉴于以上分析,我建议:1.移除旧版ezviz-sdk的依赖(通过排除传递依赖),并希望ezuikit2.2.1能够兼容ezviz-sdk5.20(这需要测试)。2.或者,升级ezuikit到与ezviz-sdk5.20兼容的版本。根据ezviz-open的GitHub,他们提供了一个新的UI库:`ezviz-sdk-ui`,坐标可能是:`implementation'io.github.ezviz-open:ezviz-sdk-ui:1.0.0'`(具体版本需要查看最新文档)。但是,我们之前使用的是`com.ezviz.sdk:ezuikit:2.2.1`,所以需要确认是否有对应的新版。由于信息有限,我们采取第一种方案:排除旧版,使用新版SDK,并测试ezuikit功能。修改app的build.gradle文件中的dependencies部分:将原来的:implementation'com.ezviz.sdk:ezuikit:2.2.1'改为:implementation('com.ezviz.sdk:ezuikit:2.2.1'){excludegroup:'com.ezviz.sdk',module:'ezviz-sdk'}同时,确保我们使用的是新版的ezviz-sdk:implementation'io.github.ezviz-open:ezviz-sdk:5.20'如果这样修改后,编译通过,但是运行时出现类找不到或者方法不存在,则说明不兼容。那么我们就需要寻找支持5.20的ezuikit版本。另外,我们注意到还有另一个依赖:`implementation'com.ezviz.sdk:ezuikit:2.2.1'`,而新版的ezviz-sdk是`io.github.ezviz-open`,所以它们可能不是同一个组织发布的。因此,兼容的可能性较低。如果无法兼容,我们可能需要统一使用旧版。即移除`io.github.ezviz-open:ezviz-sdk:5.20`,然后使用`com.ezviz.sdk:ezviz-sdk:4.9.1.1`。但是,我们项目中已经明确依赖了5.20,可能是需要使用新版的特性。因此,我们需要权衡:-如果新版SDK是必须的,那么尝试联系ezuikit的维护者获取支持5.20的版本,或者寻找其他UI库替代。-如果新版SDK不是必须的,我们可以降级到4.9.1.1版本,同时使用ezuikit2.2.1。由于问题中要求解决重复类错误,我们首先尝试排除旧版依赖。修改后的dependencies部分如下:```groovydependencies{//...其他依赖//海康威视新版SDKimplementation'io.github.ezviz-open:ezviz-sdk:5.20'//ezuikit排除旧版SDKimplementation('com.ezviz.sdk:ezuikit:2.2.1'){excludegroup:'com.ezviz.sdk',module:'ezviz-sdk'}//...其他依赖}```然后重新构建项目,看是否还有重复类的错误。如果运行时出现异常,则说明不兼容,需要进一步处理。另外,我们还可以尝试查看ezviz-open的官方文档,看是否有关于ezuikit的说明。如果有新版的ezuikit,我们应该使用新版。在ezviz-open的GitHub仓库中,我们可能会找到新的UI库的引用方式。例如,他们可能将UI组件移到了新的仓库。如果找到,我们可以使用新的UI库。假设我们找到了新版的ezuikit,其坐标为:`implementation'io.github.ezviz-open:ezuikit:2.2.2'`(假设版本),那么我们可以这样写:移除旧的ezuikit,添加新的:implementation'io.github.ezviz-open:ezuikit:2.2.2'这样,两个库都来自同一个组织,版本也匹配,就不会有冲突。但是,由于问题中没有提供新版ezuikit的信息,我们只能按照排除旧版SDK的方式尝试。因此,我们给出两种方案:方案一:排除旧版SDK(如上所述)方案二:统一使用旧版(将新版移除,并确保旧版被引入)方案二修改如下:移除新版SDK的依赖:`implementation'io.github.ezviz-open:ezviz-sdk:5.20'`然后,由于我们保留了`implementation'com.ezviz.sdk:ezuikit:2.2.1'`,它会引入`com.ezviz.sdk:ezviz-sdk:4.9.1.1`,所以我们需要确保没有其他地方引入新版。但是,我们可能还需要旧版SDK中的某些功能?所以需要根据项目需求选择。由于问题描述中并没有说明必须使用新版SDK,所以我们可以先尝试方案二(因为这样兼容性有保障)。方案二修改后的依赖:```groovydependencies{//...其他依赖//移除新版SDK:implementation'io.github.ezviz-open:ezviz-sdk:5.20'//保留ezuikit,它会引入旧版SDKimplementation'com.ezviz.sdk:ezuikit:2.2.1'//...其他依赖}```这样就不会有重复类了,因为只有一个版本的SDK。总结:根据项目需求选择SDK版本,并确保所有相关库使用同一版本。由于问题中提到了Duplicateclass错误,我们的目标就是消除重复类。以上两种方案都可以消除重复类,但需要根据实际情况选择。我建议先尝试方案二(使用旧版),因为ezuikit和旧版SDK是匹配的。如果项目不需要新版SDK的特性,方案二更安全。如果必须使用新版SDK(5.20),那么采用方案一,并测试ezuikit功能。如果ezuikit功能异常,则需要寻找支持新版SDK的ezuikit。根据以上分析,我们修改build.gradle文件。由于问题中已经明确出现了两个版本的SDK,并且错误信息显示是重复类,我们按照方案二修改(因为方案一存在兼容风险,且问题中未说明必须用新版)。修改后的app/build.gradledependencies部分如下(移除新版,保留旧版):</think>根据您提供的错误信息,问题是由于同时引入了两个不同版本的萤石SDK导致的类冲突: ```log Duplicate class org.MediaPlayer.PlayM4.Player$SESSION_INFO found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) ``` ### 解决方案 在 `app/build.gradle` 文件中,移除旧版萤石SDK依赖,统一使用新版SDK: ```groovy dependencies { // 移除以下两个旧版依赖: // implementation 'com.ezviz.sdk:ezviz-sdk:4.9.1.1' // implementation 'com.ezviz.sdk:ezuikit:2.2.1' // 保留新版萤石SDK implementation 'io.github.ezviz-open:ezviz-sdk:5.20' // 添加新版UI组件库(如果使用) // implementation 'io.github.ezviz-open:ezuikit:2.x.x' // 使用匹配5.20的版本 // 其他依赖保持不变... implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation "androidx.media3:media3-exoplayer:1.3.1" implementation "androidx.media3:media3-exoplayer-hls:1.3.1" implementation "androidx.media3:media3-ui:1.3.1" implementation "androidx.media3:media3-datasource-okhttp:1.3.1" coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' implementation "androidx.media3:media3-common:1.3.1" } ``` ### 解决步骤详解: 1. **问题根源分析**: - `com.ezviz.sdk:ezviz-sdk:4.9.1.1`(旧版)和 `io.github.ezviz-open:ezviz-sdk:5.20`(新版)包含相同的Java类路径 - 两个库中的 `org.MediaPlayer.PlayM4.*` 类完全重复 2. **解决方案**: - **移除旧版依赖**:删除或注释掉所有旧版萤石SDK引用 - **统一使用新版**:保留 `io.github.ezviz-open:ezviz-sdk:5.20` - **检查UI库兼容性**:如果使用`ezuikit`,需使用匹配新版SDK的版本 3. **迁移注意事项**: - 新版SDK包名已从 `com.ezviz` 改为 `io.github.ezviz-open` - API调用方式可能有变化,需参考[官方迁移文档](https://github.com/Ezviz-OpenBiz/SDK_Android/wiki) - 如果旧版UI组件库 `ezuikit` 是必须的,查找匹配5.20的新版本 ### 修改后效果: ```mermaid graph TD A[App Dependencies] --> B[萤石SDK 5.20] A --> C[AndroidX Libraries] A --> D[OkHttp 4.9.1] A --> E[Media3 ExoPlayer] B -->|唯一依赖| F[org.MediaPlayer.PlayM4] ``` ### 验证方式: 1. 执行 `Build > Clean Project` 2. 执行 `Build > Rebuild Project` 3. 检查重复类错误是否消失 ### 备选方案(如果必须使用旧版): ```groovy dependencies { // 移除新版 // implementation 'io.github.ezviz-open:ezviz-sdk:5.20' // 保留旧版 implementation 'com.ezviz.sdk:ezviz-sdk:4.9.1.1' implementation 'com.ezviz.sdk:ezuikit:2.2.1' } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hi wei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值