From 6729c645198eef93ceccd2cdb70bc73c25f192a5 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 00:38:22 +0100 Subject: [PATCH 1/9] no libnatspec --- Dockerfile | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index ce9eff8..e049f00 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,8 +3,8 @@ FROM debian:12-slim # Éviter les invites interactives pendant l'installation ENV DEBIAN_FRONTEND=noninteractive ENV ANDROID_HOME=/opt/android-sdk -# CORRECTION : Le PATH ne contient que des dossiers (pas le fichier de destination final) -ENV PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools + +ENV PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ @@ -16,14 +16,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* # Installation de SDK Android -# CORRECTION : Création de la structure correcte exigée par Google (cmdline-tools/latest) 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 +# 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 && apt-get install -y --no-install-recommends \ @@ -34,17 +33,23 @@ RUN curl -fSsL -A "Mozilla/5.0" https://packages.microsoft.com/keys/microsoft.as po-debconf \ zlib1g \ dotnet-sdk-10.0 \ + qemu-kvm \ + libpulse0 \ + libglu1-mesa \ + libgl1-mesa-glx \ && rm -rf /var/lib/apt/lists/* -# 4. Acceptation des licences Android et installation des composants de base -# Prise en compte de votre demande pour Android 36 et build-tools 36.0.0 +# Acceptation des licences et installation des composants RUN yes | sdkmanager --licenses \ - && sdkmanager "platform-tools" "platforms;android-36" "build-tools;36.0.0" + && sdkmanager "platform-tools" \ + "platforms;android-36" \ + "build-tools;36.0.0" \ + "emulator" \ + "system-images;android-36;google_apis;x86_64" -# 5. Installation du workload .NET Android +# Installation du workload .NET Android RUN dotnet workload install android --skip-manifest-update -# Définition du répertoire de travail par défaut WORKDIR /src -CMD ["bash"] +CMD ["bash"] \ No newline at end of file From ac799e5577bb0b1b5d9ab789c56472df86271f76 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 01:10:02 +0100 Subject: [PATCH 2/9] create a picel_test --- Dockerfile | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index e049f00..e346e5b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,7 +39,13 @@ RUN curl -fSsL -A "Mozilla/5.0" https://packages.microsoft.com/keys/microsoft.as libgl1-mesa-glx \ && rm -rf /var/lib/apt/lists/* -# Acceptation des licences et installation des composants +# Installation du workload .NET Android +RUN dotnet workload install android --skip-manifest-update + +# AJOUT CRITIQUE : Fixer l'emplacement des AVD dans le SDK pour qu'il soit partagé et accessible peu importe l'utilisateur de la CI +ENV ANDROID_USER_HOME=${ANDROID_HOME}/.android + +# 4. Acceptation des licences et installation des composants RUN yes | sdkmanager --licenses \ && sdkmanager "platform-tools" \ "platforms;android-36" \ @@ -47,9 +53,16 @@ RUN yes | sdkmanager --licenses \ "emulator" \ "system-images;android-36;google_apis;x86_64" -# Installation du workload .NET Android +# 4b. AJOUT : Création pré-embarquée de l'AVD +# Nous créons le dossier parent et appliquons des permissions larges (777) pour éviter les blocages de droits dans Forgejo +RUN mkdir -p ${ANDROID_USER_HOME} \ + && echo "no" | avdmanager create avd -n pixel_test -k "system-images;android-36;google_apis;x86_64" --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"] \ No newline at end of file From edc4f4175921c4ef42089c5b636bb4793ddc07d8 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 03:53:38 +0100 Subject: [PATCH 3/9] avd renamed --- Dockerfile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index e346e5b..56fa700 100644 --- a/Dockerfile +++ b/Dockerfile @@ -54,11 +54,16 @@ RUN yes | sdkmanager --licenses \ "system-images;android-36;google_apis;x86_64" # 4b. AJOUT : Création pré-embarquée de l'AVD -# Nous créons le dossier parent et appliquons des permissions larges (777) pour éviter les blocages de droits dans Forgejo + RUN mkdir -p ${ANDROID_USER_HOME} \ - && echo "no" | avdmanager create avd -n pixel_test -k "system-images;android-36;google_apis;x86_64" --force \ + && 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 From 49850428fc9678e1a5d33c094c6a84601c6d0dd2 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 04:11:01 +0100 Subject: [PATCH 4/9] use a smal screen size --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 56fa700..e9d1749 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM debian:12-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 PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator RUN apt-get update && apt-get install -y --no-install-recommends \ @@ -63,11 +63,13 @@ RUN mkdir -p ${ANDROID_USER_HOME} \ --force \ && chmod -R 777 ${ANDROID_USER_HOME} +RUN sed -i 's/hw.lcd.height.*/hw.lcd.height=800/g' /root/.android/avd/pixel_test.avd/config.ini +RUN sed -i 's/hw.lcd.width.*/hw.lcd.width=480/g' /root/.android/avd/pixel_test.avd/config.ini +RUN sed -i 's/hw.lcd.density.*/hw.lcd.density=240/g' /root/.android/avd/pixel_test.avd/config.ini # 5. Installation du workload .NET Android RUN dotnet workload install android --skip-manifest-update - WORKDIR /src CMD ["bash"] \ No newline at end of file From e13f94f44b6a4df9c637ece0d9effb84c4a382b8 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 04:33:00 +0100 Subject: [PATCH 5/9] did not work --- Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index e9d1749..89e12a4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -63,10 +63,6 @@ RUN mkdir -p ${ANDROID_USER_HOME} \ --force \ && chmod -R 777 ${ANDROID_USER_HOME} -RUN sed -i 's/hw.lcd.height.*/hw.lcd.height=800/g' /root/.android/avd/pixel_test.avd/config.ini -RUN sed -i 's/hw.lcd.width.*/hw.lcd.width=480/g' /root/.android/avd/pixel_test.avd/config.ini -RUN sed -i 's/hw.lcd.density.*/hw.lcd.density=240/g' /root/.android/avd/pixel_test.avd/config.ini - # 5. Installation du workload .NET Android RUN dotnet workload install android --skip-manifest-update From 08dd63f97ac1669ff40bd0962712da70ae71d7cf Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 07:50:26 +0100 Subject: [PATCH 6/9] jdk version bump and X11 libs --- Dockerfile | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 89e12a4..6aeda3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:12-slim +FROM debian:13-slim # Éviter les invites interactives pendant l'installation ENV DEBIAN_FRONTEND=noninteractive @@ -25,18 +25,30 @@ RUN mkdir -p ${ANDROID_HOME}/cmdline-tools \ # 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 && apt-get install -y --no-install-recommends \ + && apt-get update +RUN apt-get install -y --no-install-recommends \ git \ - openjdk-17-jdk-headless \ + openjdk-25-jdk-headless \ libstdc++6 \ make \ po-debconf \ zlib1g \ + libglx-mesa0 \ dotnet-sdk-10.0 \ qemu-kvm \ - libpulse0 \ libglu1-mesa \ - libgl1-mesa-glx \ + libgl1 \ + libglx0 \ + libpulse0 \ + libtinfo6 \ + libx11-6 \ + libxext6 \ + libxi6 \ + libxkbfile1 \ + libxkbcommon0 \ + libxkbcommon-x11-0 \ + libxrender1 \ + libxtst6 \ && rm -rf /var/lib/apt/lists/* # Installation du workload .NET Android From 5953a5d9f0e7b6a8cb3f8827c3417476e105c621 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 16:40:45 +0100 Subject: [PATCH 7/9] +qemu --- Dockerfile | 64 ++++++++++++++++++++++++++++++++++++++++++++++++------ README.md | 2 +- 2 files changed, 58 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6aeda3c..8cba4e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,15 +4,53 @@ FROM debian:13-slim 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 \ - ca-certificates \ - wget \ - curl \ - gnupg \ - unzip \ + 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 @@ -50,12 +88,24 @@ RUN apt-get install -y --no-install-recommends \ libxrender1 \ libxtst6 \ && rm -rf /var/lib/apt/lists/* + + +RUN < /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 # Installation du workload .NET Android RUN dotnet workload install android --skip-manifest-update -# AJOUT CRITIQUE : Fixer l'emplacement des AVD dans le SDK pour qu'il soit partagé et accessible peu importe l'utilisateur de la CI -ENV ANDROID_USER_HOME=${ANDROID_HOME}/.android # 4. Acceptation des licences et installation des composants RUN yes | sdkmanager --licenses \ diff --git a/README.md b/README.md index 2dff478..5c6ed93 100644 --- a/README.md +++ b/README.md @@ -35,5 +35,5 @@ Le `runner.labels` du runner doit pointer sur le bon tag pour que les jobs `runs-on: docker` le pull. Format : ```yaml -docker:docker://pazof/yavsc-build-env:debian12-dotnet10-android36-v +docker:docker://pazof/yavsc-build-env:debian13-dotnet10-android36-v ``` From 90079ef9e8f0511f133aac54889a395322134a06 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 20:59:41 +0100 Subject: [PATCH 8/9] Jdk 25 not supported at build time --- Dockerfile | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8cba4e9..b2d5d74 100644 --- a/Dockerfile +++ b/Dockerfile @@ -66,7 +66,7 @@ RUN curl -fSsL -A "Mozilla/5.0" https://packages.microsoft.com/keys/microsoft.as && apt-get update RUN apt-get install -y --no-install-recommends \ git \ - openjdk-25-jdk-headless \ + openjdk-21-jdk-headless \ libstdc++6 \ make \ po-debconf \ @@ -103,6 +103,24 @@ RUN <> ${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 From 5a0e39a870e075ef6fdce6d4a819de61a5cf8192 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 26 Aug 2026 22:05:18 +0100 Subject: [PATCH 9/9] this setup was failing, and is not usable --- Dockerfile | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index b2d5d74..5013ffd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -107,20 +107,6 @@ ENV QT_QPA_PLATFORM=offscreen ENV ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 ENV ANDROID_SDK_ROOT=${ANDROID_HOME} -RUN <> ${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