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 的也是他,这算不算一中漏洞。


相关推荐
赏金术士26 分钟前
第六章:UI组件与Material3主题
android·ui·kotlin·compose
TechMerger2 小时前
Android 17 重磅重构!服役 20 年的 MessageQueue 迎来无锁改造,卡顿大幅优化!
android·性能优化
yuhuofei20214 小时前
【Python入门】Python中字符串相关拓展
android·java·python
dalancon4 小时前
Android Input Spy Window
android
dalancon6 小时前
InputDispatcher派发事件,查找目标窗口
android
我命由我123456 小时前
Android Framework P3 - MediaServer 进程、认识 ServiceManager 进程
android·c语言·开发语言·c++·visualstudio·visual studio·android runtime
天才少年曾牛7 小时前
Android14 新增系统服务后,应用调用出现 “hidden api” 警告的原因与解决方案
android·frameworks
赏金术士7 小时前
Jetpack Compose 底部导航实战教程(完整版)
android·kotlin·compose
随遇丿而安8 小时前
第5周:XML 资源、样式和主题,真正解决的是“页面以后还改不改得动”
android
zh_xuan8 小时前
Android 获取系统内存页大小:sysconf(_SC_PAGESIZE) 与 JNI 实现
android·jni·ndk·内存页大小