Go to file
Jason A. Donenfeld d5c07374ff BaseFragment: avoid using requireContext() in permission result callback
java.lang.IllegalStateException:
  at androidx.fragment.app.Fragment.requireContext (Fragment.java:17)
  at com.wireguard.android.fragment.BaseFragment$setTunnelStateWithPermissionsResult$1.invokeSuspend (BaseFragment.java:4)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (BaseContinuationImpl.java:2)
  at kotlinx.coroutines.UndispatchedCoroutine.afterResume (UndispatchedCoroutine.java:19)
  at kotlinx.coroutines.AbstractCoroutine.resumeWith (AbstractCoroutine.java:13)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (BaseContinuationImpl.java:2)
  at kotlinx.coroutines.UndispatchedCoroutine.afterResume (UndispatchedCoroutine.java:19)
  at kotlinx.coroutines.AbstractCoroutine.resumeWith (AbstractCoroutine.java:13)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (BaseContinuationImpl.java:2)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.java:2)
  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:7025)
  at java.lang.reflect.Method.invoke (Method.java)
  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>
2020-09-20 15:01:35 +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 libwg-go: use PeekLookAtSocketFd6(), not PeekLookAtSocketFd4() 2020-09-16 18:01:06 +02:00
ui BaseFragment: avoid using requireContext() in permission result callback 2020-09-20 15:01:35 +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 ui: move to Jetpack DataStore instead of SharedPrefs 2020-09-18 20:29:23 +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-09-20 12:50:11 +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.