Dockerfile47 lines · 1870 chars FROM gradle:8.14-jdk11-jammy
# Android SDK installation and environment
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV ANDROID_HOME=$ANDROID_SDK_ROOT
ENV PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/tools/bin:$ANDROID_SDK_ROOT/platform-tools
# Install required system tools
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl unzip zip ca-certificates git \
&& rm -rf /var/lib/apt/lists/*
# Install Android Command-line Tools and SDK platforms/tools
RUN mkdir -p "$ANDROID_SDK_ROOT" \
&& mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" \
&& curl -o /tmp/commandlinetools-linux.zip -L https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip \
&& unzip -q /tmp/commandlinetools-linux.zip -d "$ANDROID_SDK_ROOT/cmdline-tools" \
&& mv "$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools" "$ANDROID_SDK_ROOT/cmdline-tools/latest" \
&& yes | "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" --licenses \
&& "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" "platforms;android-30" "build-tools;30.0.3" "platform-tools" \
&& rm -f /tmp/commandlinetools-linux.zip
# Environment for Java 11
ENV JAVA_HOME=/usr/local/openjdk-11
# Work directory
WORKDIR /workspace
# Copy source
COPY . /workspace
# Ensure gradlew is executable
RUN chmod +x ./gradlew
# Provide local.properties pointing to the Android SDK (required by Gradle Android plugin)
RUN bash -lc "echo sdk.dir=$ANDROID_SDK_ROOT > local.properties"
# Build the project from source (skip tests for speed in CI)
RUN ./gradlew clean assemble -x test
# Show build outputs (if any)
RUN ls -la app/build/outputs/apk || true
# Keep container alive after build to allow inspection if needed
CMD ["bash", "-lc", "echo Build complete. APKs (if any) are under app/build/outputs/apk; tail -f /dev/null"]