mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 22:17:03 +05:30
71 lines
1.7 KiB
Python
Executable file
71 lines
1.7 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
|
|
import signal
|
|
import subprocess
|
|
import os
|
|
from pathlib import Path
|
|
|
|
emu_process = None
|
|
|
|
|
|
def signal_handler(sig, frame):
|
|
if emu_process is not None:
|
|
emu_process.signal(signal.SIGINT)
|
|
|
|
|
|
def make_cmdline_tools_path(android_home: Path) -> str:
|
|
return android_home / "cmdline-tools" / "latest" / "bin"
|
|
|
|
|
|
def main():
|
|
signal.signal(signal.SIGINT, signal_handler)
|
|
android_home = os.getenv("ANDROID_HOME")
|
|
if not android_home:
|
|
raise RuntimeError("$ANDROID_HOME must be set to use this script")
|
|
android_home = Path(android_home)
|
|
api_level = os.getenv("ANDROID_API_LEVEL")
|
|
if not api_level:
|
|
print("$ANDROID_API_LEVEL not defined; defaulting to 33")
|
|
api_level = "33"
|
|
cmdline_path = make_cmdline_tools_path(android_home)
|
|
image_package = f"system-images;android-{api_level};google_apis;x86_64"
|
|
subprocess.run(
|
|
[
|
|
cmdline_path / "sdkmanager",
|
|
image_package,
|
|
],
|
|
check=True,
|
|
)
|
|
subprocess.run(
|
|
[
|
|
cmdline_path / "avdmanager",
|
|
"create",
|
|
"avd",
|
|
"--force",
|
|
"-n",
|
|
f"Pixel_XL_API_{api_level}",
|
|
"--abi",
|
|
"google_apis/x86_64",
|
|
"--package",
|
|
image_package,
|
|
"--device",
|
|
"pixel_xl",
|
|
],
|
|
check=True,
|
|
)
|
|
emu_process = subprocess.Popen(
|
|
[
|
|
android_home / "emulator" / "emulator",
|
|
"-avd",
|
|
f"Pixel_XL_API_{api_level}",
|
|
"-gpu",
|
|
"swiftshader_indirect",
|
|
"-noaudio",
|
|
],
|
|
)
|
|
emu_process.wait()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|