将classes.jar重命名为<;项目名称>;。在android ant中构建库项目时使用jar
我有一个android应用程序项目A,它依赖于android库项目B。当我在Eclipse中导入这两个项目时,我注意到eclipsebuilder(可能是由于ADT插件),库项目被编译和构建为将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的测试项目
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一无所知,那么请不要只是瞎编。