# Use a Linux base image with OpenJDK and Android SDK setup via command line tools
FROM ubuntu:18.04
ENV DEBIAN_FRONTEND=noninteractive
# Install required packages
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl unzip openjdk-8-jdk git wget build-essential && rm -rf /var/lib/apt/lists/*
# Java environment
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
ENV PATH=$PATH:$JAVA_HOME/bin
# Android SDK installation
ENV ANDROID_SDK_ROOT=/sdk
ENV PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/tools/bin:$ANDROID_SDK_ROOT/platform-tools
RUN mkdir -p ${ANDROID_SDK_ROOT} && \
curl -L https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip -o /tmp/commandlinetools.zip && \
unzip /tmp/commandlinetools.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools && \
# Move to 'latest' folder to satisfy PATH lookups
mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/latest && \
rm /tmp/commandlinetools.zip && \
yes | sdkmanager --sdk_root=${ANDROID_SDK_ROOT} "platform-tools" "platforms;android-25" "build-tools;25.0.1" "extras;android;m2repository" "extras;google;m2repository"
# Set working directory and copy source
WORKDIR /workspace
COPY . .
# Build the project using the Gradle wrapper
RUN ./gradlew clean assembleDebug || true
CMD ["bash","-lc","echo Build complete; ls -la Sample/build/outputs/apk/debug || true; tail -f /dev/null"]
/.gradle /build Sample/build .spacemacs.d *.tmp *.log .DS_Store .idea/ .gradle/ */local.properties
Concerns: The Gradle build step is suffixed with '|| true', which masks build failures and may result in an image with no APK if the build failed., Base image ubuntu:18.04 is relatively old; consider upgrading to a newer LTS (e.g., ubuntu:20.04 or 22.04) for security updates and compatibility., Android command-line tools URL is hard-coded without a checksum; potential reproducibility and security concerns. Pinning a version and verifying checksums is advisable. Smoke [PASS]: java -version Smoke [PASS]: if [ -d Sample/build/outputs/apk/debug ]; then ls -la Sample/build/outputs/apk/debug; else echo 'APK directory missing'; fi Smoke [PASS]: if [ -d /sdk/platform-tools ]; then echo 'Android platform-tools present'; else echo 'Android platform-tools missing'; fi