84 lines
4.8 KiB
Docker
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=29 \
|
|
ANDROID_PLATFORM=32 \
|
|
ANDROID_PLATFORM_MAX=32 \
|
|
ANDROID_BUILD_TOOLS=33.0.3 \
|
|
ANDROID_NDK_VERSION=25.2.9519653 \
|
|
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"
|