Android & 间接引用的 jars = BAD?

Posted

技术标签:

【中文标题】Android & 间接引用的 jars = BAD?【英文标题】:Android & indirectly referenced jars = BAD? 【发布时间】:2011-10-07 00:09:24 【问题描述】:

我有一个引用另一个普通 Java 项目的 android 项目(在 Eclipse 中)。这个其他纯 Java 项目引用了一些 jar 库。我的问题:

在编译时一切似乎都很好。但是,当我运行 Android 项目时,我得到一个与间接引用的 jar 库中的类相关的类未找到错误。

我已在 Java 构建设置中将它们标记为“已导出”。如果我手动将 jar 文件包含在 Android 项目中它可以工作,但是,有时(大多数时候)我会收到“java.lang.IllegalArgumentException:已添加:...”错误,因为 dalvik 编译器似乎两次找到这些 jar(即使我从“导出”列表中删除 jar,也会发生这种情况)。

有什么办法解决这个问题吗?

谢谢, 丹尼尔

【问题讨论】:

【参考方案1】:

这是因为你包含的项目的依赖变成了你当前项目的依赖。我会:

    JAR 构建您的依赖项目并将其作为 JAR 包含在您当前的项目中。 在当前项目中包含依赖项目的依赖 JAR。

这有助于保持您的工作空间整洁,并确保您当前的项目始终在本地拥有适当的资源。您始终可以创建一个脚本来构建您的依赖项目并将 JAR 存放到您当前的项目中。

【讨论】:

谢谢。这与我在下面描述的基本相同(您投反对票并认为仅值得评论)。无论哪种方式,您都忘了提及缺点(每次发生变化时重新运行构建脚本,没有热代码替换,...​​...)。这是一种解决方法,而不是解决方案。 对不起,我把它误解为评论,而不是解决方案。【参考方案2】:

好吧,我现在已经使用一个构建脚本来解决它,该脚本包含我所有的依赖项目,所以我可以只引用那个 jar(并避免引用 Java 项目)。

有效,但现在我每次进行更改时都需要重新构建(并在 Eclipse 中点击刷新,以便它意识到引用的 jar 已更改)。仍然希望有一个“真正的”解决方案..

【讨论】:

以上是关于Android & 间接引用的 jars = BAD?的主要内容,如果未能解决你的问题,请参考以下文章

ActionBarSherlock - android.support.v4.app.Fragment 类型无法解析。它是从所需的 .class 文件中间接引用的

java.lang.Object 类型无法解析。它是从所需的 .class 文件 android studio 中间接引用的

c++11新特性之引用折叠

间接功能

android studio怎么知道哪个jar包被重复引用

如何在Android Studio添加本地aar包引用