/wireguard-android

Primary LanguageCApache License 2.0Apache-2.0

Android GUI for WireGuard

Download from the Play Store

This is an Android GUI for WireGuard. It opportunistically uses the kernel implementation, and falls back to using the non-root userspace implementation.

Building

$ git clone --recurse-submodules https://github.com/zaneschepke/wireguard-android.git
$ cd wireguard-android
$ ./gradlew assembleRelease

macOS users may need flock(1).

Embedding

The tunnel library is on Maven Central, alongside extensive class library documentation.

implementation 'com.wireguard.android:tunnel:$wireguardTunnelVersion'

The library makes use of Java 8 features, so be sure to support those in your gradle configuration with desugaring:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
    coreLibraryDesugaringEnabled = true
}
dependencies {
    coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.3"
}

Publishing

  1. Update tunnel's build.gradle.kts to the publishing repository with credentials.
  2. Install gpg
brew install gpg
git config --global gpg.program $(which gpg)
  1. Create gpg key
gpg --full-generate-key2
  1. Add key information to ~/.gradle/gradle.properties
signing.gnupg.keyName=name
signing.gnupg.passphrase=********
signing.gnupg.executable=gpg
signing.secretKeyRingFile=/path/to/.gnupg/secring.gpg
  1. Add username and token for repository to local.properties
GITHUB_USER=zaneschepke
GITHUB_TOKEN=***
  1. Send key to public key server
gpg --send-key <keyId>
  1. Run publish
./gradlew publish

Translating

Please help us translate the app into several languages on our translation platform.