@@ -17,6 +17,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
1717Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
1818const core = __importStar ( require ( "@actions/core" ) ) ;
1919const exec = __importStar ( require ( "@actions/exec" ) ) ;
20+ const io = __importStar ( require ( "@actions/io" ) ) ;
21+ const fs = __importStar ( require ( "fs" ) ) ;
2022const BUILD_TOOLS_VERSION = '30.0.0' ;
2123const CMDLINE_TOOLS_URL_MAC = 'https://dl.google.com/android/repository/commandlinetools-mac-6514223_latest.zip' ;
2224const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/commandlinetools-linux-6514223_latest.zip' ;
@@ -27,31 +29,38 @@ const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/comman
2729function installAndroidSdk ( apiLevel , target , arch , emulatorBuild , ndkVersion , cmakeVersion ) {
2830 return __awaiter ( this , void 0 , void 0 , function * ( ) {
2931 const isOnMac = process . platform === 'darwin' ;
30- console . log ( 'Installing new cmdline-tools.' ) ;
31- const sdkUrl = isOnMac ? CMDLINE_TOOLS_URL_MAC : CMDLINE_TOOLS_URL_LINUX ;
32- yield exec . exec ( `sudo mkdir ${ process . env . ANDROID_HOME } /cmdline-tools` ) ;
33- yield exec . exec ( `curl -fo commandlinetools.zip ${ sdkUrl } ` ) ;
34- yield exec . exec ( `sudo unzip -q commandlinetools.zip -d ${ process . env . ANDROID_HOME } /cmdline-tools` ) ;
35- yield exec . exec ( `sudo rm -f commandlinetools.zip` ) ;
36- // add paths for commandline-tools and platform-tools
37- core . addPath ( `${ process . env . ANDROID_HOME } /cmdline-tools/tools:${ process . env . ANDROID_HOME } /cmdline-tools/tools/bin:${ process . env . ANDROID_HOME } /platform-tools` ) ;
38- // additional permission and license requirements for Linux
3932 if ( ! isOnMac ) {
4033 yield exec . exec ( `sh -c \\"sudo chown $USER:$USER ${ process . env . ANDROID_HOME } -R` ) ;
41- yield exec . exec ( `sh -c \\"echo -e '\n84831b9409646a918e30573bab4c9c91346d8abd' > ${ process . env . ANDROID_HOME } /licenses/android-sdk-preview-license"` ) ;
34+ }
35+ const cmdlineToolsPath = `${ process . env . ANDROID_HOME } /cmdline-tools` ;
36+ if ( ! fs . existsSync ( cmdlineToolsPath ) ) {
37+ console . log ( 'Installing new cmdline-tools.' ) ;
38+ const sdkUrl = isOnMac ? CMDLINE_TOOLS_URL_MAC : CMDLINE_TOOLS_URL_LINUX ;
39+ yield io . mkdirP ( `${ process . env . ANDROID_HOME } /cmdline-tools` ) ;
40+ yield exec . exec ( `curl -fo commandlinetools.zip ${ sdkUrl } ` ) ;
41+ yield exec . exec ( `unzip -q commandlinetools.zip -d ${ cmdlineToolsPath } ` ) ;
42+ yield io . rmRF ( 'commandlinetools.zip' ) ;
43+ // add paths for commandline-tools and platform-tools
44+ core . addPath ( `${ cmdlineToolsPath } /tools:${ cmdlineToolsPath } /tools/bin:${ process . env . ANDROID_HOME } /platform-tools` ) ;
45+ }
46+ // additional permission and license requirements for Linux
47+ const sdkPreviewLicensePath = `${ process . env . ANDROID_HOME } /licenses/android-sdk-preview-license` ;
48+ if ( ! isOnMac && ! fs . existsSync ( sdkPreviewLicensePath ) ) {
49+ yield exec . exec ( `sh -c \\"echo -e '\n84831b9409646a918e30573bab4c9c91346d8abd' > ${ sdkPreviewLicensePath } "` ) ;
4250 }
4351 // license required for API 30 system images
44- if ( apiLevel == 30 ) {
45- yield exec . exec ( `sh -c \\"echo -e '\n859f317696f67ef3d7f30a50a5560e7834b43903' > ${ process . env . ANDROID_HOME } /licenses/android-sdk-arm-dbt-license"` ) ;
52+ const sdkArmDbtLicensePath = `${ process . env . ANDROID_HOME } /licenses/android-sdk-arm-dbt-license` ;
53+ if ( apiLevel == 30 && ! fs . existsSync ( sdkArmDbtLicensePath ) ) {
54+ yield exec . exec ( `sh -c \\"echo -e '\n859f317696f67ef3d7f30a50a5560e7834b43903' > ${ sdkArmDbtLicensePath } "` ) ;
4655 }
4756 console . log ( 'Installing latest build tools, platform tools, and platform.' ) ;
4857 yield exec . exec ( `sh -c \\"sdkmanager --install 'build-tools;${ BUILD_TOOLS_VERSION } ' platform-tools 'platforms;android-${ apiLevel } ' > /dev/null"` ) ;
4958 if ( emulatorBuild ) {
5059 console . log ( `Installing emulator build ${ emulatorBuild } .` ) ;
5160 yield exec . exec ( `curl -fo emulator.zip https://dl.google.com/android/repository/emulator-${ isOnMac ? 'darwin' : 'linux' } -${ emulatorBuild } .zip` ) ;
52- yield exec . exec ( `sudo rm -rf ${ process . env . ANDROID_HOME } /emulator`) ;
53- yield exec . exec ( `sudo unzip -q emulator.zip -d ${ process . env . ANDROID_HOME } ` ) ;
54- yield exec . exec ( `sudo rm -f emulator.zip` ) ;
61+ yield io . rmRF ( ` ${ process . env . ANDROID_HOME } /emulator`) ;
62+ yield exec . exec ( `unzip -q emulator.zip -d ${ process . env . ANDROID_HOME } ` ) ;
63+ yield io . rmRF ( ' emulator.zip' ) ;
5564 }
5665 else {
5766 console . log ( 'Installing latest emulator.' ) ;
0 commit comments