blob: 4ef004d595e48d029200c124b31a6abd9963742a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# 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 python3
```
> __*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-35" "build-tools;35.0.0" "platform-tools" "ndk;27.2.12479018"
```
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/27.2.12479018"
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"
```
## 3. Checkout wireguard-go-rs submodule
wireguard-go-rs submodule need to be downloaded:
```bash
git submodule update --init wireguard-go-rs/libwg/wireguard-go
```
## 4. Debug build
### Android Studio
Create the file `android/local.properties` if it does not exist and add the following line:
```bash
rust.pythonCommand=/opt/homebrew/bin/python3
```
You should now be able to run the app directly from Android Studio.
### `android/build.sh`
Run the build script in the root of the project to assemble all the native libraries and the app:
```bash
./android/build.sh --dev-build
```
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
**********************************
```
# Build options and configuration
For configuring signing or options to your build continue with the general [build instructions](../BuildInstructions.md).
# Debugging the Rust native code
For tips on how to debug the Rust library code from Android Studio, see the [debug instructions](DebugInstructions.md).
|