guardianproject / orbot

The Github home of Orbot: Tor on Android (Also available on gitlab!)
https://gitlab.com/guardianproject/orbot
Other
2.22k stars 336 forks source link

Android 6 crash (from emulator) #639

Closed n8fr8 closed 2 years ago

n8fr8 commented 2 years ago

2022-03-18 12:19:39.412 2823-2929/org.torproject.android E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1 Process: org.torproject.android, PID: 2823 java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/concurrent/CompletableFuture; at org.xbill.DNS.NioUdpClient.sendrecv(NioUdpClient.java:156) at org.xbill.DNS.SimpleResolver.sendAsync(SimpleResolver.java:371) at org.xbill.DNS.SimpleResolver.sendAsync(SimpleResolver.java:338) at org.xbill.DNS.SimpleResolver.sendAsync(SimpleResolver.java:302) at org.xbill.DNS.Resolver$-CC.$default$send(Resolver.java:152) at org.xbill.DNS.SimpleResolver.send(SimpleResolver.java) at org.torproject.android.service.vpn.DNSResolver.processDNS(DNSResolver.java:22) at org.torproject.android.service.vpn.RequestPacketHandler.run(RequestPacketHandler.java:33) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.ClassNotFoundException: Didn't find class "java.util.concurrent.CompletableFuture" on path: DexPathList[[zip file "/data/app/org.torproject.android-1/base.apk"],nativeLibraryDirectories=[/data/app/org.torproject.android-1/lib/x86_64, /data/app/org.torproject.android-1/base.apk!/lib/x86_64, /vendor/lib64, /system/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at org.xbill.DNS.NioUdpClient.sendrecv(NioUdpClient.java:156)  at org.xbill.DNS.SimpleResolver.sendAsync(SimpleResolver.java:371)  at org.xbill.DNS.SimpleResolver.sendAsync(SimpleResolver.java:338)  at org.xbill.DNS.SimpleResolver.sendAsync(SimpleResolver.java:302)  at org.xbill.DNS.Resolver$-CC.$default$send(Resolver.java:152)  at org.xbill.DNS.SimpleResolver.send(SimpleResolver.java)  at org.torproject.android.service.vpn.DNSResolver.processDNS(DNSResolver.java:22)  at org.torproject.android.service.vpn.RequestPacketHandler.run(RequestPacketHandler.java:33)  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  at java.lang.Thread.run(Thread.java:818)  Suppressed: java.lang.ClassNotFoundException: java.util.concurrent.CompletableFuture at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 12 more

n8fr8 commented 2 years ago

As stated in the CompletableFuture reference, it is only available after API level 24, so if your requirements require sdk 23 you cannot use that class.

However there are two roughly equivalent classes available to you:

Guava\androidx.concurrent's ListenableFuture: https://developer.android.com/jetpack/androidx/releases/concurrent + https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-guava/ kotlinx.coroutines's Deferred/CompletableDeferred: https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-completable-deferred/index.html

n8fr8 commented 2 years ago

see 3d29df81a1f9b7cc4017cc1c322e16ea0c6a21c0

move to older version of dnsjava to support Android 5/6 pre-Java 8 devices