Android Studio自动配置导致的compose插件不存在

初学 Android 开发就遇到「依赖」错误

标题也可以是「Android Studio自动配置导致的compose插件不存在问题」

@Author: kai

@Time: 2025-03-11

在 Android Studio 中,新建的空白安卓项目在新建Activity后可能出现 org.jetbrains.kotlin.plugin.compose 依赖找不到的错误,配置全部是由工具自动配置的。

Android Studio 版本: 2024.2.2 Patch 2

其他信息:

Build #AI-242.23726.103.2422.13103373, built on February 22, 202

Runtime version: 21.0.5±13047016-b750.29 amd64

问题发现

  1. 在Android Studio上创建一个空项目,构建工具是 Kotlin DSL,
  1. 随后在包下面新建空白的 Android Activity

( 页面上提到了:Create a new activity with Jetpack Compose

  1. 然后发生了错误😭:

Build file 'F:\Studio\AndroidProjects\ActivityTest3\build.gradle.kts' line: 2 Plugin [id: 'org.jetbrains.kotlin.plugin.compose', version: '1.9.24', apply: false] was not found in any of the following sources...

问题分析

但是在新建 Activity 前,构建是通过的

创建一个空白的 Activity 后报错

IDEA 头部也会提示:

🤔最先考虑的是源的问题,对settings.gradle.kts配置进行修改,改为国内源:

kotlin 复制代码
pluginManagement {
    repositories {
//        google {
//            content {
//                includeGroupByRegex("com\\.android.*")
//                includeGroupByRegex("com\\.google.*")
//                includeGroupByRegex("androidx.*")
//            }
//        }
        maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven { url = uri("https://maven.aliyun.com/repository/public") }
        google()
        mavenCentral()
    }
}

rootProject.name = "ActivityTest3"   # 注意这里不要覆盖
include(":app")
 

(这里保留,当前不修改为国内源也是可以使用的,在方案二测试时没有修改镜像源,通过测试。)

使用命令进行清理

powershell 复制代码
./gradlew clean --refresh-dependencies

但还是不行🧐,修改版本吗?使用org.jetbrains.kotlin.plugin.compose在 Maven 仓库中进行寻找,找到Maven Repository: org.jetbrains.kotlin.plugin.compose,版本是 2.0 以上了。

但是使用数量为0,会不会是盗版文件?不过还是可以试一下,将版本改为 2.0.0 (不建议的方案三就是这么来的)。

结合之前解决问题时看到的资料,例如Compose Compiler Gradle 插件 | Jetpack Compose | Android Developers,现在应该使用Kotlin2与对应的compose插件。

解决办法

Android Studio 给我默认配置的 Kotlin 是 1.9.24 。

方案一

在Kotlin2之前,我们可以不使用这个插件,它被包含在了 kotlin-android 中。

  1. //gradle/libs.versions.toml中将其注释(或删掉)
toml 复制代码
[versions]
...

[libraries]
...

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
#kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "composePlugin" }
  1. //build.gradle.kts中将其注释(或删掉)
kotlin 复制代码
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.kotlin.android) apply false
    alias(libs.plugins.kotlin.compose) apply false
}
  1. //app/build.gradle.kts以及其他地方将其注释掉(或删掉)
kotlin 复制代码
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    // alias(libs.plugins.kotlin.compose)
}

android {
    ...
}

dependencies {
    ...
}

注释之后并不会影响 androidx.compose 依赖,只需要再次同步 Gradle 设置就行了。

如果你为这个问题抓狂,你可能会发现,在创建Activity之前并没有声明 kotlin-compose,同样的,一些示例项目(example)也没有声明它。

方案二

推荐的做法是使用Kotlin2.0.0+ 😊

我们只需要修改//gradle/libs.versions.toml,将 Kotlin 修改为 2.0.0 或更新的版本:

toml 复制代码
[versions]
agp = "8.8.2"
# kotlin = "1.9.24"
kotlin = "2.0.0"  # 修改为2.0.0+版本的Kotlin
coreKtx = "1.15.0"
junit = "4.13.2"
junitVersion = "1.2.1"
espressoCore = "3.6.1"
appcompat = "1.7.0"
material = "1.12.0"

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

修改后可能会有提示:

照做就行,但是新的空白项目不会有任何不适配。

根据What's new in Kotlin 2.0.0 | Kotlin Documentation进行更多的配置。此外还有这篇文章如何将 Android 项目迁移到 Kotlin 2.0 和新版本的 Jetpack Compose Compiler? - ITmob可供阅读,其中大部分修改都是在我们使用 Kotlin2 后自动配置的。

比如,你看这里贴出的//gradle/libs.versions.toml还没有kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }这句配置,但在新建一个 Activity 后就会自动引入。

至于其他 IDEA 提示的地方,大多可以跟着 IDEA 的提示修改。

看来这是 2 的特性,却在 1 里面也被应用了。

方案三

(这个应该是可行的,但是最好使用上面两个方案)

仅修改插件版本配置,目前好像也没有发现问题。//gradle/libs.versions.toml配置如下:

toml 复制代码
[versions]
...
kotlin = "1.9.24"
...
composePlugin = "2.0.0"

[libraries]
...

[plugins]
...
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "composePlugin" }

其他

  • 至于过程中会出现 compose 依赖不存在的错误(有时候是依赖冲突了),只要SyncTry Again同步一下 Gradle 的配置就行了。
  • 今天又没学多少,这个问题就搞了好久(至少 3 小时)。才学安卓,想搞个空项目练习都不行,太不友好(不是😂),修这个问题确实难为我了,查到的一些方案并不可用。在 MvnRepository 中搜org.jetbrains.kotlin.plugin.compose,显示的前几页结果中也没有这个对应的包,还是在必应搜索时找到的。额外还了解到其他几个仓库(索引):

​ 之前使用 Maven 构建 Java 项目都是在 MvnRepository 上搜,看到过 Gradle 配置,然后在解决问题过程中看到 Gradle 也是从 Maven 仓库下载包,想当然地去 MvnRepository 中搜索了。事后为了解开疑惑「org.jetbrains.kotlin.plugin.compose 到底要去哪找?」,找到了Gradle - Plugin: org.jetbrains.kotlin.plugin.compose ,这里面提供的代码与项目中配置文件的格式也相符。这也是为什么 MvnRepository 和 Maven Central 中无法复制配置,以及他们的"使用量"为 0。

  • 在解决问题时,还有人提到 Compiler 与 Kotlin 的兼容表,这个还需要每次去"开发文档"查看,但是 compose-plugin 和 Kotlin 同步发布,保持版本一致就行。

  • 如何在新建项目时就使用 Kotlin2.0.0+ ?,今天没空研究了。

  • DeepSeek虽然犯了不少错误(这也是为什么我创建了5个 ActivityTest 项目的原因),但是还是提供了一些有价值的信息:

    (这些信息经过我纠正后才输出的,仍然不保证正确)

    • org.jetbrains.kotlin.plugin.compose 是 Kotlin 编译器插件 ,由 JetBrains 维护不属于 Jetpack Compose(AndroidX)的一部分。属于 Kotlin 工具链的一部分
    • androidx.compose.\* 是 Google 维护的 UI 库,属于 Jetpack Compose 的官方实现。
组件 作用 托管仓库 配置方式
Kotlin Compose 插件 org.jetbrains.kotlin.plugin.compose 为 Kotlin 编译器添加对 Compose 语法(如 @Composable)的支持 Gradle 插件门户 (plugins.gradle.org) plugins 块中声明: id("org.jetbrains.kotlin.plugin.compose") version "x.y.z"
Jetpack Compose 库 androidx.compose.* 提供 Compose 的 UI 组件(如 Material、布局、动画等) Google Maven 仓库 (maven.google.com) dependencies 中添加: implementation("androidx.compose.ui:ui:x.y.z")

​ 不过他两次将他的输出误认为是我的错误认识,例如:将org.jetbrains.composeJetpack Compose混淆的是他, 将 org.jetbrains.kotlin.plugin.compose 误认为是 Compose Multiplatform 的也是他,这算不算一中漏洞。


相关推荐
QING6187 分钟前
Kotlin 类型转换与超类 Any 详解
android·kotlin·app
QING61836 分钟前
一文带你了解 Kotlin infix 函数的基本用法和使用场景
android·kotlin·app
张风捷特烈1 小时前
平面上的三维空间#04 | 万物之母 - 三角形
android·flutter·canvas
恋猫de小郭2 小时前
Android Studio Cloud 正式上线,不只是 Android,随时随地改 bug
android·前端·flutter
匹马夕阳7 小时前
(十八)安卓开发中的后端接口调用详讲解
android
Pigwantofly9 小时前
鸿蒙ArkTS实战:从零打造智能表达式计算器(附状态管理+路由传参核心实现)
android·华为·harmonyos
Gracker10 小时前
Android Weekly #202514
android
binderIPC10 小时前
Android之JNI详解
android
林志辉linzh10 小时前
安卓AssetManager【一】- 资源的查找过程
android·resources·assetmanger·安卓资源管理·aapt·androidfw·assetmanger2
_一条咸鱼_12 小时前
大厂Android面试秘籍:Activity 权限管理模块(七)
android·面试·android jetpack