Dockerfile51 lines · 1827 chars FROM gradle:jdk11
# Build Spectrum Android native library from source using Gradle and CMake
# This container installs Android SDK/NDK and builds the project.
ENV DEBIAN_FRONTEND=noninteractive
# Install system dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
curl \
unzip \
git \
build-essential \
cmake \
&& rm -rf /var/lib/apt/lists/*
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV ANDROID_HOME=${ANDROID_SDK_ROOT}
ENV PATH=${PATH}:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin
# Install Android command-line tools (sdkmanager) and set up PATH
RUN mkdir -p ${ANDROID_SDK_ROOT} \
&& cd ${ANDROID_SDK_ROOT} \
&& curl -fsSL -o /tmp/commandlinetools-linux_latest.zip https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip \
&& unzip -qq /tmp/commandlinetools-linux_latest.zip -d /tmp/cmdline-tools \
&& mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools/latest \
&& mv /tmp/cmdline-tools/cmdline-tools/* ${ANDROID_SDK_ROOT}/cmdline-tools/latest/ \
&& rm -rf /tmp/commandlinetools-linux_latest.zip /tmp/cmdline-tools
RUN ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --licenses
RUN ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager \
"platform-tools" \
"platforms;android-33" \
"build-tools;33.0.2" \
"ndk;23.1.7779620"
# Set work directory and copy source
WORKDIR /workspace
COPY . /workspace
# Build the Android project with Gradle wrapper (use Gradle from the image if wrapper is missing)
RUN chmod +x android/gradlew \
&& cd android \
&& ./gradlew build -x test || gradle build -x test
# Final runtime container setup
# This image is intended for building; artifacts are in android/
CMD ["bash"]