Swa*_*aul 3 java ant android compilation jar
我使用ant工具构建android库项目,我需要指定多个源目录.
我试图通过在ant.properties文件中添加这些行来指定多个源目录
source.dir=src:src2
source.dir=src;src2
Run Code Online (Sandbox Code Playgroud)
但是无法在两种情况下构建,在这两种情况下都会生成.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
Run Code Online (Sandbox Code Playgroud)
custom_rules.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomRules">
<target name="-pre-build" >
<copy todir="tmp-src" >
<fileset dir="src" includes="**" />
<fileset dir="src-1" includes="**" />
<fileset dir="src-2" includes="**" />
<fileset dir="src-3" includes="**" />
<fileset dir="src-4" includes="**" />
</copy>
</target>
<target name="-post-build" >
<delete dir="tmp-src" />
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
我以棘手的方式解决了这个问题; 这里是
要在具有多个源目录的android中构建库项目,首先转到ant.properties文件(对于linux,它是build.properties)并添加source.dir
source.dir=first_source_dir ;second_source_dir ; third_source_dir
Run Code Online (Sandbox Code Playgroud)
对于lib项目,ant使用ant.properties或build.properties文件中指定的out.dir目录的目录bin/classes创建带有已编译.class文件 的jar库;
同时创造 罐子,蚂蚁删除所有的.java源文件形成所述罐,其可被包含在罐如果编码器防止任何的.java在源文件out.dir目录,并将该目录source.dir ;
我们消除这些的.java源蚂蚁转到source.dir目录用下面的命令
<property name="source.absolute.dir" location="${source.dir}" />
dir="${source.absolute.dir}"
Run Code Online (Sandbox Code Playgroud)
用这个命令蚂蚁实际上试图去目录
cd <your_project_root_dir>/first_source_dir ;second_source_dir ; third_source_dir
Run Code Online (Sandbox Code Playgroud)
哪个不存在......
解:
步骤1.首先确保源目录(source.dir)和构建目录(out.dir)不同;
步骤2.转到C:\ Program Files\Android\android-sdk\tools\ant打开build.xml 然后转到jar标签
<jar destfile="${out.library.jar.file}">
<fileset dir="${out.classes.absolute.dir}"
includes="**/*.class"
excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/Manifest.class ${project.app.package.path}/Manifest$*.class ${project.app.package.path}/BuildConfig.class"/>
<fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" />
</jar>
Run Code Online (Sandbox Code Playgroud)
现在评论或删除最后一个文件集的标签罐子标签
<jar destfile="${out.library.jar.file}">
<fileset dir="${out.classes.absolute.dir}"
includes="**/*.class"
excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/Manifest.class ${project.app.package.path}/Manifest$*.class ${project.app.package.path}/BuildConfig.class"/>
<!--fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" /-->
</jar>
Run Code Online (Sandbox Code Playgroud)
现在建立你的项目;
| 归档时间: |
|
| 查看次数: |
8400 次 |
| 最近记录: |