pou*_*def 23 java eclipse android build.xml
我有一个Android项目,它有一个Ant构建文件.它通过命令行很好用:
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 ...
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在eclipse中使用它时,build.xml有一个红色的X.
<?xml version="1.0" encoding="UTF-8"?>
<project name="MyWonderfulProject" default="help">
Run Code Online (Sandbox Code Playgroud)
<project带有错误的下划线:此项目中不存在默认目标帮助
看起来互联网上的其他人都有这个问题,这似乎是由于build.xml使用来自此buildfile导入的多个嵌套的特定于android的文件的指令.
我的工作区中有其他项目使用Eclipse的构建机制,所以我知道我的环境能够编译,运行和部署Android应用程序而不会出现问题.但是这个构建文件给我带来了麻烦.
修复是什么?
Tat*_*ela 13
选项1:
在build.xml文件中导入Android ant模板文件.假设您已sdk.dir定义local.properties并指向Android安装目录,请在project元素下添加以下内容:
<import file="${sdk.dir}/platforms/${target}/templates/android_rules.xml" />
Run Code Online (Sandbox Code Playgroud)
选项2:
要在Eclipse ant透视图中实际使用Android ant目标,以上内容将无济于事.似乎有一些普遍的级别不兼容性,我还没有想到要完全解决,但为了让事情工作在一个令人满意的水平,你可以:
这将对所有项目产生影响并忽略实际错误,因此它不是一个完美的解决方案.但是您可以在Eclipse中使用Android构建选项,也可以从命令行使用.
这不能解决问题,但它会让Eclipse停止阻碍你.转到Window > Preferences > Ant > Editor,然后选择Problems选项卡.选中ignore all buildfile problems复选框.
在$ {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>
Run Code Online (Sandbox Code Playgroud)
将这个复制到您的build.xml,它应该工作.
如果您的 build.xml 有自己的帮助目标而不是依赖于导入的帮助目标,那么您需要将该目标放在该行之前
<taskdef name="setup" classname="com.android.ant.SetupTask" classpathref="android.antlibs" />
Run Code Online (Sandbox Code Playgroud)