Go to file
Harsh Shandilya 2f088938c6 ui: replace GlobalScope with a hand-rolled CoroutineScope
GlobalScope has numerous problems[1] that make it unfit for
use in most applications and making it behave correctly requires
an excessive amount of verbosity that's alleviated simply by using
any other scope. Since we run multiple operations in the context
of the application's lifecycle, introduce a new scope that is created
when our application is, and cancelled upon its termination.

While at it, make the scope default to Dispatchers.IO to reduce pressure
on the UI event loop. Tasks requiring access to the UI thread appropriately
switch context making the change completely safe.

1: https://medium.com/@elizarov/the-reason-to-avoid-globalscope-835337445abc

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-09-16 18:01:06 +02:00
.idea idea: import new import sorting rules 2020-09-15 12:30:15 +02:00
gradle/wrapper build: update to Gradle 6.6.1 2020-08-30 23:23:04 +05:30
tunnel Ed25519: use implementation from Tink 2020-09-16 18:01:06 +02:00
ui ui: replace GlobalScope with a hand-rolled CoroutineScope 2020-09-16 18:01:06 +02:00
.gitignore gitignore: add gradlew.bat 2020-06-25 01:36:31 +05:30
.gitmodules Migrate tunnel related classes to tunnel/ Gradle module 2020-03-09 19:24:26 +05:30
build.gradle Ed25519: use implementation from Tink 2020-09-16 18:01:06 +02:00
COPYING global: move to Apache 2.0 2018-07-06 16:28:46 +02:00
gradle.properties build: Improve R8 rules and enable aggressive optimization modes 2020-03-29 10:52:54 +05:30
gradlew build: uprev to Gradle 6.6 2020-08-12 13:28:00 +05:30
README.md tunnel: libwg-go: remove -x option from flock 2020-04-01 22:05:24 -06:00
settings.gradle Rename app module to ui 2020-03-09 19:24:27 +05:30
version.gradle version: bump 2020-07-24 09:50:31 +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 JCenter, 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:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

Translating

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