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

Kotlin多平台项目添加Android构建目标时找不到androidMain源集

解决Kotlin多平台中androidMain源集未自动创建的问题

你的问题出在三个关键配置缺失或版本不匹配上,直接导致Android目标的源集无法自动生成,下面是具体修复步骤:

1. 必须应用Android库插件

Kotlin Multiplatform的Android目标依赖Android Gradle插件(AGP),你当前只添加了Kotlin多平台插件,未引入Android插件,Gradle无法识别并初始化Android相关源集。在plugins块中添加Android库插件(因为你开发的是库):

plugins {
    id("maven-publish")
    kotlin("multiplatform") version "1.8.0"
    id("com.android.library") version "7.4.3" // 新增,版本需与Kotlin兼容
}

2. 对齐AGP与Kotlin版本

你使用的Kotlin 1.8.0和AGP 4.2.2版本完全不兼容,这会引发大量初始化异常。Kotlin 1.8.0对应的AGP最低版本为7.3.0,上述配置中使用的7.4.3是经过验证的兼容版本。同时删除buildscript块,当前Gradle推荐通过plugins DSL直接引入插件,无需再通过buildscript配置classpath。

3. 添加Android目标的基础配置

必须在kotlin块外添加android{}配置块,指定Android编译的核心参数,否则Android目标无法完成初始化,源集也不会自动生成:

android {
    compileSdk = 33 // 根据需求设置SDK版本,如33或34
    defaultConfig {
        minSdk = 21 // 按你的需求设置最低兼容SDK
        targetSdk = 33
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
}

修改后的完整配置

将你的build.gradle.kts替换为以下内容:

plugins {
    id("maven-publish")
    kotlin("multiplatform") version "1.8.0"
    id("com.android.library") version "7.4.3"
}

group = "zzz.xxxx"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
    google() // 新增,AGP需从Google仓库拉取依赖
}

android {
    compileSdk = 33
    defaultConfig {
        minSdk = 21
        targetSdk = 33
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
}

kotlin {
    jvm()
    linuxX64("linux")
    ios()
    android()

    sourceSets {
        val commonMain by getting {
            dependencies {
                // 你的通用依赖
            }
        }
        val commonTest by getting {
            dependencies {
                implementation(kotlin("test"))
            }
        }
        val jvmMain by getting {
            dependencies {
                // JVM平台依赖
            }
        }
        val androidMain by getting {
            dependencies {
                // Android平台专属依赖
            }
        }
        val jvmTest by getting
    }
}

完成修改后同步Gradle,androidMain源集会自动被识别,你创建的androidMain文件夹也会关联到对应源集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:05:19