mirror of
https://git.eden-emu.dev/eden-emu/docker
synced 2026-02-04 02:41:22 +01:00
67 lines
2.8 KiB
Docker
67 lines
2.8 KiB
Docker
FROM ubuntu
|
|
|
|
RUN apt update && apt full-upgrade -y && apt install -y \
|
|
wget unzip git build-essential cmake ninja-build python3 python3-pip curl \
|
|
libasound2-dev libpulse-dev libjack-jackd2-dev \
|
|
pkg-config libssl-dev zlib1g-dev \
|
|
glslang-tools libvulkan-dev default-jdk \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
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} && \
|
|
cd ${ANDROID_SDK_ROOT} && \
|
|
SDK_ZIP=$(curl -sL https://developer.android.com/studio | \
|
|
sed -n 's|.*href="https://dl.google.com/android/repository/\(commandlinetools-linux-[0-9]*_latest.zip\).*|\1|p') && \
|
|
wget -q https://dl.google.com/android/repository/${SDK_ZIP} && \
|
|
unzip ${SDK_ZIP} && \
|
|
rm ${SDK_ZIP} && \
|
|
mkdir -p cmdline-tools/latest && \
|
|
mv cmdline-tools/* cmdline-tools/latest/ || true && \
|
|
rmdir cmdline-tools/bin cmdline-tools/lib 2>/dev/null || true
|
|
|
|
RUN yes | sdkmanager --licenses && \
|
|
LATEST_PLATFORM=$(sdkmanager --list | grep "platforms;android-" | tail -1 | awk '{print $1}') && \
|
|
LATEST_BUILD_TOOLS=$(sdkmanager --list | grep "build-tools;" | tail -1 | awk '{print $1}') && \
|
|
LATEST_CMAKE=$(sdkmanager --list | grep "cmake;" | tail -1 | awk '{print $1}') && \
|
|
LATEST_NDK=$(sdkmanager --list | grep "ndk;" | tail -1 | awk '{print $1}') && \
|
|
sdkmanager --no_https "platform-tools" "${LATEST_PLATFORM}" "${LATEST_BUILD_TOOLS}" "${LATEST_CMAKE}" "${LATEST_NDK}" && \
|
|
rm -rf ${ANDROID_SDK_ROOT}/system-images/* ${ANDROID_SDK_ROOT}/emulator/* ${ANDROID_SDK_ROOT}/extras/* 2>/dev/null || true
|
|
|
|
RUN GRADLE_VERSION=$(curl -sL https://gradle.org/releases/ | \
|
|
sed -n 's|.*https://services.gradle.org/distributions/gradle-\(8[0-9.]*\)-bin.zip.*|\1|p' | sort -V | tail -n 1) && \
|
|
wget -q https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip && \
|
|
unzip -q gradle-${GRADLE_VERSION}-bin.zip && \
|
|
mv gradle-${GRADLE_VERSION} /opt/gradle && \
|
|
rm gradle-${GRADLE_VERSION}-bin.zip
|
|
|
|
ENV PATH=${PATH}:/opt/gradle/bin
|
|
|
|
WORKDIR /workspace
|
|
RUN mkdir -p /output
|
|
|
|
COPY <<EOF /build.sh
|
|
#!/bin/bash
|
|
set -euo pipefail
|
|
cp -r /source/. /workspace
|
|
cd /workspace/src/android
|
|
E_UID=\$(stat -c '%u' /source)
|
|
E_GID=\$(stat -c '%g' /source)
|
|
BRANCH=\$(git rev-parse --abbrev-ref HEAD)
|
|
DATE=\$(TZ=UTC0 git show --quiet --date='format-local:%Y%m%d%H%M%S' --format="%cd")
|
|
SHORT_SHA=\$(git rev-parse --short HEAD)
|
|
ID=\${DATE}-\${BRANCH}-\${SHORT_SHA}
|
|
T=\${1}
|
|
if [[ "\${1}" == "optimized" ]]; then
|
|
T="genshinSpoof"
|
|
fi
|
|
./gradlew assemble\${T^}Release 2>&1 | tee /output/eden-\${1}-\${ID}.log
|
|
cp app/build/outputs/apk/\${T}/release/app-\${T}-release.apk /output/eden-\${1}-\${ID}.apk
|
|
chown \${E_UID}:\${E_GID} /output/*\${ID}*
|
|
EOF
|
|
RUN chmod +x /build.sh
|
|
|
|
ENTRYPOINT ["/build.sh"]
|
|
CMD ["mainline"]
|