36

我的应用程序依赖于一个库项目。这个库项目依赖于 Android Compatibility Package V4。我没有导出库项目的依赖项。在我自己的项目中,我添加了 ACL V13 作为依赖项,但是在编译时我得到一个错误,即本质上存在重复的依赖项。我认为不导出库项目的依赖项可以解决此问题,但事实并非如此。

我该如何解决这个问题?

编辑

此外,根据Android 工具文档

android-support-v4.jar 和 android-support-v13.jar 的特殊情况。

我们为这两个库制作了一个特殊情况,因为 -v13 内部包含 -v4 的完整版本。如果两者都找到,则仅使用 -v13。

所以它应该只是工作......

4

6 回答 6

19

如果您在不同的项目(libs 项目或标准项目)中使用完全相同的 lib jar,apk 工具会自动删除重复的。

当您有两个名称相同但版本不同的库时,问题就开始了。

android-support-v4.jar 和 android-support-v13.jar 文件可以来自不同的版本,因为在不同的支持包版本中总是有相同的名称(http://developer.android.com/tools/extras/support -library.html#Notes )

我会检查您在主项目和 lib 项目中使用的支持库的版本是否完全相同。

为了确保,将两个支持库 jar(位于android-sdk文件夹中)复制到您的项目 libs 文件夹中。

{android-sdk}/extras/android/support/v4/android-support-v4.jar
AND
{android-sdk}/extras/android/support/v13/android-support-v13.jar

它应该可以解决这个问题。

于 2013-05-14T17:05:33.247 回答
8

从库中删除 v4 包。

清理项目。

于 2013-05-15T08:32:01.417 回答
4

就我而言,我刚刚将 libs/ 文件夹中的一个 JAR 更新为新版本。

修复它所需要的只是运行 Build -> Rebuild Project,即在“assembleDebug”等之前发出“clean”任务。

于 2013-10-22T11:05:50.590 回答
3

好吧,在我的故事中,我必须删除相同的模块依赖项,将其添加到库中,然后将此库作为依赖项添加到每个模块中。

所以:

  • 模块 a :取决于 android-v4(并在它的 lib 文件夹中)
  • 模块 b :取决于 android-v4(并在它的 lib 文件夹中)

    1. 添加到项目“android-v4”的库(例如来自第一个模块)。在模块 b lib 文件夹中删除它。

    2. 删除 android-v4 的模块 a 和 b 依赖

    3. 添加到每个模块依赖 -> 库 -> android-v4(您在 2 步中创建)

我不确定这是否是正确的解决方案,但它有效。

于 2013-05-12T19:10:59.787 回答
1

您是否尝试将库的依赖项从 v4 更改为 v13 并导出?

于 2013-05-14T04:29:57.003 回答
0

有时简单地删除 v4 支持库是行不通的,你还需要重新构建或项目。

于 2015-10-01T15:26:59.600 回答