102 lines
3.7 KiB
Docker
102 lines
3.7 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
ARG QT_VERSION=6.11.1
|
|
ARG AQTINSTALL_VERSION=3.3.0
|
|
ARG ANDROID_COMMAND_LINE_TOOLS_VERSION=15859902
|
|
ARG ANDROID_COMMAND_LINE_TOOLS_SHA256=4e4c464f145a7512b57d088ac6c278c03c9eea610886b35a5e0804e74eedf583
|
|
ARG ANDROID_NDK_VERSION=27.2.12479018
|
|
ARG ANDROID_OPENSSL_COMMIT=32ebe304ff064a9affb699b2185af78e3494f49a
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
QT_ROOT=/opt/Qt \
|
|
ANDROID_SDK_ROOT=/opt/android-sdk \
|
|
ANDROID_HOME=/opt/android-sdk \
|
|
ANDROID_NDK_ROOT=/opt/android-sdk/ndk/${ANDROID_NDK_VERSION} \
|
|
JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 \
|
|
PATH=/opt/aqt/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:${PATH}
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install --yes --no-install-recommends \
|
|
ca-certificates \
|
|
ccache \
|
|
cmake \
|
|
curl \
|
|
file \
|
|
git \
|
|
libavahi-client-dev \
|
|
libdbus-1-3 \
|
|
libegl1 \
|
|
libfontconfig1 \
|
|
libgl1 \
|
|
libx11-6 \
|
|
libx11-xcb1 \
|
|
libxcb-cursor0 \
|
|
libxcb-glx0 \
|
|
libxcb-icccm4 \
|
|
libxcb-image0 \
|
|
libxcb-keysyms1 \
|
|
libxcb-randr0 \
|
|
libxcb-render-util0 \
|
|
libxcb-shape0 \
|
|
libxcb-shm0 \
|
|
libxcb-sync1 \
|
|
libxcb-util1 \
|
|
libxcb-xfixes0 \
|
|
libxcb-xinerama0 \
|
|
libxcb-xkb1 \
|
|
libxcb1 \
|
|
libxkbcommon-x11-0 \
|
|
ninja-build \
|
|
openjdk-21-jdk-headless \
|
|
p7zip-full \
|
|
pkg-config \
|
|
python3 \
|
|
python3-venv \
|
|
unzip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN python3 -m venv /opt/aqt \
|
|
&& /opt/aqt/bin/pip install --no-cache-dir "aqtinstall==${AQTINSTALL_VERSION}" \
|
|
&& aqt install-qt linux desktop "${QT_VERSION}" linux_gcc_64 \
|
|
-m qtcharts qtwebsockets -O "${QT_ROOT}" \
|
|
&& aqt install-qt linux android "${QT_VERSION}" android_arm64_v8a \
|
|
-m qtcharts qtwebsockets -O "${QT_ROOT}" \
|
|
&& aqt install-qt linux android "${QT_VERSION}" android_armv7 \
|
|
-m qtcharts qtwebsockets -O "${QT_ROOT}"
|
|
|
|
RUN mkdir -p "${ANDROID_SDK_ROOT}/cmdline-tools" \
|
|
&& curl --fail --location --retry 5 \
|
|
--output /tmp/android-command-line-tools.zip \
|
|
"https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_COMMAND_LINE_TOOLS_VERSION}_latest.zip" \
|
|
&& echo "${ANDROID_COMMAND_LINE_TOOLS_SHA256} /tmp/android-command-line-tools.zip" | sha256sum --check \
|
|
&& unzip -q /tmp/android-command-line-tools.zip -d "${ANDROID_SDK_ROOT}/cmdline-tools" \
|
|
&& mv "${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools" "${ANDROID_SDK_ROOT}/cmdline-tools/latest" \
|
|
&& rm /tmp/android-command-line-tools.zip \
|
|
&& yes | sdkmanager --licenses >/dev/null \
|
|
&& sdkmanager \
|
|
"platform-tools" \
|
|
"platforms;android-36" \
|
|
"build-tools;36.0.0" \
|
|
"ndk;${ANDROID_NDK_VERSION}"
|
|
|
|
RUN git init "${ANDROID_SDK_ROOT}/android_openssl" \
|
|
&& git -C "${ANDROID_SDK_ROOT}/android_openssl" remote add origin https://github.com/KDAB/android_openssl.git \
|
|
&& git -C "${ANDROID_SDK_ROOT}/android_openssl" fetch --depth 1 origin "${ANDROID_OPENSSL_COMMIT}" \
|
|
&& git -C "${ANDROID_SDK_ROOT}/android_openssl" checkout --detach FETCH_HEAD \
|
|
&& rm -rf "${ANDROID_SDK_ROOT}/android_openssl/.git"
|
|
|
|
# Build dependencies needed by applications using the prebuilt desktop Qt.
|
|
# Keep these in a separate layer so changes here do not invalidate the large
|
|
# Qt and Android SDK downloads above.
|
|
RUN apt-get update \
|
|
&& apt-get install --yes --no-install-recommends \
|
|
build-essential \
|
|
libgl1-mesa-dev \
|
|
libglib2.0-0t64 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
ENV LANG=C.UTF-8 \
|
|
LC_ALL=C.UTF-8
|
|
|
|
WORKDIR /workspace
|