Dockerfile45 lines · 1584 chars FROM gradle:jdk8-jammy
# Install Android SDK dependencies
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl unzip ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Android SDK root and PATH
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools"
RUN mkdir -p "$ANDROID_SDK_ROOT" \
&& mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" \
&& mkdir -p "$ANDROID_SDK_ROOT/platform-tools" \
&& mkdir -p "$ANDROID_SDK_ROOT/build-tools" \
&& mkdir -p "$ANDROID_SDK_ROOT/licenses" \
\
&& curl -o /tmp/commandlinetools.zip -L https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip \
&& unzip -q /tmp/commandlinetools.zip -d "$ANDROID_SDK_ROOT/cmdline-tools" \
&& rm -f /tmp/commandlinetools.zip \
&& mv "$ANDROID_SDK_ROOT/cmdline-tools" "$ANDROID_SDK_ROOT/cmdline-tools/latest" 2>/dev/null || true
# Accept licenses and install essential packages (run as root)
RUN yes | sdkmanager --licenses 2>/dev/null || true
RUN yes | sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.3" 2>/dev/null || true
# Build workspace
WORKDIR /workspace
COPY . /workspace
# Make gradlew executable
RUN chmod +x /workspace/gradlew
# Create a non-root user to perform the build
RUN useradd -m builder
RUN chown -R builder:builder /workspace /opt/android-sdk
USER builder
# Build the project from source
RUN ./gradlew clean build
# Default to an interactive shell for inspection
CMD ["bash"]