Files
UnrealEngine/Engine/Extras/Android/SetupAndroidEmulator.bat
2025-05-18 13:04:45 +08:00

123 lines
3.6 KiB
Batchfile

@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set AVD_DEVICE=%1
set DEVICE_API_VERSION=%2
set DEVICE_DATA_SIZE=%3
set DEVICE_RAM_SIZE=%4
if "%5" equ "-noninteractive" (
set PAUSE=
) else (
set PAUSE=pause
)
rem hardcoded versions for compatibility with non-Turnkey manual running
if "%AVD_DEVICE%" equ "" set AVD_DEVICE=pixel_6
if "%DEVICE_API_VERSION%" equ "" set DEVICE_API_VERSION=35
if "%DEVICE_DATA_SIZE%" equ "" set DEVICE_DATA_SIZE=48G
if "%DEVICE_RAM_SIZE%" equ "" set DEVICE_RAM_SIZE=6144
if not exist "%ANDROID_HOME%" (
echo Android SDK not found at: %ANDROID_HOME%
echo Unable to locate local Android SDK location. Did you run Android Studio after installing?
echo If Android Studio is installed, please run again with SDK path as parameter, otherwise download Android Studio 2022.2.1 from https://developer.android.com/studio/archive
%PAUSE%
exit /b 1
)
echo Android Studio SDK Path: %ANDROID_HOME%
set CMDLINETOOLS_PATH=%ANDROID_HOME%\cmdline-tools\latest\bin
if not exist "%CMDLINETOOLS_PATH%" (
set CMDLINETOOLS_PATH=%ANDROID_HOME%\tools\bin
if not exist "!CMDLINETOOLS_PATH!" (
echo Unable to locate sdkmanager.bat. Did you run Android Studio and install cmdline-tools after installing?
%PAUSE%
exit /b 2
)
)
if /i "%PROCESSOR_ARCHITECTURE%" equ "AMD64" (
set ABI=x86_64
) else if /i "%PROCESSOR_ARCHITECTURE%" equ "ARM64" (
set ABI=arm64-v8a
) else (
echo Unsupported architecture %ABI%.
%PAUSE%
exit /b 3
)
set AVD_TAG=google_apis_playstore
set AVD_PACKAGE=system-images^;android-%DEVICE_API_VERSION%^;%AVD_TAG%^;%ABI%
call "%CMDLINETOOLS_PATH%\sdkmanager.bat" "emulator" "%AVD_PACKAGE%" || (
echo Update failed. Please check the Android Studio install.
%PAUSE%
exit /b 4
)
set EMULATOR_PATH=%ANDROID_HOME%\emulator
if not exist "%EMULATOR_PATH%" (
echo Update failed. Did you accept the license agreement?
%PAUSE%
exit /b 5
)
set DEVICE_NAME=UE_%AVD_DEVICE%_API_%DEVICE_API_VERSION%
for /f "tokens=*" %%G in ('%EMULATOR_PATH%\emulator.exe -list-avds') do (
if "%%G" equ "%DEVICE_NAME%" (
echo Android virtual device %DEVICE_NAME% already exists...creation skipped.
goto :DONE
)
)
call "%CMDLINETOOLS_PATH%\avdmanager.bat" create avd -n "%DEVICE_NAME%" -k "%AVD_PACKAGE%" -g "%AVD_TAG%" -b "%ABI%" -d "%AVD_DEVICE%" -f || (
echo Android virtual device %DEVICE_NAME% creation failed.
%PAUSE%
exit /b 6
)
echo Android virtual device %DEVICE_NAME% created.
if "%ANDROID_USER_HOME%" equ "" set ANDROID_USER_HOME=%USERPROFILE%\.android
if "%ANDROID_EMULATOR_HOME%" equ "" set ANDROID_EMULATOR_HOME=%ANDROID_USER_HOME%
if "%ANDROID_AVD_HOME%" equ "" set ANDROID_AVD_HOME=%ANDROID_EMULATOR_HOME%\avd
set DEVICE_PATH=%ANDROID_AVD_HOME%\%DEVICE_NAME%.avd
set DEVICE_CONFIG=config.ini
set DEVICE_CONFIG_PATH=%DEVICE_PATH%\%DEVICE_CONFIG%
set DEVICE_TEMP_CONFIG_PATH=%DEVICE_CONFIG_PATH%.tmp
(echo AvdId=%DEVICE_NAME% & echo avd.ini.displayname=%DEVICE_NAME:_= %) > "%DEVICE_TEMP_CONFIG_PATH%"
for /f "tokens=1* delims=\=" %%G in (%DEVICE_CONFIG_PATH%) do (
(if "%%G" equ "PlayStore.enabled" (
echo %%G=yes
) else if "%%G" equ "disk.dataPartition.size" (
echo %%G=%DEVICE_DATA_SIZE%
) else if "%%G" equ "hw.gpu.enabled" (
echo %%G=yes
) else if "%%G" equ "hw.initialOrientation" (
echo %%G=landscape
) else if "%%G" equ "hw.keyboard" (
echo %%G=yes
) else if "%%G" equ "hw.ramSize" (
echo %%G=%DEVICE_RAM_SIZE%
) else (
echo %%G=%%H
)) >> "%DEVICE_TEMP_CONFIG_PATH%"
)
move /y "%DEVICE_TEMP_CONFIG_PATH%" "%DEVICE_CONFIG_PATH%" || (
echo Android virtual device %DEVICE_NAME% %DEVICE_CONFIG% update failed.
%PAUSE%
exit /b 7
)
:DONE
echo Success^^!
%PAUSE%
exit /b 0