Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Ant构建在Eclipse中失败_Android_Ant_Android Build - Fatal编程技术网

Android Ant构建在Eclipse中失败

Android Ant构建在Eclipse中失败,android,ant,android-build,Android,Ant,Android Build,多年来,我一直使用Ant integration For Eclipse构建我的Android项目。这是我最喜欢的构建发布版本的方法,因为我只需在Eclipse中点击“运行外部工具”即可启动Ant构建,并且它在后台运行 从最近(我相信ADT 22.0或22.1)开始,我就遇到了以下失败: 生成失败 C:\Android\Android sdk\tools\ant\build.xml:653:执行此行时发生以下错误: C:\Android\Android sdk\tools\ant\build.x

多年来,我一直使用Ant integration For Eclipse构建我的Android项目。这是我最喜欢的构建发布版本的方法,因为我只需在Eclipse中点击“运行外部工具”即可启动Ant构建,并且它在后台运行

从最近(我相信ADT 22.0或22.1)开始,我就遇到了以下失败:

生成失败
C:\Android\Android sdk\tools\ant\build.xml:653:执行此行时发生以下错误:
C:\Android\Android sdk\tools\ant\build.xml:698:null返回:1

我不确定这是什么原因,因为AAPT似乎自己生成“crunch”目录。我尝试过清理我的项目并在Eclipse中禁用自动构建功能,但没有效果

我还尝试在Eclipse之外执行
antrelease
,但这会产生相同的错误。执行
ant clean release
也不起作用,因为它试图删除Eclipse仍在使用的JAR。因此,我发现唯一可行的解决方案是:

  • 退出日食
  • 等待进程结束
  • 执行ant clean release
  • 这是非常痛苦的,因为正如我们所知,重新启动Eclipse是一件非常痛苦的事情。此外,所有受影响的项目都需要清理,这使得整个过程需要半个小时。我已经打开了,但还没有听到任何官方回应


    除了咬紧牙关切换到Android Studio之外,还有什么解决方案吗?

    我在Linux机器上也遇到过类似的错误。事实证明,aapt使用32位仿真库,如果它们由于某种原因失败,那么构建过程可能会在build.xml中的这个位置神秘地失败

       <delete dir="${out.absolute.dir}"/res/crunch />
    

    在我的例子中,失败的原因是必须在32位仿真API中将他们的内核修补到黑名单a。然后,他们能够在几天内修补内核以消除漏洞。

    在OSX上,我刚刚清理了项目并重建了它,这对我来说很有效

    Project>Clean(选择项目名称)

    另外,我刚刚删除了项目中的gen/*和bin/*及其引用库。成功了。

    答案如下:

  • 禁用自动生成
  • 删除crunch文件夹
  • 运行ant脚本
  • 重新启用自动生成

  • 如果您是从命令行运行ant,请使用命令 “ant clean release”而不仅仅是“ant release”。 如果您使用的是eclipse,请禁用autobuild,删除crunch文件夹,然后执行ant 更多信息:

    我在这里尝试了一些解决方案,例如:重新启动eclipse、清理项目并重建、删除crunch文件夹并再次运行ant等。在运行ant脚本(来自eclipse)后,ADT似乎会干扰并重复生成crunch文件夹。我的解决方法就是从命令行运行
    ant
    。最初,我必须执行以下步骤来删除crunch文件夹:

  • Project
    菜单中禁用
    buildautomatically
    选项
  • 手动删除
    cruch
    文件夹
  • 从命令行运行ant clean release

  • 嗨,试试这条线,再做一次

    rm -fR $(find . -type d -name crunch|xargs)
    

    我也有同样的问题。我手动删除了库中的“bin”和“gen”文件夹并尝试了。这对我很有用。

    将这一行添加到custom_rules.xml的顶部

    <delete dir="../YourLibraryName/bin/res/crunch"/>
    
    
    
    如果没有custom_rules.xml,请创建一个并将其放入文件中。将custom_rules.xml放在项目目录中

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project name="imported" >
    
    <delete dir="../YourLibraryName/bin/res/crunch"/>
    
    </project>
    
    
    
    更新

    可以通过在library project build.xml中添加以下行来完成

       <delete dir="${out.absolute.dir}"/res/crunch />
    
    
    
    我也看到了这一点,但仅适用于引用库项目的项目。从你提出的问题来看,对你来说似乎是一样的,尽管你在这里没有提到。你能证实这是真的吗?@NickT是的,这个项目引用了很多库项目。我已经使用Ant构建很久了,但我无法解决这个问题,没有一个解决方法可以帮我解决,所以我开始悬赏。如果关闭Eclipse为您解决了这个问题,那么关闭几个项目是否可以为您节省一些时间?只是一个想法。这不是银弹,也不是真正解决你的实际问题,AAPT问题,但至少让你省去了退出eclipse的麻烦。您可以尝试使用handle.exe(来自pstools),这样就可以删除文件锁,而无需退出eclipse。(检查)。我在使用eclipse+windows时也遇到过类似的问题,这个小工具是一个救命工具@NickT我以前用Process Explorer做过,但据我所知,强制关闭文件句柄可能非常危险,因为指针可能会被重新用于完全不同的文件,并且可能会损坏系统文件。我不知道这是否只是一个神话,但我宁愿不冒更大问题的风险。至于简单地关闭项目:不,这是同一个问题,因为Eclipse仍然保留JAR。这似乎是一个bug,因为这当然不应该发生。如果我在Eclipse中清理项目并执行
    ant release
    ,我会得到OP中描述的问题。如其他地方所述,在Windows上执行
    ant clean release
    是不够的,并且只有在禁用自动构建的情况下才能在Linux上工作。这个解决方案已经在问题和最上面的答案中提到了。问题中提到的解决方案在哪里?问题是ant clean版本不起作用。这就是它的全部。我的目的是禁用Autorebuild并从命令行使用ant。我就是这样做的,至少相关问题在文章中提到了这个解决方案。我最初发布这个问题是因为由于文件句柄的原因,这个特定的解决方案不适合Windows。我已经切换到Linux,所以我不知道文件句柄的问题是否已经解决了。我看到我很困惑,因为之前的首要答案已经被所有者删除了。