在我的Android原生应用程序中,我想使用Jetpack Compose来使用一些软件的更新版本。我想我应该更清楚,因为这已经变成了常见的依赖性噩梦。我浪费了整个下午试图让它编译和运行。
我将从错误消息开始,然后反向操作:
> Task :app:compileDebugKotlin FAILED
> 'compileDebugJavaWithJavac' task (current target is 17) and 'compileDebugKotlin' task (current target is 1.8) jvm target compatibility should be set to the same Java version.
> e: This version (1.2.0-alpha05) of the Compose Compiler requires Kotlin version 1.6.10 but you appear to be using Kotlin version 1.7.10 which is not known to be compatible. Please fix your configuration (or `suppressKotlinVersionCompatibilityCheck` but don't say I didn't warn you!).
首先,我不知道为什么compileDebugKotlin
认为我的目标是JVM 1.8而不是17。我的JAVA_HOME
设置为Java 17,我的IntelliJ项目结构JDK设置为17,我的app:build.gradle
具有以下内容:
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
我没有看到任何地方设置了1.8
。
下一个问题是显示错误消息的Compose编译器版本1.2.0-alpha05
。我在根build.gradle
文件中设置了以下内容:
buildscript {
ext {
compose_version = '1.3.0'
…
然后在我的app:build.gradle
文件中引用它:
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
implementation "androidx.compose.foundation:foundation:$compose_version"
我不知道它是从哪里来的1.2.0-alpha05
作为版本。
下一个问题是它认为我使用的是Kotlin1.7.10
。我已经在Kotlin编译器的IntelliJ首选项中将Kotlin版本设置为1.6.10
,以及JVM的17
。我在build.gradle
中尝试了以下操作,但似乎被忽略了,没有任何区别:
kotlin {
version("1.6.10")
}
简而言之,我不知道这些版本号是从哪里来的,也不知道如何设置它们,使它们反映我认为我配置正确的现实。我已经清除了IntelliJ缓存并重新启动了无数次。
1条答案
按热度按时间xwbd5t1u1#
在错误中显示的两个任务在编译期间有不同的功能
compileDebugJavaWithJavac
负责为Java代码生成字节码并使其可用于进一步处理。在您的情况下,它是针对java 17的,但是compileDebugKotlin
负责为Kotlin代码生成字节码在您的情况下,它是针对1.8
的,这是不支持的,因此您应该添加compose_version
,它们不代表合成编译器,它们在中声明