如何为Android库项目指定多个源目录

我使用ant工具构建android库项目,我需要指定多个源目录。

我试图通过在ant.properties文件中添加这些行来指定多个源目录

source.dir=src:src2 source.dir=src;src2 

但无法在两种情况下构建,在这两种情况下都会生成.class ,但是在创建jar文件时我遇到了这个错误

BUILD FAILED

C:\Program Files\Android\android-sdk\tools\ant\build.xml:681: The following error occurred while executing this line:

C:\Program Files\Android\android-sdk\tools\ant\build.xml:749:

C:\workarea\Android\Packages\test\src;src2 does not exist.

任何人都可以告诉我如何在ant.properties中指定多个源目录来构建Android库项目

在没有修改SDK文件的情况下,这对我有用:

ant.properties:

 source.absolute.dir = tmp-src 

custom_rules.xml:

                

我以棘手的方式解决了这个问题; 这里是

要在android中使用多个源目录构建库项目,首先转到ant.properties文件(对于linux,它是build.properties )并添加source.dir

  source.dir=first_source_dir ;second_source_dir ; third_source_dir 

对于lib项目, ant使用ant.propertiesbuild.properties文件中指定的out.dir目录的目录bin / classes创建带有已编译.class文件的jar库;

在创建jar时ant会从jar中删除所有.java源文件,如果编码器将任何.java源文件保存在out.dir目录中,则可以将其包含在jar中,并在source.dir中指定该目录。

现在要删除那些.java源代码,使用以下命令转到source.dir目录

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

用这个命令ant实际上试图去目录

 cd /first_source_dir ;second_source_dir ; third_source_dir 

哪个不存在……

解:

步骤1.首先确保源目录 (source.dir)和构建目录 (out.dir)不同;

步骤2.转到C:\ Program Files \ Android \ android-sdk \ tools \ ant打开build.xml然后转到jar标签

      

现在注释或删除jar标签中的最后一个fileset标签

      

现在建立你的项目;

  1. 在项目目录中创建一个目录(比如build_src)。
  2. 进入那个目录(cd build_src)
  3. 在build_src中创建软链接(ln -s TARGET linkname)到你想要包含的所有源目录,例如:如果你的原始问题是包括src1,src2和标准的src dir,那么创建src1,src2软链接到build_src下的那些
  4. 使用source.dir = build_src创建ant.properties

这对我来说很好,我认为是最干净的方法(因为那些是实际来源的软链接,你没有多个来源副本)

  1. 我的一个项目有.aidl文件和AIDL抱怨。 我创建了与src / com的软链接并修复了问题,而不是创建到src的软链接。

至少在构建工具的更高版本上,问题是放入此属性的值将传递到location属性不知道如何处理冒号/分号分隔的路径。

修复非常简单,只需使用:

 source.absolute.dirs=src1:src2:src3 

等,而不是:

 source.dirs=src1:src2:src3