You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在buildFeatures中启用compose后触发NoSuchMethodError问题求助

错误成因

  • 开启Compose构建特性后,Compose Kotlin编译器插件默认会对项目内所有Kotlin代码插桩,生成用于Compose预览实时更新字面量的LiveLiterals相关辅助方法,无论代码是否用到Compose。
  • 触发本次崩溃的两个核心可能:
    1. Compose编译器扩展版本kotlinCompilerExtensionVersion和项目使用的Kotlin版本不匹配,导致插桩生成的代码结构异常,运行时找不到生成的对应方法。
    2. 生成的LiveLiterals辅助代码和现有项目的类加载逻辑冲突,非Compose代码(你的BusStop数据类)初始化时触发了方法找不到的异常。

解决方案

  1. 首先对齐版本匹配关系:Compose 1.0.x分支的kotlinCompilerExtensionVersion = 1.0.4要求项目Kotlin版本必须为1.5.31,请检查根目录build.gradle中Kotlin插件版本是否匹配,不匹配则将Kotlin版本升级到1.5.31,或更换与你当前Kotlin版本对应的Compose编译器扩展版本。
  2. 不需要LiveLiterals调试功能的话优先选择禁用该插桩,在app模块build.gradle的kotlinOptions配置块中添加编译器参数即可:
kotlinOptions {
    jvmTarget = "1.8"
    // 新增以下配置
    freeCompilerArgs += [
        "-P", "plugin:androidx.compose.compiler.plugins.kotlin:liveLiteralsEnabled=false"
    ]
}
  1. 配置完成后清理项目编译缓存,重新构建运行即可解决崩溃问题。
  2. 可选优化:如果仅部分功能模块使用Compose,不要在application模块全局开启buildFeatures.compose = true,仅在实际用到Compose的子模块开启该配置即可,避免全局插桩影响老代码。

内容的提问来源于stack exchange,提问作者Harsh Mahajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:54:05