KMM笔记应用开发遇Unresolved reference: androidTarget错误求解决
解决方案:KMM中Unresolved reference: androidTarget与Gradle弃用错误
问题根源
Unresolved reference: androidTarget:当前Kotlin Multiplatform版本低于1.9.0,不支持androidTarget()新API- 换回
android()出现弃用警告:旧API在AGP 8.0+版本中已被标记为废弃
修复步骤
1. 统一依赖版本(根目录build.gradle.kts)
指定兼容的Kotlin、AGP、Compose及Hilt版本,确保所有插件版本匹配:
plugins { kotlin("multiplatform").version("1.9.20").apply(false) id("com.android.application").version("8.2.0").apply(false) id("com.android.library").version("8.2.0").apply(false) id("org.jetbrains.compose").version("1.5.10").apply(false) id("com.google.dagger.hilt.android").version("2.48").apply(false) }
2. 保留androidTarget()并调整模块配置
:shared模块build.gradle.kts
无需修改kotlin块中的androidTarget(),保持原有配置即可:
kotlin { androidTarget() // 保留此API,无需换回android() jvm("desktop") // ... 其余iOS、sourceSets配置不变 } // android配置块保持原样 android { compileSdk = (findProperty("android.compileSdk") as String).toInt() namespace = "com.myapplication.common" // ... 其余配置不变 }
:androidApp模块build.gradle.kts
Android应用模块无需多平台插件,替换为kotlin("android")并移除多余的多平台配置:
plugins { kotlin("android") id("com.android.application") id("org.jetbrains.compose") id("kotlin-kapt") id("dagger.hilt.android.plugin") } // 移除多余的kotlin{}多平台配置块 android { compileSdk = (findProperty("android.compileSdk") as String).toInt() namespace = "com.myapplication" // ... 其余配置不变 } // dependencies块保持原样 dependencies{ implementation(project(":shared")) // ... 其余依赖不变 }
3. 确认gradle.properties配置
确保gradle.properties中指定了正确的Android SDK版本:
android.compileSdk=34 android.minSdk=24 android.targetSdk=34 org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 android.useAndroidX=true android.nonTransitiveRClass=true kotlin.mpp.stability.nowarn=true
关键说明
androidTarget()是Kotlin 1.9.0+引入的替代android()的新API,必须配合AGP 8.0+使用- Android应用模块仅需
kotlin("android")插件即可与KMM共享模块交互,无需多平台插件 - 所有插件版本必须保持兼容,避免版本不匹配导致的API找不到或弃用问题
内容的提问来源于stack exchange,提问作者towhidSoyon
相关产品推荐
相关产品推荐

