由于要吃饭的原因,要搞一下android原生开发,下载最新的android studio 2202.3.1,用默认的向导生成了一个android project。报了一堆错,我以为是android studio没有安装好的原因,想尽办法清理了android studio的安装,重新安装后,还是报错,在其他的电脑也是同样的情况
实际只有两个错,一个是sdk的版本。我用的是33, 但是依赖库要求就34。第二个错误,就是Duplicate class的,用这个转帖的文章的方法二,解决问题。
我这里修改的配置如下 build.gradle.kts(module:app)
plugins {
id("com.android.application")
}
android {
namespace = "com.example.s02"
compileSdk = 34
defaultConfig {
applicationId = "com.example.s02"
minSdk = 24
targetSdk = 33
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
buildFeatures {
viewBinding = true
}
}
dependencies {
//-------------以下是加入下面的内容
constraints {
add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk7") {
version {
require("1.8.0")
}
}
add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk8") {
version {
require("1.8.0")
}
}
}
//-------------以上是增加的内容
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.9.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
implementation("androidx.navigation:navigation-fragment:2.7.0")
implementation("androidx.navigation:navigation-ui:2.7.0")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
-----------------------------------------分割线-----------------------------------
某天将项目 kotlin 版本升级到了 1.8.0 ,然后编译报错了,Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8
然后开始寻求解决方案...
Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8
kotlin-stdlib
kotlin 1.8.0 基于 JVM 1.8 编译,不再支持 JVM 1.6 和 1.7。后续不用单独在build.gradle 依赖 kotlin-stdlib-jdk7 and kotlin-stdlib-jdk8。
If you have explicitly declared kotlin-stdlib-jdk7 and kotlin-stdlib-jdk8 as dependencies in your build scripts, then you should replace them with kotlin-stdlib.
解决 Duplicate class 的编译问题
- 方法一
使用 kotlin-bom 清单
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
- 方法二
强制把 kotlin-stdlib-jdk7 和 kotlin-stdlib-jdk8 升级到 1.8.0
dependencies {
constraints {
add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk7") {
version {
require("1.8.0")
}
}
add("implementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk8") {
version {
require("1.8.0")
}
}
}
}
- 方法三
手动移除 kotlin-stdlib,不推荐
dependencies {
implementation("com.example:lib:1.0") {
exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib"
}
}
参考文档:Configure a Gradle project | Kotlin Documentation
kotlin-bom 库版本清单表
-
org.jetbrains.kotlin » kotlin-stdlib
-
org.jetbrains.kotlin » kotlin-stdlib-jdk7
-
org.jetbrains.kotlin » kotlin-stdlib-jdk8
-
org.jetbrains.kotlin » kotlin-stdlib-js
-
org.jetbrains.kotlin » kotlin-stdlib-common
-
org.jetbrains.kotlin » kotlin-reflect
-
org.jetbrains.kotlin » kotlin-osgi-bundle
-
org.jetbrains.kotlin » kotlin-test
-
org.jetbrains.kotlin » kotlin-test-junit
-
org.jetbrains.kotlin » kotlin-test-junit5
-
org.jetbrains.kotlin » kotlin-test-testng
-
org.jetbrains.kotlin » kotlin-test-js
-
org.jetbrains.kotlin » kotlin-test-common
-
org.jetbrains.kotlin » kotlin-test-annotations-common
-
org.jetbrains.kotlin » kotlin-main-kts
-
org.jetbrains.kotlin » kotlin-script-runtime
-
org.jetbrains.kotlin » kotlin-script-util
-
org.jetbrains.kotlin » kotlin-scripting-common
-
org.jetbrains.kotlin » kotlin-scripting-jvm
-
org.jetbrains.kotlin » kotlin-scripting-jvm-host
-
org.jetbrains.kotlin » kotlin-scripting-ide-services
-
org.jetbrains.kotlin » kotlin-compiler
-
org.jetbrains.kotlin » kotlin-compiler-embeddable
-
org.jetbrains.kotlin » kotlin-daemon-client
作者:SharpCJ
出处:https://www.cnblogs.com/joy99/p/17398903.html
本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。