It covers Android SDK, Java (JDK), Flutter, Path wiring, Plugin setup, Validation, AVD/emulator, and creating a project—plus quick fixes.
Assumptions: default shell =
zsh
, Apple Silicon path (/opt/homebrew
). If you’re on Intel, replace/opt/homebrew
with/usr/local
.
1) Install Java (JDK)
Most Android/Gradle stacks are happy with JDK 17+.
# Install (latest LTS). If you specifically want 17, use: brew install --cask temurin17
brew install --cask temurin
# Ensure JAVA_HOME is set automatically
echo 'export JAVA_HOME="$(/usr/libexec/java_home)"' >> ~/.zshrc
source ~/.zshrc
# Verify
java -version
Code language: PHP (php)
2) Install the Android SDK (CLI-only path, no GUI required)
If you prefer Android Studio GUI, install it via
brew install --cask android-studio
and use Preferences → Android SDK to install Command-line Tools, Platform-Tools, Build-Tools. Then skip to step 3.
2.1 Create SDK home and install command-line tools
# Set SDK root (mac default location)
echo 'export ANDROID_SDK_ROOT="$HOME/Library/Android/sdk"' >> ~/.zshrc
echo 'export ANDROID_HOME="$ANDROID_SDK_ROOT"' >> ~/.zshrc
source ~/.zshrc
# Create the folder
mkdir -p "$ANDROID_SDK_ROOT"
# Install Android command-line tools
brew install --cask android-commandlinetools
Code language: PHP (php)
2.2 Put tools where Flutter expects them
Flutter looks for sdkmanager
at:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools"
# Try the "latest" symlink first (preferred; auto-updates with brew)
rm -rf "$ANDROID_SDK_ROOT/cmdline-tools/latest"
ln -s "/opt/homebrew/Caskroom/android-commandlinetools/latest/cmdline-tools" \
"$ANDROID_SDK_ROOT/cmdline-tools/latest" 2>/dev/null || true
# If your Caskroom doesn't have "latest", symlink the version you saw (example: 13114758)
if [ ! -x "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" ]; then
ln -s "/opt/homebrew/Caskroom/android-commandlinetools/13114758/cmdline-tools" \
"$ANDROID_SDK_ROOT/cmdline-tools/latest"
fi
Code language: PHP (php)
2.3 Add Android tools to PATH
# Add PATHs (platform-tools, emulator, cmdline-tools)
{
echo 'export PATH="$PATH:$ANDROID_SDK_ROOT/platform-tools"'
echo 'export PATH="$PATH:$ANDROID_SDK_ROOT/emulator"'
echo 'export PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin"'
} >> ~/.zshrc
source ~/.zshrc
# Sanity checks
which sdkmanager
which adb
Code language: PHP (php)
2.4 Install core SDK components
# Avoid "repositories.cfg could not be loaded" warning
mkdir -p ~/.android && touch ~/.android/repositories.cfg
# Accept licenses (press y for each)
sdkmanager --licenses
# Core packages
sdkmanager "platform-tools" "emulator" "cmdline-tools;latest"
# Choose a modern Android platform + build-tools (adjust if needed)
sdkmanager "platforms;android-35" "build-tools;35.0.0"
# Optional: system image for an ARM64 emulator
sdkmanager "system-images;android-35;google_apis;arm64-v8a"
Code language: PHP (php)
3) Install Flutter (CLI)
brew install --cask flutter
# Put Flutter on PATH using the SDK’s own path (future-proof)
echo 'export PATH="$PATH:$(flutter sdk-path)/bin"' >> ~/.zshrc
source ~/.zshrc
# Verify
flutter --version
Code language: PHP (php)
4) Wire Flutter ↔ Android SDK & Validate
# (Only needed if Flutter doesn’t auto-detect your SDK)
flutter config --android-sdk "$ANDROID_SDK_ROOT"
# Accept Android licenses via Flutter
flutter doctor --android-licenses
# Full diagnostic
flutter doctor -v
Code language: PHP (php)
You should see green checks for:
- Flutter
- Android toolchain
- Xcode (if installed)
- IDEs (if detected)
5) Install Flutter plugins (IDEs)
Android Studio
- Preferences → Plugins → Marketplace
- Install Flutter (it auto-installs Dart)
- Restart Android Studio
- Preferences → Languages & Frameworks → Flutter → set Flutter SDK path (yours was:
/opt/homebrew/share/flutter
or useflutter sdk-path
)
VS Code (optional)
- Install Flutter and Dart extensions from the Marketplace.
6) Locate SDK paths quickly (for future prompts)
# Flutter SDK root
flutter sdk-path
# Android SDK root
echo $ANDROID_SDK_ROOT
# Where is sdkmanager/adb?
which sdkmanager
which adb
Code language: PHP (php)
7) Create and run a Flutter project
# Create
flutter create hello_app
cd hello_app
# List devices (emulators/phones)
flutter devices
Code language: PHP (php)
- If you already created an AVD, start it:
emulator -list-avds emulator -avd Pixel_8_API_35
- Then run:
flutter run
8) Create an Android emulator (AVD) from CLI (optional)
# Create a Pixel 8 AVD targeting android-35
avdmanager create avd -n Pixel_8_API_35 \
-k "system-images;android-35;google_apis;arm64-v8a" -d pixel_8
# Start it
emulator -avd Pixel_8_API_35
Code language: PHP (php)
9) (Optional) iOS setup on macOS
If you want to run on iPhone simulators:
# Xcode CLTs
xcode-select --install || true
# First-run (may prompt)
sudo xcodebuild -runFirstLaunch
# (Sometimes license acceptance is interactive in GUI)
# Install CocoaPods for iOS deps
brew install cocoapods
pod setup
# Check again
flutter doctor -v
Code language: PHP (php)
10) Quick Troubleshooting (copy/paste fixes)
A. Android sdkmanager not found
# Ensure the file exists here:
ls "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager"
# Ensure PATH contains it
echo $PATH | tr ':' '\n' | grep cmdline-tools || \
echo 'export PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin"' >> ~/.zshrc && source ~/.zshrc
# Reinstall / relink cmdline tools if missing
brew reinstall --cask android-commandlinetools
rm -rf "$ANDROID_SDK_ROOT/cmdline-tools/latest"
ln -s "/opt/homebrew/Caskroom/android-commandlinetools/latest/cmdline-tools" \
"$ANDROID_SDK_ROOT/cmdline-tools/latest"
Code language: PHP (php)
B. cmdline-tools component is missing
sdkmanager "cmdline-tools;latest"
Code language: JavaScript (javascript)
C. Emulator not listed in flutter devices
emulator -list-avds
# If none, create one (see section 8), then:
emulator -avd Pixel_8_API_35
flutter devices
Code language: PHP (php)
D. License prompts keep appearing
yes | sdkmanager --licenses
flutter doctor --android-licenses
E. Wrong SDK path in Android Studio
- Set Preferences → Languages & Frameworks → Flutter → Flutter SDK path to:
flutter sdk-path
(paste the result), e.g./opt/homebrew/share/flutter
F. Verify everything at once
echo "ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT"
which sdkmanager && sdkmanager --list | head -n 30
adb version
java -version
which flutter && flutter --version
flutter doctor -v
Code language: PHP (php)
11) One-time setup script (save as setup_flutter_android_macos.sh
)
Edit the versioned line (
13114758
) if your cask uses a different folder; the script also tries thelatest
alias.
#!/usr/bin/env bash
set -euo pipefail
# JDK
brew install --cask temurin || true
# SDK roots
grep -q 'ANDROID_SDK_ROOT=' ~/.zshrc || echo 'export ANDROID_SDK_ROOT="$HOME/Library/Android/sdk"' >> ~/.zshrc
grep -q 'ANDROID_HOME=' ~/.zshrc || echo 'export ANDROID_HOME="$ANDROID_SDK_ROOT"' >> ~/.zshrc
source ~/.zshrc
mkdir -p "$ANDROID_SDK_ROOT"
# Android command-line tools
brew install --cask android-commandlinetools || true
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools"
rm -rf "$ANDROID_SDK_ROOT/cmdline-tools/latest"
ln -s "/opt/homebrew/Caskroom/android-commandlinetools/latest/cmdline-tools" "$ANDROID_SDK_ROOT/cmdline-tools/latest" \
|| ln -s "/opt/homebrew/Caskroom/android-commandlinetools/13114758/cmdline-tools" "$ANDROID_SDK_ROOT/cmdline-tools/latest"
# PATHs
grep -q 'platform-tools' ~/.zshrc || echo 'export PATH="$PATH:$ANDROID_SDK_ROOT/platform-tools"' >> ~/.zshrc
grep -q 'emulator' ~/.zshrc || echo 'export PATH="$PATH:$ANDROID_SDK_ROOT/emulator"' >> ~/.zshrc
grep -q 'cmdline-tools/latest/bin' ~/.zshrc || echo 'export PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin"' >> ~/.zshrc
source ~/.zshrc
# Accept licenses & core packages
mkdir -p ~/.android && touch ~/.android/repositories.cfg
yes | sdkmanager --licenses || true
sdkmanager "platform-tools" "emulator" "cmdline-tools;latest" \
"platforms;android-35" "build-tools;35.0.0" || true
# Flutter
brew install --cask flutter || true
grep -q 'flutter sdk-path' ~/.zshrc || echo 'export PATH="$PATH:$(flutter sdk-path)/bin"' >> ~/.zshrc
source ~/.zshrc
# Final check
flutter doctor -v
echo "Done. If Android Studio is installed, add the Flutter plugin and set Flutter SDK path to: $(flutter sdk-path)"
Code language: PHP (php)
Run it:
chmod +x setup_flutter_android_macos.sh
./setup_flutter_android_macos.sh
12) Short checklist (what “green” looks like)
java -version
→ prints Temurin/Oracle/OpenJDKwhich sdkmanager
→ points to$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager
adb version
→ prints versionflutter --version
→ prints 3.35.xflutter doctor -v
→ Android toolchain ✅- Android Studio → Plugins: Flutter + Dart, Flutter SDK path set
flutter create app && cd app && flutter run
→ launches on emulator/device
That’s it. Save this guide and the script; next time it’s a one-shot setup with predictable results.
I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I have worked at Cotocus. I share tech blog at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow , and SEO strategies at Wizbrand.
Do you want to learn Quantum Computing?
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at WIZBRAND