【问题标题】:renaming classes.jar to <project_name>.jar while building a library project in android ant在 android ant 中构建库项目时将 classes.jar 重命名为 <project_name>.jar
【发布时间】:2012-10-11 17:24:30
【问题描述】:

我有一个依赖于 Android 库项目 B 的 android 应用程序项目 A。当我在 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\ 文件夹。

谢谢,

【问题讨论】:

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

标签: android ant


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    重命名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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2014-08-20
          • 2011-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-02
          • 1970-01-01
          • 1970-01-01
          • 2013-11-11
          相关资源
          最近更新 更多