summaryrefslogtreecommitdiffhomepage
path: root/android/docs
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson90@gmail.com>2023-09-01 13:26:31 +0200
committerAlbin <albin@mullvad.net>2023-09-13 17:27:46 +0200
commit72aea45577d1247678da43c8f7dbd6fe3e33faa7 (patch)
tree9789bd842dfc9fe22947b75daa81a0c63bb3913e /android/docs
parent40297a85e9eec7ff65727f859095c99fee4f7699 (diff)
downloadmullvadvpn-72aea45577d1247678da43c8f7dbd6fe3e33faa7.tar.xz
mullvadvpn-72aea45577d1247678da43c8f7dbd6fe3e33faa7.zip
Update android build instructions for macOS
Diffstat (limited to 'android/docs')
-rw-r--r--android/docs/BuildInstructions.macos.md88
1 files changed, 88 insertions, 0 deletions
diff --git a/android/docs/BuildInstructions.macos.md b/android/docs/BuildInstructions.macos.md
new file mode 100644
index 0000000000..f0af51b5ef
--- /dev/null
+++ b/android/docs/BuildInstructions.macos.md
@@ -0,0 +1,88 @@
+# Build Instructions for macOS
+
+This document will guide you to setup your development environment on macOS. It has been
+tested on a clean install of macOS Ventura 13.5.1 on a M2 MacBook.
+
+> __*WARNING:*__ This guide will not apply the [wireguard-go patch](https://git.zx2c4.com/wireguard-android/tree/tunnel/tools/libwg-go/goruntime-boottime-over-monotonic.diff)
+> as done in Linux build instructions which may affect app performance.
+
+## 1. Install Prerequisites
+
+> __*NOTE:*__ Following instructions assume that you have [brew](https://brew.sh/) installed.
+
+If you do not have Android Studio installed, install it:
+```bash
+brew install --cask android-studio
+```
+
+Install the following packages:
+```bash
+brew install protobuf gcc go openjdk@17 rustup-init
+```
+
+> __*NOTE:*__ Ensure that you setup `openjdk@17` to be the active JDK, follow instructions in
+> installation of openjdk@17 or use a tool like [jEnv](https://www.jenv.be/).
+
+Finish the install of `rustup`:
+```bash
+rustup-init
+```
+
+## 2. Install SDK Tools and Android NDK Toolchain
+Open Android Studio -> Tools -> SDK Manager, and install `Android SDK Command-line Tools (latest)`.
+
+Install the necessary Android SDK tools
+```bash
+~/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-33" "build-tools;30.0.3" "platform-tools" "ndk;25.2.9519653"
+```
+
+Install Android targets
+```bash
+rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
+```
+
+Export the following environmental variables, and possibly store them for example in your
+`~/.zprofile` or `~/.zshrc` file:
+```bash
+export ANDROID_HOME="$HOME/Library/Android/sdk"
+export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/25.2.9519653"
+export NDK_TOOLCHAIN_DIR="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin"
+export AR_aarch64_linux_android="$NDK_TOOLCHAIN_DIR/llvm-ar"
+export AR_armv7_linux_androideabi="$NDK_TOOLCHAIN_DIR/llvm-ar"
+export AR_x86_64_linux_android="$NDK_TOOLCHAIN_DIR/llvm-ar"
+export AR_i686_linux_android="$NDK_TOOLCHAIN_DIR/llvm-ar"
+export CC_aarch64_linux_android="$NDK_TOOLCHAIN_DIR/aarch64-linux-android26-clang"
+export CC_armv7_linux_androideabi="$NDK_TOOLCHAIN_DIR/armv7a-linux-androideabi26-clang"
+export CC_x86_64_linux_android="$NDK_TOOLCHAIN_DIR/x86_64-linux-android26-clang"
+export CC_i686_linux_android="$NDK_TOOLCHAIN_DIR/i686-linux-android26-clang"
+export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$NDK_TOOLCHAIN_DIR/aarch64-linux-android26-clang"
+export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="$NDK_TOOLCHAIN_DIR/armv7a-linux-androideabi26-clang"
+export CARGO_TARGET_I686_LINUX_ANDROID_LINKER="$NDK_TOOLCHAIN_DIR/i686-linux-android26-clang"
+export CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER="$NDK_TOOLCHAIN_DIR/x86_64-linux-android26-clang"
+```
+
+## 4. Debug build
+Run the build script in the root of the project to assemble all the native libraries and the app:
+
+```bash
+./build-apk.sh --dev-build --no-docker
+```
+
+Once the build is complete you should receive a message looking similar to this:
+```
+**********************************
+
+ The build finished successfully!
+ You have built:
+
+ 2023.5-dev-9ac934
+
+**********************************
+```
+
+Your native binaries have now been built, any subsequent builds that does not have changes to the
+native code can be done in Android Studio or using gradle.
+
+# Build options and configuration
+
+For configuring signing or options to your build continue with the general [build instructions](../BuildInstructions.md).