You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中KMM项目偶发Unresolved reference编译问题求助

KMM项目偶发:androidApp:compileDebugKotlin任务"Unresolved reference"错误问题

执行:androidApp:compileDebugKotlin任务时,Android Studio偶发无法找到已存在的部分导入,出现**"Unresolved reference"**错误,该问题并非持续出现,属于间歇性触发。


项目级build.gradle

plugins {
    alias(libs.plugins.androidApplication).apply(false)
    alias(libs.plugins.androidLibrary).apply(false)
    alias(libs.plugins.kotlinAndroid).apply(false)
    alias(libs.plugins.kotlinMultiplatform).apply(false)
    alias(libs.plugins.kotlinCocoapods).apply(false)
    alias(libs.plugins.kotlinPluginSerialization).apply(false)
    alias(libs.plugins.sqldelight).apply(false)
    id("com.google.gms.google-services") version "4.4.0" apply false
    id("com.google.firebase.crashlytics") version "2.9.9" apply false
}

app模块build.gradle

plugins {
    alias(libs.plugins.androidApplication)
    alias(libs.plugins.kotlinAndroid)
    id("com.google.gms.google-services")
    id("com.google.firebase.crashlytics")
    alias(libs.plugins.kotlinPluginSerialization)
}

android {
    namespace = "..."
    compileSdk = libs.versions.targetSdk.get().toInt()
    defaultConfig {
        applicationId = "..."
        minSdk = libs.versions.minSdk.get().toInt()
        targetSdk = libs.versions.targetSdk.get().toInt()
        versionCode = 12
        versionName = "1.0"

        signingConfigs {
            create("release") {
                storeFile = ...
                storePassword = "..."
                keyAlias = "..."
                keyPassword = "..."
            }
        }
    }
    buildFeatures {
        buildConfig = true
        viewBinding = true
        compose = true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
    }
    packaging {
        resources {
            excludes += "/META-INF/{AL2.0,LGPL2.1}"
        }
    }
    buildTypes {
        getByName("debug") {
            applicationIdSuffix = ".debug"
            versionNameSuffix = ".debug"
            isMinifyEnabled = false
            isDebuggable = true
            isShrinkResources = false
        }
        getByName("release") {
            isMinifyEnabled = true
            isDebuggable = false
            isShrinkResources = false
            signingConfig = signingConfigs.getByName("release")
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = "17"
    }
}

dependencies {
    implementation(projects.shared)
    implementation(libs.compose.ui)
    implementation(libs.compose.ui.tooling.preview)
    implementation(libs.compose.material3)
    implementation(libs.androidx.activity.compose)
    implementation(libs.kotlinx.serialization.json)
    debugImplementation(libs.compose.ui.tooling)

    // jetpack nav
    implementation(libs.androidx.navigation.fragment.ktx)
    implementation(libs.androidx.navigation.ui.ktx)

    // firebase
    implementation(platform("com.google.firebase:firebase-bom:32.8.0"))
    implementation("com.google.firebase:firebase-analytics")
    implementation("com.google.firebase:firebase-auth")
    implementation("com.google.firebase:firebase-crashlytics")

    // google services
    implementation(libs.play.services.auth)

    implementation(libs.androidx.core.splashscreen)

    // material
    implementation(libs.material)
    implementation(libs.androidx.material.icons.extended)

    // koin
    implementation(libs.koin.androidx.compose)
    implementation(libs.koin.android)

    // kotlin tools
    implementation(libs.kotlinx.serialization.json)

    // coil
    implementation(libs.coil.compose)

    // constraint
    implementation(libs.androidx.constraintlayout.compose)

    // google ads
    implementation(libs.play.services.ads)
    implementation(libs.androidx.ui.viewbinding)

    // play review
    implementation(libs.google.play.review)
    implementation(libs.google.play.review.ktx)
}

shared模块build.gradle

plugins {
    alias(libs.plugins.kotlinMultiplatform)
    alias(libs.plugins.kotlinCocoapods)
    alias(libs.plugins.androidLibrary)
    alias(libs.plugins.kotlinPluginSerialization)
    alias(libs.plugins.sqldelight)
}

kotlin {
    androidTarget {
        compilations.all {
            kotlinOptions {
                jvmTarget = "17"
            }
        }
    }
//    iosX64()
//    iosArm64()
    iosSimulatorArm64()

    cocoapods {
        summary = "Some description for the Shared Module"
        homepage = "Link to the Shared Module homepage"
        version = "1.0"
        ios.deploymentTarget = "16.0"
        podfile = project.file("../iosApp/Podfile")
        framework {
            baseName = "shared"
            isStatic = true
        }
    }

    sourceSets {
        commonMain.dependencies {
            implementation(libs.kotlinx.coroutines.core)
            implementation(libs.kotlinx.serialization.json)
            implementation(libs.kotlinx.datetime)
            implementation(libs.koin.core)
            api(libs.napier)
            implementation(libs.bundles.firebase)

            implementation(libs.ktor.client.core)
            implementation(libs.ktor.client.logging)
            implementation(libs.ktor.client.serialization)
            implementation(libs.ktor.client.content.negotiation)
//            implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0-alpha01")
        }
        androidMain.dependencies {
            implementation(libs.ktor.client.okhttp)
            implementation(libs.sqldelight.android.driver)
            implementation("com.google.firebase:firebase-analytics:21.5.1")
            api("com.onesignal:OneSignal:[5.0.0, 5.99.99]")
        }
        iosMain.dependencies {
            implementation(libs.ktor.client.darwin)
            implementation(libs.sqldelight.native.driver)
        }
        commonTest.dependencies {
            implementation(libs.kotlin.test)
        }
    }
}

android {
    namespace = "com.jobsapps.theoracle"
    compileSdk = libs.versions.targetSdk.get().toInt()
    defaultConfig {
        minSdk = libs.versions.minSdk.get().toInt()
    }
    buildFeatures {
        buildConfig = true
    }
    buildTypes {
        debug {
            isMinifyEnabled = false
            isShrinkResources = false
        }
        release {
            isMinifyEnabled = true
            isShrinkResources = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
}

sqldelight {
    databases {
        create("Database") {
            packageName.set("...")
        }
    }
}

已尝试的解决方法

  • 清理项目,删除gradle和.idea目录并重新同步

可行排查与解决步骤

  • 深度清理构建缓存:执行命令./gradlew cleanBuildCache清理Gradle构建缓存,再执行./gradlew :shared:assembleDebug优先编译shared模块,最后编译androidApp模块
  • 校验插件版本兼容性:检查libs.versions.toml中kotlinMultiplatform和Android Gradle Plugin(AGP)的版本是否匹配,避免版本不兼容导致的同步异常
  • 调整依赖解析顺序:在app模块的dependencies中,将implementation(projects.shared)移至依赖列表最顶部,确保shared模块优先被解析
  • 修复第三方库版本冲突:shared模块androidMain中直接依赖的com.google.firebase:firebase-analytics:21.5.1与app模块通过BOM引入的版本可能冲突,改为依赖BOM统一管理,移除shared模块中的硬编码版本
  • 重建IDE索引:在Android Studio中执行File -> Invalidate Caches... -> Invalidate and Restart,彻底重建项目索引,解决索引损坏导致的偶发引用问题
  • 临时禁用增量编译:在gradle.properties中添加org.gradle.caching=false和kotlin.incremental=false,若问题消失则说明增量缓存存在异常,后续可清理缓存后重新开启

内容的提问来源于stack exchange,提问作者Salim İsler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:22:05