emulator 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/usr/bin/env bash
  2. set -e
  3. set -o pipefail
  4. export ANDROID_HOME="tmp/AndroidSdk"
  5. export ANDROID_AVD_HOME="tmp/AndroidAvd"
  6. export ANDROID_EMULATOR_HOME="tmp/AndroidEmu"
  7. mkdir -p "$ANDROID_HOME"
  8. mkdir -p "$ANDROID_AVD_HOME"
  9. mkdir -p "$ANDROID_EMULATOR_HOME"
  10. case "$(uname -s)" in
  11. Linux*) machine=linux ;;
  12. *) machine=mac ;;
  13. esac
  14. download() {
  15. output="tmp/$(basename "$2")"
  16. if [ ! -f "$output" ]; then
  17. wget "$2" -O "$output"
  18. fi
  19. eval $1="$output"
  20. }
  21. download cmdtools "https://dl.google.com/android/repository/commandlinetools-$machine-9477386_latest.zip"
  22. download firefox "https://github.com/mozilla-mobile/firefox-android/releases/download/fenix-v111.1.1/fenix-111.1.1-x86_64.apk"
  23. TOOLS="$ANDROID_HOME/cmdline-tools/latest"
  24. if [ ! -d "$TOOLS" ]; then
  25. unzip -oq "$cmdtools"
  26. mkdir -p "$ANDROID_HOME/cmdline-tools"
  27. mv "cmdline-tools" "$TOOLS"
  28. fi
  29. SDKM="$TOOLS/bin/sdkmanager"
  30. AVDM="$TOOLS/bin/avdmanager"
  31. ADB="$ANDROID_HOME/platform-tools/adb"
  32. EMU="$ANDROID_HOME/emulator/emulator -no-audio -no-snapshot -gpu swiftshader_indirect -no-boot-anim"
  33. if [ "$1" != "window" ]; then
  34. EMU="$EMU -no-window"
  35. fi
  36. if [ "$1" = "stop" ]; then
  37. killall qemu-system-x86_64 qemu-system-x86_64-headless || true
  38. $AVDM delete avd -n "my_emulator"
  39. exit 0
  40. fi
  41. yes | $SDKM --licenses || true
  42. PACKAGE="system-images;android-31;default;x86_64"
  43. $SDKM "platform-tools" "platforms;android-31" "$PACKAGE"
  44. $AVDM create avd -f -n "my_emulator" -b "default/x86_64" -k "$PACKAGE" -d "pixel_3a"
  45. grep -q 'Boot completed' <($EMU -avd "my_emulator")
  46. echo "Boot completed!"
  47. while [ -z "$($ADB devices | grep emulator | grep device)" ]; do
  48. $ADB devices
  49. sleep 5
  50. done
  51. $ADB devices
  52. sleep 5
  53. $ADB install "$firefox"
  54. $ADB uninstall --user 0 "org.chromium.webview_shell"