After upgrading AGP to version 8.4, zonedSchedule
notifications causes app to crash
Use this minimally altered example project: NotificationsSample
- Run
Pixel 7 API 33
emulator fromAndroid Studio Jellyfish 2023.3.1
(don’t think the version matters, but just in case) - Run the project in VS Code on the above emulator
- Click
Show plain notification with payload
button. This works OK. - Now click
Schedule notification to appear in 5 seconds
button. - App crashes with below error:
<code>E/AndroidRuntime( 7543): FATAL EXCEPTION: main
E/AndroidRuntime( 7543): Process: com.example.notifications, PID: 7543
E/AndroidRuntime( 7543): java.lang.RuntimeException: Unable to start receiver com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver: java.lang.RuntimeException: Missing type parameter.
E/AndroidRuntime( 7543): at android.app.ActivityThread.handleReceiver(ActivityThread.java:4315)
E/AndroidRuntime( 7543): at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
E/AndroidRuntime( 7543): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2153)
E/AndroidRuntime( 7543): at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime( 7543): at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime( 7543): at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime( 7543): at android.app.ActivityThread.main(ActivityThread.java:7872)
E/AndroidRuntime( 7543): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 7543): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/AndroidRuntime( 7543): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
E/AndroidRuntime( 7543): Caused by: java.lang.RuntimeException: Missing type parameter.
E/AndroidRuntime( 7543): at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:84)
E/AndroidRuntime( 7543): at com.google.gson.reflect.TypeToken.<init>(TypeToken.java:62)
E/AndroidRuntime( 7543): at com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver$1.<init>(ScheduledNotificationReceiver.java:58)
E/AndroidRuntime( 7543): at com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver.onReceive(ScheduledNotificationReceiver.java:58)
E/AndroidRuntime( 7543): at android.app.ActivityThread.handleReceiver(ActivityThread.java:4306)
</code>
<code>E/AndroidRuntime( 7543): FATAL EXCEPTION: main
E/AndroidRuntime( 7543): Process: com.example.notifications, PID: 7543
E/AndroidRuntime( 7543): java.lang.RuntimeException: Unable to start receiver com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver: java.lang.RuntimeException: Missing type parameter.
E/AndroidRuntime( 7543): at android.app.ActivityThread.handleReceiver(ActivityThread.java:4315)
E/AndroidRuntime( 7543): at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
E/AndroidRuntime( 7543): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2153)
E/AndroidRuntime( 7543): at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime( 7543): at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime( 7543): at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime( 7543): at android.app.ActivityThread.main(ActivityThread.java:7872)
E/AndroidRuntime( 7543): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 7543): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/AndroidRuntime( 7543): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
E/AndroidRuntime( 7543): Caused by: java.lang.RuntimeException: Missing type parameter.
E/AndroidRuntime( 7543): at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:84)
E/AndroidRuntime( 7543): at com.google.gson.reflect.TypeToken.<init>(TypeToken.java:62)
E/AndroidRuntime( 7543): at com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver$1.<init>(ScheduledNotificationReceiver.java:58)
E/AndroidRuntime( 7543): at com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver.onReceive(ScheduledNotificationReceiver.java:58)
E/AndroidRuntime( 7543): at android.app.ActivityThread.handleReceiver(ActivityThread.java:4306)
</code>
E/AndroidRuntime( 7543): FATAL EXCEPTION: main
E/AndroidRuntime( 7543): Process: com.example.notifications, PID: 7543
E/AndroidRuntime( 7543): java.lang.RuntimeException: Unable to start receiver com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver: java.lang.RuntimeException: Missing type parameter.
E/AndroidRuntime( 7543): at android.app.ActivityThread.handleReceiver(ActivityThread.java:4315)
E/AndroidRuntime( 7543): at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
E/AndroidRuntime( 7543): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2153)
E/AndroidRuntime( 7543): at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime( 7543): at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime( 7543): at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime( 7543): at android.app.ActivityThread.main(ActivityThread.java:7872)
E/AndroidRuntime( 7543): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 7543): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/AndroidRuntime( 7543): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
E/AndroidRuntime( 7543): Caused by: java.lang.RuntimeException: Missing type parameter.
E/AndroidRuntime( 7543): at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:84)
E/AndroidRuntime( 7543): at com.google.gson.reflect.TypeToken.<init>(TypeToken.java:62)
E/AndroidRuntime( 7543): at com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver$1.<init>(ScheduledNotificationReceiver.java:58)
E/AndroidRuntime( 7543): at com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver.onReceive(ScheduledNotificationReceiver.java:58)
E/AndroidRuntime( 7543): at android.app.ActivityThread.handleReceiver(ActivityThread.java:4306)
Adding below line to gradle.properties
file fixes the problem:
<code>android.enableR8.fullMode = false
</code>
<code>android.enableR8.fullMode = false
</code>
android.enableR8.fullMode = false
But this seems a very radical workaround. Any better ideas?
Issue is reproduced in this project:
NotificationsSample