如何将Eclipse Android项目转换为使用Ant进行构建?

39

我有一个在Eclipse中的Android项目,我想将其转换为使用Ant进行构建。

我该如何实现这一点?我已经尝试过导出Ant构建文件,但我相当确定那不会起作用(即使在运行导出文件时也不会)。我对Ant也不是很了解,因此一些解释也会有所帮助。

编辑:现在我似乎已经成功创建了所需的构建文件,但我需要添加项目库(例如admob.jar),以便被Ant识别并用于构建。因为我得到了以下错误:

        -dex:
     [echo] Converting compiled files and external libraries into C:\Users\Jason
\Documents\Programming\Android\Android SVN\trunk\GPSAlarm\BusSnooze\bin\classes.
dex...
    [apply]
    [apply] UNEXPECTED TOP-LEVEL EXCEPTION:
    [apply] com.android.dx.util.ExceptionWithContext
    [apply]     at com.android.dx.util.ExceptionWithContext.withContext(Exceptio
nWithContext.java:46)
    [apply]     at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslato
r.java:340)
    [apply]     at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.ja
va:131)
    [apply]     at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.jav
a:85)
    [apply]     at com.android.dx.command.dexer.Main.processClass(Main.java:297)

    [apply]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:
276)
    [apply]     at com.android.dx.command.dexer.Main.access$100(Main.java:56)
    [apply]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.jav
a:228)
    [apply]     at com.android.dx.cf.direct.ClassPathOpener.processArchive(Class
PathOpener.java:245)
    [apply]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPath
Opener.java:130)
    [apply]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpe
ner.java:108)
    [apply]     at com.android.dx.command.dexer.Main.processOne(Main.java:245)
    [apply]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:1
83)
    [apply]     at com.android.dx.command.dexer.Main.run(Main.java:139)
    [apply]     at com.android.dx.command.dexer.Main.main(Main.java:120)
    [apply]     at com.android.dx.command.Main.main(Main.java:87)
    [apply] Caused by: java.lang.NullPointerException
    [apply]     at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.j
ava:84)
    [apply]     at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslato
r.java:243)
    [apply]     ... 14 more
    [apply] ...while processing <init> ()V
    [apply] ...while processing com/google/android/apps/analytics/AnalyticsRecei
ver.class
    [apply]
    [apply] 1 error; aborting

你能发一下更多的错误信息吗?这里只显示了结尾部分。 - Christopher Orr
3个回答

55
在项目的基础文件夹下通过命令行运行android update project -p .,将会为 Ant 构建创建必要的build.xml和支持文件。

3
嗯,看起来我们已经取得了一些进展,但是有很多编译错误涉及到类没有实现方法等方面。虽然从Eclipse编译的代码可以完美运行和工作。 - Jason
1
与Jason遇到相同的问题,这在大多数情况下有效,但不适用于我所有的项目。 - Nathan Schwermann
它已经生成了local.properties和这个消息“build.xml:找到版本标签:custom。文件将不会被更新。” ant.properties将何时生成?我想更改那个文件。 - KK_07k11A0585

8
您可以直接从Eclipse创建Ant构建文件。从文件菜单开始:
以下是在Eclipse中为任何项目创建build.xml的步骤:
文件->导出->一般->Ant Buildfiles,然后选择要创建构建文件的所需项目。

1

虽然可能没有“将运行配置转换为Ant”功能,但您仍然可以打开运行配置并查看设置。

Android开发者网站有一个关于使用“其他IDE”的部分;在这里,他们简要介绍了如何使用Ant进行编译,如果您已经熟悉Ant的话。


是的,但他们一直在谈论的 build.xml 文件不存在。 - Jason
在“创建Android项目”步骤中,您将生成build.xml文件:http://developer.android.com/guide/developing/other-ide.html#CreatingAProject。如果您已经有一个项目,则它会做更多的事情,但是您可以这样做,然后只需获取它提供的build.xml文件并将其用作起点。 - Cheryl Simon
@Mayra 我可以在已经存在的项目上使用Android创建项目命令吗? - Jason
可能不行,但正如我所说,您可以使用它来创建一个类似的项目(相同的名称、命名空间等),然后获取相关文件(build.xml)并将它们移动到您现有的项目中。 - Cheryl Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接