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

升级Compose BOM 2024.06.00及SDK34后R8混淆构建失败

解决Compose BOM升级后的Release构建类重复定义问题

问题背景

项目迁移至SDK34后,将Compose BOM从2023.06.01升级到2024.06.00,Debug构建正常,但Release构建在R8混淆阶段先后出现两类错误:先是多个Compose相关META-INF错误,添加排除规则后又触发androidx.collection.ArrayMap$EntrySet类重复定义的报错。环境信息:Gradle 8.3.0、AGP 8.4、Kotlin 1.9.22、Target SDK 34。


1. 为何升级Compose BOM 2024.06.00后出现此错误?

Compose BOM会统一管理所有Compose相关依赖的版本,升级到2024.06.00后,间接提升了androidx.collection库的版本——尽管ArrayMap不属于Compose核心组件,但Compose的runtime、ui等模块会依赖androidx.collection处理集合操作。

另外你之前的排除规则存在错误:exclude group: "androidx.collection.ArrayMap"是无效写法,group应为androidx.collection而非具体类名。这导致动态功能模块仍从:mobile模块传递引入了androidx.collection,同时动态模块自身可能也通过其他依赖引入了该库的相同/不同版本,最终在R8合并字节码时出现类重复定义。


2. 如何解决Release构建中的「类重复定义」问题?

步骤1:修正依赖排除规则

将动态功能模块中错误的排除规则替换为正确的组排除:

implementation(project(path: ':mobile')) {
    exclude group: "com.russhwolf"
    exclude group: "androidx.compose" // 单个规则覆盖所有Compose组,无需逐个枚举
    exclude group: "androidx.collection" // 正确排除整个androidx.collection组
}

步骤2:统一androidx.collection版本

在项目根目录的build.gradle(或settings.gradle的dependencyResolutionManagement块)中强制指定androidx.collection的版本,确保所有模块使用同一版本:

// 根build.gradle
allprojects {
    configurations.all {
        resolutionStrategy {
            force "androidx.collection:collection:1.3.0" // 替换为项目适配的稳定版本
        }
    }
}

步骤3:清理冗余依赖

检查动态功能模块是否直接引入了androidx.collection,如果有则删除该直接依赖,改为通过:mobile模块传递引入(或保持版本统一)。


3. 若为库版本冲突,如何确定引发问题的版本?

方法1:生成依赖树排查

执行Gradle命令查看动态功能模块的Release依赖树,精准定位androidx.collection的来源和版本:

./gradlew :dynamicFeature:dependencies --configuration releaseRuntimeClasspath

在输出中搜索androidx.collection:collection,对比:mobile模块和动态模块各自依赖的版本,确认是否存在版本差异。

方法2:对比Compose BOM版本差异

查看Compose BOM 2023.06.01与2024.06.00的依赖清单,确认后者是否调整了androidx.collection的依赖版本。可通过执行命令查看BOM的具体依赖:

./gradlew dependencies --configuration classpath | grep "compose-bom"

找到对应BOM版本后,追溯其包含的androidx.collection版本,验证是否是升级后引入的新版本导致冲突。


内容的提问来源于stack exchange,提问作者Shubham Bhattacharyya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:40:02