在eclipse中,无法引用另一个android项目中的android库项目
当我写这个问题的时候,我设法解决这个问题,所以在这里重复这个问题是为了别人的利益。 这是最初的问题:
我创build了一个非常简单的库项目,我想在另一个项目中参考。 我以前做过这个没有问题,所以不太确定为什么这次不工作。 我有:
-
通过项目属性标记库项目。
default.properties
文件有这样的设置:android.library=true
-
在我的其他项目通过项目属性添加了我的图书馆项目的参考。 该
default.properties
文件有引用添加如预期即android.library.reference.1=K:/android_test_ws/applicationRegistrar
-
对照引用的库项目的绿色勾号以绿色开始,然后变为红色叉号。
这意味着图书馆项目肯定会有一些错误/遗漏,但我不知道是什么。 我在这个场合的图书馆项目比我之前创build的图书馆项目简单得多。
OK这是我在文件系统中查找引用项目(不是库)的default.properies文件时find的解决scheme。 尽pipe引用项目与库项目在同一个eclipse工作区中,但是实际的文件是在文件系统中的其他位置,即它们不在库项目的同一父文件夹中。 只要我将引用项目放置在与库项目相同的物理文件夹中,就一切正常。
我想这一定是一些与Android使用ant下面的封面。
编辑:项目名称需要匹配文件系统上的文件夹名称。 您在“项目属性” – >“Android->库参考”中看到的是相对文件系统path。
确保两个项目都在同一个工作空间中。 要做到这一点,在导入项目时确保选中“复制项目到工作区”checkbox。
如果您的库项目与当前工作空间位于不同的分区,则会发生同样的问题。 我刚才也有同样的问题。 我的git源代码是C:我只是把我的工作空间移动到D:并且一切都开始崩溃。
获取库pathpath的最简单方法是使用Eclipse的GUI来添加库,如以下屏幕截图所示,并让Eclipse负责在project.properties中放置正确的相对path。 它是一个常用的设置,使您的库项目托pipe在与使用该库的主项目完全不同的目录中。 如果“libary项目”和使用它的项目在同一个eclipse“workspace”(他们“不需要”在同一个父文件夹中),这个方法将工作:
请确保库项目被标记为“库” – 右键单击库项目 – 属性 – Android – 标记“库”checkbox – 在库项目的project.properties中,您应该有一个新的条目:“android .library = true。现在把它添加到你想要的项目中,如下面的post所描述的(图片集成的post – 来自Nilesh Pawar)。
这个bug在这里被引用27199,35786,36460和38052 几次
也许通过为他们投票,这将是有一天固定的…
关于同一问题的另一个观察。
对于我来说,两个项目在同一个父文件夹,并且都在工作区内。 即使如此,问题仍然在发生。
我编辑了“project.properties”文件,并将库项目的绝对path(带有正斜杠的“/”)放入。 保存并closures它。 然后进入项目属性对话框,删除库(仍然显示十字图标,但与abspath),并像往常一样添加回来。 令人惊讶的是,问题已经解决,项目编译和运行。
这真的很奇怪,必须是ADT的一个bug。 我正在使用ADT版本20.0.2
当开发人员引用facebook或任何其他库项目时,首先从eclipse-> project-> clean project中清理项目。 那要在参考屏幕上允许红叉的错误。
对我来说,我只是重新启动日食,并添加库工作正常。
我的意思是第一次添加库项目后显示红色标记。 尽pipeeclipse主项目和库项目位于同一个工作区文件夹中,但项目文件夹外没有资源文件。
所以,你可以尝试重新启动你的eclipse。 快乐编码….
我的解决方法是
- 创build一个新的工作区
- 在该工作区中导入库项目
- 导入该工作区中所需的项目
- 将项目和库项目都设置为相同的目标Android操作系统版本
- 我项目中的参考库项目
解决了我的问题
当我尝试更改我的工作空间时,我遇到了同样的问题,所以这是我的解决scheme:
- 将包含库项目的所有项目数据导入并复制到工作区中
- 通过右键单击项目 – >属性 – > Android – >库,并select损坏的库(以便我打电话给它),然后select删除
- 首先清理项目(刷新你的项目属性)
- 去图书馆项目属性 – > Android的 – >库和检查是库是否不单击应用然后确定
- 如果库项目库已经被选中,先不选中它,然后再清理库项目,然后再次执行步骤4
- 去项目,你希望图书馆在然后右键点击项目 – >属性 – > Android – >库,添加然后select库项目(它应该在那里),然后单击应用然后确定
- 如果还没有再次出现干净的项目,应该这样做
只需重新启动你的月食。 这是解决我的问题
当你查看前后的引用path时,它来自于“C:/ workspace / mylib”,并且在复制到正确的位置时转到“../../mylib”,非常有趣。
仅供参考,
我工作的是从我的工作区删除“库”项目(实际项目)(不删除文件),然后使用向导(从源代码导入现有的Android项目)重新导入它们。
感谢您发布的问题。 在将Facebook与我的Android应用程序集成时,我遇到了同样的问题。 我通过将我的开发项目移动到库项目所在的同一Windows驱动器来解决此问题。 不知何故,如果Eclipse不能正确地从default.properties文件中读取库项目的位置,那么它将处于不同的驱动器中。
类似苏菲汗的职位,我也解决了这个问题,重新启动。 我的情况有所不同,当我第一次访问属性 – > Android和添加库我有一个可爱的绿色复选标记。 当我closures对话框时,Eclipse仍然显示类未find的types错误。 当我再次检查属性时,我看到了红色的X.但卡恩先生的解决scheme(删除坏lib,重新启动Eclipse,再次添加lib)工作正常。
我正在使用ADT软件包的0702版本(以“cluster”开头,用“duck”开头)。
我遵循接受的答案,但也必须确保我的“project.properties”文件是可读的。
如果该文件是只读的(签入到源代码pipe理)eclipse不会编辑它。 添加库引用将会成功,但更改不会在点击确定后继续。
如果closures首选项窗口并重新打开,将删除刚刚添加的库,这可能是您的解决scheme。
如果你的图书馆项目仍然没有出现尝试添加图书馆项目属性库标志
添加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