Android13独立SystemUI项目引入Setting.aar包遇Zip重复条目错误求助
解决Android 13独立SystemUI引入Setting.aar时的WifiTrackerLib类重复构建错误
错误信息:
转换WifiTrackerLib-.aar (:WifiTrackerLib:)以匹配属性{artifactType=android-classes-jar, org.gradle.status=integration, org.gradle.usage=java-api}失败。 > AarToClassTransform执行失败: /Users/****/.gradle/caches/transforms-3/fb27335a3bda13f34761986f27530b4d/transformed/jetified-WifiTrackerLib.aar。 > Zip文件'/Users/***/.gradle/caches/transforms-3/857f78488989ec604802c3978f1d53b6/transformed/jetified-WifiTrackerLib-api.jar'已包含条目'com/android/wifitrackerlib/R$array.class',无法覆盖
问题原因:
Setting.aar依赖的WifiTrackerLib模块,与当前SystemUI项目中已依赖的WifiTrackerLib存在重复的资源生成类(R$array.class),Gradle在合并依赖时检测到冲突,导致构建失败。
解决方案:
排查并排除重复依赖
先通过命令查看项目依赖树,明确重复依赖的来源:./gradlew dependencies找到WifiTrackerLib的重复引入后,在Setting.aar的依赖配置中排除该模块:
implementation(name: 'Setting', ext: 'aar') { // 根据依赖树的实际分组和模块名调整 exclude group: 'com.android.wifitrackerlib', module: 'WifiTrackerLib' // 如果是本地模块依赖,替换为 exclude module: ':WifiTrackerLib' }使用packagingOptions处理冲突类
如果无法排除依赖,可以在模块的build.gradle中配置packagingOptions,让Gradle优先选择其中一个版本的类:android { packagingOptions { pickFirst 'com/android/wifitrackerlib/R$array.class' } }注意:此方法可能会导致部分资源无法正常访问,仅在排除依赖不可行时使用。
清理Gradle缓存并重新构建
执行以下命令清理缓存并重新构建,避免旧缓存残留导致的问题:./gradlew clean build必要时可以手动删除
.gradle/caches目录下的相关缓存文件。
内容的提问来源于stack exchange,提问作者seven.cheng
相关产品推荐
相关产品推荐

