Skip to content

Commit 4b538ec

Browse files
authored
feature(sdk): add support for installation from cmdline-tools package (#34)
* feature(sdk): add support for cmdline-tools * feature(sdk): replace 'tools' package -> 'cmdline-tools;latest'
1 parent 17d8d5a commit 4b538ec

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

emulator-run-cmd/src/sdk.ts

+10-6
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
5555

5656
await execWithResult(`curl -L ${sdkUrl} -o ${ANDROID_TMP_PATH} -s`)
5757
await execWithResult(`unzip -q ${ANDROID_TMP_PATH} -d ${ANDROID_HOME}`)
58+
await execWithResult(`mv ${ANDROID_HOME}/cmdline-tools ${ANDROID_HOME}/cmdline-tools-tmp`)
59+
await execWithResult(`mkdir -p ${ANDROID_HOME}/cmdline-tools`)
60+
await execWithResult(`mv ${ANDROID_HOME}/cmdline-tools-tmp ${ANDROID_HOME}/cmdline-tools/bootstrap-version`)
61+
5862
await execWithResult(`rm ${ANDROID_TMP_PATH}`)
5963
await execWithResult(`mkdir -p ${ANDROID_HOME}/sdk_home`)
6064

@@ -63,7 +67,7 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
6367
core.exportVariable('ANDROID_SDK_HOME', `${ANDROID_HOME}/sdk_home`);
6468

6569
const PATH = process.env.PATH!!
66-
let extraPaths = `${ANDROID_HOME}/bin:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/platform-tools/bin`
70+
let extraPaths = `${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/cmdline-tools/bootstrap-version/bin:${ANDROID_HOME}/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/platform-tools/bin`
6771

6872
let PATH_WITHOUT_ANDROID = PATH.split(':').filter(entry => {
6973
return !entry.includes("Android")
@@ -101,7 +105,7 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
101105
args += " > /dev/null"
102106
}
103107

104-
await execIgnoreFailure(`bash -c \\\"${this.androidHome()}/tools/bin/sdkmanager emulator tools platform-tools 'system-images;android-${api};${tag};${abi}'${args}"`);
108+
await execIgnoreFailure(`bash -c \\\"${this.androidHome()}/cmdline-tools/bootstrap-version/bin/sdkmanager emulator 'cmdline-tools;latest' platform-tools 'system-images;android-${api};${tag};${abi}'${args}"`);
105109
}
106110

107111
async installPlatform(api: string, verbose: boolean): Promise<any> {
@@ -110,7 +114,7 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
110114
args += " > /dev/null"
111115
}
112116

113-
await execIgnoreFailure(`bash -c \\\"${this.androidHome()}/tools/bin/sdkmanager 'platforms;android-${api}'${args}"`)
117+
await execIgnoreFailure(`bash -c \\\"${this.androidHome()}/cmdline-tools/bootstrap-version/bin/sdkmanager 'platforms;android-${api}'${args}"`)
114118
}
115119

116120
async createEmulator(name: string, api: string, tag: string, abi: string, hardwareProfile: string): Promise<any> {
@@ -119,7 +123,7 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
119123
additionalOptions += `--device ${hardwareProfile}`
120124
}
121125

122-
await execIgnoreFailure(`bash -c \\\"echo -n no | ${this.androidHome()}/tools/bin/avdmanager create avd -n ${name} --package \\\"system-images;android-${api};${tag};${abi}\\\" --tag ${tag}\" ${additionalOptions}`)
126+
await execIgnoreFailure(`bash -c \\\"echo -n no | ${this.androidHome()}/cmdline-tools/bootstrap-version/bin/avdmanager create avd -n ${name} --package \\\"system-images;android-${api};${tag};${abi}\\\" --tag ${tag}\" ${additionalOptions}`)
123127
return new Emulator(this, name, api, abi, tag, this.portCounter++, this.portCounter++)
124128
}
125129

@@ -166,11 +170,11 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
166170
}
167171

168172
class LinuxAndroidSdk extends BaseAndroidSdk {
169-
defaultSdkUrl = "https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"
173+
defaultSdkUrl = "https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip"
170174
}
171175

172176
class MacOSAndroidSdk extends BaseAndroidSdk {
173-
defaultSdkUrl = "https://dl.google.com/android/repository/sdk-tools-darwin-4333796.zip"
177+
defaultSdkUrl = "https://dl.google.com/android/repository/commandlinetools-mac-6858069_latest.zip"
174178
}
175179

176180
export class SdkFactory {

install-sdk/src/sdk.ts

+10-6
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
5555

5656
await execWithResult(`curl -L ${sdkUrl} -o ${ANDROID_TMP_PATH} -s`)
5757
await execWithResult(`unzip -q ${ANDROID_TMP_PATH} -d ${ANDROID_HOME}`)
58+
await execWithResult(`mv ${ANDROID_HOME}/cmdline-tools ${ANDROID_HOME}/cmdline-tools-tmp`)
59+
await execWithResult(`mkdir -p ${ANDROID_HOME}/cmdline-tools`)
60+
await execWithResult(`mv ${ANDROID_HOME}/cmdline-tools-tmp ${ANDROID_HOME}/cmdline-tools/bootstrap-version`)
61+
5862
await execWithResult(`rm ${ANDROID_TMP_PATH}`)
5963
await execWithResult(`mkdir -p ${ANDROID_HOME}/sdk_home`)
6064

@@ -63,7 +67,7 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
6367
core.exportVariable('ANDROID_SDK_HOME', `${ANDROID_HOME}/sdk_home`);
6468

6569
const PATH = process.env.PATH!!
66-
let extraPaths = `${ANDROID_HOME}/bin:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/platform-tools/bin`
70+
let extraPaths = `${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/cmdline-tools/bootstrap-version/bin:${ANDROID_HOME}/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/platform-tools/bin`
6771

6872
let PATH_WITHOUT_ANDROID = PATH.split(':').filter(entry => {
6973
return !entry.includes("Android")
@@ -101,7 +105,7 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
101105
args += " > /dev/null"
102106
}
103107

104-
await execIgnoreFailure(`bash -c \\\"${this.androidHome()}/tools/bin/sdkmanager emulator tools platform-tools 'system-images;android-${api};${tag};${abi}'${args}"`);
108+
await execIgnoreFailure(`bash -c \\\"${this.androidHome()}/cmdline-tools/bootstrap-version/bin/sdkmanager emulator 'cmdline-tools;latest' platform-tools 'system-images;android-${api};${tag};${abi}'${args}"`);
105109
}
106110

107111
async installPlatform(api: string, verbose: boolean): Promise<any> {
@@ -110,7 +114,7 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
110114
args += " > /dev/null"
111115
}
112116

113-
await execIgnoreFailure(`bash -c \\\"${this.androidHome()}/tools/bin/sdkmanager 'platforms;android-${api}'${args}"`)
117+
await execIgnoreFailure(`bash -c \\\"${this.androidHome()}/cmdline-tools/bootstrap-version/bin/sdkmanager 'platforms;android-${api}'${args}"`)
114118
}
115119

116120
async createEmulator(name: string, api: string, tag: string, abi: string, hardwareProfile: string): Promise<any> {
@@ -119,7 +123,7 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
119123
additionalOptions += `--device ${hardwareProfile}`
120124
}
121125

122-
await execIgnoreFailure(`bash -c \\\"echo -n no | ${this.androidHome()}/tools/bin/avdmanager create avd -n ${name} --package \\\"system-images;android-${api};${tag};${abi}\\\" --tag ${tag}\" ${additionalOptions}`)
126+
await execIgnoreFailure(`bash -c \\\"echo -n no | ${this.androidHome()}/cmdline-tools/bootstrap-version/bin/avdmanager create avd -n ${name} --package \\\"system-images;android-${api};${tag};${abi}\\\" --tag ${tag}\" ${additionalOptions}`)
123127
return new Emulator(this, name, api, abi, tag, this.portCounter++, this.portCounter++)
124128
}
125129

@@ -166,11 +170,11 @@ export abstract class BaseAndroidSdk implements AndroidSDK {
166170
}
167171

168172
class LinuxAndroidSdk extends BaseAndroidSdk {
169-
defaultSdkUrl = "https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"
173+
defaultSdkUrl = "https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip"
170174
}
171175

172176
class MacOSAndroidSdk extends BaseAndroidSdk {
173-
defaultSdkUrl = "https://dl.google.com/android/repository/sdk-tools-darwin-4333796.zip"
177+
defaultSdkUrl = "https://dl.google.com/android/repository/commandlinetools-mac-6858069_latest.zip"
174178
}
175179

176180
export class SdkFactory {

0 commit comments

Comments
 (0)