我有一个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\
文件夹。
谢谢,
答案 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中定义的符号。