После обновления приложения Xamarin.Forms

Я проверил все вопросы, поднятые в SO, как это, и я не смог найти ответ на мою проблему.

У нас было приложение в PlayStore, которое разработано в Xamarin.Android с кодом, общим с Xamarin.iOS через общий проект.

Теперь мы переходим к Xamarin.Forms. Мы изменили механизм некоторых пользовательских интерфейсов с автозагрузкой на основе токена, хранящегося на локальном устройстве.

Приложение отлично работает в устройствах и симуляторах.

Мы загрузили наше приложение в магазин. Если у пользователя есть старая версия на своем устройстве, после обновления приложения сбой после показа заставки в течение нескольких секунд. Если мы удалим старую версию, она работает нормально.

Ошибка в консоли 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?

Спасибо

Ответ 1

Вероятно, ваши параметры SharedPreferences имеют несовместимые типы. И я не нашел доказательства того, что это может быть проблема xamarin.Forms. Если вы посмотрите на исходный код SharedPreferencesImpl.java на метод getLong, вы увидите следующее действие:

Long v = (Long)mMap.get(key);

Это означает, что в старых версиях был параметр с тем же именем, но с типом, отличным от Long. Вы читаете этот параметр в методе onCreate вашего MainActivity, но тип параметра несовместим.