Skip to content

Building

sputlab edited this page Nov 13, 2026 · 1 revision

Building

Prerequisites

  • JDK 17 or later (the one bundled with Android Studio works).
  • Android SDK with platform 35.
  • NDK 27.2 (27.2.12479018) and CMake 3.22.1, needed for the Codec2 library.
  • ABIs built: arm64-v8a, armeabi-v7a, x86_64.

Build

export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"   # macOS example
./gradlew assembleDebug      # APK in app/build/outputs/apk/debug/
./gradlew installDebug       # install on every connected device

Project layout

app/src/main/java/com/nodewave/mesh   Kotlin sources
app/src/main/cpp                      Codec2 JNI wrapper + vendored Codec2 (LGPL-2.1)
app/src/test/java/com/nodewave/mesh   JVM unit tests
docs/                                 SECURITY.md and images
fastlane/metadata                     F-Droid / store metadata

Dependencies

Only open-source, AGPL-compatible: Jetpack Compose (BOM), AndroidX core/lifecycle/activity, kotlinx-coroutines, CameraX, ZXing core, osmdroid and osmdroid-mapsforge, Codec2 (vendored C). Do not add a dependency that is incompatible with the AGPL or proprietary (no Google Play Services, no Nearby Connections).

Debugging the radio

adb logcat -s MESH_RADIO

Clone this wiki locally