【问题标题】:Android Ant build on a project with two source foldersAndroid Ant 构建在具有两个源文件夹的项目上
【发布时间】:2010-11-03 14:41:28
【问题描述】:

我有一个带有链接源文件夹的项目。该项目依赖于另一个(远程服务)项目,因此 aidl 文件 和通过远程接口传递的类位于两个项目之间共享的 common_src 链接文件夹中。 Eclipse 构建可以很好地工作,(一个源文件,两个项目,一个项目中的更改反映在另一个项目中,就像它应该的那样)。

我现在想从命令行进行 Ant 构建。我使用 SDK 工具中的示例 build.xml 设法获得了另一个项目,该项目具有跨所有目标的单个 src 目录构建。它会自动导入ant_rules_r3.xml,一旦在build.properties 中定义了source.dirout.dir,这一切都相当轻松。

转到带有srccommon_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,但我想不出办法。如果有人能建议如何完成,我将不胜感激。

【问题讨论】:

标签: android ant


【解决方案1】:

我遇到了类似的问题,但我的 build.properties 文件中的以下设置似乎已经为我解决了:

source.dir = src;../other_project/src

我使用相对路径将我的 src 链接到 other_project,但您应该能够使用绝对路径。如果你这样做了,你应该把它放在 local.properties 中。

注意:根据 build.properties 中的 cmets,如果我的 SDK 版本

source-folder = src;../other_project/src

【讨论】:

  • 这对我来说非常有效,只是我使用了“:”而不是“;”我需要编辑的文件是 ant.properties,我认为 Android 切换到包含 ant.properties 而不是 build.properties。
  • @marmor 您使用的是哪个版本的 sdk?因为对我来说,这两种方法都失败(20.0.1) : 和 ;它仍然对您有用吗?
  • @Nappy 我不再需要这个功能,所以自从更新到 ADT 20 后我还没有测试过,你可以通过启动一个新的 Android 项目来查看需要在 ADT 版本中编辑的文件,调用“安卓更新项目——路径。”从命令行在它上面,并查看它为您创建的文件,查找一个 ant.properties 文件,该文件应包含源文件夹定义。
【解决方案2】:

以防万一有任何兴趣,我想我会回答我自己的问题,现在已经解决了。

1) 我在 build.properties 中定义了 common_src

2) 增加了一行

<src path="${common_src}"

在设置上方的 build.xml 中的覆盖编译目标中(加上通过从 ant_rules_r3.xml 剪切/粘贴覆盖它所依赖的所有目标) 3) 在 build.xml 中添加了一个与“aidl”相同的新目标“aidl2”,但其中包含该行

&lt;source path="${common_src}" 而不是

<source path="${source.absolute.dir}" .

使aidl 依赖于aidl2。覆盖所有aidl依赖的目标。

我还添加了类似的行:

key.store=xxxxxxxxxxxxx
key.alias=xxxxxxxxxxxxx
key.store.password=xxxxxxxxxxxxx
key.alias.password=xxxxxxxxxxxxx

自动输入密码的 build.xml。我终于添加了一个 install_release 目标来自动构建、释放和安装命令。

【讨论】:

    【解决方案3】:

    我无法发表评论,因为我没有足够的声誉,但如果添加源文件夹适用于以前的答案,则稍后在构建 jar 时会失败:

    编译: [javac]编译463源文件到/home/xxx/documents/eclipse/xxx/deploy/xxx/bin/classes [javac] 注意:某些输入文件使用或覆盖已弃用的 API。 [javac] 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。 [javac] 注意:一些输入文件使用未经检查或不安全的操作。 [javac] 注意:使用 -Xlint:unchecked 重新编译以获取详细信息。 [javac] 创建空的 /home/xxx/documents/eclipse/xxx/deploy/xxx/bin/classes/fr/xxx/android/socialintegration/facebook/package-info.class [echo] 创建库输出 jar 文件... 构建失败 /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:570:执行此行时出现以下错误: /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:680:执行此行时出现以下错误: /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:744: /home/xxx/documents/eclipse/xxx/deploy/xxx/src;../xxxdata/src 没有存在。

    错误的部分在于使用 source.absolute.dir 作为文件集的 jar 的构建,这对 ant 无效。

    但是我现在没有任何解决方法,我不明白为什么其他人设法让它工作...... (我也在用sdk r20)

    【讨论】:

    • 对我来说也一样。当我构建库时,src;other-src 失败,“;”也不存在或使用“:”。
    【解决方案4】:

    ; 分隔的源列表添加到您的ant.properties(不要忘记包括默认的src):

    source.dir=src-other;src
    

    以上内容适用于 Android SDK Tools Revision 20.0.3+(项目目标:Android 2.2+,API 级别:8+)。

    【讨论】:

      【解决方案5】:

      解决办法如下:

      更新您的 build.xml 以获得多个 source.dir

      https://stackoverflow.com/a/14786100/2732600

      【讨论】:

        【解决方案6】:

        至少在更高版本的构建工具中,问题在于放入此属性的值被传递到&lt;property name="source.absolute.dirs" location="source.dirs"/&gt;location 属性不知道如何处理冒号/分号分隔的路径。

        修复很简单,只需使用:

        source.absolute.dirs=src1:src2:src3
        

        等,而不是:

        source.dirs=src1:src2:src3
        

        【讨论】:

          猜你喜欢
          • 2014-09-15
          • 2011-03-15
          • 2010-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-20
          • 2014-08-20
          • 1970-01-01
          相关资源
          最近更新 更多