Go to file
Jason A. Donenfeld 755148242c tunnel: do not constantly raise toasts when process is opportunistically killed
Modern Android likes to kill processes to free ram and resources. When
kernel-mode WireGuard is in use, this is quite alright with us, since
the app doesn't actually need to consume any resources at all in order
for the tunnel to run. So, we want to allow and encourage this resource
frugality. However, when the quick settings tile is being used or when
the app is referenced otherwise, the app will occasionally be restarted,
to, for example, repaint the quick settings tile. This is also fine, as
the process winds up being short-lived again. But, since process
initialization means asking for a new root shell in order to check on
kernel-mode WireGuard, this means that Magisk raises a systemwide toast.
On some phones, this happens each and every time that the notification
shade is pulled down. It's not only annoying but it sometimes obscures
other notifications that users want to see, prompting their pulling down
of the notification shade in the first place. In order to get rid of
this nuisance, just disable these notifications and extraneous logs, so
that we don't clutter the system every time that the process is
opportunistically killed and restarted.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-10-26 22:44:35 +01:00
.idea idea: import new import sorting rules 2020-09-15 12:30:15 +02:00
gradle/wrapper build: upgrade to Gradle 6.7 2020-10-15 10:01:53 +05:30
tunnel tunnel: do not constantly raise toasts when process is opportunistically killed 2020-10-26 22:44:35 +01:00
ui build: add crowdin syncer script and use it 2020-10-14 17:16:36 +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 build: upgrade to Gradle 6.7 2020-10-15 10:01:53 +05:30
COPYING global: move to Apache 2.0 2018-07-06 16:28:46 +02:00
gradle.properties build: update AndroidX activity/fragments and resolve compile failure 2020-10-02 04:28:25 +05:30
gradlew build: uprev to Gradle 6.6 2020-08-12 13:28:00 +05:30
README.md README: mention desugaring 2020-10-08 15:03:49 +02:00
settings.gradle Rename app module to ui 2020-03-09 19:24:27 +05:30
sync-crowdin.sh build: add crowdin syncer script and use it 2020-10-14 17:16:36 +02:00
version.gradle version: bump 2020-09-27 16:30:30 +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 with desugaring:

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

Translating

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