1
+ FROM mcr.microsoft.com/devcontainers/base:ubuntu-24.04
2
+ # RUN useradd -u 3333 -G sudo -m -d /home/gitpod -s /bin/bash gitpod && echo "gitpod:gitpod" | chpasswd \
3
+ # && sed -i.bkp -e '/Defaults\tuse_pty/d' -e 's/%sudo\s\+ALL=(ALL\(:ALL\)\?)\s\+ALL/%sudo ALL=NOPASSWD:ALL/g' /etc/sudoers
4
+ USER vscode
5
+ ENV HOME=/home/vscode
6
+ # SHELL ["/bin/bash", "-c"]
7
+
8
+ # # use this Dockerfile to install additional tools you might need, e.g.
9
+ # # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
10
+ # # && apt-get -y install --no-install-recommends <your-package-list-here>
11
+
12
+ ENV ANDROID_HOME=$HOME/android-sdk
13
+ ENV PATH="$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/cmdline-tools/bootstrap/bin:$ANDROID_HOME/platform-tools:$PATH"
14
+ ENV PATH="$HOME/.local/bin:$HOME/.bun/bin:$PATH"
15
+
16
+ # Install Android SDK
17
+ RUN sudo apt-get update && export DEBIAN_FRONTEND=noninteractive \
18
+ && sudo apt-get -y install --no-install-recommends \
19
+ curl \
20
+ unzip \
21
+ openjdk-21-jdk
22
+
23
+ RUN version="9477386" && mkdir -p $ANDROID_HOME/cmdline-tools/bootstrap \
24
+ && curl -L https://dl.google.com/android/repository/commandlinetools-linux-${version}_latest.zip -o /tmp/cmdline-tools.zip \
25
+ && unzip -q /tmp/cmdline-tools.zip -d /tmp/unzip && mv /tmp/unzip/*/* $ANDROID_HOME/cmdline-tools/bootstrap
26
+
27
+ RUN yes | sdkmanager --licenses \
28
+ && sdkmanager "cmdline-tools;latest" \
29
+ && sdkmanager \
30
+ "platform-tools" \
31
+ "build-tools;35.0.0" \
32
+ "ndk;28.1.13356709" \
33
+ "platforms;android-35" \
34
+ "emulator" \
35
+ "add-ons;addon-google_apis-google-24" \
36
+ "cmake;4.0.2" \
37
+ "system-images;android-35;google_apis;x86_64"
38
+
39
+ # Cold boot the emulator to start it quickly later
40
+ RUN avdmanager create avd --name headless_avd --package "system-images;android-35;google_apis;x86_64" --device "pixel" && avdmanager list avd
41
+ # RUN if test -e /dev/kvm; then sudo chmod 777 /dev/kvm; (until adb shell getprop sys.boot_completed | grep -q 1; do sleep 2; done && sleep 10 && adb emu kill) & emulator -avd headless_avd -no-window -no-audio -no-boot-anim -gpu swiftshader_indirect -accel off -no-metrics; fi
42
+
43
+
44
+ USER root
45
+ # Install necessary kernel tools
46
+ RUN export DEBIAN_FRONTEND=noninteractive \
47
+ && apt-get -y install --no-install-recommends \
48
+ kmod \
49
+ cpu-checker \
50
+ qemu-system-x86 qemu-utils qemu-kvm \
51
+ file
52
+
53
+ # Install scrcpy
54
+ RUN curl -L https://github.com/Genymobile/scrcpy/releases/download/v3.2/scrcpy-linux-x86_64-v3.2.tar.gz -o /tmp/scrcpy.tar.gz \
55
+ && tar -xf /tmp/scrcpy.tar.gz -C /tmp \
56
+ && mv /tmp/scrcpy-linux*/scrcpy /usr/local/bin/scrcpy \
57
+ && chmod +x /usr/local/bin/scrcpy
58
+
59
+
60
+ USER vscode
61
+ # Install uv & mysc
62
+ RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
63
+ && curl -fsSL https://fnm.vercel.app/install | bash
64
+ # && sudo apt-get install -y portaudio19-dev \
65
+ # && uv tool install mysc[web]
66
+
67
+ # Install ws-scrcpy
68
+ SHELL ["/bin/bash" , "-lic" ]
69
+ RUN fnm install --lts \
70
+ && cd $HOME && git clone https://github.com/NetrisTV/ws-scrcpy.git && cd ws-scrcpy \
71
+ && uv run npm install && npm run dist:prod
72
+ # && uv run bun install && uv run bun run dist:prod
0 commit comments