$ sudo apt-get install android-tools-adb android-tools-fastbootBut, in recent months, I have encountered instances where the adb and fastboot binaries in the Ubuntu repository are out of date for the device with which I am attempting to connect.
$ apt-cache show android-tools-adb
Maintainer: Ubuntu Developers
Original-Maintainer: Laszlo Boszormenyi (GCS)
Depends: libc6 (>= 2.15), libssl1.0.0 (>= 1.0.0), zlib1g (>= 1:1.1.4)
$ adb version
Android Debug Bridge version 1.0.31
Android Software Development Kit
There is another way to install adb: the Android Software Development kit. There is an issue, though. The development kit software is 32-bit, and modern computer systems run 64-bit operating systems. So, one needs a way to install 32-bit libraries in 64-bit Linux to support 32-bit applications.
The Android SDK can be found here. However, before you start downloading the Android Studio displayed prominently at the top of the page, consider that Studio is large collection of software for developing Android applications. Forensically speaking, it is overkill, and fortunately, there is an alternative download that servers our purpose better: SDK Tools Only.
I prefer to install tools not found in the Ubuntu repository in the /opt directory. After I download the SDK, I decompress the archive:
$ sudo tar xf Downloads/android-sdk_r24.3.4-linux.tgz -C /optThe next step in installation is to execute the Android SDK Manager. Note: You will need java installed (java-common package) to run the application.
$ /opt/android-sdk-linux/tools/androidThe only component needed to successfully run adb and fastboot are the Android SDK tools (already installed) and Android SDK Platform-tools. Check the later and go through the installation process. Exit the manager when you are done.
Installing 32-bit Support in 64-bit Ubuntu
The adb and fastboot executable binaries are located in the platform-tools folder of the SDK. However, if you try to execute the tools, you will get and error stating the that the command is not found, even though you see the tools in the directory, with proper permissions for execution, too!
$ cd /opt/android-sdk-linux/platform-tools
$ ./adb versionConfusing? You bet. The issue is that you are trying to execute a 32-bit application in a 64-bit-only operating system. There is no 32-bit support installed in Ubuntu by default. But we can solve that:
bash: ./adb: No such file or directory
$ ls -l adb
-rwxr-xr-x 1 root root 1221540 Aug 25 13:05 adb
$ sudo dpkg --add-architecture i386The specific libraries to support the SDK are installed as follows:
$ sudo apt-get update
$ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386And, voila! The latest SDK binary tools installed.
$ ./adb version
Android Debug Bridge version 1.0.32
There are two simple ways to gain access to the SDK platform tools: link files or path modification. Link files are placed in a location that is part of your system path already, and path modification places the platform tools directory in your path. Which is best? Welcome to freedom, friend, it's your choice.
Link filesLink files are found in all modern operating systems, so I won't bother explaining them. First, you need to know what directories are in your path so you know where to put the links:
$ echo $PATHMost packages you install place their executable binaries in /usr/bin and /usr/sbin, depending on the need for administrative privileges. Most software built and installed by the user are placed in the /usr/local/bin and /usr/locals/sbin folders. Since we are installing the software, and it does not require admin rights to execute, /usr/local/bin is a good choice.
To create link files in Linux (symlinks are preferred for this type of operation), do the following:
$ ln -s /opt/android-sdk-linux/platform-tools/adb /usr/local/binNote: you will have a lot more success with link files if you get in the habit of using absolute paths. There is a place for relative paths, but this is not it.
$ ln -s /opt/android-sdk-linux/platform-tools/fastboot /usr/local/bin
Modifying the PATHThe PATH system variable maintains the list of directories searched by the system for commands. When you, as a user, type a command without it's full path, the list of directories in the PATH variable are queried for the command. If the command is not located, an error results. To place the adb and fastboot binaries into the path, we need to add the folder containing them to the PATH variable.
It is possible to modify the path, both temporarily and permanently. For example:
$ echo $PATHThe problem about illustrates that we have to be careful setting the path. By setting the path to /opt/android-sdk-linux/platform-tools, we removed the directories previously stored there. The method used, however, is only a temporary change to the PATH variable. The path can be reset by restarting the terminal window, or by resetting the PATH variable to its original contents:
$ echo $PATH
Command 'which' is available in the following places
The command could not be located because '/bin:/usr/bin' is not included in the PATH environment variable.
which: command not found
$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesTo make the change permanent, and to append to but not replace the contents of the PATH variable, we should add the following to our ~/.bashrc file (if your installation does not have the file, create it):
export PATH="$PATH:/opt/android-sdk-linux/platform-tools"It is not necessary to have quotes in the statement above if there are no spaces in the path, but it is the safest way to execute the statement. By placing this statement in .bashrc, the PATH variable will be expanded, have the platform-tools folder appended, and then the value will be reassigned to the PATH variable. This will happen each time a new terminal session starts.