summaryrefslogtreecommitdiffhomepage
path: root/android/docker
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-10-21 12:02:56 +0200
committerAlbin <albin@mullvad.net>2022-10-24 12:08:24 +0200
commit83342cbb14a96708e5285c8930f17772c30d0df0 (patch)
tree8c23c748c159a158e0bfea0287906837d4730509 /android/docker
parentd1d3e2de632a06772abd5aa6b811867d43ef7587 (diff)
downloadmullvadvpn-83342cbb14a96708e5285c8930f17772c30d0df0.tar.xz
mullvadvpn-83342cbb14a96708e5285c8930f17772c30d0df0.zip
Cleanup and document android image
Diffstat (limited to 'android/docker')
-rw-r--r--android/docker/Dockerfile42
1 files changed, 25 insertions, 17 deletions
diff --git a/android/docker/Dockerfile b/android/docker/Dockerfile
index d898399539..33bba2dcb3 100644
--- a/android/docker/Dockerfile
+++ b/android/docker/Dockerfile
@@ -1,29 +1,36 @@
# To build the image:
# podman build . -t mullvad-android-app-build
#
-# See the Dockerfile for mullvadvpn-app-build (in the repository root) for more information.
+# To build using the image:
+# podman run --rm \
+# -v /path/to/container_cache/target:/root/.cargo/target:Z \
+# -v /path/to/container_cache/registry:/root/.cargo/registry:Z \
+# -v /path/to/container_cache/gradle:/root/.gradle:Z \
+# -v .:/build:Z \
+# mullvad-android-app-build ./build-apk.sh --dev-build --no-docker
+#
+# See the base image Dockerfile in the repository root for more information.
-FROM mullvadvpn-app-build@sha256:<TODO>
+# TODO: Change image once a proper one has been built and published
+FROM ghcr.io/mullvad/mullvadvpn-app-build@sha256:TODO
# === Define toolchain versions and paths ===
ENV SDK_VERSION=platforms;android-33 \
- BUILD_TOOLS_VERSION=build-tools;33.0.0
+ BUILD_TOOLS_VERSION=build-tools;30.0.2
+# SDK tools
ENV SDK_TOOLS_VERSION=4333796 \
- SDK_TOOLS_HASH=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9
+ SDK_TOOLS_SHA256_CHECKSUM=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9
+# NDK and checksum from: https://github.com/android/ndk/wiki/Unsupported-Downloads
ENV NDK_VERSION=r20b \
- NDK_HASH=8381c440fe61fcbb01e209211ac01b519cd6adf51ab1c2281d5daad6ca4c8c8c
-
-ENV GRADLE_USER_HOME=/root/.gradle
-
-ENV GOROOT=/usr/local/go \
- GOPATH=/usr/local/go/go-path
+ NDK_SHA1_CHECKSUM=d903fdf077039ad9331fb6c3bee78aa46d45527b
ENV ANDROID_HOME=/opt/android
ENV ANDROID_NDK_HOME=${ANDROID_HOME}/android-ndk-${NDK_VERSION}
ENV NDK_TOOLCHAIN_DIR=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin
+ENV GRADLE_USER_HOME=/root/.gradle
ENV AR_x86_64_linux_android=${NDK_TOOLCHAIN_DIR}/x86_64-linux-android-ar \
AR_i686_linux_android=${NDK_TOOLCHAIN_DIR}/i686-linux-android-ar \
@@ -48,15 +55,14 @@ RUN apt-get update -y && apt-get install -y \
# Install JDK
COPY adopt-openjdk-apt-key.pgp /tmp/adopt-openjdk-apt-key.pgp
RUN apt-key add < /tmp/adopt-openjdk-apt-key.pgp && \
- rm /tmp/adopt-openjdk-apt-key.pgp && \
add-apt-repository -y https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ && \
apt-get update && \
- apt-get install -y adoptopenjdk-8-hotspot \
- && rm -rf /var/lib/apt/lists/*
+ apt-get install -y adoptopenjdk-8-hotspot && \
+ rm /tmp/adopt-openjdk-apt-key.pgp && rm -rf /var/lib/apt/lists/*
# Install base Android SDK tools
RUN curl -sfLo /tmp/sdk-tools.zip https://dl.google.com/android/repository/sdk-tools-linux-${SDK_TOOLS_VERSION}.zip && \
- echo "$SDK_TOOLS_HASH /tmp/sdk-tools.zip" | sha256sum -c && \
+ echo "$SDK_TOOLS_SHA256_CHECKSUM /tmp/sdk-tools.zip" | sha256sum -c && \
mkdir -p $ANDROID_HOME && \
unzip -q /tmp/sdk-tools.zip -d $ANDROID_HOME && \
rm /tmp/sdk-tools.zip
@@ -66,17 +72,19 @@ RUN yes | $ANDROID_HOME/tools/bin/sdkmanager $SDK_VERSION $BUILD_TOOLS_VERSION "
# Install Android NDK
RUN curl -sfLo /tmp/ndk.zip https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip && \
- echo "$NDK_HASH /tmp/ndk.zip" | sha256sum -c && \
+ echo "$NDK_SHA1_CHECKSUM /tmp/ndk.zip" | sha1sum -c && \
unzip -q /tmp/ndk.zip -d $ANDROID_HOME && \
rm /tmp/ndk.zip
# Apply go patch required for Android
+# NOTE: The go path must match the one used in the base image.
COPY goruntime-boottime-over-monotonic.diff /tmp/goruntime-boottime-over-monotonic.diff
-RUN patch -p1 -f -N -r- -d $GOROOT < /tmp/goruntime-boottime-over-monotonic.diff && \
+RUN patch -p1 -f -N -r- -d /usr/local/go < /tmp/goruntime-boottime-over-monotonic.diff && \
rm /tmp/goruntime-boottime-over-monotonic.diff
# Add rust targets
-COPY cargo-config.toml $CARGO_HOME/config
+# NOTE: The config.toml overrides the one created in the base image.
+COPY cargo-config.toml /root/.cargo/config.toml
RUN rustup target add x86_64-linux-android i686-linux-android aarch64-linux-android armv7-linux-androideabi
WORKDIR /build