# DSH 工作台 Android 构建环境
# 用法：
#   docker build -t dsh-appbuilder \
#     --build-arg http_proxy=$http_proxy --build-arg https_proxy=$https_proxy \
#     --build-arg no_proxy=$no_proxy .
#   ./build.sh
#
# 产出：build/app/outputs/flutter-apk/app-*.apk
FROM eclipse-temurin:17-jdk-jammy

ARG http_proxy
ARG https_proxy
ARG no_proxy
ENV http_proxy=$http_proxy \
    https_proxy=$https_proxy \
    no_proxy=$no_proxy \
    DEBIAN_FRONTEND=noninteractive \
    ANDROID_HOME=/opt/android-sdk \
    PUB_CACHE=/opt/pub-cache \
    PATH=/opt/flutter/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:$PATH

RUN apt-get update \
    && apt-get install -y --no-install-recommends xz-utils unzip ca-certificates curl git \
    && rm -rf /var/lib/apt/lists/*

ARG FLUTTER_VERSION=3.47.7
ARG CMDLINE_TOOLS_VERSION=13114758

# Flutter SDK（固定 stable 版本，来自官方 release 归档）
RUN curl -fsSL -o /tmp/flutter.tar.xz \
        "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz" \
    && tar -xJf /tmp/flutter.tar.xz -C /opt \
    && rm /tmp/flutter.tar.xz \
    && git config --global --add safe.directory /opt/flutter

# Android SDK cmdline-tools + 许可 + platform-tools
RUN curl -fsSL -o /tmp/tools.zip \
        "https://dl.google.com/android/repository/commandlinetools-linux-${CMDLINE_TOOLS_VERSION}_latest.zip" \
    && mkdir -p "${ANDROID_HOME}/cmdline-tools" \
    && unzip -q /tmp/tools.zip -d "${ANDROID_HOME}/cmdline-tools" \
    && mv "${ANDROID_HOME}/cmdline-tools/cmdline-tools" "${ANDROID_HOME}/cmdline-tools/latest" \
    && rm /tmp/tools.zip \
    && (yes | sdkmanager --licenses > /dev/null || true) \
    && sdkmanager "platform-tools" "platforms;android-37.0" > /dev/null

RUN flutter config --android-sdk "${ANDROID_HOME}" \
    && flutter --disable-analytics \
    && flutter precache --android \
    && flutter doctor

# 预热默认模板的 Gradle/AGP/AndroidX 和 SDK；GeckoView 的固定版本
# 在应用构建时从 Mozilla Maven 下载，不在这里预热旧 WebView 插件。
RUN flutter create --org dev.dsh --project-name warmup /tmp/warmup \
    && cd /tmp/warmup \
    && flutter build apk --release \
    && cd / && rm -rf /tmp/warmup \
    && flutter doctor

WORKDIR /project
