Xamarin утверждает, что использование Xamarin.Forms может увеличить объем общего кода в приложениях для трех мобильных платформ (iOS, Android и WP) с 70% до 90%.
У меня была возможность убедиться в этом факте на собственном опыте.
Моя история о том, почему это правда и неправда одновременно.
Сразу уточню, что мой опыт, возможно, уже устарел.
В мире Xamarin ситуация быстро меняется, особенно в связи с проходящей в настоящее время конференцией Xamarin Evolve. Все началось с того, что я сменил работу и на новой работе, в ожидании своего первого проекта, меня отправили делать небольшой внутренний мобильный проект, основной целью которого было познакомить разработчиков с Xamarin. Для разработки был выбран Xamarin.Forms, поскольку проект был простым и не требовал крутого дизайна.
Проблемы начались сразу.
Проблемы
- В настоящее время Xamarin.Forms имеет очень небольшой набор стандартных элементов управления.
Да, этот набор можно расширить за счет компонентов, созданных сообществом, но все равно многого не хватает. А те элементы управления, которые существуют, часто (иногда по неизвестным причинам) лишены необходимых функций и свойств.
Простой пример: элемент управления Picker, используемый для выбора из больших списков, не имеет привязываемых свойств для текущего выбранного элемента и списка элементов.
- Некоторые элементы управления ведут себя, мягко говоря, странно.
Например, оказалось невозможно разместить ActivityIndicator в центре страницы на всех платформах без использования дополнительного кода.
- Создание разметки с использованием XAML, а не кода, очень сложно.
Начнем с того, что интеллект работает по каким-то своим, известным только ему правилам.
Те.
он может работать на одной линии, но по каким-то причинам перестать работать на другой.
Да, мы говорим о Xamarin Studio; интеллект в Visual Studio не работает в принципе.
- На момент разработки ни о каком визуальном редактировании разметки речи вообще не шло.
- Некоторые стандартные функции XAML не работают. Например, мне не удалось добавить на страницу ссылку на ResourceDictionary, использовать целочисленные константы и конвертеры.
И, конечно же, действия и поведение из Blend не работают. Кроме того, некоторые вещи реализованы в Xamarin.Forms иначе, чем обычно в XAML. Например, в списках внутри DataTemplate находится не сама разметка, а ListCell, внутри которого уже находится разметка.
- Метка не поддерживает обрезку строк.
Казалось бы, чушь, не стоящая отдельного балла, но, похоже, это очень хороший показатель сырости платформы.
Однако Xamarin этого не отрицает.
- Xamarin.Forms не работает с новыми проектами для Windows Phone 8.1 из Visual Studio 2013. Это стало для нас большой проблемой и вынудило не использовать Xamarin для приложения Windows Phone, поскольку одна из используемых нами библиотек (последняя версия Windows Azure Active Directory) требуется WP 8.1.
- Документация для многих классов и элементов управления очень скудна и фактически представляет собой просто список свойств, конструкторов, полей без примеров и пояснений.
Без проблем
- В общем, имея уже описанную в коде разметку, превратить ее в XAML — не проблема.
Мне потребовалось около двух часов, чтобы конвертировать две страницы.
- Xamarin.Forms имеет простую реализацию издатель-подписчик, которая значительно помогает работать с кодом, специфичным для платформы, уменьшая связанность.
Правда, вместо этого мы использовали этот выполнение , который может работать как с Xamarin, так и с WP 8.1.
- Да, используя Xamarin.Forms, вы можете получить 90% общего кода.
Кода, специфичного для платформы, может быть очень мало.
Например, для нас это работа с WAAD и уведомлениями.
Это всего лишь правило для сферического применения в вакууме.
Любое приложение требует определенного кода — намерения обработки в Android, фоновая выборка в iOS, плитки в WP.
- Существует множество сторонних элементов управления.
Если у вас нет того, что вам нужно, вы всегда можете это добавить.
Например, тот же Пикер :)
- Разработчики четко понимают, что дизайн для всех трех платформ не может быть абсолютно одинаковым, поэтому помимо переписывания рендеров под разные платформы есть более простые средства.
Например, вы можете указать размеры для каждой платформы отдельно с помощью специального помощника.
Правда опять же не в XAML.
- Для распространения и сбора крашей мы использовали HockeyApp (без ссылки, чтобы не рекламировать), поддерживающий Xamarin и WP (сборки есть в галерее Xamarin).
выводы
В итоге нам удалось сделать приложение, которым можно даже пользоваться, но в будущем я бы предпочёл использовать Xamarin без Forms. Хотя, на мой взгляд, у Xamarin.Forms есть будущее (если от них, конечно, не забросят) и они отлично подойдут для разработки простых корпоративных приложений через пол года.
Поправки и комментарии
2. ActivityIndicator можно разместить в центре без кода.Это, как оказалось, легко сделать с помощью AbsoluteLayout. 5. Действия и поведения будут добавлены в следующей версии Xamarin.Forms 1.3 (в настоящее время в альфа-состоянии).
Если ты хочешь этого прямо сейчас, то это пакет nuget .
Словари, очевидно, будут доступны и в следующей версии.
снова 5. В XAML вы можете указать разные параметры для разных платформ.
Для этого есть классы OnPlatform и OnIdiom. Теги: #xamarin #xamarin.forms #разработка для Android #разработка для iOS #.
NET #windows phone #разработка для iOS #разработка мобильных приложений #разработка для Android #xamarin
-
Марризм
19 Oct, 24 -
Димасик Собирает Базу Адресов
19 Oct, 24 -
Vlc Как Служба Windows
19 Oct, 24 -
Фусадзиро Ямаути: Основатель Nintendo
19 Oct, 24 -
Nigma Поделится Миллионом Кликов
19 Oct, 24 -
Опыт Сборки Goog-411 [От Первого Лица]
19 Oct, 24