gpt4 book ai didi

java - 在模块 classes.jar 中发现重复的类

转载 作者:行者123 更新时间:2023-11-29 06:48:44 27 4
gpt4 key购买 nike

使用 "Cxense Android SDK",我收到重复类的消息:

Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (**com.android.support:support-compat:27.1.1**) and classes.jar (**com.android.support:support-v4:22.2.0**)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (com.android.support:support-compat:27.1.1) and classes.jar (com.android.support:support-v4:22.2.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (com.android.support:support-compat:27.1.1) and classes.jar (com.android.support:support-v4:22.2.0)
Duplicate class android.support.v4.app.ListFragment found in modules classes.jar (com.android.support:support-fragment:27.1.1) and classes.jar (com.android.support:support-v4:22.2.0)
Duplicate class android.support.v4.app.ListFragment$1 found in modules classes.jar (com.android.support:support-fragment:27.1.1) and classes.jar (com.android.support:support-v4:22.2.0)
Duplicate class android.support.v4.app.ListFragment$2 found in modules classes.jar (com.android.support:support-fragment:27.1.1) and classes.jar (com.android.support:support-v4:22.2.0)
Duplicate class android.support.v4.app.LoaderManager found in modules classes.jar (com.android.support:support-fragment:27.1.1) and classes.jar (com.android.support:support-v4:22.2.0)

这是我的应用级 build.gradle 配置:

apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
applicationId "com.tototita.cxensetestapp"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}


packagingOptions {
exclude 'META-INF/LICENSE'
}
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}


}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

//**CXsense
implementation 'com.cxpublic:cxense-android:1.0.1'
}

我怎样才能避免这种肯定包含在 Cxense SDK 中的重复类?

最佳答案

有两种方法可以解决您的问题。

  1. 实现单独时排除重复依赖

  2. 通用方式从每个实现中排除重复的依赖关系

让我们先了解一下问题:

在这里,在您的案例中, Artifact com.android.support 是重复的,因为您的app 模块 使用版本:27.1。 1 而你的 Artifact com.cxpublic:cxense-android:1.0.1 具有 com.android.support< 的内部依赖性 使用版本:22.2.0

因此,您应该手动删除其中一个(建议删除旧版本或较低版本)。让我们尝试将其删除!


第一种方法:

implementation ('com.cxpublic:cxense-android:1.0.1') {
exclude group: "com.android.support", module: "support-v4"
}

exclude group com.android.support 放在我们的 Artifact com.cxpublic 中:当我们在此 Artifact 上使用我们的实现时,cxense-android:1.0.1 将不会为 support-v4 库导入。

因此,可以通过将此 block 手动放置到每个存在此冲突的 Artifact 来解决问题。

通过第二种方式:

我们可以删除包含的依赖项,并用一个最新编号的包替换它们。在我们的例子中,它是 support-v4 不同的版本。所以,转到应用程序级别的 android block build.gradle 并将 block 放在那里以从所有 Artifact 中删除重复的 support-v4,所以我们可以有明显的依赖性。

android {
// Some other stuffs
configurations {
all*.exclude module: 'support-v4' // This removes all other versions of `support-v4` if gets duplicated from all the artifacts.
}
// Rest of other stuffs
}

关于java - 在模块 classes.jar 中发现重复的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56695106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com