Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
32 lines (20 loc) · 3 KB
/
Copy pathDockerfile
File metadata and controls
32 lines (20 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
FROM eclipse-temurin:17-jdk-jammy
ARG ANDROID_CMDLINE_TOOLS=11076708
ARG ANDROID_PLATFORM=35
ARG ANDROID_BUILD_TOOLS=35.0.0
ARG ANDROID_NDK=28.2.13676358
ARG GRADLE_VERSION=8.11.1
ARG RUST_TOOLCHAIN=stable
ARG NODE_VERSION=22.14.0
ARG FFMPEG_VERSION=9.0
LABEL org.opencontainers.image.source="https://github.com/anthaathi/android-action" org.opencontainers.image.description="Prebuilt Android, Rust, Gradle and FFmpeg CI environment" org.opencontainers.image.licenses="MIT"
ENV DEBIAN_FRONTEND=noninteractive ANDROID_HOME=/opt/android-sdk ANDROID_SDK_ROOT=/opt/android-sdk NDK_HOME=/opt/android-sdk/ndk/28.2.13676358 GRADLE_HOME=/opt/gradle CARGO_HOME=/opt/cargo RUSTUP_HOME=/opt/rustup FFMPEG_ANDROID=/opt/android-ffmpeg/ffmpeg-9.0/bin/ffmpeg PATH=/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/opt/android-sdk/build-tools/35.0.0:/opt/gradle/bin:/opt/cargo/bin:/opt/node/bin:$PATH
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl git unzip zip xz-utils python3 build-essential pkg-config && rm -rf /var/lib/apt/lists/*
RUN mkdir -p "$ANDROID_HOME/cmdline-tools" && curl -fsSL "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS}_latest.zip" -o /tmp/android-tools.zip && unzip -q /tmp/android-tools.zip -d /tmp/android-tools && mv /tmp/android-tools/cmdline-tools "$ANDROID_HOME/cmdline-tools/latest" && rm -rf /tmp/android-tools /tmp/android-tools.zip && (yes | sdkmanager --licenses >/dev/null || true) && sdkmanager "platform-tools" "platforms;android-${ANDROID_PLATFORM}" "build-tools;34.0.0" "build-tools;${ANDROID_BUILD_TOOLS}" "ndk;${ANDROID_NDK}" && chmod -R a+rX "$ANDROID_HOME"
RUN curl -fsSL "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" -o /tmp/gradle.zip && unzip -q /tmp/gradle.zip -d /opt && mv "/opt/gradle-${GRADLE_VERSION}" "$GRADLE_HOME" && rm /tmp/gradle.zip
RUN curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" -o /tmp/node.tar.xz && mkdir -p /opt/node && tar -xJf /tmp/node.tar.xz --strip-components=1 -C /opt/node && rm /tmp/node.tar.xz
RUN curl --proto '=https' --tlsv1.2 -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain "${RUST_TOOLCHAIN}" && rustup target add aarch64-linux-android && chmod -R a+rX "$CARGO_HOME" "$RUSTUP_HOME"
RUN git clone --depth 1 --filter=blob:none --sparse https://github.com/hzw1199/Android-FFmpeg-Prebuilt /opt/android-ffmpeg && git -C /opt/android-ffmpeg sparse-checkout set "ffmpeg-${FFMPEG_VERSION}/bin" && test -x "$FFMPEG_ANDROID"
RUN java -version && gradle --version && sdkmanager --version && rustc --version && cargo --version && rustup target list --installed | grep -qx aarch64-linux-android && node --version && test -x "$FFMPEG_ANDROID"
WORKDIR /workspace