diff --git a/docs/setup/linux_setup.md b/docs/setup/linux_setup.md index b12f3089..b28b0bbc 100644 --- a/docs/setup/linux_setup.md +++ b/docs/setup/linux_setup.md @@ -42,7 +42,7 @@ git lfs install Download and install Android Studio by following [Google's directions](https://developer.android.com/studio). -Open any project, navigate to `Tools` -> `SDK Manager` +Open the Android SDK Manager. You can find it on the main screen of Android Studio under `More Actions` -> `SDK Manager`. When a project is open, you can also find it under `Tools` -> `SDK Manager`. Under **SDK Platforms**, install **API level 35**. @@ -52,6 +52,8 @@ Install build tools **version 34.0.0**. Install ndk version **25.2.9519653** +Install the latest version of **Android SDK Command-line Tools** + Add the following to your `.bashrc` ``` diff --git a/docs/setup/macos_setup.md b/docs/setup/macos_setup.md index 89c01487..25734dfa 100644 --- a/docs/setup/macos_setup.md +++ b/docs/setup/macos_setup.md @@ -67,7 +67,7 @@ git lfs install Download and install Android Studio by following [Google's directions](https://developer.android.com/studio). -Open any project, navigate to `Tools` -> `SDK Manager` +Open the Android SDK Manager. You can find it on the main screen of Android Studio under `More Actions` -> `SDK Manager`. When a project is open, you can also find it under `Tools` -> `SDK Manager`. Under **SDK Platforms**, install **API level 35**. @@ -77,6 +77,8 @@ Install build tools **version 34.0.0**. Install ndk version **25.2.9519653** +Install the latest version of **Android SDK Command-line Tools** + Update `.zshrc` with the following: ``` diff --git a/npm_modules/cli/src/setup/DevSetupHelper.ts b/npm_modules/cli/src/setup/DevSetupHelper.ts index a8567071..5681a45c 100644 --- a/npm_modules/cli/src/setup/DevSetupHelper.ts +++ b/npm_modules/cli/src/setup/DevSetupHelper.ts @@ -1,16 +1,14 @@ import fs from 'fs'; import path from 'path'; import { ANSI_COLORS } from '../core/constants'; +import { CliError } from '../core/errors'; import { LoadingIndicator } from '../utils/LoadingIndicator'; import { spawnCliCommand } from '../utils/cliUtils'; import { wrapInColor } from '../utils/logUtils'; -import { withTempDir } from '../utils/tempDir'; -import { decompressTo } from '../utils/zipUtils'; import { ANDROID_BUILD_TOOLS_VERSION, ANDROID_NDK_VERSION, ANDROID_PLATFORM_VERSION } from './versions'; export const HOME_DIR = process.env['HOME'] ?? ''; const ANDROID_HOME_DIR_SUFFIX = '.valdi/android_home'; -const ANDROID_HOME_TARET_DIR = path.join(HOME_DIR, ANDROID_HOME_DIR_SUFFIX); export interface EnvVariable { name: string; @@ -120,21 +118,9 @@ export class DevSetupHelper { console.log(`${wrapInColor('Dev setup completed!', ANSI_COLORS.GREEN_COLOR)}.${suffix}`); } - async setupAndroidSDK(commandLineToolsURL: string, javaHomeOverride?: string | undefined): Promise { + async setupAndroidSDK(javaHomeOverride?: string | undefined): Promise { console.log(wrapInColor('Setting up Android SDK...', ANSI_COLORS.YELLOW_COLOR)); if (!process.env['ANDROID_HOME']) { - await withTempDir(async tempDir => { - const filename = path.join(tempDir, path.basename(commandLineToolsURL)); - await this.downloadToPath(commandLineToolsURL, filename); - const targetDir = path.join(ANDROID_HOME_TARET_DIR, 'cmdline-tools'); - await decompressTo(filename, targetDir); - - const target = path.join(targetDir, 'latest'); - if (fs.existsSync(target)) { - await fs.promises.rm(target, { recursive: true, force: true }); - } - fs.renameSync(path.join(targetDir, 'cmdline-tools'), target); - }); process.env['ANDROID_HOME'] = path.join(HOME_DIR, ANDROID_HOME_DIR_SUFFIX); await this.writeEnvVariablesToRcFile([{ name: 'ANDROID_HOME', value: `"$HOME/${ANDROID_HOME_DIR_SUFFIX}"` }]); } @@ -142,6 +128,14 @@ export class DevSetupHelper { const androidHome = process.env['ANDROID_HOME'] ?? ''; const sdkManagerBin = path.join(androidHome, 'cmdline-tools/latest/bin/sdkmanager'); + // Verify Android SDK Command-line Tools is installed + if (!fs.existsSync(sdkManagerBin)) { + throw new CliError( + 'Android SDK Command-line Tools is not installed. Follow the developer setup guide to install it.', + ANSI_COLORS.RED_COLOR, + ); + } + const sdkManagerEnvVariables: { [key: string]: string } = {}; if (javaHomeOverride) { sdkManagerEnvVariables['JAVA_HOME'] = javaHomeOverride; diff --git a/npm_modules/cli/src/setup/linuxSetup.ts b/npm_modules/cli/src/setup/linuxSetup.ts index 62b36e2d..e839b1f2 100644 --- a/npm_modules/cli/src/setup/linuxSetup.ts +++ b/npm_modules/cli/src/setup/linuxSetup.ts @@ -2,7 +2,6 @@ import fs from 'fs'; import path from 'path'; import { checkCommandExists } from '../utils/cliUtils'; import { DevSetupHelper, HOME_DIR } from './DevSetupHelper'; -import { ANDROID_LINUX_COMMANDLINE_TOOLS } from './versions'; const BAZELISK_URL = 'https://github.com/bazelbuild/bazelisk/releases/download/v1.26.0/bazelisk-linux-amd64'; @@ -32,7 +31,7 @@ export async function linuxSetup(): Promise { await devSetup.writeEnvVariablesToRcFile([{ name: 'PATH', value: `"$HOME/.valdi/bin:$PATH"` }]); - await devSetup.setupAndroidSDK(ANDROID_LINUX_COMMANDLINE_TOOLS); + await devSetup.setupAndroidSDK(); devSetup.onComplete(); } diff --git a/npm_modules/cli/src/setup/macOSSetup.ts b/npm_modules/cli/src/setup/macOSSetup.ts index bb708a30..e7960d4a 100644 --- a/npm_modules/cli/src/setup/macOSSetup.ts +++ b/npm_modules/cli/src/setup/macOSSetup.ts @@ -2,7 +2,6 @@ import fs from 'fs'; import { CliError } from '../core/errors'; import { checkCommandExists, runCliCommand } from '../utils/cliUtils'; import { DevSetupHelper } from './DevSetupHelper'; -import { ANDROID_MACOS_COMMANDLINE_TOOLS } from './versions'; export async function macOSSetup(): Promise { const devSetup = new DevSetupHelper(); @@ -36,7 +35,7 @@ export async function macOSSetup(): Promise { const javaHome = await runCliCommand('/usr/libexec/java_home'); - await devSetup.setupAndroidSDK(ANDROID_MACOS_COMMANDLINE_TOOLS, javaHome.stdout.trim()); + await devSetup.setupAndroidSDK(javaHome.stdout.trim()); devSetup.onComplete(); } diff --git a/npm_modules/cli/src/setup/versions.ts b/npm_modules/cli/src/setup/versions.ts index 07192933..e2ca7fea 100644 --- a/npm_modules/cli/src/setup/versions.ts +++ b/npm_modules/cli/src/setup/versions.ts @@ -1,8 +1,3 @@ export const ANDROID_BUILD_TOOLS_VERSION = '34.0.0'; export const ANDROID_NDK_VERSION = '25.2.9519653'; export const ANDROID_PLATFORM_VERSION = 'android-35'; - -export const ANDROID_MACOS_COMMANDLINE_TOOLS = - 'https://dl.google.com/android/repository/commandlinetools-mac-13114758_latest.zip'; -export const ANDROID_LINUX_COMMANDLINE_TOOLS = - 'https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip';