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

Android Studio添加commonMain依赖后文件夹停止索引问题

问题

我正在开发适配Android与iOS端的Kotlin多平台共享代码模块,遇到如下异常:当我向commonMain源集添加任意依赖项后,Android Studio会停止索引commonMain文件夹;移除新增的依赖项后,索引功能即可恢复正常。尝试执行gradlew clean命令清理构建缓存后问题仍未解决。

当前build.gradle.kts配置如下:

object Versions {
    const val coroutinesVersion = "1.5.0-native-mt"
    const val ktorVersion = "1.6.1"
    const val kotlinVersion = "1.5.21"
    const val serializationVersion = "1.2.2"
}

plugins {
    kotlin("multiplatform")
    kotlin("native.cocoapods")
    id("com.android.library")
    kotlin("plugin.serialization")
}

version = "1.0"

kotlin {
    android()

    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutinesVersion}")
                implementation("io.ktor:ktor-client-core:${Versions.ktorVersion}")
                implementation("io.ktor:ktor-client-serialization:${Versions.ktorVersion}")
                implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:${Versions.serializationVersion}")
            }
        }
        val commonTest by getting {
            dependencies {
                implementation(kotlin("test"))
            }
        }
        val androidMain by getting {
            dependencies {
                implementation("io.ktor:ktor-client-android:${Versions.ktorVersion}")
            }
        }
        val androidTest by getting
    }
}

android {
    compileSdk = 32
    sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
    defaultConfig {
        minSdk = 21
        targetSdk = 32
    }
}

模块结构参考:
模块结构截图


解决方案

该问题由三类配置错误共同导致,按以下步骤修复即可:

  • 修正版本不匹配问题
    当前配置存在多处版本对齐问题,是IDE索引崩溃的核心原因:

    1. 声明了kotlinVersion变量但未在plugins块指定版本,Gradle会拉取和当前版本不兼容的Kotlin插件
    2. kotlinx-serialization 1.2.2、kotlinx-coroutines 1.5.0-native-mt、Ktor 1.6.1均与Kotlin 1.5.21存在已知的IDE索引兼容bug
    3. 启用了cocoapods插件但未声明iOS目标,也没有补全cocoapods的必要配置,导致依赖解析阶段IDE抛出异常终止索引

    首先替换Versions配置为1.5.x分支下经过兼容验证的版本组合:

object Versions {
    const val coroutinesVersion = "1.5.2-native-mt"
    const val ktorVersion = "1.6.8"
    const val kotlinVersion = "1.5.31"
    const val serializationVersion = "1.3.3"
    const val agpVersion = "7.0.4"
}

然后修改plugins块强制指定所有插件的对齐版本:

plugins {
    kotlin("multiplatform") version Versions.kotlinVersion
    kotlin("native.cocoapods") version Versions.kotlinVersion
    id("com.android.library") version Versions.agpVersion
    kotlin("plugin.serialization") version Versions.kotlinVersion
}
  • 补全缺失的多平台目标配置
    在kotlin配置块中补全iOS目标与cocoapods必要配置,否则cocoapods插件会中断依赖解析:
kotlin {
    android()
    // 按需选择iOS目标架构,以下为通用全架构配置
    iosX64()
    iosArm64()
    iosSimulatorArm64()

    cocoapods {
        summary = "KMP shared module"
        homepage = "local"
        ios.deploymentTarget = "13.0"
        framework {
            baseName = "shared"
        }
    }

    // 原有sourceSets配置保持不变
    sourceSets {
        // 原有源集依赖配置无需修改
    }
}
  • 清除缓存重建索引
    不要只执行Gradle clean,需要彻底清除IDE缓存:
    1. 关闭Android Studio
    2. 删除项目根目录下的.idea文件夹、.gradle缓存文件夹
    3. 重新打开项目,等待Gradle同步完成后,IDE会自动重建commonMain的索引
  • 验证修复结果
    执行./gradlew :<你的模块名>:dependencies命令,确认commonMain下所有依赖无版本冲突、解析正常即可。

内容的提问来源于stack exchange,提问作者Pavel Kolesnikov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:18:38