Complete guide to develop Android apps without opening Android Studio, using only VS Code and command line tools.
- Prerequisites and installation
- Environment setup
- Project bootstrap
- Emulator management
- Build and run
- Testing
- VS Code setup
- Useful commands
- Troubleshooting
# 1) Install Homebrew (if needed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2) Install SDKMAN (Java version manager)
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 3) Install Java 21
sdk install java 21.0.3-tem
sdk default java 21.0.3-tem
# 4) Install Android command line tools
brew install --cask android-commandlinetools
# 5) Verify
java -version
sdkmanager --version- Manage multiple Java versions safely.
- Switch versions per project with
.sdkmanrc. - Avoid conflicts between unrelated projects.
Useful SDKMAN commands:
sdk list java
sdk install java 17.0.11-tem
sdk use java 17.0.11-tem
echo "java=21.0.3-tem" > .sdkmanrc
sdk envAGP 8.x requires JDK 17+; Java 21 is fully compatible.
Add to your ~/.zshrc:
export ANDROID_HOME="$HOME/Library/Android/sdk"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
export PATH="$ANDROID_HOME/emulator:$PATH"Reload shell:
source ~/.zshrcyes | sdkmanager --licenses
sdkmanager "platforms;android-34"
sdkmanager "build-tools;35.0.1"
sdkmanager "platform-tools"
sdkmanager "emulator"
# Intel/AMD Macs
sdkmanager "system-images;android-34;google_apis;x86_64"
# Apple Silicon
sdkmanager "system-images;android-34;google_apis;arm64-v8a"
sdkmanager --list_installedadb version
emulator -version
sdkmanager --versionCreate project structure:
mkdir -p app/src/main/java/com/woliveiras/petit
mkdir -p app/src/main/java/com/woliveiras/petit
mkdir -p app/src/main/res/values
mkdir -p app/src/test/java/com/woliveiras/petit
mkdir -p app/src/androidTest/java/com/woliveiras/petit
mkdir -p gradle/wrapperCore files to create:
settings.gradle.ktsbuild.gradle.kts(root)gradle/libs.versions.tomlapp/build.gradle.ktsgradle.properties
Recommended Android config baseline:
compileSdk = 36targetSdk = 34minSdk = 26- Java/Kotlin target = 17
List AVDs:
emulator -list-avdsStart AVD:
emulator -avd Pixel_7_API_34 &Verify connected device:
adb devicesFrom the project root:
./gradlew assembleDebug
./gradlew installDebug
adb shell am start -n com.woliveiras.petit.debug/com.woliveiras.petit.MainActivityUnit tests:
./gradlew testInstrumented tests (requires device/emulator):
./gradlew connectedAndroidTestRecommended extensions:
- Kotlin language support
- EditorConfig
- Markdown support
Recommended workflow:
- Use Gradle commands for build/test/format.
- Avoid relying on editor auto-format for large modules.
./gradlew assembleDebug
./gradlew installDebug
./gradlew test
./gradlew connectedAndroidTest
./gradlew clean
./gradlew dependencies
./gradlew spotlessApply
./gradlew spotlessCheckCheck ANDROID_SDK_ROOT:
echo $ANDROID_SDK_ROOTRegenerate wrapper:
brew install gradle
gradle wrapper --gradle-version=8.11.1Ensure compileSdk = 36 in app/build.gradle.kts.
- Re-run
adb devices. - Restart ADB:
adb kill-server
adb start-server