如何使 Android 的 aapt 和 adb 在没有 ia32-libs 的 64 位 Ubuntu 上工作(适用于版本 12、13 和 14)

Posted

技术标签:

【中文标题】如何使 Android 的 aapt 和 adb 在没有 ia32-libs 的 64 位 Ubuntu 上工作(适用于版本 12、13 和 14)【英文标题】:How to make Android's aapt and adb work on 64-bit Ubuntu without ia32-libs (works for versions 12, 13 and 14) 【发布时间】:2013-10-31 15:44:28 【问题描述】:

由于 Ubuntu 13.10 不再具有 ia32-libs,我无法在全新安装的 13.10 上运行我的 android 开发环境。

错误是~/android-studio/sdk/build-tools/android-4.2.2/aapt": error=2, No such file or directory

这个文件确实存在并且是可执行的,但它是一个 32 位的可执行文件。

在之前的安装中,我刚刚安装了 ia32-libs 来解决此问题,但此解决方案不再适用于 Ubuntu 13.10。

我已经尝试过 askubuntu 问题提出的解决方案,例如。这个https://askubuntu.com/questions/107230/what-happened-to-the-ia32-libs-package

但这对我不起作用。 从 askubuntu.com 的回答中,我看到我应该使用

安装单独的软件包
sudo apt-get install package:i386 

但我不知道要安装哪些软件包才能使 android 工具再次工作。

有没有其他人解决过这个问题,或者有没有人有需要为 android 工具安装的软件包列表?

【问题讨论】:

【参考方案1】:

另一种方式(不添加i386架构)...

sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
sudo apt-get install lib32z1

参考:Fix Android adb on Ubuntu 13.10 64bit

【讨论】:

这在 13.10 中可能仍然有效。但是发行版维护者不同意 Adam 关于这个解决方案的“清洁度”。毕竟 ia32-libs 只是一个临时修复,直到实现了适当的多架构支持。 E:包'lib32stdc++6'没有安装候选E:包'lib32gcc1'没有安装候选E:找不到包lib32ncurses5 请使用 Alex P. 的解决方案,这样会更好。 @Gerhard Burger:为什么? @jul 以 libc6-i386 为例。在终端中尝试apt-cache show libc6-i386,然后查找Architecture: 行。如您所见,它是 64 位包源中的 32 位二进制文​​件。现在,如果您执行apt-cache show libc6:i386,您可以看到它是 32 位包源中的 32 位二进制文​​件(您所期望的),您还可以看到 multiarch 标志,如果您要安装它,它将替换libc6-i386【参考方案2】:

虽然在当前版本的 Ubuntu (13.10) 中不需要 dpkg --add-architecture i386 命令,但在当前的 Debian 版本 (7.x) 中需要它,并且在未来的 Ubuntu 版本中也将需要它。所以我打算把它留在里面。对于 Ubuntu 13.10,请忽略它。

sudo dpkg --add-architecture i386
sudo apt-get -qqy update
sudo apt-get -qqy install libncurses5:i386 libstdc++6:i386 zlib1g:i386

更新:aapt 确实需要zlib,所以我将它添加到列表中。但是你应该不需要任何lib32 包。

【讨论】:

我需要添加 sudo apt-get install lib32stdc++6 lib32z1 才能使其正常工作。这里有一些链接,google+ thread 和 askubuntu thread【参考方案3】:

这只是给 sdk 文件必要的权限。

 sudo chmod -R +x /path/to/android-sdk-linux

重启 Android Studio 看看能否解决。

当您从 NTFS 分区复制/移动 sdk 文件或从另一台计算机复制时,通常会出现权限问题。

【讨论】:

【参考方案4】:

在 Ubuntu 14.04 LTS x64 和 buildToolsVersion 21/22 上执行以下操作就足够了:

sudo apt-get install libc6:i386 libstdc++6:i386
sudo apt-get install zlib1g:i386

我得到的错误:

Execution failed for task ':core:processReleaseResources'.
> A problem occurred starting process 'command '/home/user/androidSDK/android-sdk/build-tools/21.1.2/aapt''

【讨论】:

【参考方案5】:

安装 13.04 ia32-libs (raring ringtail)

说明:http://bisonf.wordpress.com/2013/10/19/ubuntu-13-10-how-to-properly-install-ia32-libs-and-ia32-libs-multiarch/

【讨论】:

粘贴完整的解决方案,而不是仅仅提供一个链接。 您想要发布完整解决方案的原因是您的链接可能(并且可能会在某个时候)失效,尽管它可能看起来重复。那时,您的答案毫无价值,因为它没有内容。看到这个Stack Exchange help article。

以上是关于如何使 Android 的 aapt 和 adb 在没有 ia32-libs 的 64 位 Ubuntu 上工作(适用于版本 12、13 和 14)的主要内容,如果未能解决你的问题,请参考以下文章

如何用adb shell 指令获得android当前的activity

已解决mac上appium报错:“Could not find aapt Please set the ANDROID_HOME environment variable with the And(代

什么是 AAPT(Android 资产打包工具),它是如何工作的?

学懂ADB命令和Monkey命令

adb如何使用?

aapt2 工具介绍