文章

Compose

Compose

Compose 遇到的问题

java.lang.NoSuchMethodError: No static method setContent$default

现象

出现的这个问题比较恶心,编译啥的都能通过,也能安装成功,但是就是运行无法成功,启动就闪退。
将 Compose 集成到 App 中,编译通过,启动时崩溃报错:
s1md8

可能的原因

  1. Kotlin和Compose Compiler版本兼容问题

dgte3

  1. Compose Compiler 没有生效

从报错信息看,再反编译看调用到的方法
调用的 ` setContent$default(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V ` 是一个带 Function0 的方法,但没有这个方法
88lbw
但 androidx.activity.compose�.ComponentActivity.setDefault 的是 Function2
h2w19

解决

  1. Kotlin 版本:1.8.10
  2. JDK 版本:11
  3. Compose compiler 版本:1.4.3
  4. 去除 buildSrc

Ref

本文由作者按照 CC BY 4.0 进行授权