@@ -88,6 +88,85 @@ RUN git config --system --add safe.directory '*'
8888RUN flutter --version && rustc --version && cargo --version && node --version && go version
8989
9090
91+ # Android-only image: no Linux/Windows cross-compilers, no OpenCV/OpenCL, single Rust toolchain with android targets
92+ FROM ubuntu:24.04 AS android
93+
94+ ENV DEBIAN_FRONTEND=noninteractive \
95+ TZ=Etc/UTC \
96+ LANG=C.UTF-8 \
97+ LC_ALL=C.UTF-8
98+
99+ SHELL ["/bin/bash" , "-o" , "pipefail" , "-c" ]
100+
101+ RUN apt-get update && apt-get install -y --no-install-recommends \
102+ ca-certificates curl file git gnupg python3 sudo unzip xz-utils \
103+ build-essential cmake ninja-build pkg-config \
104+ libssl-dev zlib1g-dev \
105+ openjdk-21-jdk-headless \
106+ && rm -rf /var/lib/apt/lists/*
107+
108+ ENV RUSTUP_HOME=/usr/local/rustup \
109+ CARGO_HOME=/usr/local/cargo \
110+ PATH=/usr/local/cargo/bin:$PATH
111+
112+ RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
113+ | sh -s -- -y --default-toolchain 1.89.0 --profile minimal --no-modify-path \
114+ && rustup target add \
115+ aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android \
116+ --toolchain 1.89.0 \
117+ && cargo install cargo-ndk \
118+ && chmod -R a+rwX "$CARGO_HOME" "$RUSTUP_HOME"
119+
120+ ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
121+
122+ ENV ANDROID_SDK_ROOT=/opt/android-sdk \
123+ ANDROID_HOME=/opt/android-sdk \
124+ ANDROID_NDK_ROOT=/opt/android-sdk/ndk/28.2.13676358 \
125+ ANDROID_NDK_HOME=/opt/android-sdk/ndk/28.2.13676358 \
126+ PATH=/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:$PATH
127+
128+ RUN mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" \
129+ && curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip \
130+ -o /tmp/cmdline-tools.zip \
131+ && echo "48833c34b761c10cb20bcd16582129395d121b27 /tmp/cmdline-tools.zip" | sha1sum -c \
132+ && unzip -q /tmp/cmdline-tools.zip -d "$ANDROID_SDK_ROOT/cmdline-tools" \
133+ && mv "$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools" "$ANDROID_SDK_ROOT/cmdline-tools/latest" \
134+ && rm /tmp/cmdline-tools.zip \
135+ && mkdir -p "$ANDROID_SDK_ROOT/licenses" \
136+ && printf '\n 24333f8a63b6825ea9c5514f83c2829b004d1fee\n 8933bad161af4178b1185d1a37fbf41ea5269c55d7b9237478ea8ec3307c27e4' \
137+ > "$ANDROID_SDK_ROOT/licenses/android-sdk-license" \
138+ && printf '\n 84831b9409646a918e30573bab4c9c91346d8abd' \
139+ > "$ANDROID_SDK_ROOT/licenses/android-sdk-preview-license" \
140+ && printf '\n 859f317696f67ef3d7f30a50a5560e7834b43903' \
141+ > "$ANDROID_SDK_ROOT/licenses/android-sdk-arm-dbt-license" \
142+ && sdkmanager \
143+ "platform-tools" \
144+ "build-tools;35.0.0" \
145+ "platforms;android-35" \
146+ "ndk;28.2.13676358" \
147+ && chmod -R a+rwX "$ANDROID_SDK_ROOT"
148+
149+ ENV PATH=/usr/local/go/bin:$PATH
150+
151+ RUN curl -fsSL https://go.dev/dl/go1.24.13.linux-amd64.tar.gz -o /tmp/go.tar.gz \
152+ && echo "1fc94b57134d51669c72173ad5d49fd62afb0f1db9bf3f798fd98ee423f8d730 /tmp/go.tar.gz" | sha256sum -c \
153+ && tar -C /usr/local -xzf /tmp/go.tar.gz \
154+ && rm /tmp/go.tar.gz
155+
156+ ENV FLUTTER_HOME=/opt/flutter \
157+ PATH=/opt/flutter/bin:/opt/flutter/bin/cache/dart-sdk/bin:$PATH
158+
159+ RUN git clone --depth 1 --branch 3.38.1 https://github.com/flutter/flutter.git "$FLUTTER_HOME" \
160+ && git config --global --add safe.directory '*' \
161+ && flutter config --no-analytics \
162+ && flutter precache --android \
163+ && chmod -R a+rwX "$FLUTTER_HOME"
164+
165+ RUN git config --system --add safe.directory '*'
166+
167+ RUN flutter --version && rustc --version && cargo --version && go version
168+
169+
91170# Minimal image for flutter test (no Rust, no Android SDK, no cross-compilers)
92171FROM ubuntu:24.04 AS test
93172
0 commit comments