使用 jetpack compose 的麻烦

Posted

技术标签:

【中文标题】使用 jetpack compose 的麻烦【英文标题】:The trouble with using jetpack compose 【发布时间】:2021-12-05 16:37:26 【问题描述】:

任务:cca-app:kaptGenerateStubsDebugKotlin 无法执行增量编译:无法连接到 Kotlin 编译守护进程 无法连接到 kotlin 守护程序。使用后备策略。 异常:java.io.UTFDataFormatException 在 java.base/java.io.ObjectInputStream$BlockDataInputStream.readUTFSpan(ObjectInputStream.java:3752) 在 java.base/java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:3677) 在 java.base/java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:3477) 在 java.base/java.io.ObjectInputStream.readUTF(ObjectInputStream.java:1240) 在 org.jetbrains.kotlin.utils.PluginUtilsKt.decodePluginOptions(pluginUtils.kt:39) 在 org.jetbrains.kotlin.kapt3.Kapt3CommandLineProcessor.processOption(Kapt3Plugin.kt:73) 在 org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParserKt.processCompilerPluginsOptions(PluginCliParser.kt:125) 在 org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser.processPluginOptions(PluginCliParser.kt:83) 在 org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser.loadPlugins(PluginCliParser.kt:72) 在 org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser.loadPluginsSafe(PluginCliParser.kt:44) 在 org.jetbrains.kotlin.cli.common.CLICompiler.loadPlugins(CLICompiler.kt:179) 在 org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:69) 在 org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52) 在 org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88) 在 org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44) 在 org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98) 在 org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:76) 在 org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:45) 在 org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:227) 在 org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit$default(CLITool.kt:222) 在 org.jetbrains.kotlin.cli.common.CLITool$Companion.doMain(CLITool.kt:214) 在 org.jetbrains.kotlin.cli.jvm.K2JVMCompiler$Companion.main(K2JVMCompiler.kt:271) 在 org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.main(K2JVMCompiler.kt)

任务 :cca-app:kaptGenerateStubsDebugKotlin 失败

FAILURE:构建失败并出现异常。

出了什么问题: 任务 ':cca-app:kaptGenerateStubsDebugKotlin' 执行失败。

编译错误。查看日志了解更多详情

尝试: 使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

在 5 秒内构建失败 27 个可操作的任务:2 个已执行,25 个是最新的


Compose 是 1.0.4, Kotlin Gradle 插件是 1.6.0-M1, Gradle 构建工具是 4.2.2


当我删除 compose 依赖项时,项目组装成功 我尝试更改 compose 和 kotlin 版本,但没有给出任何结果

【问题讨论】:

这可能会有所帮助:***.com/questions/53987359/… 【参考方案1】:

您使用了错误版本的 Kotlin 和 Gradle 插件。使用:

Kotlin: 1.5.31 
Gradle plugin: 7.0.3

您应该将您的 android Studio 升级到最新版本。它提供了有关依赖项版本的更好通知,并让您可以比旧版本的 Android Studio 更好地升级您的依赖项。

【讨论】:

谢谢,我安装了 android studio,一切正常,希望有一天能将 intellij idea 的 android 插件与 7.0 之前的 gradle 版本兼容 还指出:kotlinOptions jvmTarget = JavaVersion .VERSION_1_8 useIR = true freeCompilerArgs += ["-P", "plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true"]【参考方案2】:

1.6.0-M1 是你的问题。 Compose 与 Kotlin 编译器密切相关,版本 1.0.4 将与 Kotlin 1.5.21 一起使用。

【讨论】:

哦,另一个麻烦:任务':cca-app:compileDebugKotlin'的执行失败。 > 执行 org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction 时发生故障:java.lang.IncompatibleClassChangeError: Found class org.jetbrains.kotlin.ir.declarations.IrClass, but interface is expected 对不起,我必须更正我的答案 - 使用 Kotlin 1.5.21 应该可以解决您的问题。 它没有帮助(

以上是关于使用 jetpack compose 的麻烦的主要内容,如果未能解决你的问题,请参考以下文章

Jetpack Compose 中使用 Lottie 动画

如何将 CameraView 与 Jetpack Compose 一起使用?

Android Jetpack compose:使用谷歌地图在地图创建时崩溃

Jetpack Compose - 未解决的参考:observeAsState

在集成 Jetpack Compose 时应用插件请求 [id: 'com.android.application'] 发生异常

Jetpack All In Compose ?看各种Jetpack库在Compose中的使用