代码之家  ›  专栏  ›  技术社区  ›  NickT

Android Ant构建在一个包含两个源文件夹的项目上

  •  8
  • NickT  · 技术社区  · 14 年前

    aidl文件 通过远程接口传递的类在 common_src

    我现在想从命令行创建一个Ant。我用这个例子成功地在所有目标上构建了一个src目录的另一个项目 build.xml 从SDK工具。它进口 ant_rules_r3.xml 自动和一次 source.dir out.dir build.properties 一切都相当无痛。

    src 普通src 文件夹,我无法建立它。首先,我将编译目标及其依赖的所有对象剪切并粘贴到 编译文件 普通src 生成属性 并将下面显示的最后一行添加到 -compile target 蚂蚁规则3.xml )进入 build xml :

      <src path="${source.absolute.dir}" />
      <src path="${gen.absolute.dir}" />
      <src path="${common_src}" /><!--ADDED-->
    

    这使它在构建过程中更进一步——它可以在common_src中找到.java文件,而不是.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文件以包含公共src,并将其传递给ant_rules_r3.xml,但我想不出一种方法。如果有人能建议怎么做,我将不胜感激。

    6 回复  |  直到 13 年前
        1
  •  16
  •   kmorey    13 年前

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

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

    我使用相对路径将src链接到其他_项目,但您应该能够使用绝对路径。如果这样做了,您可能应该将其放在local.properties中。

    根据build.properties中的注释,如果我的SDK版本<2.0,我将使用它:

    source-folder = src;../other_project/src
    
        2
  •  6
  •   NickT    14 年前

    如果有兴趣的话,我想我会回答我自己的问题,现在已经解决了。

    2) 添加了行

    <src path="${common_src}"
    

    在安装程序上方build.xml中的重写编译目标中(加上通过从ant r3.xml规则中剪切/粘贴来重写它所依赖的所有目标) 3) 在build.xml中添加了一个与“aidl”相同的新目标“aidl2”,但它有

    <source path="${common_src}" 而不是

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

    我还添加了如下行:

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

        3
  •  6
  •   mba    12 年前

    我不能发表评论,因为我没有足够的声誉,但如果添加一个源文件夹与前面的答案一致,则在以后构建jar时会失败:

    compile:
        [javac] Compiling 463 source files to /home/xxx/documents/eclipse/xxx/deploy/xxx/bin/classes
        [javac] Note: Some input files use or override a deprecated API.
        [javac] Note: Recompile with -Xlint:deprecation for details.
        [javac] Note: Some input files use unchecked or unsafe operations.
        [javac] Note: Recompile with -Xlint:unchecked for details.
        [javac] Creating empty /home/xxx/documents/eclipse/xxx/deploy/xxx/bin/classes/fr/xxx/android/socialintegration/facebook/package-info.class
         [echo] Creating library output jar file...
    
    BUILD FAILED
    /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:570: The following error occurred while executing this line:
    /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:680: The following error occurred while executing this line:
    /home/xxx/applis/android/android-sdk-linux/tools/ant/build.xml:744: /home/xxx/documents/eclipse/xxx/deploy/xxx/src;../xxxdata/src does not exist.
    

    错误的部分在jar的构建中,该jar使用source.absolute.dir作为对ant无效的filset。

    但我现在没有任何解决办法,我不明白为什么其他人会设法让它工作。。。

        4
  •  2
  •   Mirek Rusin    12 年前

    添加 ; ant.properties (不要忘记包括违约 src

    source.dir=src-other;src
    

    上面提到的Android SDK工具版本20.0.3+(项目目标:Android 2.2+,API级别:8+)。

        5
  •  0
  •   Community Anvaka    7 年前
        6
  •  0
  •   Ytai    11 年前

    至少在以后版本的生成工具上,问题是放入此属性的值将传递到 <property name="source.absolute.dirs" location="source.dirs"/> . 这个 location 属性不知道如何处理冒号/分号分隔的路径。

    source.absolute.dirs=src1:src2:src3
    

    等等,相对于:

    source.dirs=src1:src2:src3