Xamarin.Forms应用程序在更新后崩溃

11

我已检查了所有在Stack Overflow上提出的类似问题,但是找不到答案来解决我的问题。

我们在PlayStore中有一个应用程序,它是使用Xamarin.Android开发的,并通过共享项目与Xamarin.iOS共享代码。

现在我们正在切换到Xamarin.Forms。 我们已经进行了更改: 一些UI 基于本地设备中存储的令牌的自动登录登录机制。

该应用在设备和模拟器中运行良好。

我们已将应用程序上传到playstore。 如果用户在其设备中有旧版本,则更新后的应用程序在显示闪屏几秒钟后崩溃。 如果我们卸载旧版本,则可以正常工作。

Google控制台中的错误:

    java.lang.RuntimeException:

at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2955)

at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java030)

at android.app.ActivityThread.-wrap11 (Unknown Source)

at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1696)

at android.os.Handler.dispatchMessage (Handler.java:105)

at android.os.Looper.loop (Looper.java:164)

at android.app.ActivityThread.main (ActivityThread.java:6938)

at java.lang.reflect.Method.invoke (Native Method)

at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java27)

at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

Caused by: java.lang.ClassCastException:

at android.app.SharedPreferencesImpl.getLong (SharedPreferencesImpl.java:279)

at md56c96bd185bfbb3ebebdd94ef17444e8f.MainActivity.n_onCreate (Native Method)

at md56c96bd185bfbb3ebebdd94ef17444e8f.MainActivity.onCreate (MainActivity.java1)

at android.app.Activity.performCreate (Activity.java:7174)

at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1220)

at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2908)

我们不确定为什么会发生这种情况。有人能告诉我,为什么会出现这种情况以及如何防止它吗?同时,在VisualStudio中是否有可能重现此问题?

谢谢。


@WPFUser 如果您安装调试版本而不是发布版本会发生什么?! - toumir
@WPFUser 请检查您的应用程序属性,这可能是您自动登录机制中使用的。 - Денис Чорный
@ДенисЧорный 你的意思是我必须更改它们吗? - WPFUser
@WPFUser 是的,这就是我的意思,但不是从 PlayStore 下载,而是本地安装或更新调试版本。 - toumir
@WPFUser 我认为你需要添加一个可以重写属性的机制。使用 App.Current.Properties.TryGetValue 获取应用程序的属性,如果它们存在,则使用 App.Current.Properties["your_property"] = ... 进行重写,或者创建新的 App.Current.Properties.Add("your_property", "default_value") - Денис Чорный
显示剩余3条评论
1个回答

1
很可能您的SharedPreferences参数具有不兼容的类型。我没有找到证据表明这可能是xamarin.Forms的问题。如果您查看源代码SharedPreferencesImpl.java中的getLong方法,您将看到以下转换:
Long v = (Long)mMap.get(key);

这意味着在旧版本中存在一个与Long类型不同的同名参数。您在MainActivity的onCreate方法中读取了此参数,但参数类型不兼容。

我会检查它并让你知道。 - WPFUser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接