Open
Description
Describe the bug
- Current stable Unleash release 1.2.1 seems incompatible with OkHttp 5.x.y.
- OkHttp 5.x.y has not yet reached the stable release status (currently on alpha), but it's the only version that implements "fast fallback": https://square.github.io/okhttp/changelogs/changelog/#version-500-alpha4
- Fast fallback is critical to improve support for mixed IPv4+IPv6 networks.
- The issue itself seems to root on Unleash code using "internals" from OkHttp.
- I'm pretty sure there may be a good reason for things to be as they are, however, packages named "internals" are usually named this way to indicate they shouldn't be used by third parties (meaning they are not part of the public API from OkHttp).
- Unleash is very important over here, but so it is OkHttp 5.x.y.
- Is there anything I can do to help?
- Is there anything do you guys see me doing wrong?
HIghlights from the issue:
--------- beginning of crash
[...] D Shutting down VM
[...] E FATAL EXCEPTION: main
[...] Process: io.cloudwalk.unleash, PID: 13626
[...] java.lang.NoClassDefFoundError: Failed resolution of: Lokhttp3/internal/Util;
[...] at io.getunleash.android.DefaultUnleash.buildDataJobs(DefaultUnleash.kt:168)
[...] at io.getunleash.android.DefaultUnleash.<init>(DefaultUnleash.kt:105)
[...] at io.getunleash.android.DefaultUnleash.<init>(DefaultUnleash.kt:62)
[...] at io.cloudwalk.unleash.Application.onCreate(Application.kt:17)
[...] at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1316)
[...] at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6998)
[...] at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
[...] at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
[...] at android.os.Handler.dispatchMessage(Handler.java:106)
[...] at android.os.Looper.loopOnce(Looper.java:205)
[...] at android.os.Looper.loop(Looper.java:294)
[...] at android.app.ActivityThread.main(ActivityThread.java:8177)
[...] at java.lang.reflect.Method.invoke(Native Method)
[...] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
[...] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
[...] Caused by: java.lang.ClassNotFoundException: Didn't find class "okhttp3.internal.Util" on path: DexPathList[[dex file "/data/data/io.cloudwalk.unleash/code_cache/.overlay/base.apk/classes3.dex", zip file "/data/app/~~ivTzdpf-kVmTfFFRfjItzA==/io.cloudwalk.unleash-qHJ7oGUs1vKX9mLj56qyMA==/base.apk"],nativeLibraryDirectories=[/data/app/~~ivTzdpf-kVmTfFFRfjItzA==/io.cloudwalk.unleash-qHJ7oGUs1vKX9mLj56qyMA==/lib/arm64, /system/lib64, /system_ext/lib64]]
[...] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
[...] at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
[...] at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
[...] at io.getunleash.android.DefaultUnleash.buildDataJobs(DefaultUnleash.kt:168)
[...] at io.getunleash.android.DefaultUnleash.<init>(DefaultUnleash.kt:105)
[...] at io.getunleash.android.DefaultUnleash.<init>(DefaultUnleash.kt:62)
[...] at io.cloudwalk.unleash.Application.onCreate(Application.kt:17)
[...] at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1316)
[...] at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6998)
[...] at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
[...] at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
[...] at android.os.Handler.dispatchMessage(Handler.java:106)
[...] at android.os.Looper.loopOnce(Looper.java:205)
[...] at android.os.Looper.loop(Looper.java:294)
[...] at android.app.ActivityThread.main(ActivityThread.java:8177)
[...] at java.lang.reflect.Method.invoke(Native Method)
[...] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
[...] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
[...] I Sending signal. PID: 13626 SIG: 9
Steps to reproduce the bug
- Create a sample application
- Add Unleash 1.2.1 as a dependency
- Add OkHttp 5.0.0-alpha.14 as a dependency
- Ensure Unleash initialization - e.g. in Application#onCreate()
- Application will crash due to failed resolution of: Lokhttp3/internal/Util;
- Replace OkHttp 5.0.0-alpha.14 by 4.12.0
- Application will run with no crashes whatsoever
Expected behavior
Unleash shouldn't crash the application during it's initialization when paired with OkHttp 5.x.y
Logs, error output, etc.
--------- beginning of crash
12-16 17:05:44.926 14712 14712 E AndroidRuntime: FATAL EXCEPTION: main
12-16 17:05:44.926 14712 14712 E AndroidRuntime: Process: io.cloudwalk.unleash, PID: 14712
12-16 17:05:44.926 14712 14712 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Lokhttp3/internal/Util;
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at io.getunleash.android.DefaultUnleash.buildDataJobs(DefaultUnleash.kt:168)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at io.getunleash.android.DefaultUnleash.<init>(DefaultUnleash.kt:105)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at io.getunleash.android.DefaultUnleash.<init>(DefaultUnleash.kt:62)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at io.cloudwalk.unleash.Application.onCreate(Application.kt:17)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1316)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6998)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:205)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at android.os.Looper.loop(Looper.java:294)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8177)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "okhttp3.internal.Util" on path: DexPathList[[dex file "/data/data/io.cloudwalk.unleash/code_cache/.overlay/base.apk/classes3.dex", zip file "/data/app/~~ivTzdpf-kVmTfFFRfjItzA==/io.cloudwalk.unleash-qHJ7oGUs1vKX9mLj56qyMA==/base.apk"],nativeLibraryDirectories=[/data/app/~~ivTzdpf-kVmTfFFRfjItzA==/io.cloudwalk.unleash-qHJ7oGUs1vKX9mLj56qyMA==/lib/arm64, /system/lib64, /system_ext/lib64]]
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
12-16 17:05:44.926 14712 14712 E AndroidRuntime: ... 15 more
12-16 17:05:44.930 552 14731 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
12-16 17:05:44.930 552 747 W ActivityTaskManager: Force finishing activity io.cloudwalk.unleash/.MainActivity
12-16 17:05:44.936 1332 1369 V WindowManagerShell: Transition requested: android.os.BinderProxy@532586b TransitionRequestInfo { type = CLOSE, triggerTask = null, remoteTransition = null, displayChange = null }
12-16 17:05:44.936 14712 14712 I Process : Sending signal. PID: 14712 SIG: 9
12-16 17:05:44.943 552 747 I ActivityManager: Process io.cloudwalk.unleash (pid 14712) has died: fg TOP
12-16 17:05:44.943 552 582 I libprocessgroup: Successfully killed process cgroup uid 10191 pid 14712 in 0ms
12-16 17:05:44.944 350 350 I Zygote : Process 14712 exited due to signal 9 (Killed)
Screenshots
No response
Additional context
No response
Unleash version
1.2.1
Subscription type
None
Hosting type
None
SDK information (language and version)
No response
Metadata
Metadata
Assignees
Type
Projects
Status