Миграция приложения Xamarin.Forms для Android в пакеты поддержки AndroidX

У меня есть проект Android Xamarin.Forms, я пытаюсь перейти со старых пакетов поддержки Android на AndroidX. Кажется, что миграция работает, и мне приходится добавлять ссылку на медиапакет AndroidX во время компиляции.

Проблема в том, что когда я пытаюсь запустить приложение, я получаю исключение

System.InvalidCastException: 'Unable to convert instance of type 'Android.Widget.RelativeLayout' to type 'AndroidX.AppCompat.Widget.Toolbar'.'

из Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnCreate. Мои подклассы MainActivity класса FormsAppCompatActivity и OnCreate MainActivity немедленно вызывают базовый OnCreate. Visual Studio говорит, что исключение возникло из внешнего кода, поэтому мне ничего не видно.

Переопределения OnStart и OnResume в моем MainActivity вызываются и завершаются нормально (используется только одна строка кода, настраивающая плагин CrossCurrentActivity.

Я не понимаю, как отследить проблему. Я подозреваю, что проблема где-то в одном из пакетов, которые я использую, моим главным подозреваемым является Xam.Plugin.Iconize, поскольку он не обновлялся какое-то время, но мы полагаемся на него, и я не совсем уверен, как доказать, где проблема есть.


person Andy    schedule 19.05.2020    source источник
comment
Удалите папки bin и obj в папках приложения. Удалите фактическое приложение из эмулятора, зайдя в настройки и приложения, удалите приложение и повторно разверните.   -  person Leon Lu - MSFT    schedule 20.05.2020
comment
@ LeonLu-MSFT Я все это сделал, и проблема все еще та же.   -  person Andy    schedule 20.05.2020
comment
Не могли бы вы поделиться демонстрационной ссылкой? Потому что я не могу произвести такую ​​же ошибку, как вы.   -  person Leon Lu - MSFT    schedule 21.05.2020


Ответы (1)


Недавно я перешел на AndroidX и опубликовал приложение. Пользователи сообщали о множестве сбоев при запуске. Я все еще разбираюсь в этом. Странно то, что на некоторых устройствах он работает нормально, а на других вылетает.

Я заметил, что несколько файлов в проекте Android по-прежнему относятся к старой библиотеке «Поддержка Android». Убедитесь, что вы вручную изменили их на AndroidX.

Проверьте Toolbar.xml и Tabbar.xml (Android proj> Ресурсы> Макет). У меня это было в моем приложении, которое все еще использовало android.support.v7 ...

введите описание изображения здесь

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

person Priyanka    schedule 25.05.2020
comment
Привет, вы исправили свою проблему? У меня также возникают проблемы с некоторыми устройствами Android. Согласно этому руководству, мы можем удалить файлы Toolbar.xml и Tabbar.xml? Вы пробовали это? docs.microsoft.com/en-us/ xamarin / xamarin-forms / устранение неполадок / - person Andreas Reitberger; 19.02.2021