在eclipse中使用Android build.xml?

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目标,以上内容将无济于事.似乎有一些普遍的级别不兼容性,我还没有想到要完全解决,但为了让事情工作在一个令人满意的水平,你可以:

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

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

  • 在我的发行版中,android_rules.xml文件仅存在于android-3,4,7和8中. (3认同)

len*_*len 6

这不能解决问题,但它会让Eclipse停止阻碍你.转到Window > Preferences > Ant > Editor,然后选择Problems选项卡.选中ignore all buildfile problems复选框.


Mic*_*ang 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>
Run Code Online (Sandbox Code Playgroud)

将这个复制到您的build.xml,它应该工作.

  • 似乎工作.实际上,你只需要<target name ="help"/> (2认同)

Nic*_*ckT 0

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

<taskdef name="setup" classname="com.android.ant.SetupTask" classpathref="android.antlibs" />
Run Code Online (Sandbox Code Playgroud)