Dockerfile53 lines · 1872 chars FROM gradle:jdk25
# Dockerfile to build Mastodon for Android from source using Gradle and Android SDK
ENV DEBIAN_FRONTEND=noninteractive
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV PATH=$PATH:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/tools/bin:${ANDROID_SDK_ROOT}/platform-tools
# Install system dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Install Android Command Line Tools and Android SDK components
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools \
&& curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o /tmp/commandlinetools-linux.zip \
&& unzip -q /tmp/commandlinetools-linux.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools \
&& rm /tmp/commandlinetools-linux.zip \
&& mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/latest
# Accept licenses and install essential components
RUN yes | ${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.0"
# Prepare workspace
WORKDIR /workspace
# Copy source
COPY . .
# Provide Gradle with Android SDK dir and enable signing via environment (CI will supply keystore in CI runs)
RUN echo "sdk.dir=${ANDROID_SDK_ROOT}" > local.properties
# Ensure Gradle wrapper is executable and available
RUN chmod +x ./gradlew
# Print Gradle version to verify environment
RUN ./gradlew --version
# Build release artifacts (best effort; signing may require CI-provided keystore)
RUN ./gradlew assembleRelease || true
RUN ./gradlew assembleGithubRelease || true
# Default to an interactive shell to inspect the image if needed
CMD ["bash"]