Go to file
Jason A. Donenfeld a3bfa6f1ab ui: collect logs from IO thread only
Otherwise the pop() from the producer might causes an OOB read in the
consumer:

Exception java.lang.ArrayIndexOutOfBoundsException:
  at androidx.collection.CircularArray.get (CircularArray.java)
  at com.wireguard.android.activity.LogViewerActivity.rawLogBytes (LogViewerActivity.java)
  at com.wireguard.android.activity.LogViewerActivity.onCreate$lambda$3 (LogViewerActivity.java:133)
  at android.view.View.performClick (View.java:6935)
  at android.view.View$PerformClick.run (View.java:26214)
  at android.os.Handler.handleCallback (Handler.java:790)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:7000)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:441)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408)

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2023-05-05 02:56:51 +02:00
.idea idea: squelch XML codestyle warning 2022-05-26 06:01:02 +05:30
gradle gradle: use newer desugaring 2023-05-03 14:23:38 +02:00
tunnel gradle: use matching fallback instead of build type 2023-05-05 02:43:36 +02:00
ui ui: collect logs from IO thread only 2023-05-05 02:56:51 +02:00
.gitignore build: remove bespoke signing config properties 2023-04-06 17:16:29 +02:00
.gitmodules tools: clean unwanted ELF flags from binaries 2023-04-05 13:50:57 +02:00
build.gradle.kts gradle: convert build files to Kotlin 2023-05-03 00:43:18 +05:30
COPYING global: move to Apache 2.0 2018-07-06 16:28:46 +02:00
gradle.properties version: bump 2023-05-04 16:48:23 +02:00
gradlew gradle: update wrapper to 8.1.1 2023-04-24 11:22:21 +05:30
README.md README: account for java version updates 2023-05-03 14:23:54 +02:00
settings.gradle.kts gradle: convert build files to Kotlin 2023-05-03 00:43:18 +05:30
sync-crowdin.sh build: add crowdin syncer script and use it 2020-10-14 17:16:36 +02:00

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://git.zx2c4.com/wireguard-android
$ 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"
}

Translating

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