我已经像这样检查了SO中提出的所有问题,但我找不到问题的答案。
我们在PlayStore中有一个应用程序,它是在Xamarin.Android中开发的,其代码通过共享项目与Xamarin.iOS共享。
现在我们正在切换到 Xamarin.Forms。我们改变了, 一些用户界面 基于存储在本地设备的令牌的自动登录机制。
该应用程序在设备和模拟器中运行良好。
我们已将我们的应用程序上传到游戏商店。如果用户的设备中有旧版本,则更新后,应用程序在显示初始屏幕几秒钟后崩溃。 如果我们卸载旧版本,它工作正常。
谷歌控制台中的错误:
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)
我们不确定为什么会发生这种情况。任何人都可以让我知道,为什么会发生这种情况以及如何防止它。另外,是否可以在可视化工作室中重现此问题?
谢谢
可能是您的 SharedPreferences 参数具有不兼容的类型。而且我没有找到证据证明它可能是xamarin。表单问题。如果你看一下源代码 SharedPreferencesImpl.java 到 getLong 方法,你会看到以下转换:
Long v = (Long)mMap.get(key);
这意味着在旧版本中,存在名称相同但类型与 Long 不同的参数。您在 MainActivity 的 onCreate 方法中读取此参数,但参数类型不兼容。