2013-11-22 35 views
3

我在我的项目中使用了android-support-v4-r19(最新版本),我需要使用另一个库(jar),但是这个库使用了android-support-v4旧版本)为好,所以当我尝试运行我的应用程序,我得到这个错误:同一个项目中的多个android-support-v4版本

Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; 

Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; 

我想这是因为有两个不同版本的Android支持-V4库,但我不能删除android- support-v4(旧版本),因为我有jar文件,并且我无法从我的项目中删除android-support-v4-r19,因为我需要并且不存在于android-support-v4中的类(旧版本)。

我该怎么办?

+0

你是说'android-support-v4'代码实际上嵌入在旧的jar中?如果是这样,这听起来像是一个错误。 – chrylis

+0

请再检查一次,android-support库不能打包成jar。 –

+0

我有用jar包装的支持库。你不能一次使用两个。 –

回答

0

配置您的构建路径。删除v4库。如果您无法从该处删除它,请转到您的项目位置并从那里删除它。你不能使用两个支持库

为什么你不能删除v4库?它在Android专用库文件夹中。如果它是删除整个私人图书馆文件夹。

或更简单的方式我已经告诉过你 - 导航到你的项目位置并删除v4库(你可以在你的项目的构建路径中找到v4库的位置,找到你的v4库,位置也应该存在有

0

I cannot remove android-support-v4 (older version) from this library because I have the jar file

我解释这是意味着从“其他库”的JAR文件包括从android-support-v4类。在这种情况下,你可能想使用“其他库”重新考虑。就个人而言,我不会去碰它用一个三米的杆子。

但是,你可以试着从这个恢复中通过ope将JAR文件作为ZIP归档并删除您看到的任何android.*类。然后,JAR将使用项目自己的副本android-support-v4.jar中的类来结束。

这是可能的,这种变化将打破“其他库”:

  • 他们的android.*类的版本进行了修改,而“另一个库开发商并没有把它们重构为其它的什么包,或者

    在Android支持包
  • 通用代码的变化只是打破“其他库”,在这种情况下,你要么以“其他库”的源代码解决这些问题,或者你有麻烦了

+0

是的,这个库是一个JAR文件,它包含一个老版本的android-support-v4。 我打开了JAR并删除了android。*引用。我可以编译它,但运行应用程序时会崩溃。 我有一个NoClassDefFoundError与它已经在“另一个库”中定义的类相关联 – Danielle

+0

@Danielle:然后编辑JAR文件以删除这些类。 – CommonsWare

+0

请检查我编辑的评论 – Danielle