我正在为我的应用程序开发类似导航框架之类的东西,现在是一个简单的任务,使超类中的某些容器被其子级覆盖,但是当我向方法并因 AbstractMethodError 崩溃,这看起来不可能。
FATAL EXCEPTION: main
Process: com.rus_artur4ik.veterinarian, PID: 21406
java.lang.AbstractMethodError: abstract method "void com.rus_artur4ik.petcore.mvvm.lce.LceScreen.SomeFun(com.rus_artur4ik.petcore.mvvm.lce.LceViewModel, kotlin.jvm.functions.Function2, androidx.compose.runtime.Composer, int)"
at com.rus_artur4ik.petcore.mvvm.lce.LceScreen.Content(LceScreen.kt:15)
at com.rus_artur4ik.petcore.mvvm.lce.LceScreen.Content(LceScreen.kt:9)
at com.rus_artur4ik.petcore.mvvm.MvvmScreen.Content(MvvmScreen.kt:17)
at com.rus_artur4ik.petcore.navigation.Navigator$registerScreen$1.invoke(Navigator.kt:98)
at com.rus_artur4ik.petcore.navigation.Navigator$registerScreen$1.invoke(Navigator.kt:98)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:173)
at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:172)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84)
at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:65)
at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1)
at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52)
at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47)
at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:172)
at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:146)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:133)
at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:128)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:142)
at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:73)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:146)
at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:13)
at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:10)
at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:162)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2443)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2711)
at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3342)
at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3320)
at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:341)
at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:1)
2023-05-05 21:36:11.128 21406-21406 AndroidRuntime com.rus_artur4ik.veterinarian E at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3320)
at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3285)
at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:772)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1047)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:124)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:541)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:510)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1317)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1328)
at android.view.Choreographer.doCallbacks(Choreographer.java:940)
at android.view.Choreographer.doFrame(Choreographer.java:869)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1302)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8180)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:946)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@65cda6b, androidx.compose.ui.platform.MotionDurationScaleImpl@9d7c9c8, StandaloneCoroutine{Cancelling}@90c0a61, AndroidUiDispatcher@d502986]
这是我的课:
abstract class LceScreen<S, VM: LceViewModel<S>>(
viewModelClass: Class<VM>
): MvvmScreen<LceState<S>, VM>(viewModelClass) {
@Composable
final override fun Content(viewModel: VM) {
SomeFun(vm = viewModel) {
when (val state = viewModel.state) {
is Loading -> Loading(
viewModel = viewModel
)
is Content -> Content(
content = state.content,
viewModel = viewModel
)
is Error -> Error(
throwable = state.throwable,
viewModel = viewModel
)
}
}
}
@Composable
protected abstract fun SomeFun(vm: VM, content: @Composable () -> Unit)
@Composable
protected abstract fun Loading(
viewModel: VM
)
@Composable
protected abstract fun Content(
content: S,
viewModel: VM
)
@Composable
protected abstract fun Error(
throwable: Throwable,
viewModel: VM
)
}
AGP 8.1.0-beta01 KGP 1.8.0 有什么想法,可能有什么问题吗? 非常感谢!
我尝试清理、重建、删除 build 和 .gradle 文件夹、删除 /.gradle/cache 文件夹
问题是因为无效的全局 gradle 缓存,当我清理它时,一切都变得有效。 要清理全局 gradle 缓存,请使用
rm -rf $HOME/.gradle/caches/