Dockerfile raw
1 FROM debian:bookworm
2
3 ENV DEBIAN_FRONTEND=noninteractive
4
5 RUN apt-get update && \
6 apt-get install -y openjdk-17-jdk-headless \
7 cmake make m4 pkg-config python-is-python3 python3-venv \
8 tcl gyp ninja-build bzip2 libffi-dev libsqlite3-dev binutils-dev clang lld \
9 libssl-dev zlib1g-dev nodejs terser nasm git curl unzip wget patch \
10 ca-certificates && \
11 apt-get clean
12
13 # Gradle - multiple versions for different projects
14 RUN wget -q https://services.gradle.org/distributions/gradle-8.11.1-bin.zip -O /tmp/g1.zip && \
15 unzip -q /tmp/g1.zip -d /opt && rm /tmp/g1.zip && \
16 wget -q https://services.gradle.org/distributions/gradle-8.14.3-bin.zip -O /tmp/g2.zip && \
17 unzip -q /tmp/g2.zip -d /opt && rm /tmp/g2.zip && \
18 wget -q https://services.gradle.org/distributions/gradle-9.2.1-bin.zip -O /tmp/g3.zip && \
19 unzip -q /tmp/g3.zip -d /opt && rm /tmp/g3.zip && \
20 ln -s /opt/gradle-8.11.1/bin/gradle /usr/local/bin/gradle
21
22 # Rust
23 RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.93.0 && \
24 . /root/.cargo/env && \
25 rustup target add aarch64-linux-android && \
26 cargo install --force --vers 0.29.2 cbindgen
27
28 ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
29 ENV ANDROID_HOME=/opt/android-sdk
30 ENV ANDROID_SDK=/opt/android-sdk
31 ENV PATH="/root/.cargo/bin:${ANDROID_HOME}/cmdline-tools/latest/bin:${PATH}"
32
33 # Android SDK
34 RUN mkdir -p ${ANDROID_HOME}/cmdline-tools && \
35 cd /tmp && \
36 wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip && \
37 unzip -q commandlinetools-linux-11076708_latest.zip && \
38 mv cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest && \
39 rm commandlinetools-linux-11076708_latest.zip && \
40 yes | sdkmanager --licenses > /dev/null 2>&1 && \
41 sdkmanager 'build-tools;36.1.0' 'platforms;android-36.1' 'ndk;29.0.14206865'
42
43 ENV ANDROID_NDK=${ANDROID_HOME}/ndk/29.0.14206865
44
45 WORKDIR /build
46