Some checks failed
ci/woodpecker/push/k8s-portal Pipeline failed
ci/woodpecker/push/postmortem-todos Pipeline was successful
ci/woodpecker/push/pve-nfs-exports-sync Pipeline was successful
ci/woodpecker/push/build-cli Pipeline was successful
ci/woodpecker/push/registry-config-sync Pipeline was successful
ci/woodpecker/push/build-ci-image Pipeline was successful
ci/woodpecker/push/default Pipeline failed
First boot crashed mid-SDK-install, and the dir-existence check then skipped reinstall forever: avdmanager saw the partial tree and died with 'Valid system image paths are: null' (CrashLoopBackOff). v2 tracks install completion with a marker file written only after sdkmanager succeeds + package.xml exists, wipes partial system-image trees before reinstalling, and retries sdkmanager 3x.
43 lines
2 KiB
Docker
43 lines
2 KiB
Docker
# Android emulator runner — slim on purpose: the SDK proper (platform-tools,
|
|
# emulator, system image, AVD) lives on the stack's PVC and is installed by
|
|
# entrypoint.sh on first boot, so this image carries only the JDK,
|
|
# cmdline-tools and the native libraries the emulator needs at runtime.
|
|
#
|
|
# Rebuild + push (rare — only when tool/library versions bump):
|
|
# docker build -t forgejo.viktorbarzin.me/viktor/android-emulator:api36-v2 .
|
|
# docker push forgejo.viktorbarzin.me/viktor/android-emulator:api36-v2
|
|
FROM eclipse-temurin:17-jdk-jammy
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
# emulator runtime deps (Qt window into Xvfb)
|
|
libpulse0 libgl1 libglu1-mesa libnss3 libasound2 libfontconfig1 \
|
|
libx11-6 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 \
|
|
libxfixes3 libxi6 libxrandr2 libxrender1 libxtst6 libxkbcommon0 \
|
|
libxkbfile1 libsm6 libice6 libdbus-1-3 \
|
|
# virtual display + browser viewing
|
|
xvfb x11vnc novnc websockify openbox \
|
|
# adb TCP forwarding + fetch tooling
|
|
socat wget unzip ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Android cmdline-tools (sdkmanager/avdmanager). Pinned; SDK packages they
|
|
# install land on the PVC at /sdk, not in this image.
|
|
ARG CMDLINE_TOOLS_VERSION=13114758
|
|
RUN mkdir -p /opt/android/cmdline-tools && \
|
|
wget -q "https://dl.google.com/android/repository/commandlinetools-linux-${CMDLINE_TOOLS_VERSION}_latest.zip" -O /tmp/clt.zip && \
|
|
unzip -q /tmp/clt.zip -d /opt/android/cmdline-tools && \
|
|
mv /opt/android/cmdline-tools/cmdline-tools /opt/android/cmdline-tools/latest && \
|
|
rm /tmp/clt.zip
|
|
|
|
ENV ANDROID_SDK_ROOT=/sdk \
|
|
ANDROID_USER_HOME=/sdk/.android \
|
|
ANDROID_AVD_HOME=/sdk/.android/avd \
|
|
PATH="/opt/android/cmdline-tools/latest/bin:/sdk/platform-tools:/sdk/emulator:${PATH}"
|
|
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
# 5555 adb (socat → emulator adbd), 6080 noVNC web UI
|
|
EXPOSE 5555 6080
|
|
ENTRYPOINT ["/entrypoint.sh"]
|