dotnet-android-build-image/Dockerfile

151 lines
No EOL
4.4 KiB
Docker
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FROM debian:13-slim
# Éviter les invites interactives pendant l'installation
ENV DEBIAN_FRONTEND=noninteractive
ENV ANDROID_HOME=/opt/android-sdk
ENV ANDROID_AVD_HOME=${ANDROID_HOME}/.android/avd
ENV ANDROID_USER_HOME=${ANDROID_HOME}/.android
ENV PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator
ARG VERSION_SEABIOS="1.17.0-1"
ARG VERSION_QEMU="1:11.1.0+ds-2"
ARG DEBIAN_SNAPSHOT="20260819T142328Z"
ARG VERSION_EFI="2026.05-2"
RUN echo "deb https://deb.debian.org/debian trixie non-free" > /etc/apt/sources.list.d/non-free.list
RUN apt-get update && apt-get install -y --no-install-recommends \
bc \
jq \
xxd \
tini \
wget \
7zip \
7zip-rar \
curl \
aria2 \
fdisk \
gnupg \
nginx \
unzip \
procps \
ipcalc \
ethtool \
python3 \
python3-pip \
iptables \
iproute2 \
dnsmasq \
xorriso \
pciutils \
xz-utils \
apt-utils \
net-tools \
e2fsprogs \
diffutils \
util-linux \
cpu-checker \
iputils-ping \
genisoimage \
inotify-tools \
netcat-openbsd \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Installation de SDK Android
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools \
&& wget -O /tmp/sdk-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip \
&& unzip /tmp/sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools \
&& mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest \
&& rm /tmp/sdk-tools.zip
# Installation des autres dépendances + DÉPENDANCES DE L'ÉMULATEUR
RUN curl -fSsL -A "Mozilla/5.0" https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" > /etc/apt/sources.list.d/microsoft-prod.list \
&& apt-get update
RUN apt-get install -y --no-install-recommends \
git \
openjdk-21-jdk-headless \
libstdc++6 \
make \
po-debconf \
zlib1g \
libglx-mesa0 \
dotnet-sdk-10.0 \
qemu-kvm \
libglu1-mesa \
libgl1 \
libglx0 \
libpulse0 \
libtinfo6 \
libx11-6 \
libxext6 \
libxi6 \
libxkbfile1 \
libxkbcommon0 \
libxkbcommon-x11-0 \
libxrender1 \
libxtst6 \
&& rm -rf /var/lib/apt/lists/*
RUN <<EOF
# Install QEMU 11 and AArch64 UEFI firmware from Debian Sid
echo "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT}/ sid main" \
> /etc/apt/sources.list.d/qemu-snapshot.list
apt-get update
apt-get --no-install-recommends -y -t sid install \
"seabios=${VERSION_SEABIOS}" \
"qemu-utils=${VERSION_QEMU}" \
"qemu-efi-aarch64=${VERSION_EFI}" \
"qemu-system-arm=${VERSION_QEMU}"
EOF
ENV QT_QPA_PLATFORM=offscreen
ENV ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
ENV ANDROID_SDK_ROOT=${ANDROID_HOME}
RUN <<EOF
# Setup avd
echo "hw.ramSize = 3072" >> ${ANDROID_AVD_HOME}/postit_test_avd.ini
echo "hw.ramSize = 2048" >> ${ANDROID_AVD_HOME}/postit_test_avd.ini
echo "hw.heapSize = 256" >> ${ANDROID_AVD_HOME}/postit_test_avd.ini
echo "hw.gpu.enabled = yes" >> ${ANDROID_AVD_HOME}/postit_test_avd.ini
echo "hw.gpu.mode = host" >> ${ANDROID_AVD_HOME}/postit_test_avd.ini
echo "Vulkan = off" >> ${ANDROID_AVD_HOME}/advancedFeatures.ini
echo "enableHostVulkan = no" >> ${ANDROID_AVD_HOME}/advancedFeatures.ini
echo "GLDirectMem = off" >> ${ANDROID_AVD_HOME}/advancedFeatures.ini
EOF
# Installation du workload .NET Android
RUN dotnet workload install android --skip-manifest-update
# 4. Acceptation des licences et installation des composants
RUN yes | sdkmanager --licenses \
&& sdkmanager "platform-tools" \
"platforms;android-36" \
"build-tools;36.0.0" \
"emulator" \
"system-images;android-36;google_apis;x86_64"
# 4b. AJOUT : Création pré-embarquée de l'AVD
RUN mkdir -p ${ANDROID_USER_HOME} \
&& echo "no" | avdmanager create avd \
-n postit_test_avd \
-k "system-images;android-36;google_apis;x86_64" \
-d "pixel" \
--force \
&& chmod -R 777 ${ANDROID_USER_HOME}
# 5. Installation du workload .NET Android
RUN dotnet workload install android --skip-manifest-update
WORKDIR /src
CMD ["bash"]