为何LiveLiteralsKt引发运行时问题?跨项目AAR库适配异常咨询
问题分析与解决方法
原因说明
LiveLiteralsKt是Jetpack Compose Runtime内部的工具类,和Compose的Live Literals功能绑定——这个功能用于在Debug模式下支持Compose组件中字面量值的动态更新,默认在Debug构建中启用。
你的自定义库在构建时(大概率是Debug包)启用了该功能,导致编译后的McButton相关代码依赖这个类,但第二个项目没有引入Compose Runtime的依赖,因此运行时抛出NoClassDefFoundError。
解决方法
情况1:库本身未使用Compose
检查库模块的build.gradle(或build.gradle.kts),确认是否误开启了Compose构建特性:
- 移除
buildFeatures.compose = true这类启用Compose的配置 - 若无法完全移除Compose配置,强制禁用Live Literals:
composeOptions { liveLiteralsEnabled = false }
重新构建库的AAR文件,替换到第二个项目中。
情况2:库确实依赖Compose
在第二个项目的app模块build.gradle中,添加与库版本一致的Compose Runtime依赖:
dependencies { implementation "androidx.compose.runtime:runtime:对应Compose版本号" // 若库还用到了Compose其他模块(如ui、foundation等),需同步引入对应依赖 }
情况3:改用Release版本的AAR
Debug版本的AAR会包含调试相关的额外代码(包括Live Literals依赖),而Release构建默认会禁用这些调试特性。重新构建库的Release版AAR,替换到第二个项目即可解决问题。
内容的提问来源于stack exchange,提问作者Clark Battle
相关产品推荐
相关产品推荐

