From 098ef337be249b341bfee5b7867929ee8cf16f4c Mon Sep 17 00:00:00 2001 From: Yang Date: Thu, 3 Sep 2020 00:34:04 +1000 Subject: [PATCH] WIP - download correct SDK for each platform. --- lib/sdk-installer.js | 13 ++++++++----- src/sdk-installer.ts | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/sdk-installer.js b/lib/sdk-installer.js index 9d14bf67..1117d9ec 100644 --- a/lib/sdk-installer.js +++ b/lib/sdk-installer.js @@ -35,6 +35,7 @@ const io = __importStar(require("@actions/io")); const fs = __importStar(require("fs")); const BUILD_TOOLS_VERSION = '30.0.2'; const CMDLINE_TOOLS_URL_MAC = 'https://dl.google.com/android/repository/commandlinetools-mac-6609375_latest.zip'; +const CMDLINE_TOOLS_URL_WIN = 'https://dl.google.com/android/repository/commandlinetools-win-6609375_latest.zip'; const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip'; /** * Installs & updates the Android SDK for the macOS platform, including SDK platform for the chosen API level, latest build tools, platform tools, Android Emulator, @@ -42,14 +43,16 @@ const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/comman */ function installAndroidSdk(apiLevel, target, arch, emulatorBuild, ndkVersion, cmakeVersion) { return __awaiter(this, void 0, void 0, function* () { - const isOnMac = process.platform === 'darwin'; - if (!isOnMac) { + const IS_MAC = process.platform === 'win32'; + const IS_WINDOWS = process.platform === 'darwin'; + const IS_LINUX = process.platform === 'linux'; + if (IS_LINUX) { yield exec.exec(`sh -c \\"sudo chown $USER:$USER ${process.env.ANDROID_HOME} -R`); } const cmdlineToolsPath = `${process.env.ANDROID_HOME}/cmdline-tools`; if (!fs.existsSync(cmdlineToolsPath)) { console.log('Installing new cmdline-tools.'); - const sdkUrl = isOnMac ? CMDLINE_TOOLS_URL_MAC : CMDLINE_TOOLS_URL_LINUX; + const sdkUrl = IS_MAC ? CMDLINE_TOOLS_URL_MAC : IS_WINDOWS ? CMDLINE_TOOLS_URL_WIN : CMDLINE_TOOLS_URL_LINUX; yield io.mkdirP(`${process.env.ANDROID_HOME}/cmdline-tools`); yield exec.exec(`curl -fo commandlinetools.zip ${sdkUrl}`); yield exec.exec(`unzip -q commandlinetools.zip -d ${cmdlineToolsPath}`); @@ -59,7 +62,7 @@ function installAndroidSdk(apiLevel, target, arch, emulatorBuild, ndkVersion, cm } // additional permission and license requirements for Linux const sdkPreviewLicensePath = `${process.env.ANDROID_HOME}/licenses/android-sdk-preview-license`; - if (!isOnMac && !fs.existsSync(sdkPreviewLicensePath)) { + if (IS_LINUX && !fs.existsSync(sdkPreviewLicensePath)) { fs.writeFileSync(sdkPreviewLicensePath, '\n84831b9409646a918e30573bab4c9c91346d8abd'); } // license required for API 30 system images @@ -71,7 +74,7 @@ function installAndroidSdk(apiLevel, target, arch, emulatorBuild, ndkVersion, cm yield exec.exec(`sh -c \\"sdkmanager --install 'build-tools;${BUILD_TOOLS_VERSION}' platform-tools 'platforms;android-${apiLevel}' > /dev/null"`); if (emulatorBuild) { console.log(`Installing emulator build ${emulatorBuild}.`); - yield exec.exec(`curl -fo emulator.zip https://dl.google.com/android/repository/emulator-${isOnMac ? 'darwin' : 'linux'}-${emulatorBuild}.zip`); + yield exec.exec(`curl -fo emulator.zip https://dl.google.com/android/repository/emulator-${IS_MAC ? 'darwin' : IS_WINDOWS ? 'windows' : 'linux'}-${emulatorBuild}.zip`); yield io.rmRF(`${process.env.ANDROID_HOME}/emulator`); yield exec.exec(`unzip -q emulator.zip -d ${process.env.ANDROID_HOME}`); yield io.rmRF('emulator.zip'); diff --git a/src/sdk-installer.ts b/src/sdk-installer.ts index d71e5628..361c9b44 100644 --- a/src/sdk-installer.ts +++ b/src/sdk-installer.ts @@ -5,6 +5,7 @@ import * as fs from 'fs'; const BUILD_TOOLS_VERSION = '30.0.2'; const CMDLINE_TOOLS_URL_MAC = 'https://dl.google.com/android/repository/commandlinetools-mac-6609375_latest.zip'; +const CMDLINE_TOOLS_URL_WIN = 'https://dl.google.com/android/repository/commandlinetools-win-6609375_latest.zip'; const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip'; /** @@ -12,16 +13,18 @@ const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/comman * and the system image for the chosen API level, CPU arch, and target. */ export async function installAndroidSdk(apiLevel: number, target: string, arch: string, emulatorBuild?: string, ndkVersion?: string, cmakeVersion?: string): Promise { - const isOnMac = process.platform === 'darwin'; + const IS_MAC = process.platform === 'win32'; + const IS_WINDOWS = process.platform === 'darwin'; + const IS_LINUX = process.platform === 'linux'; - if (!isOnMac) { + if (IS_LINUX) { await exec.exec(`sh -c \\"sudo chown $USER:$USER ${process.env.ANDROID_HOME} -R`); } const cmdlineToolsPath = `${process.env.ANDROID_HOME}/cmdline-tools`; if (!fs.existsSync(cmdlineToolsPath)) { console.log('Installing new cmdline-tools.'); - const sdkUrl = isOnMac ? CMDLINE_TOOLS_URL_MAC : CMDLINE_TOOLS_URL_LINUX; + const sdkUrl = IS_MAC ? CMDLINE_TOOLS_URL_MAC : IS_WINDOWS ? CMDLINE_TOOLS_URL_WIN : CMDLINE_TOOLS_URL_LINUX; await io.mkdirP(`${process.env.ANDROID_HOME}/cmdline-tools`); await exec.exec(`curl -fo commandlinetools.zip ${sdkUrl}`); await exec.exec(`unzip -q commandlinetools.zip -d ${cmdlineToolsPath}`); @@ -33,7 +36,7 @@ export async function installAndroidSdk(apiLevel: number, target: string, arch: // additional permission and license requirements for Linux const sdkPreviewLicensePath = `${process.env.ANDROID_HOME}/licenses/android-sdk-preview-license`; - if (!isOnMac && !fs.existsSync(sdkPreviewLicensePath)) { + if (IS_LINUX && !fs.existsSync(sdkPreviewLicensePath)) { fs.writeFileSync(sdkPreviewLicensePath, '\n84831b9409646a918e30573bab4c9c91346d8abd'); } @@ -48,7 +51,7 @@ export async function installAndroidSdk(apiLevel: number, target: string, arch: await exec.exec(`sh -c \\"sdkmanager --install 'build-tools;${BUILD_TOOLS_VERSION}' platform-tools 'platforms;android-${apiLevel}' > /dev/null"`); if (emulatorBuild) { console.log(`Installing emulator build ${emulatorBuild}.`); - await exec.exec(`curl -fo emulator.zip https://dl.google.com/android/repository/emulator-${isOnMac ? 'darwin' : 'linux'}-${emulatorBuild}.zip`); + await exec.exec(`curl -fo emulator.zip https://dl.google.com/android/repository/emulator-${IS_MAC ? 'darwin' : IS_WINDOWS ? 'windows' : 'linux'}-${emulatorBuild}.zip`); await io.rmRF(`${process.env.ANDROID_HOME}/emulator`); await exec.exec(`unzip -q emulator.zip -d ${process.env.ANDROID_HOME}`); await io.rmRF('emulator.zip');