23

我有一个具有 Ant 构建文件的 android 项目。它通过命令行效果很好:

rascher@coltrane:~/git/$ ant
Buildfile: build.xml
    [setup] Android SDK Tools Revision 8
    [setup] Project Target: Android 2.1-update1
    [setup] API level: 7
    [setup] 

    ... etc etc etc ...

但是当我尝试在eclipse中使用这个时,build.xml有一个red-X。

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyWonderfulProject" default="help">

<project带有错误下划线:此项目中不存在默认目标帮助

似乎互联网上的其他人都有这个问题,这似乎是由于build.xml使用了来自这个构建文件导入的多个嵌套的 android 特定文件的指令。

我的工作区中有其他项目使用 Eclipse 的构建机制,因此我知道我的环境能够毫无问题地编译、运行和部署 Android 应用程序。但是这个构建文件让我很头疼。

解决方法是什么?

4

6 回答 6

13

选项1:

在 build.xml 文件中导入 Android ant 模板文件。假设您已sdk.dir定义local.properties并指向您的 Android 安装目录,请在项目元素下添加以下内容:

    <import file="${sdk.dir}/platforms/${target}/templates/android_rules.xml" />

选项 2:

要在 Eclipse ant 透视图中实际使用 Android ant 目标,上述内容将无济于事。似乎存在一些我尚未完全解决的一般级别的不兼容性,但是尽管您可以使事情以令人满意的水平工作:

  • 将项目 build.xml 作为构建器导入。项目属性 -> 构建器 -> 导入。
  • 不要使用选项 1。而是忽略有关缺少模板的警告。全局属性 -> Ant -> 编辑器 -> 问题。将 build.xml 添加到名称中。

这将对所有项目产生影响并忽略实际错误,因此它不是一个完美的解决方案。但是您可以在 Eclipse 中以及从命令行使用 Android 构建选项。

于 2011-06-01T13:12:35.467 回答
6

这并不能解决问题,但它会使 Eclipse 不再妨碍您。转到Window > Preferences > Ant > Editor,然后选择Problems选项卡。选中该ignore all buildfile problems框。

于 2011-06-02T17:43:34.887 回答
6

在 ${sdk.dir}/tools/ant/main_rules.xml 中定义了一个名为“帮助”的目标,如下所示,

<target name="help">

    <echo>Android Ant Build. Available targets:</echo>
    <echo>   help:      Displays this help.</echo>
    <echo>   clean:     Removes output files created by other targets.</echo>
    <echo>   compile:   Compiles project's .java files into .class files.</echo>
    <echo>   debug:     Builds the application and signs it with a debug key.</echo>
    <echo>   release:   Builds the application. The generated apk file must be</echo>
    <echo>              signed before it is published.</echo>
    <echo>   install:   Installs/reinstalls the debug package onto a running</echo>
    <echo>              emulator or device.</echo>
    <echo>              If the application was previously installed, the</echo>
    <echo>              signatures must match.</echo>
    <echo>   uninstall: Uninstalls the application from a running emulator or</echo>
    <echo>              device.</echo>
</target>

将此复制到您的 build.xml 中,它应该可以工作。

于 2011-10-25T08:33:06.937 回答
2

我有同样的问题,我所做的只是转到日食

Window->Preferences->Ant->Editor->Problems

并点击

Ignore All Build File Problems.
于 2012-05-01T15:01:22.723 回答
1

这不是一个真正的答案,但是对于它的价值,我能够通过从工作区中删除 eclipse 项目,删除我的项目目录中的 .* 并重新开始来解决问题。日食 FTW!

于 2011-03-18T04:45:50.053 回答
0

如果您的 build.xml 有自己的帮助目标而不是依赖于导入的帮助目标,那么您需要将该目标放在该行之前

<taskdef name="setup" classname="com.android.ant.SetupTask" classpathref="android.antlibs" />
于 2011-02-27T21:00:20.763 回答