在Eclipse中,无法在另一个Android项目中引用Android库项目

104

在我撰写这个问题的过程中,我设法解决了它,现在在这里重复一下以造福其他人。以下是最初的问题:

我创建了一个非常简单的库项目,我想在另一个项目中引用它。我之前已经做过这个操作,没有出现任何问题,所以不太确定为什么这次无法正常工作。我已经完成了以下步骤:

  1. 通过项目属性标记了库项目。default.properties文件设置为 android.library=true

  2. 通过项目属性向我的其他项目添加了对库项目的引用。 default.properties 文件已按预期添加了引用,如: android.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. 所引用的库项目旁边的绿色勾号一开始是绿色的,然后变成了红色的叉号。

这意味着库项目中必须有一些错误/缺失,但我不知道是什么。这次我的库项目比之前创建的简单得多。


这个解决方案对我的情况有帮助:https://dev59.com/Fmox5IYBdhLWcg3wTyxx我希望它能帮助到其他人。 - Abeer Sul
18个回答

161

当我在查找引用项目(而不是库)的default.properies文件时,我发现了一个解决方案。尽管引用项目与库项目在同一个eclipse工作区中,但实际文件在文件系统中的某个其他位置,即它们不在库项目的同一父文件夹中。只要我把引用项目放在与库项目相同的物理文件夹中,一切都顺利了。

我想这可能与android在底层使用ant有关。

编辑:项目名称需要与文件系统上的文件夹名称匹配。您在“项目属性”-> “Android”-> “库引用”中看到的是相对文件系统路径。


3
还想补充一点,符号链接对此不起作用。我的所有项目都存储在一个不同的位置(我希望备份的地方)的同一个文件夹中,然后在我的工作空间文件夹中创建了一堆指向这些文件夹的符号链接。因此,它们在两个地方都在同一个文件夹中,但是使用符号链接却把一切都搞砸了。一旦我将真正的文件夹加载为我的基本工作空间,一切都变好了。 - Zulaxia
7
感谢您表达出对Eclipse/ADT组合的糟糕行为的看法。顺便提一下,即使将两个项目放在同一个物理文件夹中,如果该文件夹恰好位于Samba共享中,也无法解决这个问题。唉... - an00b
20
有时 Eclipse 会移除此引用,重启 Eclipse 并重新添加,这样应该就可以正常工作了。 - Warpzit
这是我的项目所属和位于同一工作区的问题。将该项目导入到与库相同的工作区中,一切都正常了。感谢您的答案。 - Jayshil Dave
请检查您的工作区和库是否位于同一文件夹位置。我曾经犯过重新下载ADT并在C:\ users工作区下创建项目而不是我的实际工作区的错误。毋庸置疑,请再次检查您的项目和库是否在同一个工作目录中! - Garbit
遇到了同样的问题,将项目删除并重新导入,然后将其复制到工作区中即可解决。这是一个非常愚蠢的问题,感谢malcooke提供的解决方法。 - CodyEngel

11

确保两个项目位于同一工作区中。 要做到这一点,在导入项目时,请确保选中“将项目复制到工作区”复选框。


1
如何将同一个库项目用于另一个项目?如果这样做,它会显示红色十字形符号。@Karthik - Shailendra Madda

10

如果您的库项目和当前工作区不在同一个分区,将会出现相同的问题。我刚遇到了同样的问题。我的Git源文件在C:盘,我刚刚把工作区移动到了D:盘,结果一切都崩溃了。


4
如果主项目和库项目在不同的驱动器上,似乎Eclipse无法将引用路径从绝对路径解析为相对路径,这会导致Eclipse出现问题(绿色勾号变为红色叉号)。 - Pang
对我也起作用了。我将引用的项目替换为同一驱动器(H :) 中的项目,现在没问题了。 - Tobia Zambon

4
最简单的确保库路径正确的方法是使用Eclipse GUI添加库,如下面的截图所示,并让Eclipse负责将正确的相对路径放在project.properties文件中。通常情况下,您的库项目存放在与使用该库的主项目完全不同的目录中。如果“库项目”和使用它的项目在同一个Eclipse“工作区”中(它们“不需要”在同一个父文件夹中),则此方法将起作用: enter image description here

4
问题是因为库和项目在不同的驱动器/分区中...请参见上面的错误列表。 您的情况很好,因为您的库路径显示相对路径,而不是DOS完整路径... - kenyee

3
这个bug在这里被引用了多次: 27199, 35786, 36460 & 38052。也许通过对它们进行投票,有一天会修复这个bug......

3
请确保库项目被标记为“Is Library” - 在库项目上右键单击 - 属性 - Android - 标记“Is Library”复选框 - 在库项目的project.properties中,您应该有一个新条目:“android.library=true”。现在按照下面帖子中描述的添加到您想要的项目中。(来自Nilesh Pawar的带有图像集成的帖子)。

1
这对我来说完全有效。令人困惑的是,我认为“Is Library”复选框的位置。这并不直观,实际上它选择了当前应用程序/库构建的目标,而不是包含库的选项开关。 - EtienneSky

2

关于同一问题的另一个观察。

对于我来说,这两个项目在同一个父文件夹中,并且都在工作区内。即使如此,问题仍然存在。

然后我编辑了“project.properties”文件,并放置了库项目的绝对路径(使用正斜杠'/'作为分隔符)。保存并关闭它。然后进入项目属性对话框,删除了库(仍显示交叉图标但带有绝对路径),并像往常一样重新添加了它。 令人惊讶的是,问题得到解决,项目可以编译和运行。

这真的很奇怪,必须是ADT的一个bug。 我正在使用ADT版本20.0.2


在切换同名库时,遇到了这个问题。 看起来eclipse(或ADT)试图引用旧的库并失败了。 重启Eclipse即可解决。 (Ubuntu 12.04,Eclipse Indigo,ADT 21.0.0) - Luten

2

对于我来说,我只需要重新启动Eclipse,添加的库就可以正常工作。

我的意思是,在添加库项目后第一次出现红色标记。尽管Eclipse主项目和库项目在同一个工作区文件夹中,并且没有资源文件在项目文件夹之外。

因此,您可以尝试重启Eclipse。祝编码愉快....


2

当开发人员引用Facebook或其他库项目时,首先要从Eclipse -> 项目 -> 清理项目中清除项目。这将不会在引用屏幕上显示红色十字错误。


1

当我尝试更改工作区时,也遇到了同样的问题,以下是我的解决方案:

  1. 将所有项目数据及库项目导入并复制到工作区
  2. 右键单击项目-->属性-->Android-->库,选择受损库(这是我所说的),然后选择删除
  3. 首先清除项目以刷新您的项目属性
  4. 进入库项目 属性-->Android-->库并检查是否为库。如果不是,请点击“应用”然后“确定”
  5. 如果库项目已经被选中,首先取消选中它,然后清理库项目,再执行第4步
  6. 进入包含所需库的项目,右键单击该项目-->属性-->Android-->库,添加,然后选择库项目(它应该在那里),点击“应用”然后“确定”
  7. 如果仍未出现,请清理项目一次,那就可以了

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接