将classes.jar重命名为<;项目名称>;。在android ant中构建库项目时使用jar

将classes.jar重命名为<;项目名称>;。在android ant中构建库项目时使用jar,android,ant,Android,Ant,我有一个android应用程序项目A,它依赖于android库项目B。当我在Eclipse中导入这两个项目时,我注意到eclipsebuilder(可能是由于ADT插件),库项目被编译和构建为b.jar,并存储在项目b的bin\文件夹中。它在A的类路径中被引用为b.jar 但是,在使用ant构建它时,命令antdebug,库项目B被编译为classes.jar 有没有办法将这个文件重命名为.jar?我尝试在SDK build.xml中重命名它,但项目A似乎无法解析B中定义的类。此外,B的测试项目

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

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

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


谢谢,

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

重命名
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支持哪个API级别的
custom_rules.xml

在项目主管中创建一个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>

重命名jar文件名

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

out.library.jar.file=bin/b.jar
但如果project-A/ant.properties中的项目A引用了项目B,则如下所示:

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

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

您需要查看这些ant脚本的内部。答案就在这些脚本中,只有您可以访问这些脚本。可能eclipse在调用ant时提供了一个定义,这是手动编译项目时不需要做的。@Jarekczek我很确定eclipse adt包有自己的构建器,所以我认为它不会调用ant来构建这些东西。如果我错了,请纠正我。我对Android或Eclipse一无所知,但既然有脚本,也许Eclipse会使用它们。Netbeans为构建生成ant脚本。它们非常复杂,对于Ant新手来说很难理解。@Jarekczek:每个Android开发人员都可以访问Ant脚本——它们是SDK的一部分。如果你承认对Android或Eclipse一无所知,那么请不要只是瞎编。