2

我有一个 Android Project(A),它是我的主要应用程序,它引用了一个 Android 库 Project(B)。Library Project 引用了一个标准的 Java Project(C),它是我用于许多 Java 和 Android 项目的标准库。我将这三个项目称为 A、B 和 C。

我的问题是,如果我对 C 项目进行更改,它将自动编译,但 B 不编译,因此 A 看不到更改。这样做的唯一方法是手动清理 B。Eclipse中有没有办法在编译C时强制B重新编译?

将 Eclipse 3.6.2 与 ADT 14 和 SDK 14 一起使用。

4

3 回答 3

2

我在 ADT 14 上也遇到过这个问题。就我而言,我的间接性较少(项目 A 是 PLAIN java 库(不是 android 库),项目 B 是 android 应用程序)。

真正有趣的是我有两个项目“B”(两个安卓应用程序),一个正在工作。另一个是精确的副本(对 beta 版本进行了微小的更改),包括项目文件的副本。

它编译得很好,但未能在 beta 版本上打包库文件。

我删除了项目(不删除文件)并重新添加了它。然后,我还重新配置了应用程序的构建路径并删除了 java 库。然后我再次重新配置并重新添加它。

清洁/构建,它开始再次正确打包它们。

我也做了前面提到的构建顺序技巧......它本身并没有帮助,但可能有助于后来的 Eclipse 刷新工作(确保库项目在其他项目之前构建)。

于 2011-11-24T03:38:08.203 回答
0

我对 ADT 20 有完全相同的问题。将评论与接受的答案结合起来,我发现将库项目移动为项目属性中的第一个 -> Java 构建路径 -> 排序和导出解决了它。

于 2012-09-09T02:10:30.040 回答
0

我用引用项目 A(常规 java)的项目 B(android)尝试了接受的答案。在将项目 B 删除并重新添加到工作区后,从项目 B 的所需项目中删除项目 A,重新添加项目 B,在项目 A 的订单/导出中勾选项目 B 并将其移动到顶部,最后清理/构建所有,我的问题没有解决。在清理和构建之后,一切都是最新的。但是当 IU 在 A 中更改任何内容时,这些更改在 B 中是不可见的。

我的解决方案:

在 android 项目的构建路径中: - 选择源选项卡 - 点击链接源 - 选择 java 项目的 src 文件夹。将其命名为linkedLibrarySource - 应用,干净构建 - 成功

这个解决方案不太理想,我建议先尝试其他解决方案。

有一个缺点:eclipse 现在将linkedLibrarySource 文件夹添加到您的android 项目中。它包含与 lib 的 src 文件夹相同的文件。Eclipse 认为它们是不同的。这意味着您可以在两个位置编辑同一个文件,从而导致冲突。所以不要碰linkedLibrarySource!

我使用 ADT 20

于 2013-01-06T17:51:43.327 回答