customerio / customerio-android

This is the official Customer.io SDK for Android.
MIT License
13 stars 9 forks source link

Crash on Android 5-7 because of dependency on java.util.Base64 in Gist upgraded in 3.3.0 #199

Closed Karlos174 closed 1 year ago

Karlos174 commented 1 year ago

SDK version: 3.3.0 - 3.4.2

Environment: Production

Are logs available? Error fetching messages: canceled due to java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64; 2023-05-06 17:05:04.673 22480-22563 AndroidRuntime cz.ai.aschool.movies E FATAL EXCEPTION: OkHttp Dispatcher Process: cz.ai.aschool.movies, PID: 22480 java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64; at build.gist.data.listeners.Queue$gistQueueService$2.invoke$lambda-2(Queue.kt:35) at build.gist.data.listeners.Queue$gistQueueService$2.$r8$lambda$PAgpBkRd0H90geyu2KeSV3WZpLE(Queue.kt) at build.gist.data.listeners.Queue$gistQueueService$2$$ExternalSyntheticLambda0.intercept(D8$$SyntheticClass) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201) at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517) 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.Base64" on path: DexPathList[[zip file "/data/app/cz.ai.aschool.movies-2/base.apk"],nativeLibraryDirectories=[/data/app/cz.ai.aschool.movies-2/lib/x86, /data/app/cz.ai.aschool.movies-2/base.apk!/lib/x86, /vendor/lib, /system/lib]] 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 build.gist.data.listeners.Queue$gistQueueService$2.invoke$lambda-2(Queue.kt:35)  at build.gist.data.listeners.Queue$gistQueueService$2.$r8$lambda$PAgpBkRd0H90geyu2KeSV3WZpLE(Queue.kt)  at build.gist.data.listeners.Queue$gistQueueService$2$$ExternalSyntheticLambda0.intercept(D8$$SyntheticClass)  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)  at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)  at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)  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.Base64 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) ... 10 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 2023-05-06 17:05:08.756 22480-22554 Gist cz.ai.aschool.movies E Error fetching messages: canceled due to java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64;

Describe the bug After updating to version 3.3.2 I have found, that my app starts crashing. Last working cio SKD version is 3.2.0. I suspect Gist dependency update as a root cause of the problem, as java.util.Base64 is available from Android 8. But cio declares support for Android 5 so this is why i consider it to be a bug.

To Reproduce Run your SDK on Android 5-7

Expected behavior

Screenshots

Additional context

Shahroz16 commented 1 year ago

Hey, @Karlos174 thank you for bringing our attention to this, we will be releasing a fix for this soon. Apologies for the inconvenience and really appreciate the very in-depth issue log.

Shahroz16 commented 1 year ago

Hey @Karlos174, the fix is out. Thanks again for letting us know.

Karlos174 commented 1 year ago

Thank you for fast fix!