Dockerfile
1 # A container for buildbot 2 3 FROM ubuntu:focal AS android 4 5 ENV DEBIAN_FRONTEND=noninteractive 6 ENV ANDROID_HOME="/opt/android" 7 8 RUN apt-get update -qq > /dev/null \ 9 && apt-get -y install -qq --no-install-recommends locales \ 10 && locale-gen en_US.UTF-8 11 ENV LANG="en_US.UTF-8" \ 12 LANGUAGE="en_US.UTF-8" \ 13 LC_ALL="en_US.UTF-8" 14 15 # install system/build dependencies 16 RUN apt-get -y update -qq \ 17 && apt-get -y install -qq --no-install-recommends \ 18 curl autoconf automake build-essential cmake git nano libtool \ 19 libltdl-dev libffi-dev libssl-dev \ 20 patch pkg-config python-is-python3 python3-dev python3-pip unzip zip 21 22 RUN apt-get -y install -qq --no-install-recommends openjdk-17-jdk \ 23 && apt-get -y autoremove 24 25 # pyzbar dependencies 26 RUN apt-get -y install -qq --no-install-recommends libzbar0 libtool gettext 27 28 RUN pip install buildozer cython virtualenv 29 30 31 ENV ANDROID_NDK_HOME="${ANDROID_HOME}/android-ndk" 32 ENV ANDROID_NDK_VERSION="25b" 33 ENV ANDROID_NDK_HOME_V="${ANDROID_NDK_HOME}-r${ANDROID_NDK_VERSION}" 34 35 # get the latest version from https://developer.android.com/ndk/downloads/index.html 36 ENV ANDROID_NDK_ARCHIVE="android-ndk-r${ANDROID_NDK_VERSION}-linux.zip" 37 ENV ANDROID_NDK_DL_URL="https://dl.google.com/android/repository/${ANDROID_NDK_ARCHIVE}" 38 # download and install Android NDK 39 RUN curl "${ANDROID_NDK_DL_URL}" --output "${ANDROID_NDK_ARCHIVE}" \ 40 && mkdir -p "${ANDROID_NDK_HOME_V}" \ 41 && unzip -q "${ANDROID_NDK_ARCHIVE}" -d "${ANDROID_HOME}" \ 42 && ln -sfn "${ANDROID_NDK_HOME_V}" "${ANDROID_NDK_HOME}" \ 43 && rm -rf "${ANDROID_NDK_ARCHIVE}" 44 45 ENV ANDROID_SDK_HOME="${ANDROID_HOME}/android-sdk" 46 47 # get the latest version from https://developer.android.com/studio/index.html 48 ENV ANDROID_SDK_TOOLS_VERSION="11076708" 49 ENV ANDROID_SDK_BUILD_TOOLS_VERSION="34.0.0" 50 ENV ANDROID_SDK_CMDLINE_TOOLS_VERSION="12.0" 51 ENV ANDROID_SDK_TOOLS_ARCHIVE="commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip" 52 ENV ANDROID_SDK_TOOLS_DL_URL="https://dl.google.com/android/repository/${ANDROID_SDK_TOOLS_ARCHIVE}" 53 ENV ANDROID_CMDLINE_TOOLS_DIR="${ANDROID_SDK_HOME}/cmdline-tools/${ANDROID_SDK_CMDLINE_TOOLS_VERSION}" 54 ENV ANDROID_SDK_MANAGER="${ANDROID_CMDLINE_TOOLS_DIR}/bin/sdkmanager --sdk_root=${ANDROID_SDK_HOME}" 55 56 # download and install Android SDK 57 RUN curl "${ANDROID_SDK_TOOLS_DL_URL}" --output "${ANDROID_SDK_TOOLS_ARCHIVE}" \ 58 && mkdir -p "${ANDROID_SDK_HOME}/cmdline-tools" \ 59 && unzip -q "${ANDROID_SDK_TOOLS_ARCHIVE}" \ 60 -d "${ANDROID_SDK_HOME}/cmdline-tools" \ 61 && mv "${ANDROID_SDK_HOME}/cmdline-tools/cmdline-tools" \ 62 ${ANDROID_CMDLINE_TOOLS_DIR} \ 63 && ln -sfn ${ANDROID_CMDLINE_TOOLS_DIR} "${ANDROID_SDK_HOME}/tools" \ 64 && rm -rf "${ANDROID_SDK_TOOLS_ARCHIVE}" 65 66 # update Android SDK, install Android API, Build Tools... 67 RUN mkdir -p "${ANDROID_SDK_HOME}/.android/" \ 68 && echo '### User Sources for Android SDK Manager' \ 69 > "${ANDROID_SDK_HOME}/.android/repositories.cfg" 70 71 # accept Android licenses (JDK necessary!) 72 RUN yes | ${ANDROID_SDK_MANAGER} --licenses > /dev/null 73 74 # download platforms, API, build tools 75 RUN ${ANDROID_SDK_MANAGER} "platforms;android-30" > /dev/null \ 76 && ${ANDROID_SDK_MANAGER} "platforms;android-28" > /dev/null \ 77 && ${ANDROID_SDK_MANAGER} "platform-tools" > /dev/null \ 78 && ${ANDROID_SDK_MANAGER} "build-tools;${ANDROID_SDK_BUILD_TOOLS_VERSION}" \ 79 > /dev/null \ 80 && ${ANDROID_SDK_MANAGER} "extras;android;m2repository" > /dev/null \ 81 && chmod +x "${ANDROID_CMDLINE_TOOLS_DIR}/bin/avdmanager" 82 83 # download ANT 84 ENV APACHE_ANT_VERSION="1.9.4" 85 ENV APACHE_ANT_ARCHIVE="apache-ant-${APACHE_ANT_VERSION}-bin.tar.gz" 86 ENV APACHE_ANT_DL_URL="https://archive.apache.org/dist/ant/binaries/${APACHE_ANT_ARCHIVE}" 87 ENV APACHE_ANT_HOME="${ANDROID_HOME}/apache-ant" 88 ENV APACHE_ANT_HOME_V="${APACHE_ANT_HOME}-${APACHE_ANT_VERSION}" 89 90 RUN curl "${APACHE_ANT_DL_URL}" --output "${APACHE_ANT_ARCHIVE}" \ 91 && tar -xf "${APACHE_ANT_ARCHIVE}" -C "${ANDROID_HOME}" \ 92 && ln -sfn "${APACHE_ANT_HOME_V}" "${APACHE_ANT_HOME}" \ 93 && rm -rf "${APACHE_ANT_ARCHIVE}" 94 95 96 RUN useradd -m -U builder && mkdir /android 97 98 WORKDIR /android 99 100 RUN chown -R builder.builder /android "${ANDROID_SDK_HOME}" \ 101 && chmod -R go+w "${ANDROID_SDK_HOME}" 102 103 USER builder 104 105 ADD . .