@@ -19,34 +19,41 @@ export async function installAndroidSdk(apiLevel: string, target: string, arch:
19
19
const isOnMac = process . platform === 'darwin' ;
20
20
const isArm = process . arch === 'arm64' ;
21
21
22
+ var sudoCmd : string = '' ;
22
23
if ( ! isOnMac ) {
23
- await exec . exec ( `sh -c \\" sudo chown $USER:$USER ${ process . env . ANDROID_HOME } -R` ) ;
24
+ sudoCmd = ' sudo' ;
24
25
}
25
26
26
27
const cmdlineToolsPath = `${ process . env . ANDROID_HOME } /cmdline-tools` ;
27
28
if ( ! fs . existsSync ( cmdlineToolsPath ) ) {
28
29
console . log ( 'Installing new cmdline-tools.' ) ;
29
30
const sdkUrl = isOnMac ? CMDLINE_TOOLS_URL_MAC : CMDLINE_TOOLS_URL_LINUX ;
30
31
const downloadPath = await tc . downloadTool ( sdkUrl ) ;
32
+ if ( sudoCmd != '' ) {
33
+ await exec . exec ( `sh -c \\"${ sudoCmd } mkdir ${ cmdlineToolsPath } "` ) ;
34
+ await exec . exec ( `sh -c \\"${ sudoCmd } chown $USER:$USER ${ cmdlineToolsPath } "` ) ;
35
+ }
31
36
await tc . extractZip ( downloadPath , cmdlineToolsPath ) ;
32
37
await io . mv ( `${ cmdlineToolsPath } /cmdline-tools` , `${ cmdlineToolsPath } /latest` ) ;
33
38
}
34
39
40
+ const sdkManager = `${ cmdlineToolsPath } /latest/bin/sdkmanager` ;
41
+
35
42
// add paths for commandline-tools and platform-tools
36
43
core . addPath ( `${ cmdlineToolsPath } /latest:${ cmdlineToolsPath } /latest/bin:${ process . env . ANDROID_HOME } /platform-tools` ) ;
37
44
38
45
// set standard AVD path
39
46
core . exportVariable ( 'ANDROID_AVD_HOME' , `${ process . env . HOME } /.android/avd` ) ;
40
47
41
48
// accept all Android SDK licenses
42
- await exec . exec ( `sh -c \\"yes | sdkmanager --licenses > /dev/null"` ) ;
49
+ await exec . exec ( `sh -c \\"yes | ${ sdkManager } --licenses > /dev/null"` ) ;
43
50
44
51
console . log ( 'Installing latest build tools, platform tools, and platform.' ) ;
45
52
46
- await exec . exec ( `sh -c \\"sdkmanager --install 'build-tools;${ BUILD_TOOLS_VERSION } ' platform-tools > /dev/null"` ) ;
53
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install 'build-tools;${ BUILD_TOOLS_VERSION } ' platform-tools > /dev/null"` ) ;
47
54
48
55
console . log ( 'Installing latest emulator.' ) ;
49
- await exec . exec ( `sh -c \\"sdkmanager --install emulator --channel=${ channelId } > /dev/null"` ) ;
56
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install emulator --channel=${ channelId } > /dev/null"` ) ;
50
57
51
58
if ( emulatorBuild ) {
52
59
console . log ( `Installing emulator build ${ emulatorBuild } .` ) ;
@@ -65,19 +72,19 @@ export async function installAndroidSdk(apiLevel: string, target: string, arch:
65
72
downloadUrlSuffix = `-${ emulatorBuild } ` ;
66
73
}
67
74
await exec . exec ( `curl -fo emulator.zip https://dl.google.com/android/repository/emulator-${ isOnMac ? 'darwin' : 'linux' } ${ downloadUrlSuffix } .zip` ) ;
68
- await exec . exec ( `unzip -o -q emulator.zip -d ${ process . env . ANDROID_HOME } ` ) ;
75
+ await exec . exec ( `${ sudoCmd } unzip -o -q emulator.zip -d ${ process . env . ANDROID_HOME } ` ) ;
69
76
await io . rmRF ( 'emulator.zip' ) ;
70
77
}
71
78
console . log ( 'Installing system images.' ) ;
72
- await exec . exec ( `sh -c \\"sdkmanager --install 'system-images;android-${ apiLevel } ;${ target } ;${ arch } ' --channel=${ channelId } > /dev/null"` ) ;
79
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install 'system-images;android-${ apiLevel } ;${ target } ;${ arch } ' --channel=${ channelId } > /dev/null"` ) ;
73
80
74
81
if ( ndkVersion ) {
75
82
console . log ( `Installing NDK ${ ndkVersion } .` ) ;
76
- await exec . exec ( `sh -c \\"sdkmanager --install 'ndk;${ ndkVersion } ' --channel=${ channelId } > /dev/null"` ) ;
83
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install 'ndk;${ ndkVersion } ' --channel=${ channelId } > /dev/null"` ) ;
77
84
}
78
85
if ( cmakeVersion ) {
79
86
console . log ( `Installing CMake ${ cmakeVersion } .` ) ;
80
- await exec . exec ( `sh -c \\"sdkmanager --install 'cmake;${ cmakeVersion } ' --channel=${ channelId } > /dev/null"` ) ;
87
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install 'cmake;${ cmakeVersion } ' --channel=${ channelId } > /dev/null"` ) ;
81
88
}
82
89
} finally {
83
90
console . log ( `::endgroup::` ) ;
0 commit comments