builder-android-sdk/Dockerfile.previous

84 lines
4.8 KiB
Docker

# SPDX-FileCopyrightText: 2023 - 2024 Daniel Wolf <nephatrine@gmail.com>
#
# SPDX-License-Identifier: ISC
# hadolint ignore=DL3007
FROM code.nephatrine.net/nephnet/nxb-debian:latest
LABEL maintainer="Daniel Wolf <nephatrine@gmail.com>"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ARG JAVA_PLATFORM=amd64
ARG NDK_PLATFORM=x86_64
ARG DEBIAN_FRONTEND=noninteractive
# hadolint ignore=DL3008
RUN apt-get update \
&& apt-get -o Dpkg::Options::="--force-confnew" install -y --no-install-recommends \
openjdk-17-jdk-headless \
&& apt-get autoremove -y && apt-get clean \
&& rm -rf /tmp/* /var/tmp/*
# https://developer.android.com/studio#command-tools
ARG ANDROID_CLI_VERSION=11076708
ENV ANDROID_SDK_ROOT=/opt/android-sdk \
ANDROID_PLATFORM_MIN=25 \
ANDROID_PLATFORM=29 \
ANDROID_PLATFORM_MAX=29 \
ANDROID_BUILD_TOOLS=28.0.3 \
ANDROID_NDK_VERSION=21.4.7075529 \
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-${JAVA_PLATFORM}
WORKDIR /opt/android-sdk
RUN wget --progress=dot:giga -O "/tmp/android-sdk-${ANDROID_CLI_VERSION}.zip" "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CLI_VERSION}_latest.zip" \
&& unzip "/tmp/android-sdk-${ANDROID_CLI_VERSION}.zip" \
&& cmdline-tools/bin/sdkmanager --update --sdk_root="${ANDROID_SDK_ROOT}" \
&& set +o pipefail \
&& yes | cmdline-tools/bin/sdkmanager --licenses --sdk_root="${ANDROID_SDK_ROOT}" \
&& cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "cmdline-tools;latest" \
&& cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "build-tools;${ANDROID_BUILD_TOOLS}" \
&& cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "platforms;android-${ANDROID_PLATFORM}" \
&& if [ $ANDROID_PLATFORM_MIN -ne $ANDROID_PLATFORM ]; then cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "platforms;android-${ANDROID_PLATFORM_MIN}"; fi \
&& if [ $ANDROID_PLATFORM_MAX -ne $ANDROID_PLATFORM ]; then cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "platforms;android-${ANDROID_PLATFORM_MAX}"; fi \
&& cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "ndk;${ANDROID_NDK_VERSION}" \
&& keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US " \
&& rm -rf /tmp/* /var/tmp/* "${ANDROID_SDK_ROOT}/emulator" "${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}/platforms" "/opt/android-sdk/ndk/${ANDROID_NDK_VERSION}/sysroot"
ENV PATH=${ANDROID_SDK_ROOT}/build-tools/${ANDROID_BUILD_TOOLS}:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:$PATH \
ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION} \
DEBUG_KEYSTORE=${ANDROID_SDK_ROOT}/debug.keystore
COPY override /
ENV ANDROID_NDK_SYSROOT=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-${NDK_PLATFORM}/sysroot
# hadolint ignore=DL3003
RUN cp -nrvs /opt/android-sdk/ndk-bundle/. "${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}/" \
&& cp -nv "${ANDROID_NDK_ROOT}/sources/android/native_app_glue/android_native_app_glue.h" "${ANDROID_NDK_SYSROOT}/usr/include/android/native_app_glue.h" \
&& mkdir /tmp/build-x86_64 && cd /tmp/build-x86_64 \
&& nxbuild-android-x86_64 -GNinja "${ANDROID_NDK_ROOT}/sources/android/native_app_glue" \
&& ninja && cp -nv ./libnative_app_glue.a "${ANDROID_NDK_SYSROOT}/usr/lib/x86_64-linux-android/" \
&& mkdir /tmp/build-aarch64 && cd /tmp/build-aarch64 \
&& nxbuild-android-aarch64 -GNinja "${ANDROID_NDK_ROOT}/sources/android/native_app_glue" \
&& ninja && cp -nv ./libnative_app_glue.a "${ANDROID_NDK_SYSROOT}/usr/lib/aarch64-linux-android/" \
&& mkdir /tmp/build-armv7l && cd /tmp/build-armv7l \
&& nxbuild-android-armv7l -GNinja "${ANDROID_NDK_ROOT}/sources/android/native_app_glue" \
&& ninja && cp -nv ./libnative_app_glue.a "${ANDROID_NDK_SYSROOT}/usr/lib/arm-linux-androideabi/" \
&& mkdir /tmp/build-i686 && cd /tmp/build-i686 \
&& nxbuild-android-i686 -GNinja "${ANDROID_NDK_ROOT}/sources/android/native_app_glue" \
&& ninja && cp -nv ./libnative_app_glue.a "${ANDROID_NDK_SYSROOT}/usr/lib/i686-linux-android/" \
&& cd .. && rm -rf /tmp/* /var/tmp/*
# hadolint ignore=DL3003
RUN git -C "${HOME}" clone --single-branch --depth=1 https://code.nephatrine.net/nephatrine/hello-test.git \
&& mkdir /tmp/build-x86_64 && cd /tmp/build-x86_64 \
&& nxbuild-android-x86_64 -GNinja "${HOME}/hello-test" \
&& ninja && file HelloTest \
&& mkdir /tmp/build-aarch64 && cd /tmp/build-aarch64 \
&& nxbuild-android-aarch64 -GNinja "${HOME}/hello-test" \
&& ninja && file HelloTest \
&& mkdir /tmp/build-armv7l && cd /tmp/build-armv7l \
&& nxbuild-android-armv7l -GNinja "${HOME}/hello-test" \
&& ninja && file HelloTest \
&& mkdir /tmp/build-i686 && cd /tmp/build-i686 \
&& nxbuild-android-i686 -GNinja "${HOME}/hello-test" \
&& ninja && file HelloTest \
&& cd .. && rm -rf /tmp/* /var/tmp/* "${HOME}/hello-test"