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


104

当我写这个问题时,我设法解决了这个问题,因此在这里重复一下,以造福他人。这是最初的问题:

我创建了一个非常简单的库项目,我想在另一个项目中引用它。以前我没有做任何问题,所以不确定为什么这次不起作用。我有:

  1. 通过项目属性标记库项目。该default.properties文件具有以下设置:android.library=true

  2. 在我的其他项目中,通过项目属性添加了对我的图书馆项目的引用。该default.properties文件已按预期添加了参考,即android.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. 引用的库项目上的绿色对勾从绿色开始,然后变为红叉。

这意味着库项目一定存在某些错误/缺失,但是我不知道是什么。在这种情况下,我的图书馆项目比我创建的上一个项目要简单得多。


此解决方案对我的情况 有帮助:stackoverflow.com/questions/9283040/…我希望它能对某人有所帮助
Abeer Sul 2015年

Answers:


160

确定这是在文件系统中寻找引用项目(而不是库)的default.properies文件时找到的解决方案。尽管引用项目与库项目位于相同的Eclipse工作区中,但实际文件位于文件系统中的其他位置,即它们不在库项目的同一父文件夹中。一旦我将引用项目与库项目放在同一物理文件夹中,一切就正常了。

我猜想这一定与android在幕后使用ant有关。

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


3
还想补充一点,符号链接对此不适合。我将所有项目都存储在彼此相同的文件夹中的不同位置(将要备份的内容放在这里),然后在我的工作空间文件夹中到这些文件夹的一堆符号链接。因此,他们在这两个地方都在同一个文件夹中对方,但在使用符号链接搞砸了这一切。将真实文件夹加载为基本工作区后,一切都很好。
Zulaxia 2011年

7
+1用于阐明Eclipse / ADT组合的这种可怕行为。仅供参考,即使两个项目都放在同一物理文件夹中,如果该文件夹恰好位于Samba共享上,也无济于事。Ugrrr ...
2011年

20
有时Eclipse会删除引用,重新启动eclipse并再次添加,现在它应该可以工作了。
Warpzit 2012年

这是我属于并位于同一工作空间中的项目的问题。将项目导入到与库相同的工作空间中,并且一切正常。感谢你的回答。
Jayshil Dave 2012年

检查您的工作空间和库是否在相同的文件夹位置。犯了重新下载ADT的错误,并在C:\ users工作空间(而不是我的实际工作空间)下创建了一个项目。不用说,再次检查您的项目和库是否在同一工作目录中!
Garbit 2014年


10

如果您的库项目与当前工作区位于不同的分区,则会发生相同的问题。我刚才有同样的问题。我的git源在C:中,我只是将工作空间移到D:中,一切开始崩溃。


4
如果主项目和库项目位于不同的驱动器上,则Eclipse似乎无法解析从绝对路径到相对路径的引用路径,并且Eclipse对此不满意(绿色对勾变成红叉)。

也为我工作。我将引用的项目替换为同一驱动器(H :),现在可以了
Tobia Zambon

4

正确获取库路径的最简单方法是使用Eclipse中的GUI添加库,如以下屏幕截图所示,并让Eclipse负责将正确的相对路径放入project.properties中。这是一种常见设置,可以将您的库项目托管在与使用该库的主项目完全不同的目录中。如果“库项目”和使用它的项目在相同的日蚀“工作区”中(它们“不需要”在同一父文件夹中),则此方法将起作用: 在此处输入图片说明


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

3

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


1
这对我来说很好。令人困惑的是,我认为此“是图书馆”复选框的位置。这并不直观,实际上是在选择当前应用程序/库构建的目标,而不是要包含库的选项开关。
EtienneSky


2

关于同一问题的另一种看法。

对我来说,这两个项目位于同一父文件夹中,并且都位于工作空间内。即使那样,问题仍然在发生。

我编辑了“ project.properties”文件,并放置了库项目的绝对路径(用斜杠“ /”表示分隔符)。保存并关闭它。然后转到项目属性对话框,删除该库(该库仍显示十字图标,但带有abs路径),并照常添加回该库。令人惊讶的是,问题已解决,项目得以编译并运行。

这确实很奇怪,并且一定是ADT的错误。我正在使用ADT版本20.0.2


+1。在切换具有相同名称的库时面临此问题。看起来像是eclipse(或ADT)试图引用旧版本,但失败了。Eclipse重新启动有帮助。(Ubuntu 12.04,Eclipse Indigo,ADT 21.0.0)
Luten 2012年

2

当开发人员引用Facebook或任何其他图书馆项目时,则首先从eclipse-> project-> clean项目中清除项目。要允许参考屏幕中出现红叉的错误。


2

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

我的意思是添加库项目后第一次显示红色标记。尽管eclipse主项目和库项目位于同一工作空间文件夹中,但资源文件不在项目文件夹之外。

因此,您可以尝试重新启动日食。祝您编程愉快。


1

我的解决方法是

  1. 创建一个新的工作区
  2. 在该工作区中导入图书馆项目
  3. 在该工作区中导入所需的项目
  4. 使项目和库项目都具有相同的目标Android OS版本
  5. 我的项目中的参考图书馆项目

解决了我的问题


创建一个新的工作区也解决了这个问题。您还需要清除项目。
Omer Cansizoglu 2014年

1

当我尝试更改工作区时,我在这里遇到了同样的问题,因此这是我的解决方案:

  1. 将所有项目数据(包括库项目)导入并复制到工作区中
  2. 通过右键单击项目->属性-> Android->库,删除旧的项目引用,然后选择损坏的库(我称之为),然后选择“删除”
  3. 首先清理项目(以刷新您的项目属性)
  4. 转到库项目“属性”->“ Android”->“库”,并检查is库(如果未单击),然后单击“确定”
  5. 如果已检查库项目是库项目,则首先取消选中它,然后清洗库项目,然后再次执行步骤4
  6. 转到您想要该库所在的项目,然后右键单击该项目-> Properties-> Android-> Library,添加然后选择该库项目(应该在该项目中),然后单击应用然后确定
  7. 如果仍然没有出现,请再次清理项目,那应该做


0

当您查看参考路径的前后时,它来自“ C:/ workspace / mylib”,复制到正确的位置后会转到“ ../../mylib”,这很有趣。


0

仅供参考

对我有用的是从工作空间中删除“库”项目(实际项目)(不删除文件),然后使用向导重新导入它们(从源代码导入现有的android项目)。


也为我工作。刚刚删除并重新导入了项目(作为“现有日食项目”)
Neromancer 2013年

0

感谢您发布问题。将Facebook与Android应用程序集成时,我遇到了完全相同的问题。通过将开发项目移至库项目所在的Windows驱动器中,我解决了该问题。如果Eclipse 在不同的驱动器中,则Eclipse无法以某种方式从default.properties文件中正确读取该库项目的位置。


0

与Sufi Khan的帖子类似,我也通过重新启动解决了此问题。我的情况不同之处在于,当我第一次访问Properties-> Android并添加库时,我得到了一个可爱的绿色对勾。当我关闭对话框时,Eclipse仍显示未找到的类错误。当我再次检查属性时,我看到红色的X。但是Kahn先生的解决方案(删除错误的lib,重新启动Eclipse,再次添加lib)工作正常。

我正在使用0702版本的ADT捆绑包(以“ cluster”开头,以“ duck”开头的押韵)。


0

我遵循了接受的答案,但还必须确保我的“ project.properties”文件可读。

如果文件是只读文件(已签入源代码管理),则eclipse不会对其进行编辑。添加库引用将成功,但是单击“确定”后,更改将不会保留。

如果关闭首选项窗口然后再次重新打开会删除您刚刚添加的库,则可能是您的解决方案。


0

如果您的图书馆项目仍然没有显示,请尝试在图书馆项目属性中添加图书馆标志

添加android.library = true

project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library=true
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.