java.lang.NoSuchFieldError:类中没有类型 I 的字段 $stable

问题描述 投票:0回答:5

尝试导航到使用 Material Motion 的片段时出现以下错误。

使用的版本:

  • 科特林 1.5.10
  • 撰写 Beta 09
  • 材质1.4.0-rc01
  • 片段1.3.5
  • AGP 7.0.0-beta03(需等待 Dagger 修复)
  • 伴奏0.11.1
java.lang.NoSuchFieldError: No field $stable of type I in class Landroidx/compose/animation/core/Transition; or its superclasses (declaration of 'androidx.compose.animation.core.Transition' appears in /data/app/~~NMhx8f3SifgkfcXt9VHSKg==/app.tempory.debug-ZA5ilk8Gd0enqUNaUHOpCg==/base.apk)
        at com.google.accompanist.imageloading.MaterialLoadingImage.updateFadeInTransition(MaterialLoadingImage.kt:53)
        at com.google.accompanist.imageloading.LoadPainterKt.animateFadeInColorFilter(LoadPainter.kt:382)
        at com.google.accompanist.imageloading.LoadPainterKt.access$animateFadeInColorFilter(LoadPainter.kt:1)
        at com.google.accompanist.imageloading.LoadPainterKt$animateFadeInColorFilter$3.invoke(Unknown Source:10)
        at com.google.accompanist.imageloading.LoadPainterKt$animateFadeInColorFilter$3.invoke(Unknown Source:10)
        at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:140)
        at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2156)
        at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2399)
        at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2578)
        at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:2571)
        at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(SnapshotState.kt:523)
        at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:2564)
        at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:2540)
        at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:613)
        at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:764)
        at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:103)
        at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:447)
        at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:416)
        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:970)
        at android.view.Choreographer.doCallbacks(Choreographer.java:796)
        at android.view.Choreographer.doFrame(Choreographer.java:727)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7664)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
android android-fragments material-design android-jetpack-compose
5个回答
12
投票

在这种情况下,我忘记将 Accompanist 更新到正确的版本 (0.12.0)。


5
投票

这不是OP的问题,但对于像我这样在搜索中绊倒的人来说,如果您将一个类编辑为撰写中的

@Immutable
,可能会出现类似的错误消息。这是一个编译器缓存错误,只需从 Android Studio 菜单中执行
Build -> Rebuild
即可修复该错误。


2
投票

对我来说,这是材质库新更新的问题。最后一个工作版本是:

   implementation "androidx.compose.material3:material3:1.1.0-alpha03"

升级后它开始抛出错误:

    implementation "androidx.compose.material3:material3:1.1.0-alpha04"

所以我恢复了,问题就解决了。


1
投票

我已将 Compose 版本从

1.4.0
更改为
1.5.0-alpha03
,现在可以使用了

object Compose {

    const val UI = "androidx.compose.ui:ui:$COMPOSE"
    const val MATERIAL = "androidx.compose.material:material:$COMPOSE"

    const val TOOLING = "androidx.compose.ui:ui-tooling:$COMPOSE"
    const val TOOLING_PREVIEW = "androidx.compose.ui:ui-tooling-preview:$COMPOSE"

    private object Version {
        const val COMPOSE = "1.5.0-alpha03"
    }
}

0
投票

就我而言,清理并重新构建解决了问题

© www.soinside.com 2019 - 2024. All rights reserved.