NexusLink on Android
The Android app is built from two parts:
- The NexusLink SDK (AAR) built from this repository's
client/androidpackage with gomobile. It contains the whole engine (WireGuard, ICE, DNS, routes, SSH client) and exposes a Java API to the app. - The Android app (Kotlin, VPN service, UI). Upstream keeps it in a separate repository: https://github.com/netbirdio/android.
Building the SDK
Requirements: Go, Java 17, Android SDK with NDK (ANDROID_HOME,
ANDROID_NDK_HOME).
tools/mobile/build-android-sdk.sh
# -> dist/android/nexuslink-<version>.aar
Environment overrides: JAVA_PKG (default
com.nexusremotesolutions.nexuslink.gomobile), ANDROID_API (default 24),
VERSION, OUT_DIR.
Building the app
git clone https://github.com/netbirdio/android.git nexuslink-android
python3 tools/branding/rebrand.py --root nexuslink-android # apply NexusLink naming
Then in the app project:
- replace the bundled NetBird AAR with
dist/android/nexuslink-<version>.aarand update the Java package import to the value ofJAVA_PKG; - set
applicationIdtocom.nexusremotesolutions.nexuslinkinapp/build.gradle; - replace launcher icons with
branding/icons/nexuslink-*.png(adaptive icon foreground:branding/nexuslink-mark-white.svg, background#0B1220); - point the default management URL at your server;
- build with
./gradlew assembleReleaseand sign with your upload key for Google Play, or distribute the APK through your MDM.
The same SDK powers Android TV builds.