dotnet / android

.NET for Android provides open-source bindings of the Android SDK for use with .NET managed languages such as C#
MIT License
1.93k stars 527 forks source link

Failed resolution of: Landroidx/activity/OnBackPressedDispatcher$Api34Impl$createOnBackAnimationCallback$1; after updating to 8.0.91 from 8.0.71 #9428

Open skolumban-ex opened 1 day ago

skolumban-ex commented 1 day ago

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

PureWeen commented 1 day ago

Can you attach a logcat file with your crash? https://learn.microsoft.com/en-us/xamarin/android/deploy-test/debugging/android-debug-log?tabs=windows