Gradle 找不到 Android Compose 编译器

Posted

技术标签:

【中文标题】Gradle 找不到 Android Compose 编译器【英文标题】:Gradle cannot find Android Compose Compiler 【发布时间】:2021-01-30 07:00:51 【问题描述】:

我对这个问题感到非常困惑。我的 gradle 文件中有以下几行:

implementation "androidx.compose.runtime:runtime:1.0.0-alpha04"
implementation "androidx.compose.compiler:compiler:1.0.0-alpha04"
implementation "androidx.compose.runtime:runtime-rxjava2:1.0.0-alpha04"

但是,当我构建时,我收到以下错误:

Could not determine the dependencies of task ':app-name-omitted:prepareDebugKotlinCompileTask'.
> Could not resolve all task dependencies for configuration ':app-name-omitted:kotlin-extension'.
   > Could not find androidx.compose:compose-compiler:1.0.0-alpha04.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/androidx/compose/compose-compiler/1.0.0-alpha04/compose-compiler-1.0.0-alpha04.pom
       - https://repo.maven.apache.org/maven2/androidx/compose/compose-compiler/1.0.0-alpha04/compose-compiler-1.0.0-alpha04.pom
       - https://jcenter.bintray.com/androidx/compose/compose-compiler/1.0.0-alpha04/compose-compiler-1.0.0-alpha04.pom
     Required by:
         project :app-name-omitted

Possible solution:
 - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html

我对此感到困惑,因为编译器确实存在于 Google 的存储库中:https://maven.google.com/web/index.html#androidx.compose.compiler:compiler

如有必要,我可以发布更多信息,但我想保持简单。即使compose设置完全错误,为什么找不到POM文件?

【问题讨论】:

忘了说明我使用的是 Android Studio 4.2,Canary 13 您使用的是哪个版本的com.android.tools.build:gradle?这也是4.2.0-alpha13吗? @ianhanniballake 是的,是的 @MarkHerscher 有什么更新可以解决这个问题吗?我也停留在那个时候:( 【参考方案1】:

更新 gradle 版本后遇到同样的问题并解决

classpath "com.android.tools.build:gradle:4.2.0-alpha14"

而不是在 composeoptions 中声明编译器版本 kotlinCompilerExtensionVersion,而是作为依赖项声明

implementation "androidx.ui:ui-tooling:$compose_version"
implementation "androidx.compose.runtime:runtime:$compose_version"
implementation "androidx.compose.compiler:compiler:$compose_version"

【讨论】:

【参考方案2】:

我必须升级我的 Gradle 版本:

buildscript 
    dependencies 
         classpath "com.android.tools.build:gradle:7.0.0-alpha02"

【讨论】:

【参考方案3】:

我遇到了一个非常相似的问题,但是在 IntelliJ IDEA 中运行 Android 项目时,而不是 Android Studio。

我似乎升级 com.android.tools.build:gradle 依赖项确实解决了原来的问题(“Gradle 找不到 Android Compose 编译器”),但后来我开始有 other problems,所以不得不另谋出路。

我使用了 IDEA 的新项目向导,然后选择了 Kotlin,然后选择了“Multiplatform”(在 Jetpack Compose for Desktop 组下)。这创建了一个新项目,其中包含一个 Android 模块、一个桌面模块和一个通用模块。通过这个模板,我基本上将 Android 和 Common 模块的设置方式复制到了我原来的 Android 项目中。

主要区别在于 JetBrains 似乎提供了一个(又一个)Gradle 插件(org.jetbrains.compose),它为我们设置了 Compose(我猜是因为一些更改也支持桌面),并且有了这个插件,一切似乎可以工作,并且“Gradle 找不到 Android Compose 编译器”消失了。

这是新项目模板中使用的插件:

id("org.jetbrains.compose") version "0.3.0"

这是添加 Compose 依赖项的方式:

api("androidx.core:core-ktx:1.3.2")

api(compose.runtime)
api(compose.foundation)
api(compose.material)
api(compose.ui)

implementation("androidx.activity:activity-compose:1.3.0-alpha03")

请记住,我不一定在这里使用桌面,至少现在不是,但这是我可以使 Android 应用与最新(2021 年及以上)版本的 Compose 一起使用的唯一方法,仅使用 IDEA(不是Android Studio) 安装。

【讨论】:

【参考方案4】:

21 年 3 月 27 日

Jetpack Compose 是一项预览功能,仅在 Canary 版本的 Android Studio 中包含对 Compose 的支持。要在您的应用项目中使用 Compose,请下载并安装最新的 Canary 版本的 IDE。


如果您使用的是 Canary,只需使用 composeOptions 添加编译器

build.gradle

android 
    // ...
    kotlinOptions 
        jvmTarget = JavaVersion.VERSION_1_8.toString()
        useIR = true
    
    buildFeatures 
        compose true
    
    composeOptions 
        kotlinCompilerExtensionVersion "1.0.0-beta03"
    

compose.compiler

【讨论】:

以上是关于Gradle 找不到 Android Compose 编译器的主要内容,如果未能解决你的问题,请参考以下文章

找不到 com.android.tools.build:gradle:4.4

找不到com.android.tools.build:gradle:2.3.3

找不到 com.android.tools.build:gradle:4.0.1 (或任何版本)

找不到 com.android.tools.build:gradle:5.1.1

找不到 com.android.tools.build:gradle:3.0.0 [重复]

Gradle 找不到 Android Compose 编译器