【问题标题】:Skip Eclipse validation of build.xml跳过 build.xml 的 Eclipse 验证
【发布时间】:2011-04-25 20:46:51
【问题描述】:

我已经按照the Android Developer Blog 中给出的步骤生成了一个 build.xml,用于为 Android 应用程序构建版本。我需要进行自定义编译,所以我已经覆盖了 ant_rules_r3.xml 的目标编译,正如生成的 build.xml 中所说的那样。

 <target name="compile" depends="-resource-src, -aidl, -pre-compile" ...

脚本工作正常并生成 apk,但问题是 Eclipse 显示错误,因为它找不到目标 -resource-src-aidl-pre-compile(在执行脚本时已加载但实际上并不存在在 build.xml 上)。由于存在这些错误,我无法在 Eclipse 中使用该项目。

如何在 Eclipse 中跳过对单个文件的验证?

【问题讨论】:

    标签: java android eclipse validation ant


    【解决方案1】:

    我不知道您是否可以对单个文件执行此操作,但我认为您可以在验证下的 eclipse 首选项中禁用验证。

    【讨论】:

    • 它不能解决问题。我已经暂停了验证部分下的所有验证器并清理了项目,但错误仍然存​​在。也许这个错误不是来自验证者。 Eclipse 将此错误称为“Ant BuildFile 问题”。
    • 这个怎么样:在首选项 ant -> 选项卡中的编辑器问题“忽略所有构建文件问题”下?如果我没记错的话,你也可以在那里设置一个特定的文件。
    • ant -> editor -> 'ignore all buildfile questions' 也对我有用。谢谢!!
    【解决方案2】:

    另一种解决方法(不如禁用所有验证/问题报告那么激烈): 转到 Window->preferences->Ant->Problems 选项卡。将“build.xml”添加到忽略列表...

    【讨论】:

    • 对我来说是 Ant -> 首选项 -> 编辑器 -> 问题选项卡
    【解决方案3】:

    Kukudas 的“忽略所有构建文件问题”的解决方案确实解决了根本问题。

    但是,Eclipse 仍会检测到 buidl.xml 已损坏,并且不允许 Ant Builders 调用该文件。事实上,Eclipse 会默默地忽略项目中的此类构建步骤,就好像不存在一样。

    【讨论】:

    • 这个ant脚本只是为了在eclipse之外构建项目。我希望eclipse忽略它,它只是Eclipse apk生成的替代品。
    • 这是我的项目中的一个问题,我正在使用 Ant 任务(在两个构建系统中)在一些预编译目标期间填充一些常量和资源。
    【解决方案4】:

    我找到了 2 个适合我的解决方案:

    1 - 来自上述 kukudas 的解决方案:

    这个怎么样:在首选项 ant -> 选项卡中的编辑器问题 “忽略所有构建文件问题”?你可以在那里设置一个特定的文件 如果我没记错的话。 – kukudas 2010 年 10 月 15 日 10:28

    虽然它有效,但此解决方案是特定于工作区的,如果用户希望对少数文件保留 Ant 验证但忽略大量文件,则可能会非常乏味。

    2 - Eclipse 似乎只在 ant 文件在编辑器中打开时才对其进行验证。因此,另一种解决方案是永远不要打开不应使用 eclipse 验证的 ant 文件。我设法通过执行文件备份-删除-恢复来消除警告。

    理想情况下,ant 验证应该像所有其他 XML 验证一样完成,因此可以在项目级别进行配置。

    【讨论】:

      【解决方案5】:

      我已经找到了一个更好的解决方案来解决 eclipse 无法从导入/包含的项目中找到构建目标的问题。 首先,升级到 r14 sdk。修订版 14 仅使用 ${sdk.dir}/tools/ant 目录中的 build.xml 文件

      在您自己的项目中的 build.xml 文件的底部,您会看到如下所示的导入语句:

      <import file="${sdk.dir}/tools/ant/build.xml"/>
      

      将此语句更改为

      <import file="${sdk.dir}/tools/ant/build.xml" as="androidbuild" />
      

      然后从你的项目中,你可以引用那些目标

      <target name="compile" depends="androidbuild.-resource-src, androidbuild.-aidl, androidbuild.-pre-compile" />
      

      还请注意,现在它们具有预编译/预构建任务,这些任务将在编译之前被调用。 (检查完整的 build.xml 以准确了解它们何时被调用)。您可以在编译之前将它们用作钩子来完成一些工作,而不会覆盖原始任务。

      【讨论】:

      • 不幸的是,这对我不起作用。本来是一个干净的解决方案。
      • 它确实有效,我已经使用这种方法一年左右没有问题了。
      • 实际上,父构建目标可能被隐藏并且无法引用。如果您使用非隐藏目标(以破折号开头,那么它肯定有效)。我必须专门对此进行测试,因为我只引用父构建文件的发布和清理目标。
      猜你喜欢
      • 1970-01-01
      • 2013-10-07
      • 2019-12-14
      • 1970-01-01
      • 2019-04-14
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多