如何为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.properties或build.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标签
现在建立你的项目;
- 在项目目录中创建一个目录(比如build_src)。
- 进入那个目录(cd build_src)
- 在build_src中创建软链接(ln -s TARGET linkname)到你想要包含的所有源目录,例如:如果你的原始问题是包括src1,src2和标准的src dir,那么创建src1,src2软链接到build_src下的那些
- 使用source.dir = build_src创建ant.properties
这对我来说很好,我认为是最干净的方法(因为那些是实际来源的软链接,你没有多个来源副本)
- 我的一个项目有.aidl文件和AIDL抱怨。 我创建了与src / com的软链接并修复了问题,而不是创建到src的软链接。
至少在构建工具的更高版本上,问题是放入此属性的值将传递到
。 location
属性不知道如何处理冒号/分号分隔的路径。
修复非常简单,只需使用:
source.absolute.dirs=src1:src2:src3
等,而不是:
source.dirs=src1:src2:src3