我有一个具有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
有一个红色的X。
<?xml version="1.0" encoding="UTF-8"?>
<project name="MyWonderfulProject" default="help">
带有错误的 <project
带有下划线:此项目中不存在默认目标帮助
似乎互联网上的其他人都有这个问题,而且似乎是因为build.xml
正在使用来自此构建文件导入的多个嵌套的特定于android的文件的指令。
我的工作区中有其他项目使用Eclipse的构建机制,所以我知道我的环境能够编译,运行和部署Android应用程序而不会出现问题。但是这个构建文件给我带来了麻烦。
修复是什么?
答案 0 :(得分: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目标,以上内容将无济于事。似乎有一些普遍的级别不兼容性,我还没有想到要完全解决,但是为了让事情工作在令人满意的水平,尽管你可以:
这将对所有项目产生影响并忽略实际错误,因此它不是一个完美的解决方案。但是您可以在Eclipse中使用Android构建选项,也可以从命令行使用。
答案 1 :(得分:6)
在$ {sdk.dir} /tools/ant/main_rules.xml中定义了一个名为'help'的目标,如下所示,
<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中,它应该可以正常工作。
答案 2 :(得分:5)
这不能解决问题,但它会让Eclipse停止阻碍你。转到Window > Preferences > Ant > Editor
,然后选择Problems
标签。检查ignore all buildfile problems
框。
答案 3 :(得分:2)
我有同样的问题,我所做的只是转向日食
Window->Preferences->Ant->Editor->Problems
然后点击
Ignore All Build File Problems.
答案 4 :(得分:1)
这不是一个真正的答案,但是对于它的价值,我能够通过从工作区中删除eclipse项目,在我的项目目录中删除。*并重新开始来解决问题。 Eclipse FTW!
答案 5 :(得分:0)
如果您的build.xml有自己的帮助目标而不是依赖导入的目标,那么您需要将该目标放在行之前
<taskdef name="setup" classname="com.android.ant.SetupTask" classpathref="android.antlibs" />