facebookincubator-spectrum
SUCCESS
48m 49s
History Source
SummaryIterations2Transcript45Dockerfile
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"]