Jacek Kwiecień
Jacek Kwiecień

Reputation: 12659

Setting ANDROID_HOME enviromental variable on Mac OS X

Could anybody post a working solution for setting ANDROID_HOME via the terminal?

My path to the Android-SDK is /Applications/ADT/sdk.

Upvotes: 350

Views: 526399

Answers (14)

tricknology
tricknology

Reputation: 1148

Paying it forward for the next lazy / time-crunched person.

I wanted to be lazy and find a Bash script here; there wasn't. So I decided it was time to learn and now here it is.

#! /bin/bash

# This script will download the Android command line toools to a path of your choosing.
#
# Syntax  : <cmd> <zip> <path>
#
# Example : run with ./get-cli.sh commandlinetools-mac-8512546_latest.zip /usr/local/android
#
# For the latest .zip matching your system visi:
#
#   https://developer.android.com/studio#command-tools 
#
# Note: supplying no args will default to the example
# 
# Respectfully,
#   -Tricknology
#

# command-line-tools zip
cmd_line_tools=$1

# directory to add it to 
android_home_dir=$2

# use defaults if none specified
if [[ cmd_line_tools=="" ]]; then
    #default to aarch64
    cmd_line_tools='commandlinetools-mac-8512546_latest.zip'
fi

if [[ android_home_dir=="" ]]; then
    #statements
    android_home_dir='/usr/local/android'
fi

url=https://dl.google.com/android/repository/"$cmd_line_tools"

###############  gist #########################
# create dir /usr/local/android
# sudo mkdir /usr/local/android

## move tools to usr/local/
# sudo mv cmdline-tools /usr/local/android/sdk

## Set environment variables for Android SDK
# export ANDROID_SDK_ROOT=/usr/local/android/sdk
# export ANDROID_HOME=$ANDROID_SDK_ROOT

## Insert executable file paths in PATH
# export PATH=$PATH:$ANDROID_HOME/bin
# export PATH=$PATH:$ANDROID_HOME/tools
# export PATH=$PATH:$ANDROID_HOME/tools/bin
# export PATH=$PATH:$ANDROID_HOME/platform-tools
################ end gist #######################

# Create directory 
# going to ask for password to create this
echo
echo "-----------------------------------------------------"
echo creating directories
echo "-----------------------------------------------------"
echo
    [[ -f "$cmd_line_tools" ]] && { 
        echo creatig dir:  $android_home_dir; 
            sudo mkdir $android_home_dir;
        } || echo $android_home_dir exists;
echo
echo "-----------------------------------------------------"
echo downloading from: $url
echo               to: $android_home_dir
echo "-----------------------------------------------------"
     curl $url --output $cmd_line_tools
echo 
echo done
echo unzipping       : $cmd_line_tools
    unzip $cmd_line_tools
echo done
echo 
echo moving to       : "$android_home_dir"/sdk

    [ -d "$android_home_dir"/sdk ] &&
    {   echo "$android_home_dir"/sdk already exists!;
        echo cleaning up : $cmd_line_tools;
            sudo rm $cmd_line_tools;
        echo cleaning up : cmdline-tools;
            sudo rm -rf "cmdline-tools";
        echo exiting!;
        exit -1;
    };
    sudo mv cmdline-tools "$android_home_dir"/sdk
echo
echo done
echo "-----------------------------------------------------"
echo " Setting Environment Variables (Global)"
echo "-----------------------------------------------------"
echo
    echo setting ANDROID_SDK_ROOT=$android_home_dir/sdk
        export ANDROID_SDK_ROOT=$android_home_dir/sdk
        echo $(export ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT)
    echo setting ANDROID_HOME=$ANDROID_SDK_ROOT
        export ANDROID_HOME=$ANDROID_SDK_ROOT
        echo $(export ANDROID_HOME=$ANDROID_HOME)
echo
echo "-----------------------------------------------------"
echo current path: $PATH
echo "-----------------------------------------------------"
echo
    ah_bin=$ANDROID_HOME/bin
    ah_tools=$ANDROID_HOME/tools
    ah_tools_bin=$ANDROID_HOME/tools/bin
    ah_plat_tools=$ANDROID_HOME/platform-tools
    [ $(grep -q "$PATH" $ah_bin) ]         && echo $ah_bin exists          || export PATH=$PATH:$ah_bin
echo $PATH
echo
    [ $(grep -q "$PATH" $ah_tools) ]       && echo $ah_tools exists        || export PATH=$PATH:$ah_tools
echo $PATH
echo
    [ $(grep -q "$PATH" $ah_tools_bin) ]   && echo $ah_tools_bin exists    || export PATH=$PATH:$ah_tools_bin
echo $PATH
echo
    [ $(grep -q "$PATH" $ah_plat_tools) ]  && echo $ah_plat_tools exists   || export PATH=$PATH:$ah_plat_tools
echo $PATH
echo
echo "-----------------------------------------------------"
echo setting path to  : $PATH
echo "-----------------------------------------------------"
echo
     export PATH=$PATH
echo done
echo 
echo "-----------------------------------------------------"
echo cleaning up 
echo "-----------------------------------------------------"
echo
echo removing $cmd_line_tools
     sudo rm $cmd_line_tools
echo done
echo
echo removing "cmdline-tools"
     sudo rm -rf "cmdline-tools"
echo done
echo
echo "-----------------------------------------------------"
echo
echo finished!
echo let ne show you the PATH $(echo $PATH) 
3cho
3cho congratulations on your new ANDROID_HOME=$(echo $ANDROID_HOME)
exit 0
EOF

Upvotes: 1

David Gaspar
David Gaspar

Reputation: 463

The ANDROID_HOME environment is the same as the ANDROID_SDK_ROOT environment, this means it defines the path to the SDK installation directory.

Click here to about more.

I set up the Android SDK separate from android studio, it gives me more control of where things are.

cd $HOME/Downloads
curl https://dl.google.com/android/repository/commandlinetools-mac-7302050_latest.zip --output android-sdk.zip
  • Second, I unzip the file in the Downloads directory, this process will generate a directory called cmdline-tools.
unzip android-sdk.zip
  • Third, I create a directory called android in the local directory.

    (/usr/local system-wide, read-only files installed by the local administrator, usually you)

sudo mkdir /usr/local/android
  • Fourth, I move the directory generated by decompression to the android directory renaming it to sdk. (In the future I will add the ndk directory beside the sdk)
sudo mv cmdline-tools /usr/local/android/sdk
  • Fifth, I manually add the environment variables to the .zshrc file in my personal directory.
nano $HOME/.zshrc
# ...

# Set environment variables for Android SDK
export ANDROID_SDK_ROOT=/usr/local/android/sdk
export ANDROID_HOME=$ANDROID_SDK_ROOT

# Insert executable file paths in PATH environment variable
export PATH=$PATH:$ANDROID_HOME/bin
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

Upvotes: 6

Amr Abdalrahman Ahmed
Amr Abdalrahman Ahmed

Reputation: 1020

I'm using React Native with Catalina mac os and zsh shell

1- touch ~/.zshrc

2- open ~/.zshrc

3- according to React Native android setup copy and past

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

to the opened text file then save and close the file.

4- run source ~/.zshrc and make sure to restart your terminal.

5- run adb you will get something like

Android Debug Bridge version 1.0.41 Version 30.0.0-6374843

thanks for this documented

update1 16/2/2021

this solution works with Big Sur as well.

Upvotes: 29

hygull
hygull

Reputation: 8730

I am having MAC OS X(Sierra) 10.12.2.

I set ANDROID_HOME to work on React Native(for Android apps) by following the following steps.

  • Open Terminal (press Command+SpaceBar, type Terminal, Hit ENTER).

  • Add the following 3 lines to ~/.bash_profile.

      export ANDROID_HOME=$HOME/Library/Android/sdk/
      export PATH=$PATH:$ANDROID_HOME/tools
      export PATH=$PATH:$ANDROID_HOME/platform-tools
    
  • Finally execute the below command (or RESTART the system to reflect the changes made).

    source ~/.bash_profile

That's it.

Upvotes: 41

iutinvg
iutinvg

Reputation: 4255

A lot of correct answers here. However, one item is missing and I wasn't able to run the emulator from the command line without it.

export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$PATH:$JAVA_HOME/bin

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator       # can't run emulator without it
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools

So it's a compilation of the answers above plus a solution for this problem.

And if you use zsh (instead of bash) the file to edit is ~/.zshrc.

Upvotes: 2

Samiran
Samiran

Reputation: 2954

Setup ANDROID_HOME , JAVA_HOME enviromental variable on Mac OS X

Add In .bash_profile file

export JAVA_HOME=$(/usr/libexec/java_home)

export ANDROID_HOME=/Users/$USER/Library/Android/sdk

export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

For Test

echo $ANDROID_HOME
echo $JAVA_HOME

Upvotes: 1

user2993582
user2993582

Reputation: 6550

Where the Android-SDK is installed depends on how you installed it.

  1. If you downloaded the SDK through their website and then dragged/dropped the Application to your Applications folder, it's most likely here:

    /Applications/ADT/sdk (as it is in your case).

  2. If you installed the SDK using Homebrew (brew cask install android-sdk), then it's located here:

    /usr/local/Caskroom/android-sdk/{YOUR_SDK_VERSION_NUMBER}

  3. If the SDK was installed automatically as part of Android Studio then it's located here:

    /Users/{YOUR_USER_NAME}/Library/Android/sdk

Once you know the location, open a terminal window and enter the following (changing out the path to the SDK to be however you installed it):

export ANDROID_HOME={YOUR_PATH}

Once you have this set, you need to add this to the PATH environment variable:

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Lastly apply these changes by re-sourcing .bash_profile:

source ~/.bash_profile

  1. Type - echo $ANDROID_HOME to check if the home is set.

echo $ANDROID_HOME

Upvotes: 651

Khurshid Ansari
Khurshid Ansari

Reputation: 5095

1) Open base profile :

open  ~/.bash_profile

2) Add below line in base profile :

export PATH=${PATH}:/Users/<username>/Library/Android/sdk/build-tools/27.0.3

Save and close base profile.

For me 27.0.3 working great.

Upvotes: 0

CodeGuyRoss
CodeGuyRoss

Reputation: 826

Adding the following to my .bash_profile worked for me:

export ANDROID_HOME=/Users/$USER/Library/Android/sdk
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Upvotes: 53

sudo bangbang
sudo bangbang

Reputation: 28229

To set ANDROID_HOME, variable, you need to know how you installed android dev setup.

If you don't know you can check if the following paths exist in your machine. Add the following to .bashrc, .zshrc, or .profile depending on what you use

If you installed with homebrew,

export ANDROID_HOME=/usr/local/opt/android-sdk

Check if this path exists:

If you installed android studio following the website,

export ANDROID_HOME=~/Library/Android/sdk

Finally add it to path:

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

If you're too lazy to open an editor do this:

echo "export ANDROID_HOME=~/Library/Android/sdk" >> ~/.bashrc
echo "export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools" >> ~/.bashrc

Upvotes: 11

jww
jww

Reputation: 102426

Could anybody post a working solution for doing this in the terminal?

ANDROID_HOME is usually a directory like .android. Its where things like the Debug Key will be stored.

export ANDROID_HOME=~/.android 

You can automate it for your login. Just add it to your .bash_profile (below is from my OS X 10.8.5 machine):

$ cat ~/.bash_profile
# MacPorts Installer addition on 2012-07-19 at 20:21:05
export PATH=/opt/local/bin:/opt/local/sbin:$PATH

# Android
export ANDROID_NDK_ROOT=/opt/android-ndk-r9
export ANDROID_SDK_ROOT=/opt/android-sdk
export JAVA_HOME=`/usr/libexec/java_home`
export ANDROID_HOME=~/.android

export PATH="$ANDROID_SDK_ROOT/tools/":"$ANDROID_SDK_ROOT/platform-tools/":"$PATH"

According to David Turner on the NDK Mailing List, both ANDROID_NDK_ROOT and ANDROID_SDK_ROOT need to be set because other tools depend on those values (see Recommended NDK Directory?).

After modifying ~/.bash_profile, then perform the following (or logoff and back on):

source ~/.bash_profile

Upvotes: 12

David Douglas
David Douglas

Reputation: 10503

In Terminal:

nano ~/.bash_profile 

Add lines:

export ANDROID_HOME=/YOUR_PATH_TO/android-sdk
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/tools:$PATH

Check it worked:

source ~/.bash_profile
echo $ANDROID_HOME

Upvotes: 204

Mark Okhman
Mark Okhman

Reputation: 564

People, note that if you will use ~/.bash_profile then it will edit not your user's bash profile, but global. Instead go to your users directory (/Users/username) and edit it directly:

vim .bash_profile

And insert following two lines with respect to your Username and SDK directory

export PATH=$PATH:/Users/<username>/Library/Android/sdk/tools
export PATH=$PATH:/Users/<username>/Library/Android/sdk/platform-tools

Upvotes: 0

kip2
kip2

Reputation: 6913

quoting @user2993582's answer

export PATH=$PATH:$ANDROID_HOME/bin

The 'bin' part has changed and it should be

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Upvotes: 36

Related Questions