После обновления приложения 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, но тип параметра несовместим.