@@ -19,34 +19,42 @@ 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
35
40
// add paths for commandline-tools and platform-tools
36
41
core . addPath ( `${ cmdlineToolsPath } /latest:${ cmdlineToolsPath } /latest/bin:${ process . env . ANDROID_HOME } /platform-tools` ) ;
37
42
43
+ // find sdkmanager
44
+ const sdkManager : string = await io . which ( 'sdkmanager' , true ) ;
45
+
38
46
// set standard AVD path
39
47
core . exportVariable ( 'ANDROID_AVD_HOME' , `${ process . env . HOME } /.android/avd` ) ;
40
48
41
49
// accept all Android SDK licenses
42
- await exec . exec ( `sh -c \\"yes | sdkmanager --licenses > /dev/null"` ) ;
50
+ await exec . exec ( `sh -c \\"yes | ${ sdkManager } --licenses > /dev/null"` ) ;
43
51
44
52
console . log ( 'Installing latest build tools, platform tools, and platform.' ) ;
45
53
46
- await exec . exec ( `sh -c \\"sdkmanager --install 'build-tools;${ BUILD_TOOLS_VERSION } ' platform-tools > /dev/null"` ) ;
54
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install 'build-tools;${ BUILD_TOOLS_VERSION } ' platform-tools > /dev/null"` ) ;
47
55
48
56
console . log ( 'Installing latest emulator.' ) ;
49
- await exec . exec ( `sh -c \\"sdkmanager --install emulator --channel=${ channelId } > /dev/null"` ) ;
57
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install emulator --channel=${ channelId } > /dev/null"` ) ;
50
58
51
59
if ( emulatorBuild ) {
52
60
console . log ( `Installing emulator build ${ emulatorBuild } .` ) ;
@@ -65,19 +73,19 @@ export async function installAndroidSdk(apiLevel: string, target: string, arch:
65
73
downloadUrlSuffix = `-${ emulatorBuild } ` ;
66
74
}
67
75
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 } ` ) ;
76
+ await exec . exec ( `${ sudoCmd } unzip -o -q emulator.zip -d ${ process . env . ANDROID_HOME } ` ) ;
69
77
await io . rmRF ( 'emulator.zip' ) ;
70
78
}
71
79
console . log ( 'Installing system images.' ) ;
72
- await exec . exec ( `sh -c \\"sdkmanager --install 'system-images;android-${ apiLevel } ;${ target } ;${ arch } ' --channel=${ channelId } > /dev/null"` ) ;
80
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install 'system-images;android-${ apiLevel } ;${ target } ;${ arch } ' --channel=${ channelId } > /dev/null"` ) ;
73
81
74
82
if ( ndkVersion ) {
75
83
console . log ( `Installing NDK ${ ndkVersion } .` ) ;
76
- await exec . exec ( `sh -c \\"sdkmanager --install 'ndk;${ ndkVersion } ' --channel=${ channelId } > /dev/null"` ) ;
84
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install 'ndk;${ ndkVersion } ' --channel=${ channelId } > /dev/null"` ) ;
77
85
}
78
86
if ( cmakeVersion ) {
79
87
console . log ( `Installing CMake ${ cmakeVersion } .` ) ;
80
- await exec . exec ( `sh -c \\"sdkmanager --install 'cmake;${ cmakeVersion } ' --channel=${ channelId } > /dev/null"` ) ;
88
+ await exec . exec ( `sh -c \\"${ sudoCmd } ${ sdkManager } --install 'cmake;${ cmakeVersion } ' --channel=${ channelId } > /dev/null"` ) ;
81
89
}
82
90
} finally {
83
91
console . log ( `::endgroup::` ) ;
0 commit comments