ahmed mostafa
ahmed mostafa

Reputation: 527

AWS Amplify Crashes on Android 6

I'm trying to use AWS amplify on android 6, but the app crashes suddenly after 30 seconds after the Configuration and gets this error.

java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalDateTime;
       at com.amplifyframework.devmenu.PersistentLogger.addToLogs(PersistentLogger.java:116)
       at com.amplifyframework.devmenu.PersistentLogger.debug(PersistentLogger.java:88)
       at com.amplifyframework.logging.BroadcastLogger.debug(BroadcastLogger.java:101)
       at com.amplifyframework.analytics.pinpoint.AutoEventSubmitter.lambda$new$0$AutoEventSubmitter(AutoEventSubmitter.java:44)
       at com.amplifyframework.analytics.pinpoint.-$$Lambda$AutoEventSubmitter$kRbNZmP2XU9xJOUcrfJ3PKgcA28.run(lambda)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:148)
       at android.os.HandlerThread.run(HandlerThread.java:61)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "java.time.LocalDateTime" on path: DexPathList[[zip file "/data/app/com.nowpay.nowpay-1/base.apk"],nativeLibraryDirectories=[/data/app/com.nowpay.nowpay-1/lib/arm, /data/app/com.nowpay.nowpay-1/base.apk!/lib/armeabi-v7a, /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 com.amplifyframework.devmenu.PersistentLogger.addToLogs(PersistentLogger.java:116) 
       at com.amplifyframework.devmenu.PersistentLogger.debug(PersistentLogger.java:88) 
       at com.amplifyframework.logging.BroadcastLogger.debug(BroadcastLogger.java:101) 
       at com.amplifyframework.analytics.pinpoint.AutoEventSubmitter.lambda$new$0$AutoEventSubmitter(AutoEventSubmitter.java:44) 
       at com.amplifyframework.analytics.pinpoint.-$$Lambda$AutoEventSubmitter$kRbNZmP2XU9xJOUcrfJ3PKgcA28.run(lambda) 
       at android.os.Handler.handleCallback(Handler.java:739) 
       at android.os.Handler.dispatchMessage(Handler.java:95) 
       at android.os.Looper.loop(Looper.java:148) 
       at android.os.HandlerThread.run(HandlerThread.java:61) 
       Suppressed: java.lang.ClassNotFoundException: java.time.LocalDateTime
       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

Upvotes: 0

Views: 282

Answers (1)

Jameson
Jameson

Reputation: 6659

The basic problem here is that the app is trying to reference a class which doesn't exist at runtime:

java.lang.ClassNotFoundException: Didn't find class "java.time.LocalDateTime"

Initial runtime support for java.time.* was added to Android in API Level 26. For a period of time, java.time.* only worked on these devices.

As of Android Studio 4, java.time.* APIs can be "de-sugared" at build time. When using this functionality, the resulting code will run on all versions of Android. To benefit from this support, you must have Android Studio 4 or higher, and enable "core library desugaring." See the documentation for more details: https://developer.android.com/studio/write/java8-support#library-desugaring

Upvotes: 2

Related Questions