您好我似乎对我正在尝试构建的项目有重复依赖。
错误如下:
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:685)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
[INFO] at com.android.dx.command.dexer.Main.access$600(Main.java:78)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:596)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:230)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:199)
[INFO] at com.android.dx.command.Main.main(Main.java:103)
[INFO] 1 error; aborting
我正在做两个项目。一个充当api / sdk,另一个充当使用此api / sdk的客户端应用。
api / sdk对一个名为LocalbroadcastManager的类/接口使用支持v4 android依赖库,而客户端应用程序使用相同的库但不同的类。
问题在于,当您将sdk / api添加为客户端应用程序的依赖项时,它还包括v4支持库依赖项。但是,Supported v4 lib依赖项仅显示LocalBroadCastManager,因此您必须为整个v4支持lib创建并添加客户端本身的依赖项。
现在我知道问题是什么,我想弄清楚我如何才能使用sdk / api项目中的整个v4支持库,基本上如何从sdk / api项目中公开整个v4支持lib?
这应该修复我得到的错误,因为只有一个LocalBroadcastManager加上任何其他v4支持lib类只会在客户端项目中添加一次。
来自客户端应用程序的pom片段
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>${android.support.v4.version}</version>
</dependency>
来自sdk / api项目的Pom片段
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>${android.support.v4.version}</version>
</dependency>
或多或少相同,所以我如何只使用一个?
由于
答案 0 :(得分:1)
将exclusion
添加到使用支持库的其中一个依赖项:
<dependency>
<!-- one of the dependencies containing the support lib -->
<exclusions>
<exclusion>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
</exclusion>
</exclusions>
</dependency>