FROM debian:12-slim

ENV DEBIAN_FRONTEND=noninteractive

# ===== ВЕРСИИ (фиксируем для стабильности CI) =====
ENV FLUTTER_VERSION=3.41.2
ENV ANDROID_API=36
ENV ANDROID_BUILD_TOOLS=35.0.0
ENV ANDROID_CMDLINE_TOOLS=11076708
ENV NODE_MAJOR=24

# ===== ПУТИ =====
ENV ANDROID_HOME=/opt/android-sdk
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV FLUTTER_HOME=/opt/flutter
ENV GRADLE_USER_HOME=/opt/gradle

ENV PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$FLUTTER_HOME/bin

# ===== БАЗОВЫЕ ПАКЕТЫ =====
RUN apt-get update && apt-get install -y \
    curl \
    git \
    unzip \
    xz-utils \
    zip \
    libglu1-mesa \
    openjdk-17-jdk \
    wget \
    ca-certificates \
    bash \
    libc6 \
    libstdc++6 \
    gnupg \
    && rm -rf /var/lib/apt/lists/*

# ===== Установка Node.js 20 через NodeSource (рекомендуемый способ 2025+) =====
RUN mkdir -p /etc/apt/keyrings \
    && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
    && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
    && apt-get update \
    && apt-get install -y nodejs \
    && npm install -g npm@latest \
    && rm -rf /var/lib/apt/lists/*

# ===== ANDROID SDK =====
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools \
    && cd ${ANDROID_HOME}/cmdline-tools \
    && wget https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS}_latest.zip -O sdk-tools.zip \
    && unzip sdk-tools.zip \
    && rm sdk-tools.zip \
    && mv cmdline-tools latest

# Принимаем лицензии
RUN yes | sdkmanager --licenses

RUN sdkmanager --verbose \
    "platform-tools" \
    "platforms;android-36" \
    "build-tools;35.0.0" \
    "ndk;28.2.13676358" \
    "cmake;3.22.1" \
    && rm -rf ${ANDROID_HOME}/.cache

# Устанавливаем только нужное
RUN sdkmanager \
    "platform-tools" \
    "platforms;android-${ANDROID_API}" \
    "build-tools;${ANDROID_BUILD_TOOLS}"

# ===== FLUTTER =====
RUN git clone https://github.com/flutter/flutter.git \
    --branch ${FLUTTER_VERSION} \
    --depth 1 \
    ${FLUTTER_HOME}

# Precache только Android (без web, linux, macOS)
RUN flutter precache --android

# ===== GRADLE (предварительный warmup) =====
RUN mkdir -p ${GRADLE_USER_HOME}

# ===== ОЧИСТКА МУСОРА =====
RUN rm -rf /root/.cache \
    && rm -rf ${ANDROID_HOME}/.android \
    && rm -rf /tmp/*

# Warm-up Gradle (скачивает wrapper, daemons, common deps)
RUN mkdir -p ${GRADLE_USER_HOME} \
    && echo "org.gradle.daemon=true" >> ${GRADLE_USER_HOME}/gradle.properties \
    && echo "org.gradle.parallel=true" >> ${GRADLE_USER_HOME}/gradle.properties \
    && echo "org.gradle.caching=true" >> ${GRADLE_USER_HOME}/gradle.properties

WORKDIR /app