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


相关推荐
千里马学框架20 小时前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台20 小时前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone21 小时前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc21 小时前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo1 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077001 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone1 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen1 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone1 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui