# Dockerfile for an Android compilation image, based on Debian Trixie Slim.
#
# NOTE: This docker image automatically accepts the Android SDK licenses. It may only be used
# from a wrapper script that explicitly asks the user to accept the license!
#
# Arguments:
#
# - `JAVA_VERSION`: Set this to the desired Java version (e.g. 21 )
# - `SDK_VERSION`: Set this to the desired Android SDK version (e.g. `35 `)
# - `NDK_VERSION`: Set this to the desired Android NDK version (e.g. `25 .2 .9519653 `)
# - `BUILD_TOOLS_VERSION`: Set this to the desired build tools version (e.g. `35 .0 .0 `)
# - `RUST_VERSION`: Set this to the desired Rust version (e.g. `1 .80 `)
FROM docker.io/debian:trixie-slim
# Arguments
ARG JAVA_VERSION=21
ARG SDK_VERSION=35
ARG BUILD_TOOLS_VERSION=35 .0 .0
ARG NDK_VERSION=28 .2 .13676358
ARG RUST_VERSION
# Install dependencies
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -q \
&& apt-get -y -q install --no-install-recommends \
build-essential file "openjdk-${JAVA_VERSION}-jdk" git wget unzip rsync vim-nox cpu-checker curl python3 protobuf-compiler \
&& rm -rf /var /lib/apt/lists/*
# Download Android command line tools
RUN mkdir - p / opt / android / cmdline - tools \
& & cd / opt / android / cmdline - tools \
& & wget https : //dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip \
& & unzip commandlinetools - linux - 6609375 _ latest . zip \
& & rm commandlinetools - linux - 6609375 _ latest . zip
ENV ANDROID_SDK_ROOT = / opt / android
# Install Android SDK
RUN yes Y | / opt / android / cmdline - tools / tools / bin / sdkmanager - - licenses
RUN / opt / android / cmdline - tools / tools / bin / sdkmanager - - install \
" tools " \
" platform - tools " \
" platforms ; android - $ { SDK_VERSION } " \
" ndk ; $ { NDK_VERSION } " \
" build - tools ; $ { BUILD_TOOLS_VERSION } " \
" emulator "
# The location of the rustup - init script to install rust ( rustup , rustc , cargo )
ENV RUSTUP_INIT = / rust / rustup - init . sh
# Set location to install rust
ENV RUSTUP_HOME = / rust / rustup
ENV CARGO_HOME = / rust / cargo
# Copy the rust installation script
COPY rustup - init . sh $ RUSTUP_INIT
# Install Rust
RUN $ RUSTUP_INIT - y - - default - toolchain $ RUST_VERSION
ENV PATH = " $ CARGO_HOME / bin : $ PATH "
RUN rustup target add x86_64 - linux - android \
& & rustup target add i686 - linux - android \
& & rustup target add armv7 - linux - androideabi \
& & rustup target add aarch64 - linux - android
# Allow anyone to write to the cargo directory
RUN chmod a + w $ CARGO_HOME
# Set env variables
ENV PATH = " $ ANDROID_SDK_ROOT / cmdline - tools / tools / bin : $ ANDROID_SDK_ROOT / platform - tools : $ PATH "
# Create users with typical UIDs to avoid problems with Docker when remapping the UID
RUN chmod a + w / home & & for newuid in $ ( seq 1000 1010 ) ; do useradd - M - d / home - u $ newuid - s / bin / bash " user $ newuid " ; done
# Create cache directories in order to be able to control the permissions of mounted volumes
RUN mkdir - p / code / build / code / app / . cxx \
& & chmod 777 / code / build / code / app / . cxx
Messung V0.5 in Prozent C=98 H=75 G=87
[Dauer der Verarbeitung: 0.1 Sekunden, vorverarbeitet 2026-06-10]