在Ubuntu上出现"No command 'adb' found"错误

13

我刚拿到一台全新的Ubuntu机器,正在尝试配置Android SDK。我对Unix还比较陌生,如果有愚蠢的错误请见谅。

我按照这里的说明操作,一直到添加“Rule”文件。现在,在终端中输入adb devices会出现“未找到命令'adb'”的错误,并询问是否拼写错误。

@USER:~/android-sdk-linux/platform-tools$ ls
NOTICE.txt  adb  api  fastboot  source.properties  systrace
@USER:~/android-sdk-linux/platform-tools$ adb devices
No command 'adb' found, did you mean:
 Command 'cdb' from package 'tinycdb' (main)
 Command 'gdb' from package 'gdb' (main)
 Command 'dab' from package 'bsdgames' (universe)
 Command 'zdb' from package 'zfs-fuse' (universe)
 Command 'kdb' from package 'elektra-bin' (universe)
 Command 'tdb' from package 'tads2-dev' (multiverse)
 Command 'pdb' from package 'python' (main)
 Command 'jdb' from package 'openjdk-6-jdk' (main)
 Command 'jdb' from package 'openjdk-7-jdk' (universe)
 Command 'ab' from package 'apache2-utils' (main)
 Command 'ad' from package 'netatalk' (universe)
adb: command not found

我在 StackOverflow 上搜索了几个问题,有些人建议我使用 apt-get install ia32-libs 命令获取一些32位库。然而,我使用的是64位机器,所以不确定是否应该这样做。

我注意到另一个奇怪的问题是,即使我导航到 platform-tools 文件夹并执行 adb devices 命令,我也会收到相同的错误。所以,我可能错过了其他东西,而不是设置 PATH 条目不正确。

我尝试了来自下载页面的 ADB BUNDLE (.zip 文件) 和 SDK 工具 (.tgz 文件),并完成了上述所有步骤,但是遇到了相同的错误。

我使用的是Ubuntu 12.04 LTS。


1
当前目录不在您的 $PATH 中。 - Santa
echo $PATH 给了我这个:/usr/lib/lightdm/lightdm:/usr/local/bin:/usr/bin:/bin ---> 那么如果当前目录不在我的 PATH 中,这有什么关系呢?如果我直接进入那个目录/文件夹,'adb' 命令应该就能工作了,不是吗? - rumit patel
当您启动这样的命令时,shell 只会在 $PATH 中查找它。当前目录也不是隐式查看的。如果您想要这种行为,您需要将当前目录(.)添加到 $PATH 中。 - Santa
如果您不想操作 $PATH,另一种选择是像这样标识它:shell$ ./adb <args> - Santa
“cd到平台工具文件夹”的建议来自熟悉Windows的人。大多数明智的shell(即使是在Windows上的bash)都没有将当前目录添加到路径中,以便人们不会意外运行不该运行的东西。因此,仅仅进入该目录是不起作用的。 - Chris Stratton
另一种解决方案,也许能帮助到某些人.. https://dev59.com/6nE85IYBdhLWcg3w_Itr#26801406 - Mike Spike
5个回答

28
你所在的目录是正确的,但当前目录不在你的shell命令搜索路径中。
尝试:
./adb

同时在Google上搜索如何在bash中设置$PATH变量

在终端中键入以下命令(来自您的help.ubuntu.com URL),它将暂时将android工具目录添加到您的路径中,以供该shell/终端使用

export PATH=${PATH}:~/android-sdk-linux/tools
export PATH=${PATH}:~/android-sdk-linux/platform-tools
你现在应该能够运行adb(无需在正确的目录中或使用./adb)。
如果你将这些命令添加到你的.bashrc文件中,并开启一个新的终端/ shell,你会发现这些更改现在是永久性的。

echo $PATH 给了我这个:/usr/lib/lightdm/lightdm:/usr/local/bin:/usr/bin:/bin ---> 那么如果当前目录不在我的 PATH 中,这有什么关系呢?如果我直接从那个目录/文件夹执行 'adb' 命令,它应该可以工作,对吗?我也尝试过 './adb',但是我得到了 '没有这个文件或目录' 的错误。我已经将它们添加到了我的 PATH 中,但是即使如此也没有起作用。我在所有更改之后重新启动了我的机器,但仍然遇到了相同的问题。 - rumit patel
当前目录默认不在您的命令搜索路径 $PATH 中。您可以添加它,但这通常是一个不好的主意。 - abasterfield

21

请确保您已安装:

sudo apt-get install android-tools-adb

现在检查:

sudo adb

它将显示adb的帮助信息。

现在请关闭/启动adb。使用以下命令:

sudo adb kill-server
sudo adb start-server

最后,执行:

sudo adb devices

这应该可以工作。


1

我不确定这行代码的作用以及为什么我需要这样做(因为博客上说这是一些32位库,而我使用的是64位机器)。但似乎对我有用。

sudo apt-get install ia32-libs

当我执行这个命令时,它安装/添加了一些东西大约5分钟(真的),然后一切都正常工作了。
问候, Rumit

这将添加所需的支持库,以在64位Linux上运行32位程序。 - Chris Stratton
遇到了在 Ubuntu 的 Docker 实例中存在但未执行的 adb 相关问题。这并没有立即解决问题,但是它指引我朝着正确的方向前进! - David Doyle

0

0
在 platform-tools 文件夹中有可用的 "adb",请按照以下步骤操作:
设置 Android 变量
首先回到您的主目录并按下Ctrl + H,它将显示隐藏文件,现在查找 .bashrc 文件,使用任何文本编辑器打开它,然后在文件末尾放置以下行:
export ANDROID_HOME=/myPathSdk/android-sdk-linux export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
现在重新启动系统
它可以工作!

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