【问题标题】:How to deal with library mismatches in 3rd party android libraries?如何处理 3rd 方 android 库中的库不匹配?
【发布时间】:2013-01-09 03:49:18
【问题描述】:

我正在编写一个同时使用 ActionBarSherlock 和 Facebook Android SDK 的 android 应用程序。这两个库都在它们的 libs 文件夹中提供了 android-support-v4.jar:

https://github.com/facebook/facebook-android-sdk/blob/master/libs/android-support-v4.jar https://github.com/JakeWharton/ActionBarSherlock/blob/master/library/libs/android-support-v4.jar

但是,在头部修订中,两个版本的支持 jar 是不同的。这会导致使用 eclipse 构建我的应用程序失败。

我通过将它们作为 git 子模块包含在我的应用程序的存储库中来使用这两个库。一种解决方案是 fork 这些库之一,更新 fork 中的 android-support-v4.jar 版本,并将我的子模块指向 fork。虽然这也许是正确的方法,但不知何故,这感觉不对。

在我使用上述方法之前,我想知道是否还有其他选择。许多流行的 Android 库似乎都在使用 maven,使用 maven 是解决这个问题的好方法吗?对于一般的 android 应用程序来说是一个好主意吗?

【问题讨论】:

    标签: android maven actionbarsherlock android-facebook


    【解决方案1】:

    首先从 All(yourProject,FacebookSDK etc.) 中删除 android-support-v4.jar。

    然后按照以下步骤操作:

    右键单击项目 -> Android 工具 -> 添加支持库,然后再次右键单击项目 -> Android 工具 -> 修复项目属性在 Facebook SDK 和其他库上执行相同操作。

    并清理构建您的所有项目(Facebook SDK、您的项目和库)。您完成了。

    【讨论】:

    • 感谢您的意见。由于我使用的是 git 子模块,因此删除 android-support-v4.jar 将需要我分叉这些库。是否有其他不需要我分叉这些库的解决方案?
    • 当您单击添加支持库时,它将再次在您的项目和您使用的库中添加 android-support-v4.jar。请检查。它不会派生您的库。
    • 我同意这些步骤可能会让它在我的机器上构建,但所有其他使用我的 repo 的开发人员都必须遵循相同的步骤,任何新的开发人员也是如此。最好能够从一个简单的 git recursive checkout 构建。但我意识到我可能很固执。感谢您的帮助;)
    • 如你所愿,那些使用你的仓库的人无需再做一次。试一试。
    • 标记为已接受,这是我采用的解决方案,但请注意,如果您使用的是 3rd 方项目的 git 子模块,则所有其他用户都必须执行此步骤,除非您分叉那些项目。因此,我还没有尝试过我满意的解决方案。仍然想知道它是否是 maven,但将我的项目切换到 maven 可能需要几天的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多