Android Hello-World编译错误:Intellij找不到aapt

90

我正在尝试在Ubuntu 12.04中使用IntelliJ建立Android开发环境。我创建了一个Android应用程序模块,但是在尝试构建时,出现以下错误:

android-apt-compiler: 无法运行程序"/home/jon/Programs/android-sdk-linux/platform-tools/aapt":java.io.IOException: error=2,没有那个文件或目录

在网上搜寻几个小时后,问题仍未解决。

顺便说一下,我在终端中运行了locate aapt,并找到aapt的位置在/home/jon/Programs/android-sdk-linux/build-tools/17.0.0/aapt


好的,谢谢大家给出的所有答案!我切换到了Android Studio分支,并且它运行得很好。但我认为其他关于符号链接或android-maven-plugin的解决方案可能更适合其他IntelliJ用户。我想这个问题将在不久的将来通过更新得到解决... - jonS90
13个回答

130

看起来最新的r22 SDK版本将aapt和lib jar从platform-tools移动到了build-tools目录。在等待JetBrains发布更新期间,这里有一个快速解决方案,使用几个符号链接:

从您的AndroidSDK/platform-tools目录运行以下命令:

ln -s ../build-tools/17.0.0/aapt aapt
ln -s ../build-tools/17.0.0/lib lib

...而且IntelliJ应该能够正常编译。


21
你好,对我来说也非常完美。只是提供信息:我在 Windows 上运行 Intellij,你可以使用管理员权限打开 DOS 提示符,并运行以下命令: mklink D:\Android\android-sdk\platform-tools\aapt.exe D:\Android\android-sdk\build-tools\17.0.0\aapt.exemklink /D D:\Android\android-sdk\platform-tools\lib D:\Android\android-sdk\build-tools\17.0.0\lib - Francesco Pez
还必须添加: ln -s ../build-tools/17.0.0/aidl aidl - xaviert
3
如果你收到此消息并且直接执行aapt时也显示找不到文件,那么可能存在64位问题:链接 - Tomas
@FrancescoPez 在XP或使用fat32系统中无法工作。对于WinXP:http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html - Yet Another User
对于像Francesco Pez提到的Windows 64位用户,关于带有空格的路径只需提示:将两个路径都放在引号中,例如mklink "C:\Program Files\androidsdk\sdk\platform-tools\aapt.exe" "C:\Program Files\androidsdk\sdk\build-tools\android-4.3\aapt.exe" - syr

21

通过使用Beta版本作为更新通道,将您的IntelliJ升级到12.1.4。 在此输入图片描述


2
这样做可以解决问题,不过我必须选择“EARLY RELEASES”,那里显示了.4更新版本,然后重启后我得到了3.x,但我拒绝了它。(Mac OS X 10.8.x) - Martin Marconcini

12

在Windows系统中,只需将aapt.exelib\dx.jardx.batbuild-tools\android-4.2.2复制到platform-tools即可。


10

我在使用Android Studio时遇到了同样的问题,但这个问题可能也适用于IntelliJ IDE。

然而,在检查文件位置时,我发现aapt在预期位置上。

在我的情况下,问题是我运行的是64位Ubuntu Linux系统,无法执行32位的aapt可执行文件。

在我的情况下,安装32位兼容性库解决了这个问题:sudo apt-get install ia32-libs


似乎在Ubuntu 13.10及以上版本中已不再提供ia32-libs - Chad Bingham
deb http://archive.ubuntu.com/ubuntu/ raring main restricted universe multiverse 添加到 /etc/sources.list,然后执行 sudo apt-get updatesudo apt-get install ia32-libs - Mendhak

6
我用以下两行命令解决了这个问题。
ln -s ~/Programs/android-sdk-linux/build-tools/17.0.0/aapt ~/Programs/android-sdk-linux/platform-tools/aapt
ln -s ~/Programs/android-sdk-linux/build-tools/17.0.0/lib ~/Programs/android-sdk-linux/platform-tools/lib

3
我也注意到了这个问题。
ADT 已经更新,他们添加了新的构建工具,并将所有东西都移动了。 Intellijidea 没有更新路径,因此它在旧路径中搜索 aapt。
我不知道如何解决这个问题,所以如果你找到解决方案,请告诉我...
更新:
我认为你只有两个选择:
1)使用 Android Build Studio:http://developer.android.com/sdk/installing/studio.html 2)复制(这很“脏”但是有效)build-tools/17.0.0/ 中的所有内容到 platform-tools/,这样就可以构建了。

啊,更新问题。好的,我刚刚发现谷歌发布了Android Studio,这是Intellij的一个_fork_。也许谷歌希望人们转向Android Studio而不是更新Intellij? - jonS90
是的,他们发布了它(看一下昨天的Google I/O主题演讲)。基本上是JideaCommunity + 更专注于Android。然后它将与JideaPro合并(我希望如此)。 - StErMi
2
这并不是真正的分支,它是基于早期访问计划构建的。一旦该 EAP 构建成为主流 IntelliJ,它将具有与 Android Studio 相同的功能。 - powerj1984

2
感谢您的提示!在运行Android 4.2.2 SDK的Mac上,这个方法非常有效。您只需要根据情况更新路径即可。例如: ln -s ../build-tools/android-4.2.2/lib lib ln -s ../build-tools/android-4.2.2/aapt aapt

2

1
我遇到了一个问题,但是是与android-maven-plugin相关的。和您提到的第二种情况类似,我没有复制文件,而是为aapt创建了一个符号链接/软链接。
cd platform-tools
ln -s ../build-tools/17.0.0/aapt ./

这种方法似乎使得我的所有构建都正常运行了。

1

在GitHub上克隆android-maven-plugin并将其安装到您的存储库中

git clone https://github.com/jayway/maven-android-plugin.git
cd .../maven-android-plugin/
mvn clean install

然后更新您的pom文件以使用插件版本3.5.4-SNAPSHOT。 一切应该正常工作!


请注意,这将修复Maven构建,但不会修复IntelliJ构建。为此,符号链接解决方法应该有所帮助,直到IntelliJ进行修复。 - Andy Dennie
你应该能够在IntelliJ配置中找到android-maven-plugin版本。 - avianey
内置的IntelliJ构建系统不使用android-maven-plugin。为了使其工作,您需要进行符号链接。如果您执行符号链接,则不需要更新到android-maven-plugin的最新快照;链接将修复IntelliJ构建和非最新版本的android-maven-plugin。 - Andy Dennie
是的,我有一个Windows环境。以管理员身份启动DOS窗口,然后使用mklink命令。进入platform-tools,然后为aapt.exe、aidl.exe、dexdump.exe、dx.bat和lib\dx.jar创建链接,链接到build-tools\17.0.0和build-tools\17.0.0\lib中的对应文件。注意:您需要在platform-tools下创建lib子文件夹。 - Andy Dennie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接