diff --git a/platform/android/docker/README.md b/platform/android/docker/README.md new file mode 100644 index 000000000..0f3b15706 --- /dev/null +++ b/platform/android/docker/README.md @@ -0,0 +1,5 @@ + +``` +docker build -t maptiler/android-base -f android-base . +docker build -t maptiler/android-ndk-r21b -f android-ndk-r21b . +``` \ No newline at end of file diff --git a/platform/android/docker/android-base b/platform/android/docker/android-base new file mode 100644 index 000000000..2889a38bc --- /dev/null +++ b/platform/android/docker/android-base @@ -0,0 +1,57 @@ +FROM ubuntu:xenial-20181005 +ENV DEBIAN_FRONTEND="noninteractive" + +# Add base filesystems +ADD filesystem/libsysconfcpus.tar.gz \ + filesystem/apt-google-cloud-sdk.tar.gz \ + / + +# libsysconfcpus.so can be used to alter the number of CPUs reported by the system +ENV LD_PRELOAD=/usr/lib/libsysconfcpus.so + +# Add apt keys +RUN set -eu \ + && (find /tmp/*.gpg | xargs -n1 apt-key add) \ + && rm /tmp/*.gpg + +# Install base packages +RUN set -eu \ + && apt-get update \ + && apt-get -y install software-properties-common \ + && apt-get update \ + && add-apt-repository -y ppa:git-core/ppa \ + && apt-get update \ + && apt-get -y install git curl make python3 python3-pip zip unzip ccache openjdk-8-jdk-headless apt-transport-https \ + && update-alternatives --install /usr/bin/python python /usr/bin/python3 1 \ + && rm -rf /var/lib/apt/lists/* + +# Install CLI tools for CI scripting +RUN set -eu \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0 \ + && apt-add-repository https://cli.github.com/packages \ + && apt-get update \ + && apt-get -y install jq gh \ + && rm -rf /var/lib/apt/lists/* + +# Install Google Cloud SDK +RUN set -eu \ + && apt-get update \ + && apt-get -y install google-cloud-sdk \ + && rm -rf /var/lib/apt/lists/* + +# Install awscli +RUN set -eu \ + && pip3 install awscli + +# Install Node.js +# Check https://nodejs.org/en/download/releases/ for releases +ENV NVM_DIR="/root/.nvm" \ + PATH="/root/.nvm/versions/node/v10.13.0/bin:$PATH" +RUN set -e \ + && git -c advice.detachedHead=false clone https://github.com/creationix/nvm.git -b v0.33.11 --depth=1 "$NVM_DIR" \ + && . "$NVM_DIR/nvm.sh" \ + && nvm install v10.13.0 + +ENV ANDROID_NDK_HOME=/android/sdk/ndk-bundle \ + ANDROID_HOME=/android/sdk \ + GRADLE_OPTS=-Dorg.gradle.daemon=false \ No newline at end of file diff --git a/platform/android/docker/android-ndk-r21b b/platform/android/docker/android-ndk-r21b new file mode 100644 index 000000000..dc0370fdd --- /dev/null +++ b/platform/android/docker/android-ndk-r21b @@ -0,0 +1,41 @@ +FROM ghcr.io/maptiler/android-base + +WORKDIR /android/sdk + +# Install Android SDK +# Use most recent version from https://developer.android.com/studio/index.html#command-tools +# and update the checksum. +RUN set -eu \ + && curl -L --retry 3 https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip -o tools.zip \ + && (echo "f10f9d5bca53cc27e2d210be2cbc7c0f1ee906ad9b868748d74d62e10f2c8275 tools.zip" | sha256sum -c) \ + && unzip -q tools.zip && rm tools.zip + +# Install Android NDK +# Use desired version from https://developer.android.com/ndk/downloads/index.html +# and update the checksum. +RUN set -eu \ + && curl -L --retry 3 https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip -o ndk.zip \ + && (echo "afc9c0b9faad222898ac8168c78ad4ccac8a1b5c ndk.zip" | sha1sum -c) \ + && unzip -q ndk.zip && rm ndk.zip && mv android-ndk-r* ndk-bundle + +# Install dependencies and build tools + +RUN set -eu \ + && mkdir -p "${ANDROID_HOME}/licenses" \ + && echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > "${ANDROID_HOME}/licenses/android-sdk-license" \ + && tools/bin/sdkmanager \ + "--sdk_root=${ANDROID_HOME}" \ + "platform-tools" \ + "platforms;android-29" \ + "build-tools;29.0.2" \ + "build-tools;29.0.3" \ + "platforms;android-28" \ + "build-tools;28.0.3" \ + "extras;android;m2repository" \ + "patcher;v4" \ + "extras;google;m2repository" \ + "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" \ + "cmake;3.10.2.4988404" \ + && rm -rf "${ANDROID_HOME}/licenses" + +WORKDIR /src \ No newline at end of file diff --git a/platform/android/docker/filesystem/apt-google-cloud-sdk.tar.gz b/platform/android/docker/filesystem/apt-google-cloud-sdk.tar.gz new file mode 100644 index 000000000..7d4d9b821 Binary files /dev/null and b/platform/android/docker/filesystem/apt-google-cloud-sdk.tar.gz differ diff --git a/platform/android/docker/filesystem/apt-llvm.tar.gz b/platform/android/docker/filesystem/apt-llvm.tar.gz new file mode 100644 index 000000000..4e2ddc05e Binary files /dev/null and b/platform/android/docker/filesystem/apt-llvm.tar.gz differ diff --git a/platform/android/docker/filesystem/apt-toolchain.tar.gz b/platform/android/docker/filesystem/apt-toolchain.tar.gz new file mode 100644 index 000000000..90eb302a3 Binary files /dev/null and b/platform/android/docker/filesystem/apt-toolchain.tar.gz differ diff --git a/platform/android/docker/filesystem/etc/apt/sources.list.d/google-cloud-sdk.list b/platform/android/docker/filesystem/etc/apt/sources.list.d/google-cloud-sdk.list new file mode 100644 index 000000000..687dba5ed --- /dev/null +++ b/platform/android/docker/filesystem/etc/apt/sources.list.d/google-cloud-sdk.list @@ -0,0 +1 @@ +deb http://packages.cloud.google.com/apt cloud-sdk-xenial main diff --git a/platform/android/docker/filesystem/etc/apt/sources.list.d/llvm.list b/platform/android/docker/filesystem/etc/apt/sources.list.d/llvm.list new file mode 100644 index 000000000..906c29eb1 --- /dev/null +++ b/platform/android/docker/filesystem/etc/apt/sources.list.d/llvm.list @@ -0,0 +1,2 @@ +deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main +deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main diff --git a/platform/android/docker/filesystem/etc/apt/sources.list.d/toolchain.list b/platform/android/docker/filesystem/etc/apt/sources.list.d/toolchain.list new file mode 100644 index 000000000..76d1868cc --- /dev/null +++ b/platform/android/docker/filesystem/etc/apt/sources.list.d/toolchain.list @@ -0,0 +1,2 @@ +deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main +deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main diff --git a/platform/android/docker/filesystem/libsysconfcpus.tar.gz b/platform/android/docker/filesystem/libsysconfcpus.tar.gz new file mode 100644 index 000000000..bc066ff2c Binary files /dev/null and b/platform/android/docker/filesystem/libsysconfcpus.tar.gz differ diff --git a/platform/android/docker/filesystem/tmp/google-cloud-sdk.gpg b/platform/android/docker/filesystem/tmp/google-cloud-sdk.gpg new file mode 100644 index 000000000..37fc65d93 Binary files /dev/null and b/platform/android/docker/filesystem/tmp/google-cloud-sdk.gpg differ diff --git a/platform/android/docker/filesystem/tmp/llvm.gpg b/platform/android/docker/filesystem/tmp/llvm.gpg new file mode 100644 index 000000000..1af748690 Binary files /dev/null and b/platform/android/docker/filesystem/tmp/llvm.gpg differ diff --git a/platform/android/docker/filesystem/tmp/toolchain.gpg b/platform/android/docker/filesystem/tmp/toolchain.gpg new file mode 100644 index 000000000..8771a79ac Binary files /dev/null and b/platform/android/docker/filesystem/tmp/toolchain.gpg differ