【发布时间】:2020-06-15 11:34:16
【问题描述】:
必须是一个非常简单的解决方案,但是...
我在我的 android 项目中使用 StateFlow 来替换在服务中用作 Observables 的 LiveData。我使用 LiveData 作为Room Database 的可观察对象,但是关于线程的限制(必须在主线程上注册观察者并通知)使我切换到Flow 类。一切都非常合乎逻辑,并且为了保留有关状态的信息,然后我决定使用StateFlow。
我加了
实现“org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7”
和
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions.freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn"] }
在我的 gradle 文件中和
@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
在具有 StateFlow 成员类型的类之上。 但是当我运行项目时出现崩溃:
java.lang.NoClassDefFoundError:解析失败: Lkotlinx/coroutines/flow/StateFlowKt; …… 引起:java.lang.ClassNotFoundException:在路径上找不到类“kotlinx.coroutines.flow.StateFlowKt”:DexPathList [[zip文件“/data/app/com.xxxxx.consumer-X46raHzqXUeRRH40JT1LUg==/base.apk "],nativeLibraryDirectories=[/data/app/com.xxxxx.consumer-X46raHzqXUeRRH40JT1LUg==/lib/arm64, /data/app/com.xxxxx.consumer-X46raHzqXUeRRH40JT1LUg==/base.apk!/lib/arm64-v8a , /system/lib64, /system/product/lib64]] ....
在使用 Kotlin 的 Android 项目中添加 StateFlow 需要哪些步骤?
谢谢!
【问题讨论】:
-
我刚刚使用了
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.6,没有您的其余更改。你在使用多个模块吗?而且,如果是这样,您是否可能将implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7"放入库模块中?如果是这样,也许应该是api,或者应用程序模块也应该有implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7"。 -
是的,你是对的,我有一个库,我将它编译为 aar,然后在 gradle(和 releaseImplementation 文件)上使用
debugImplementation files将其包含在项目中。尝试在 app 模块中添加 ..coroutine-core... 并成功了!谢谢! (如果你把你的评论写成我会接受的)
标签: android kotlin kotlin-coroutines