错误-
Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10)
Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations$ReflectSdkVersion found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10)
Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations$ReflectSdkVersion found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.io.path.ExperimentalPathApi found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10)
Duplicate class kotlin.io.path.PathRelativizer found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10)
Duplicate class kotlin.io.path.PathsKt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10)
Duplicate class kotlin.io.path.PathsKt__PathReadWriteKt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10)
Duplicate class kotlin.io.path.PathsKt__PathUtilsKt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10)
Duplicate class kotlin.jdk7.AutoCloseableKt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10)
Duplicate class kotlin.jvm.jdk8.JvmRepeatableKt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.jvm.optionals.OptionalsKt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.random.jdk8.PlatformThreadLocalRandom found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.streams.jdk8.StreamsKt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$1 found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$2 found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$3 found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$4 found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.text.jdk8.RegexExtensionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Duplicate class kotlin.time.jdk8.DurationConversionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10)
Go to the documentation to learn how to Fix dependency resolution errors.
实现行-
implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version"
我正在学习一个关于jetpack compose的教程,教程的下一步是添加这个库。这个库还没有被使用。所以,应用程序在不包含它的情况下构建得很好。但是,添加这个会导致重复类错误。然而,它不会在构建Gradle时导致任何问题。从我迄今为止的研究来看,看起来问题是这个库包含了一些其他的库,这些库已经被单独添加了,我无法识别这个库。另外,我尝试为此更改库版本以匹配其他生命周期库(旧版本)。我只会在Gradle文件和存储所有实现的文件下面。
寻找评论
//--------------was supposed to add this
Build.gradle -
import com.example.crane.buildsrc.Libs
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
}
// Reads the Google maps key that is used in the AndroidManifest
Properties properties = new Properties()
if (rootProject.file("local.properties").exists()) {
properties.load(rootProject.file("local.properties").newDataInputStream())
}
android {
compileSdkVersion 33
defaultConfig {
applicationId "androidx.compose.samples.crane"
minSdkVersion 21
targetSdkVersion 33
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.compose.samples.crane.CustomTestRunner"
manifestPlaceholders = [googleMapsKey: properties.getProperty("google.maps.key", "")]
}
signingConfigs {
// We use a bundled debug keystore, to allow debug builds from CI to be upgradable
debug {
storeFile rootProject.file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
compose true
// Disable unused AGP features
buildConfig false
aidl false
renderScript false
resValues false
shaders false
}
composeOptions {
kotlinCompilerExtensionVersion Libs.AndroidX.Compose.compilerVersion
}
packagingOptions {
// Multiple dependency bring these files in. Exclude them to enable
// our test APK to build (has no effect on our AARs)
excludes += "/META-INF/AL2.0"
excludes += "/META-INF/LGPL2.1"
}
}
dependencies {
def lifecycle_version="2.6.0"
implementation Libs.Kotlin.stdlib
implementation Libs.Kotlin.Coroutines.android
implementation Libs.GoogleMaps.maps
implementation Libs.GoogleMaps.mapsKtx
constraints {
// Volley is a transitive dependency of maps
implementation(Libs.Volley.volley) {
because("Only volley 1.2.0 or newer are available on maven.google.com")
}
}
implementation Libs.Accompanist.insets
implementation Libs.AndroidX.Activity.activityCompose
implementation Libs.AndroidX.appcompat
implementation Libs.AndroidX.Compose.runtime
implementation Libs.AndroidX.Compose.foundation
implementation Libs.AndroidX.Compose.material
implementation Libs.AndroidX.Compose.layout
implementation Libs.AndroidX.Compose.animation
implementation Libs.AndroidX.Compose.toolingPreview
implementation Libs.AndroidX.Lifecycle.viewModelCompose
implementation Libs.AndroidX.Lifecycle.viewModelKtx
implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version"//--------------was supposed to add this
implementation Libs.Hilt.android
debugImplementation Libs.AndroidX.Compose.tooling
kapt Libs.Hilt.compiler
implementation Libs.Coil.coilCompose
debugImplementation Libs.AndroidX.Compose.uiTestManifest
androidTestImplementation Libs.JUnit.junit
androidTestImplementation Libs.AndroidX.Test.core
androidTestImplementation Libs.AndroidX.Test.runner
androidTestImplementation Libs.AndroidX.Test.espressoCore
androidTestImplementation Libs.AndroidX.Test.rules
androidTestImplementation Libs.AndroidX.Test.Ext.junit
androidTestImplementation Libs.Kotlin.Coroutines.test
androidTestImplementation Libs.AndroidX.Compose.uiTest
androidTestImplementation Libs.Hilt.android
androidTestImplementation Libs.Hilt.testing
kaptAndroidTest Libs.Hilt.compiler
}
Dependencies.kt -
package com.example.crane.buildsrc
object Versions {
const val ktLint = "0.45.2"
}
object Libs {
const val androidGradlePlugin = "com.android.tools.build:gradle:7.2.2"
const val ktLint = "com.pinterest:ktlint:${Versions.ktLint}"
object GoogleMaps {
const val maps = "com.google.android.libraries.maps:maps:3.1.0-beta"
const val mapsKtx = "com.google.maps.android:maps-v3-ktx:3.4.0"
}
object Volley {
const val volley = "com.android.volley:volley:1.2.0"
}
object Accompanist {
const val version = "0.25.1"
const val insets = "com.google.accompanist:accompanist-insets:$version"
}
object Kotlin {
private const val version = "1.7.10"
const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$version"
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$version"
const val extensions = "org.jetbrains.kotlin:kotlin-android-extensions:$version"
object Coroutines {
private const val version = "1.6.3"
const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$version"
const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:$version"
}
}
object AndroidX {
object Activity {
const val activityCompose = "androidx.activity:activity-compose:1.5.0"
}
const val appcompat = "androidx.appcompat:appcompat:1.4.2"
object Compose {
const val compilerVersion = "1.3.0"
const val snapshot = ""
const val version = "1.2.1"
const val runtime = "androidx.compose.runtime:runtime:$version"
const val material = "androidx.compose.material:material:$version"
const val foundation = "androidx.compose.foundation:foundation:$version"
const val layout = "androidx.compose.foundation:foundation-layout:$version"
const val tooling = "androidx.compose.ui:ui-tooling:$version"
const val toolingPreview = "androidx.compose.ui:ui-tooling-preview:$version"
const val animation = "androidx.compose.animation:animation:$version"
const val uiTest = "androidx.compose.ui:ui-test-junit4:$version"
const val uiTestManifest = "androidx.compose.ui:ui-test-manifest:$version"
}
object Lifecycle {
private const val version = "2.5.0"
const val viewModelCompose = "androidx.lifecycle:lifecycle-viewmodel-compose:$version"
const val viewModelKtx = "androidx.lifecycle:lifecycle-viewmodel-ktx:$version"
}
object Test {
private const val version = "1.4.0"
const val core = "androidx.test:core:$version"
const val runner = "androidx.test:runner:$version"
const val rules = "androidx.test:rules:$version"
object Ext {
private const val version = "1.1.2"
const val junit = "androidx.test.ext:junit-ktx:$version"
}
const val espressoCore = "androidx.test.espresso:espresso-core:3.2.0"
}
}
object Hilt {
private const val version = "2.43"
const val gradlePlugin = "com.google.dagger:hilt-android-gradle-plugin:$version"
const val android = "com.google.dagger:hilt-android:$version"
const val compiler = "com.google.dagger:hilt-compiler:$version"
const val testing = "com.google.dagger:hilt-android-testing:$version"
}
object JUnit {
private const val version = "4.13"
const val junit = "junit:junit:$version"
}
object Coil {
const val coilCompose = "io.coil-kt:coil-compose:2.1.0"
}
}
object Urls {
const val mavenCentralSnapshotRepo = "https://oss.sonatype.org/content/repositories/snapshots/"
const val composeSnapshotRepo = "https://androidx.dev/snapshots/builds/" +
"${Libs.AndroidX.Compose.snapshot}/artifacts/repository/"
}
注意-
你好,我正在做的项目是android compose培训课程的一部分。所以,它不是我的项目,我不知道为什么库实现以这种方式添加。他们创建了一个单独的文件,将所有依赖项存储为对象,并在build. gradle中调用它们。(看看依赖项是如何添加的)
2条答案
按热度按时间8wtpewkr1#
显然这个库版本使用
kotlin-stdlib
1.8.10。在依赖项中,您的应用使用的是
kotlin-stdlib
1.7.10。将依赖项中的1.7.10更改为1.8.10,并确保project的build.gradle版本相同。
另一个解决方案是降级使用kotlin-stdlib 1.7.10的
lifecycle-runtime-compose
版本。kd3sttzy2#
要解决此问题,请更新Kotlin版本以及Compose Compile版本和hilt版本。值如下所示-
我认为这个问题更多的是关于不兼容的库版本。所以,将所有更新到最新似乎解决了这个问题。