多年来,我使用Eclipse的Ant集成来构建我的Android项目outlined by Google on this documentation page。这是我最喜欢的构建发布版本的方法,因为我可以在Eclipse中点击“运行外部工具”来启动Ant构建,并在后台运行。
最近(我相信ADT 22.0或22.1),我遇到了以下失败:
[echo] Handling Resources... [aapt] Generating resource IDs... [aapt] invalid resource directory name: C:\path\to\project\bin\res/crunch
建筑失败
C:\ Android \ android-sdk \ tools \ ant \ build.xml:653:执行此行时发生以下错误:
C:\ Android \ android-sdk \ tools \ ant \ build.xml:698:null返回:1
我不确定这是什么原因,因为AAPT似乎会生成“crunch”目录本身。我已经尝试清理我的项目并在Eclipse中禁用自动构建,但无济于事。
我也尝试在Eclipse之外执行ant release
,但这会产生同样的错误。执行ant clean release
也不起作用,因为它试图删除仍在使用Eclipse的jar。因此,我发现的唯一解决方案是:
ant clean release
这是令人难以忍受的,因为我们知道,重启Eclipse是一种巨大的痛苦。此外,所有受影响的项目都需要清理,这使整个过程需要半个小时。我已经开了issue #60496 on b.android.com,但没有听到任何官方回应。
除了咬紧牙关并切换到Android Studio之外,还有其他解决方案吗?
答案 0 :(得分:5)
答案在这里:
http://pissedoff-techie.blogspot.in/2014/07/android-build-fails-with-ant-on-eclipse.html
答案 1 :(得分:2)
同样来自https://code.google.com/p/android/issues/detail?id=60496,我刚刚删除了项目中的gen / *和bin / *以及它的引用库。它奏效了。
答案 2 :(得分:0)
我在Linux机器上遇到类似的错误。事实证明,aapt使用32位仿真库,如果由于某种原因它们失败,那么构建过程可能会在build.xml中的这个位置神秘地失败。
在我的情况下,失败的原因是CircleCI必须将其内核修补为在32位仿真API中将newly found vulnerability列入黑名单。然后,他们可以在几天内修补内核以消除漏洞。
答案 3 :(得分:0)
在OSX上我刚刚清理了项目并重建了,这对我有用。
项目>清理(选择项目名称)
答案 4 :(得分:0)
如果从命令行使用命令运行ant ' ant clean release'而不只是'释放'#。 如果您正在使用eclipse禁用autobuild删除crunch文件夹然后执行ant 更多信息 : http://pissedoff-techie.blogspot.in/2014/07/android-build-fails-with-ant-on-eclipse.html
答案 5 :(得分:0)
我尝试了这里的解决方案,例如:重启eclipse,清理项目并重建,删除crunch文件夹并再次运行ant等。运行ant脚本(从eclipse)后,似乎ADT干扰并反复生成crunch文件夹。我的解决方法就是从命令行运行ant
。最初我必须执行以下步骤来删除crunch文件夹:
Build Automatically
菜单中停用Project
选项。cruch
文件夹。ant clean release
。答案 6 :(得分:0)
您可以尝试这一行并重新构建它。
rm -fR $(find . -type d -name crunch|xargs)
答案 7 :(得分:0)
我也有同样的问题。我手动删除了库的'bin'和'gen'文件夹并尝试过。它对我有用。
答案 8 :(得分:0)
将此行添加到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>
<强>更新强>
可以通过在库项目build.xml中添加以下行来完成。
<delete dir="${out.absolute.dir}"/res/crunch />