Android未用Compose却出现Theme.getKey反射异常原因排查
异常原因分析
传递依赖引入Jetpack Compose组件:你没有直接引入Compose,但项目中的第三方依赖(比如UI库、广告或统计SDK等)可能间接带入了Compose核心库(如
androidx.compose.ui:ui)。预启动测试环境触发了这些依赖里的Compose相关反射逻辑,而你的项目没配置Compose所需的主题或初始化条件,导致Theme.getKey()反射调用失败。AGP版本与测试环境不兼容:你使用的AGP 4.1.3属于较旧版本,Google Play预启动测试环境可能默认启用了和Compose相关的检测逻辑。旧版AGP没处理这种"未显式引入Compose但存在传递依赖"的场景,进而引发反射异常。
SDK 31的主题适配问题:Android 12(SDK 31)对主题、视图系统做了相关变更,当传递依赖的Compose代码尝试通过反射获取主题Key时,你的项目主题不符合Compose的要求(比如未继承Compose专用主题),再加上旧AGP的处理缺陷,最终触发了该异常。
内容的提问来源于stack exchange,提问作者Yeamin Chowdhury
相关产品推荐
相关产品推荐

