我有一个带有链接源文件夹的项目。该项目依赖于另一个(远程服务)项目,因此通过远程接口(interface)传递的aidl 文件 和类位于两个项目共享的common_src
链接文件夹中。这在 Eclipse 构建中工作得很好,(一个源文件,两个项目,一个项目中的更改反射(reflect)在另一个项目中,就像它应该的那样)。
我现在想从命令行进行 Ant 构建。我设法使用 SDK 工具中的示例 build.xml
获得了另一个项目,该项目具有跨所有目标构建的单个 src 目录。一旦在 build.properties
中定义了 source.dir
和 out.dir
,它就会自动导入 ant_rules_r3.xml
> 这一切都相当轻松。
转到包含 src
和 common_src
文件夹的项目,我无法构建它。首先,我将编译目标及其依赖的所有目标剪切并粘贴到设置任务上方的 build.xml
中。我将元素 common_src
添加并定义到 build.properties
并将下面显示的最后一行添加到 -compile target
(复制自 ant_rules_r3.xml
) 到 build xml
:
<src path="${source.absolute.dir}" />
<src path="${gen.absolute.dir}" />
<src path="${common_src}" /><!--ADDED-->
它在构建过程中更进一步 - 它可以在 common_src 中找到 .java 文件,但找不到 .aidl 文件。毫不奇怪,我意识到 aidl 是一个单独的目标。然后我添加了
<src path="${common_src}" />
到构建 xml 中的 -aidl 目标,它失败了:
BUILD FAILED
C:\dev\projects\Eclipse\AndroidWorkspace\MapProject\build.xml:77: aidl doesn't
support the nested "src" element.
所以这让我很好,真正陷入困境。 理想情况下,我只想修改 build.properties 文件以包含 common_src 并将其传递给 ant_rules_r3.xml,但我想不出这样做的方法。如果有人可以建议如何完成,我将不胜感激。
最佳答案
我有一个类似的问题,但似乎已通过我的 build.properties 文件中的以下设置为我解决了:
source.dir = src;../other_project/src
我使用相对路径将我的 src 链接到 other_project,但您应该可以使用绝对路径。如果这样做,您可能应该将它放在 local.properties 中。
注意:根据 build.properties 中的注释,如果我的 SDK 版本 < 2.0,我会改用它:
source-folder = src;../other_project/src
关于Android Ant 构建在具有两个源文件夹的项目上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4088196/