在android ant </project_name>中构建库项目时,将classes.jar重命名为<project_name> .jar

时间:2012-10-21 21:21:52

标签: android ant

我有一个Android应用程序项目A依赖于Android库项目B.当我在Eclipse中导入这两个项目时,我注意到Eclipse Builder(可能是由于ADT插件),库项目被编译并构建为b.jar并存储在项目B的bin\文件夹中。它在A的类路径中被引用为b.jar。

但是,在使用ant ant debug命令构建它时,库项目B编译为classes.jar

有没有办法将此文件重命名为.jar?我尝试在SDK build.xml中重命名它,但是项目A似乎没有解决B中定义的类。此外,B的测试项目失败,因为Android dex编译器试图搜索文件classes.jar里面图书馆项目的bin\文件夹。

谢谢,

4 个答案:

答案 0 :(得分:4)

在项目主管中创建custom_rules.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules">
    <target name="-post-compile">
    <echo level="info">Renaming jar filename</echo>
    <move file="${out.library.jar.file}"tofile="${out.absolute.dir}/${ant.project.name}.jar"/>
    </target>
</project>

答案 1 :(得分:1)

重命名jar文件的一种方法是向项目添加custom_rules.xml文件,并覆盖正确的属性:

<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules">

  <property name="out.library.jar.file" location="bin/b.jar" />

</project>

如果您在SDK build.xml中查找此媒体资源名称,您就会明白为何会这样做。

注意:我没有检查Android支持custom_rules.xml的API级别。

答案 2 :(得分:0)

我在库项目中添加了一个额外的构建器: / bin / cp bin / classes.jar bin / $ {project_name} .jar

答案 3 :(得分:0)

最简单的方法是在ant.properties中添加一行:

out.library.jar.file=bin/b.jar

但是如果项目A在项目A / ant.properties中被项目A引用,例如:

android.library.reference.1=/path/to/project-B

然后编译器可能会抱怨它无法找到项目B中定义的符号。