This is what I tried:
Jaimes-MacBook-Pro:platform-tools jaimemontoya$ pwd /Users/jaimemontoya/Library/Android/sdk/platform-tools Jaimes-MacBook-Pro:platform-tools jaimemontoya$ ls NOTICE.txt deployagent.jar etc1tool make_f2fs sload_f2fs adb deploypatchgenerator.jar fastboot mke2fs source.properties api dmtracedump hprof-conv mke2fs.conf sqlite3 deployagent e2fsdroid lib64 package.xml systrace Jaimes-MacBook-Pro:platform-tools jaimemontoya$ adb shell setprop log.tag.FA VERBOSE bash: adb: command not found Jaimes-MacBook-Pro:platform-tools jaimemontoya$
I know I see
bash: adb: command not found but I am not sure if I am using the right path (
/Users/jaimemontoya/Library/Android/sdk/platform-tools). Notice how when I use
ls I see
adb listed. That is not a directory. It is a file because when I use
ls -al I see this in the permissions:
-rwxr-xr-x. That means
adb is a file, not a folder. Otherwise, it should be
drwxr-xr-x but what I see is
-rwxr-xr-x. Any hints to help me confirm whether or not I have
adb installed on my macOS, and how to invoke it from the command line?
Following Ashok Chaudhari’s advice in his comment, from Android Studio I went to Tools > SDK Manager > Appearance & Behavior > System Settings > Android SDK, and then I see Android SDK Location: /Users/jaimemontoya/Library/Android/sdk. I assumed that
adb could be found in that location and I did this:
Jaimes-MacBook-Pro:platform-tools jaimemontoya$ pwd /Users/jaimemontoya/Library/Android/sdk/platform-tools Jaimes-MacBook-Pro:platform-tools jaimemontoya$ ls -al total 30704 drwxr-xr-x 22 jaimemontoya staff 704 Jun 17 2019 . drwxr-xr-x 16 jaimemontoya staff 512 Jun 17 2019 .. -rw-r--r-- 1 jaimemontoya staff 295786 Jun 17 2019 NOTICE.txt -rwxr-xr-x 1 jaimemontoya staff 2512560 Jun 17 2019 adb drwxr-xr-x 4 jaimemontoya staff 128 Jun 17 2019 api -rwxr-xr-x 1 jaimemontoya staff 140 Jun 17 2019 deployagent -rw-r--r-- 1 jaimemontoya staff 1023085 Jun 17 2019 deployagent.jar -rw-r--r-- 1 jaimemontoya staff 4388350 Jun 17 2019 deploypatchgenerator.jar -rwxr-xr-x 1 jaimemontoya staff 60544 Jun 17 2019 dmtracedump -rwxr-xr-x 1 jaimemontoya staff 1525380 Jun 17 2019 e2fsdroid -rwxr-xr-x 1 jaimemontoya staff 305772 Jun 17 2019 etc1tool -rwxr-xr-x 1 jaimemontoya staff 1785328 Jun 17 2019 fastboot -rwxr-xr-x 1 jaimemontoya staff 17480 Jun 17 2019 hprof-conv drwxr-xr-x 3 jaimemontoya staff 96 Jun 17 2019 lib64 -rwxr-xr-x 1 jaimemontoya staff 172332 Jun 17 2019 make_f2fs -rwxr-xr-x 1 jaimemontoya staff 759196 Jun 17 2019 mke2fs -rwxr-xr-x 1 jaimemontoya staff 1170 Jun 17 2019 mke2fs.conf -rw-r--r-- 1 jaimemontoya staff 17783 Jun 17 2019 package.xml -rwxr-xr-x 1 jaimemontoya staff 1446264 Jun 17 2019 sload_f2fs -rw-r--r-- 1 jaimemontoya staff 38 Jun 17 2019 source.properties -rwxr-xr-x 1 jaimemontoya staff 1366388 Jun 17 2019 sqlite3 drwxr-xr-x 6 jaimemontoya staff 192 Jun 17 2019 systrace Jaimes-MacBook-Pro:platform-tools jaimemontoya$ adb -bash: adb: command not found Jaimes-MacBook-Pro:platform-tools jaimemontoya$
Notice how I still get the same message:
-bash: adb: command not found. That is weird to me because
adb seems to be there.
Following again Ashok Chaudhari’s advice in his comment, now it works for me using
./adb! Thank you.
Jaimes-MacBook-Pro:platform-tools jaimemontoya$ ./adb Android Debug Bridge version 1.0.41 Version 29.0.1-5644136 Installed as /Users/jaimemontoya/Library/Android/sdk/platform-tools/./adb global options: -a listen on all network interfaces, not just localhost -d use USB device (error if multiple devices connected) -e use TCP/IP device (error if multiple TCP/IP devices available) -s SERIAL use device with given serial (overrides $ANDROID_SERIAL) -t ID use device with given transport id -H name of adb server host [default=localhost] -P port of adb server [default=5037] -L SOCKET listen on given socket for adb server [default=tcp:localhost:5037] general commands: devices [-l] list connected devices (-l for long output) help show this help message version show version num networking: connect HOST[:PORT] connect to a device via TCP/IP [default port=5555] disconnect [HOST[:PORT]] disconnect from given TCP/IP device [default port=5555], or all forward --list list all forward socket connections forward [--no-rebind] LOCAL REMOTE forward socket connection using: tcp:<port> (<local> may be "tcp:0" to pick any open port) localabstract:<unix domain socket name> localreserved:<unix domain socket name> localfilesystem:<unix domain socket name> dev:<character device name> jdwp:<process pid> (remote only) forward --remove LOCAL remove specific forward socket connection forward --remove-all remove all forward socket connections ppp TTY [PARAMETER...] run PPP over USB reverse --list list all reverse socket connections from device reverse [--no-rebind] REMOTE LOCAL reverse socket connection using: tcp:<port> (<remote> may be "tcp:0" to pick any open port) localabstract:<unix domain socket name> localreserved:<unix domain socket name> localfilesystem:<unix domain socket name> reverse --remove REMOTE remove specific reverse socket connection reverse --remove-all remove all reverse socket connections from device file transfer: push [--sync] LOCAL... REMOTE copy local files/directories to device --sync: only push files that are newer on the host than the device pull [-a] REMOTE... LOCAL copy files/dirs from device -a: preserve file timestamp and mode sync [all|data|odm|oem|product_services|product|system|vendor] sync a local build from $ANDROID_PRODUCT_OUT to the device (default all) -l: list but don't copy shell: shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...] run remote shell command (interactive shell if no command given) -e: choose escape character, or "none"; default '~' -n: don't read from stdin -T: disable PTY allocation -t: force PTY allocation -x: disable remote exit codes and stdout/stderr separation emu COMMAND run emulator console command app installation (see also `adb shell cmd package help`): install [-lrtsdg] [--instant] PACKAGE push a single package to the device and install it install-multiple [-lrtsdpg] [--instant] PACKAGE... push multiple APKs to the device for a single package and install them install-multi-package [-lrtsdpg] [--instant] PACKAGE... push one or more packages to the device and install them atomically -r: replace existing application -t: allow test packages -d: allow version code downgrade (debuggable packages only) -p: partial application install (install-multiple only) -g: grant all runtime permissions --instant: cause the app to be installed as an ephemeral install app --no-streaming: always push APK to device and invoke Package Manager as separate steps --streaming: force streaming APK directly into Package Manager --fastdeploy: use fast deploy --no-fastdeploy: prevent use of fast deploy --force-agent: force update of deployment agent when using fast deploy --date-check-agent: update deployment agent when local version is newer and using fast deploy --version-check-agent: update deployment agent when local version has different version code and using fast deploy --local-agent: locate agent files from local source build (instead of SDK location) uninstall [-k] PACKAGE remove this app package from the device '-k': keep the data and cache directories debugging: bugreport [PATH] write bugreport to given PATH [default=bugreport.zip]; if PATH is a directory, the bug report is saved in that directory. devices that don't support zipped bug reports output to stdout. jdwp list pids of processes hosting a JDWP transport logcat show device log (logcat --help for more) security: disable-verity disable dm-verity checking on userdebug builds enable-verity re-enable dm-verity checking on userdebug builds keygen FILE generate adb public/private key; private key stored in FILE, scripting: wait-for[-TRANSPORT]-STATE wait for device to be in the given state STATE: device, recovery, rescue, sideload, bootloader, or disconnect TRANSPORT: usb, local, or any [default=any] get-state print offline | bootloader | device get-serialno print <serial-number> get-devpath print <device-path> remount [-R] remount partitions read-write. if a reboot is required, -R will will automatically reboot the device. reboot [bootloader|recovery|sideload|sideload-auto-reboot] reboot the device; defaults to booting system image but supports bootloader and recovery too. sideload reboots into recovery and automatically starts sideload mode, sideload-auto-reboot is the same but reboots after sideloading. sideload OTAPACKAGE sideload the given full OTA package root restart adbd with root permissions unroot restart adbd without root permissions usb restart adbd listening on USB tcpip PORT restart adbd listening on TCP on PORT internal debugging: start-server ensure that there is a server running kill-server kill the server if it is running reconnect kick connection from host side to force reconnect reconnect device kick connection from device side to force reconnect reconnect offline reset offline/unauthorized devices to force reconnect environment variables: $ADB_TRACE comma-separated list of debug info to log: all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp $ADB_VENDOR_KEYS colon-separated list of keys (files or directories) $ANDROID_SERIAL serial number to connect to (see -s) $ANDROID_LOG_TAGS tags to be used by logcat (see logcat --help) $ADB_LOCAL_TRANSPORT_MAX_PORT max emulator scan port (default 5585, 16 emus) Jaimes-MacBook-Pro:platform-tools jaimemontoya$
You can check the path by going to Tools -> SDK Manager and looking at Android SDK Location. Generally, the adb is present under the platform-tools folder present under this Android SDK Location.
At that location you need to execute
Else you can also export that platform-tools path to access adb from anywhere, as follow:
echo 'export PATH=$PATH:~/.android-sdk-macosx/platform-tools/' >> ~/.bash_profile source ~/.bash_profile
and then restart the terminal to access adb from anywhere.