diff --git a/Dockerfile b/Dockerfile index ce9eff8..5013ffd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,50 +1,137 @@ -FROM debian:12-slim +FROM debian:13-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 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 -# 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 \ + && apt-get update +RUN apt-get install -y --no-install-recommends \ git \ - openjdk-17-jdk-headless \ + 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/* + -# 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 +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 + +ENV QT_QPA_PLATFORM=offscreen +ENV ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 +ENV ANDROID_SDK_ROOT=${ANDROID_HOME} + +# 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" + && 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 -# Définition du répertoire de travail par défaut WORKDIR /src -CMD ["bash"] +CMD ["bash"] \ No newline at end of file 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 ```