I am maintaining a MAUI app, using .Net 8. The MAUI nuget versions are 8.0.91 (I updated from 8.0.71).
The application runs fine on all my devices and on emulator. But it cannot be released on Google Play, as Google refuses it because of broken functionality (the app crashes on startup).
The Sentry logs are showing two issues:
Issue 1:
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1;
at androidx.activity.OnBackPressedDispatcher$Api34Impl.createOnBackAnimationCallback(OnBackPressedDispatcher.kt:385)
at androidx.activity.OnBackPressedDispatcher.(OnBackPressedDispatcher.kt:127)
at androidx.activity.OnBackPressedDispatcher.(OnBackPressedDispatcher.kt:77)
at androidx.activity.ComponentActivity$onBackPressedDispatcher$2.invoke(ComponentActivity.kt:622)
at androidx.activity.ComponentActivity$onBackPressedDispatcher$2.invoke(ComponentActivity.kt:621)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at androidx.activity.ComponentActivity.getOnBackPressedDispatcher(ComponentActivity.kt:621)
at androidx.fragment.app.FragmentActivity$HostCallbacks.getOnBackPressedDispatcher(FragmentActivity.java:607)
at androidx.fragment.app.FragmentManager.attachController(FragmentManager.java:2919)
at androidx.fragment.app.FragmentController.attachHost(FragmentController.java:117)
at androidx.fragment.app.FragmentActivity.lambda$init$3$androidx-fragment-app-FragmentActivity(FragmentActivity.java:139)
at androidx.fragment.app.FragmentActivity$$ExternalSyntheticLambda3.onContextAvailable
at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.kt:84)
at androidx.activity.ComponentActivity.onCreate(ComponentActivity.kt:331)
at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:216)
at crc64a98f21486839a9f0.MainActivity.n_onCreate(MainActivity.java)
at crc64a98f21486839a9f0.MainActivity.onCreate(MainActivity.java:51)
at android.app.Activity.performCreate(Activity.java:7994)
at android.app.Activity.performCreate(Activity.java:7978)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1548)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3406)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3607)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2068)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7680)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:423)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
java.lang.ClassNotFoundException: androidx.activity.OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1
at androidx.activity.OnBackPressedDispatcher$Api34Impl.createOnBackAnimationCallback(OnBackPressedDispatcher.kt:385)
at androidx.activity.OnBackPressedDispatcher.(OnBackPressedDispatcher.kt:127)
at androidx.activity.OnBackPressedDispatcher.(OnBackPressedDispatcher.kt:77)
at androidx.activity.ComponentActivity$onBackPressedDispatcher$2.invoke(ComponentActivity.kt:622)
at androidx.activity.ComponentActivity$onBackPressedDispatcher$2.invoke(ComponentActivity.kt:621)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at androidx.activity.ComponentActivity.getOnBackPressedDispatcher(ComponentActivity.kt:621)
at androidx.fragment.app.FragmentActivity$HostCallbacks.getOnBackPressedDispatcher(FragmentActivity.java:607)
at androidx.fragment.app.FragmentManager.attachController(FragmentManager.java:2919)
at androidx.fragment.app.FragmentController.attachHost(FragmentController.java:117)
at androidx.fragment.app.FragmentActivity.lambda$init$3$androidx-fragment-app-FragmentActivity(FragmentActivity.java:139)
at androidx.fragment.app.FragmentActivity$$ExternalSyntheticLambda3.onContextAvailable
at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.kt:84)
at androidx.activity.ComponentActivity.onCreate(ComponentActivity.kt:331)
at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:216)
at crc64a98f21486839a9f0.MainActivity.n_onCreate(MainActivity.java)
at crc64a98f21486839a9f0.MainActivity.onCreate(MainActivity.java:51)
at android.app.Activity.performCreate(Activity.java:7994)
at android.app.Activity.performCreate(Activity.java:7978)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1548)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3406)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3607)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2068)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7680)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:423)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Issue 2:
Java.Lang.Error: Failed resolution of: Landroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1;
?, in void InstanceMethods.CallNonvirtualVoidMethod(JniObjectReference, JniObjectReference, JniMethodInfo, JniArgumentValue)
?, in void JniInstanceMethods.InvokeVirtualVoidMethod(string, IJavaPeerable, JniArgumentValue)
?, in void Activity.OnCreate(Bundle)
?, in void MauiAppCompatActivity.OnCreate(Bundle savedInstanceState)
?, in void MainActivity.OnCreate(Bundle savedInstanceState)
?, in void Activity.n_OnCreate_Landroid_osBundle(IntPtr jnienv, IntPtr native__this, IntPtr native_savedInstanceState)
?, in void JNINativeWrapper.Wrap_JniMarshal_PPL_V(_JniMarshal_PPL_V callback, IntPtr jnienv, IntPtr klazz, IntPtr p0)
Steps to Reproduce
I don't know how to create such an app, ours is rather complicated.
Description
I am maintaining a MAUI app, using .Net 8. The MAUI nuget versions are 8.0.91 (I updated from 8.0.71).
The application runs fine on all my devices and on emulator. But it cannot be released on Google Play, as Google refuses it because of broken functionality (the app crashes on startup).
The Sentry logs are showing two issues:
Issue 1:
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1; at androidx.activity.OnBackPressedDispatcher$Api34Impl.createOnBackAnimationCallback(OnBackPressedDispatcher.kt:385) at androidx.activity.OnBackPressedDispatcher.(OnBackPressedDispatcher.kt:127)
at androidx.activity.OnBackPressedDispatcher.(OnBackPressedDispatcher.kt:77)
at androidx.activity.ComponentActivity$onBackPressedDispatcher$2.invoke(ComponentActivity.kt:622)
at androidx.activity.ComponentActivity$onBackPressedDispatcher$2.invoke(ComponentActivity.kt:621)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at androidx.activity.ComponentActivity.getOnBackPressedDispatcher(ComponentActivity.kt:621)
at androidx.fragment.app.FragmentActivity$HostCallbacks.getOnBackPressedDispatcher(FragmentActivity.java:607)
at androidx.fragment.app.FragmentManager.attachController(FragmentManager.java:2919)
at androidx.fragment.app.FragmentController.attachHost(FragmentController.java:117)
at androidx.fragment.app.FragmentActivity.lambda$init$3$androidx-fragment-app-FragmentActivity(FragmentActivity.java:139)
at androidx.fragment.app.FragmentActivity$$ExternalSyntheticLambda3.onContextAvailable
at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.kt:84)
at androidx.activity.ComponentActivity.onCreate(ComponentActivity.kt:331)
at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:216)
at crc64a98f21486839a9f0.MainActivity.n_onCreate(MainActivity.java)
at crc64a98f21486839a9f0.MainActivity.onCreate(MainActivity.java:51)
at android.app.Activity.performCreate(Activity.java:7994)
at android.app.Activity.performCreate(Activity.java:7978)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1548)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3406)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3607)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2068)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7680)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:423)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
java.lang.ClassNotFoundException: androidx.activity.OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1
at androidx.activity.OnBackPressedDispatcher$Api34Impl.createOnBackAnimationCallback(OnBackPressedDispatcher.kt:385)
at androidx.activity.OnBackPressedDispatcher.(OnBackPressedDispatcher.kt:127)
at androidx.activity.OnBackPressedDispatcher.(OnBackPressedDispatcher.kt:77)
at androidx.activity.ComponentActivity$onBackPressedDispatcher$2.invoke(ComponentActivity.kt:622)
at androidx.activity.ComponentActivity$onBackPressedDispatcher$2.invoke(ComponentActivity.kt:621)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at androidx.activity.ComponentActivity.getOnBackPressedDispatcher(ComponentActivity.kt:621)
at androidx.fragment.app.FragmentActivity$HostCallbacks.getOnBackPressedDispatcher(FragmentActivity.java:607)
at androidx.fragment.app.FragmentManager.attachController(FragmentManager.java:2919)
at androidx.fragment.app.FragmentController.attachHost(FragmentController.java:117)
at androidx.fragment.app.FragmentActivity.lambda$init$3$androidx-fragment-app-FragmentActivity(FragmentActivity.java:139)
at androidx.fragment.app.FragmentActivity$$ExternalSyntheticLambda3.onContextAvailable
at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.kt:84)
at androidx.activity.ComponentActivity.onCreate(ComponentActivity.kt:331)
at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:216)
at crc64a98f21486839a9f0.MainActivity.n_onCreate(MainActivity.java)
at crc64a98f21486839a9f0.MainActivity.onCreate(MainActivity.java:51)
at android.app.Activity.performCreate(Activity.java:7994)
at android.app.Activity.performCreate(Activity.java:7978)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1548)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3406)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3607)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2068)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7680)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:423)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Issue 2:
Java.Lang.Error: Failed resolution of: Landroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1; ?, in void InstanceMethods.CallNonvirtualVoidMethod(JniObjectReference, JniObjectReference, JniMethodInfo, JniArgumentValue) ?, in void JniInstanceMethods.InvokeVirtualVoidMethod(string, IJavaPeerable, JniArgumentValue) ?, in void Activity.OnCreate(Bundle) ?, in void MauiAppCompatActivity.OnCreate(Bundle savedInstanceState) ?, in void MainActivity.OnCreate(Bundle savedInstanceState) ?, in void Activity.n_OnCreate_Landroid_osBundle(IntPtr jnienv, IntPtr native__this, IntPtr native_savedInstanceState) ?, in void JNINativeWrapper.Wrap_JniMarshal_PPL_V(_JniMarshal_PPL_V callback, IntPtr jnienv, IntPtr klazz, IntPtr p0)
Steps to Reproduce
I don't know how to create such an app, ours is rather complicated.
Link to public reproduction project repository
No response
Version with bug
8.0.91 SR9.1
Is this a regression from previous behavior?
Yes, this used to work in .NET MAUI
Last version that worked well
8.0.71 SR7.1
Affected platforms
Android
Affected platform versions
No response
Did you find any workaround?
Nope.
Relevant log output
No response