Android Dex:意想不到的顶级例外:已经添加

时间:2013-03-13 14:04:11

标签: android intellij-idea

我的应用程序取决于库项目。此库项目取决于Android兼容包V4。我有 NOT 导出库项目的依赖项。在我自己的项目中,我已经添加了ACL V13作为依赖项,但是在编译时我得到的错误基本上是重复的依赖项。我认为不导出库项目的依赖会解决这个问题,但事实并非如此。

我该如何解决这个问题?

修改

另外,根据Android tools docs

  

android-support-v4.jar和android-support-v13.jar的特例。

     

我们为这两个库创建了一个特例,因为-v13包含一个   完整版的-v4里面。如果两者都找到,那么只有-v13   使用

所以它应该有用......

6 个答案:

答案 0 :(得分: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

它应该摆脱这个问题。

答案 1 :(得分:8)

从库中删除v4包。

清理项目。

答案 2 :(得分:4)

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

修复它所需要的只是运行Build - >重建项目,即在'assembleDebug'等之前发出'干净'任务。

答案 3 :(得分:3)

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

所以:

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

    1. 添加到项目“android-v4”的库中(对于第1个模块的ex)。在模块b lib文件夹中删除它。

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

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

有时只是删除v4支持库不起作用,您还需要重建或项目。