【问题标题】:android-support-v7-appcombat jar mismatch and app crashing after Android 4.4 SDK updateAndroid 4.4 SDK 更新后 android-support-v7-appcombat jar 不匹配和应用程序崩溃
【发布时间】:2015-01-31 00:07:16
【问题描述】:

过去几个月我一直在我的应用中成功使用 android-support-v7-appcompat 库来支持旧设备中的操作栏。最近我从 SDK Manager 下载了带有系统映像和 SDK 平台的 Android 4.4(kitkat) 更新。我还在清单文件中将 targetSdkVersion 添加到“19”。但是我的项目显示错误为“android-support-v7-appcompat jar mismatch”。修复你的依赖。然后,我使用构建路径菜单 > 添加外部 jar 将 /extras/android/support/.... 中的 jar 作为外部 jar 添加到项目中。现在项目中没有错误,android-support-v7-appcompat.jar 和 android-support0v4.jar 文件在“Referenced Libraries”文件夹下显示两次,在“libs”文件夹下显示一次。该项目没有显示错误和正在运行,而是在不同的活动中崩溃。

之前我将 android-support-v7-appcombat 库作为工作场所的外部项目导入。我可以在该项目中看到错误。请建议我现在应该做什么。此外,android-support-v7-appcompat.jar umder Android Dependencies in Java Build Path 显示错误。

我看到的错误是:

Found 2 versions of android-support-v7-appcompat.jar in the dependency list,
but not all the versions are identical (check is based on SHA-1 only at this time).
All versions of the libraries must be the same at this time.

Versions found are:

Path: C:\<project hierarchy>\libs\android-support-v7-appcompat.jar

Path: C:\Users\....\sdk\extras\android\support\v7\appcompat\libs\android-support-v7-appcompat.jar

 Jar mismatch! Fix your dependencies

从不同的论坛得到想法后,我从不同的地方删除了所有的 android-support-v7-appcompat 库,并在项目中再次导入了 android-v7 支持库。仍然显示错误。我还应该从 buildpath 和 libs/private librariry/referenced library 文件夹中删除 android-support-v4 库吗?

【问题讨论】:

    标签: java android-support-library android-4.4-kitkat android-appcompat


    【解决方案1】:

    当在同一个项目中找到同一个库的多个不同实例或它使用的库时,会发生此错误。解决这个问题的一个非常简单的方法是在两个地方都使用公共库。这样做:

    只需复制您的 C:\Users....\AppData\Local\Android\android-studio\sdk\extras\android\support\v7\appcompat\libs\android-support-v7-appcompat。罐 并将其粘贴到您的 libs 文件夹中,用这个替换旧的。清理项目,它现在应该编译..

    编辑 1: 基本上这个想法是如果你使用相同的库,它应该是普通的 jar,或者同一个 jar。 在您的情况下,如果您将 appv7 用作外部项目,请转到项目的 libs 文件夹复制 android-support-v4.jar,然后粘贴到 android-support-v7-appcompat 项目的库中。

    另外,请确保您使用的其他外部 jar 或支持库,它们应该是您正在使用的所有项目中的类似 jar。

    希望对您有所帮助!

    【讨论】:

    • 我只是照你说的做了。但仍然是同样的问题。除了在 libs 文件夹下,我在项目中的 Referenced Librarires 文件夹和 Android Libraries 文件夹下还有 android-support-v7-appcompat.jar 和 android-support-v4.jar 文件。我是否也必须在这些方面做任何事情?我也有 android-support-v7-appcompat 作为 developer.android.com 推荐的外部项目
    • 为您编辑了答案。如果您仍然面临这些问题,请告诉我。
    • 没有。我不再面临这个问题。我已经添加了答案。请看下文。
    • 我不确定我是否理解这个答案;为什么希望拥有相同依赖项的两个副本?我刚刚从 /libs 目录中删除了 android 支持 JAR,冲突已解决。奇怪的是 appcompat_v7 项目声称存在的目的是为了允许在 SDK 7+ 中使用操作栏。但是我的项目的目标是 11 的 min SDK,它首先具有操作栏。为什么我被 Eclipse 强迫使用这个兼容性库是我无法理解的。
    【解决方案2】:

    安装问题中提到的所有更新后,我遇到了完全相同的问题。我确信有不同的方法可以解决这个问题。这是我使用的方式:

    以前,当创建一个活动时,向导会自动生成以下项目:

    androi-support-v7-appcompat,此项目已添加到构建路径中。

    在所有更新之后,创建活动时会生成以下等效项:

    appcompat_v7 具有相同名称的 jar。 我删除了 androi-support-v7-appcompat 并确保项目在其构建路径中使用 appcompat_v7 替换 androi-support-v7-appcompat .这使得重复生成的数百个错误消失了。

    【讨论】:

      【解决方案3】:

      我很高兴我终于找到了答案。我一次又一次地遇到同样的问题,我就像受够了。

      这是您问题的答案。

      每当您遇到此类错误时,请不要触摸 libs 文件夹以外的任何内容。只需直接进入 libs 文件夹并立即删除 android-support-v4.jar。并清理构建您的项目。摆脱错误会让您如释重负。

      希望它对你有用。 继续编码..

      【讨论】:

        【解决方案4】:

        我实际上已经通过尝试不同论坛建议的不同选项找到了解决方案。我手动更改了 android-support-v7-appcompat 项目(作为外部项目添加)的 project.properties 文件,并且必须设置 'target=android-19'。

        【讨论】:

        • 总救生员。我听从了许多人的建议,更改了我的构建路径配置,但无济于事。然后找到了这个提示,我没有手动更改 porject.properties 中的 target=android-19 变量,而是将 android:targetSdkVersion="19" 添加到我构建的所有项目中的所有 标记中本质上导致eclipse添加设置。无论如何,这解决了问题。我喜欢日食,但有时它会做一些奇怪的事情,破坏一个工作项目。在这种情况下总是感谢stackoverflow。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        相关资源
        最近更新 更多