Android Ant构建在Eclipse中失败
多年来,我一直使用Ant integration For Eclipse构建我的Android项目。这是我最喜欢的构建发布版本的方法,因为我只需在Eclipse中点击“运行外部工具”即可启动Ant构建,并且它在后台运行 从最近(我相信ADT 22.0或22.1)开始,我就遇到了以下失败: 生成失败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
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。因此,我发现唯一可行的解决方案是:
除了咬紧牙关切换到Android Studio之外,还有什么解决方案吗?我在Linux机器上也遇到过类似的错误。事实证明,aapt使用32位仿真库,如果它们由于某种原因失败,那么构建过程可能会在build.xml中的这个位置神秘地失败
<delete dir="${out.absolute.dir}"/res/crunch />
在我的例子中,失败的原因是必须在32位仿真API中将他们的内核修补到黑名单a。然后,他们能够在几天内修补内核以消除漏洞。在OSX上,我刚刚清理了项目并重建了它,这对我来说很有效 Project>Clean(选择项目名称)另外,我刚刚删除了项目中的gen/*和bin/*及其引用库。成功了。答案如下:
如果您是从命令行运行ant,请使用命令 “ant clean release”而不仅仅是“ant release”。 如果您使用的是eclipse,请禁用autobuild,删除crunch文件夹,然后执行ant 更多信息:
我在这里尝试了一些解决方案,例如:重新启动eclipse、清理项目并重建、删除crunch文件夹并再次运行ant等。在运行ant脚本(来自eclipse)后,ADT似乎会干扰并重复生成crunch文件夹。我的解决方法就是从命令行运行
ant
。最初,我必须执行以下步骤来删除crunch文件夹:
Project
菜单中禁用buildautomatically
选项cruch
文件夹嗨,试试这条线,再做一次
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,所以我不知道文件句柄的问题是否已经解决了。我看到我很困惑,因为之前的首要答案已经被所有者删除了。