Программист мобильных приложений
0,2
рейтинг
15 августа 2014 в 07:27

Разработка → Xamarin.Forms не готов к боевым условиям?

Xamarin — продукт, дающий возможность используя .NET писать приложение сразу под 3 мобильные платформы — Android, iOS и Windows Phone. Не так давно в продукт добавлена новая технология — Xamarin.Forms, позволяющая писать один XML-файл с разметкой на все платформы сразу. Но насколько эта технология готова к использованию в продакшене?

Визуальный редактор и автодополнения


Пока что отсутствует визуальный редактор или предпросмотр того, что получается из XML'я (точнее, XAML'а). Да-да, я сам достаточно давнее время назад писал PHP и HTML в редакторах вроде Notepad++, и помню, что это вполне реально. Но там мне нужны были секунды, что бы посмотреть, что получается — сохранить да нажать F5 в браузере. Здесь же нужно скомпилировать и собрать приложение, залить на устройства или эмуляторы, зайти на нужную страницу… не так уж и быстро выходит.

Эта загрузка будет вечной, и батареек ей хватит надолго

Ещё больше поражает то, что при редактировании разметки у нас не будет подсказок по доступным объектам и их свойствам. Даже при работе из родной Xamarin Studio. Добро пожаловать в прошлое…



Поддержка ReSharper'ом и Visual Studio


Другая проблема при работе с Xamarin.Forms в том, что по XML с разметкой генерируются файлы с кодом. Это хорошо. Но в отличии от генерации кода по редактору Storyboard'ов, файлы эти генерируются при непосредственной сборке проекта, во временной директории. От такой радости ReSharper сходит с ума и ничего нормально подсветить и посоветовать не может, как впрочем и сама Visual Studio.

Это не Рио-де-Жанейро. Это гораздо хуже.

В родной Xamarin Studio с этим порядок, но эту студию я не очень люблю. Чего только стоят периодически вылетающие ошибки при попытке сделать банальнейшую вещь — сохранить файл по нажатию Ctrl+S! Конкретно к Xamarin.Forms это не относится, но меня эта ошибка стабильно «радует» с прошлого года.



Мелочи из комментариев


Из комментариев других разработчиком так же выяснилось, что, как минимум
  • Собственные шрифты без проблем пока можно использовать только под iOS — для Android'а придётся писать собственный рендер (Custom Render)
  • Есть проблемы с логикой указания размеров и отступов элементов, подробней тут

В общем и целом, задумка то хорошая, но прямо сейчас, поигравшись и пощупав инструменты, я таки выбрал разработку индивидуального интерфейса под iOS и Android. Кто-то конечно может сказать, что я зажрался, но блин! Сегодня инструменты порой решают не меньше, чем сама технология. Опытный разработчик использую подсказки IDE, автодополнения и прочие радости современности (вроде статистических анализаторов) может экономить кучу времени и избегать массы ошибок. В случае с Xamarin.Forms с этим пока всё достаточно безрадостно.

А какой у вас опыт использования Xamarin.Forms? Вы уже готовы терпеть все недостатки или взяли её в production? А может я всё не так понял и на самом деле все необходимые для меня фичи уже в наличии, просто нужно пошаманить с настройками? Жду ваших комментариев!
Дмитрий @Newbilius
карма
92,5
рейтинг 0,2
Программист мобильных приложений
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (15)

  • +2
    Resharper обещают в одной из следующих версий прикрутить поддержку Xamarin.Forms XAML.
    А вообще пока сами Xamarin рекомендуют описываться формы кодом :)
    Для тех, кому не хватает стандартных контролов (а их не хватает всем) есть проект github.com/XForms/Xamarin-Forms-Labs
    • +1
      Потому и пост на тему «как оно сейчас». Думаю, в течении года продукт станет действительно удобным. Но прямо сейчас за него браться… Хм.
      За ссылку спасибо, может позже пригодится.
      А вообще пока сами Xamarin рекомендуют описываться формы кодом :)

      Мне данная идея кажется жутковатой, говорю как человек, делавший интерфейсы в играх кодом. Вёрсткой отдельной гораааздо удобнее. :)
      • +1
        Да, я понимаю, что на данный момент Xamarin.Forms еще очень сырой продукт. Я только хотел сказать, что он развивается.
  • +4
    А как у этих «единых форм» с соответствиям гайдлайнов каждой платформы?
    • 0
      На каждой платформе, судя по виду и поведению, рисуются нативные, родные компоненты. Ну или они идеально мимикрируют под таковые, но соответствие на мой поверхностный взгляд — полное.
      • 0
        компоненты — нативные, а что о гайдлайнах их положений?
        • 0
          Видимо не до конца вас понимаю. Разместить компонент в верхней части страницы для одной платформу и в нижней для другой например — не проблема, каждому свойству можно задать как одно значение для всех, так и персональное для каждой платформы. А вот сам метод расположения общий, напоминает CSS'ную блочную модель или android layouts.
  • +1
    Что-то ребята немного застряли с Xamarin.Forms — давно обновлений не было.
    PS: написал на хформах чятик =)
  • +1
    Он не готов, но совсем по иным причинам ИМХО. Для дольшинства приложений элементы нуждаются в кастомизации, а кроссплатформенные возможности по кастомизации у формса еще очень низкие. В итоге код превращается в мешанину общих объявлений и своих кастомизаций под каждую платформу. В итоге это ничем не лучше того что было раньше, только еще с непредсказуемыми глюками в процессе.

    Так что поиграл три дня и забросил.
    • +2
      Вы просто сформулировали мысль, которая давно вертелась у меня в голове! Все так.
  • 0
    Автокомплит есть, но в Xamarin Studio 5.2 он отвалился. В 5.1.4 все работает. И кстати я не понимаю, в чем проблема кастомизации контролов. Их так и так приходится кастомизировать, другое дело в том, что действительно накладывается новый слой потенциальных багов. Xamarin-Forms-Labs — хороший проект, но только для примера, пользоваться им не советую. А еще есть проблема с неотзывчивым форумом. Ни на один мой вопрос там не дали ответа. Приходится тратить кучу времени на ковыряние в ксамариновской либе, ибо документация скудноватая. Вот к примеру спросил у них почему процесс перехода к новой вьюхе настолько тормознутый (http://forums.xamarin.com/discussion/21671/pushasync-and-delay). Приложил даже видео. В ответ тишина.
    • 0
      Это одна из особенность Xamarin кстати — в каждом обновлении что-нибудь серьезное отваливается.
  • +2
    У меня на 99% закончен коммерческий проект под XF. Получилось победить все проблемы с размерами, написать свои контролы, сервисы и пр. Не получилось победить лишь проблему с очень долгим запуском и хреновой производительностью, но все-равно в понедельник выкладываем. Подробнее о проблеме тут: forums.xamarin.com/discussion/20092/
    Разработчики на встречу не идут, ситуация с каждым аптейтом пока что ухудшается.
  • +1
    А кто-нибудь пробовал embarcadero? Все таки платформа с большим опытом
    • +1
      На хабре же были статьи — почитайте. Особенно интересны комментарии.
      Я вижу 2 основные проблемы:
      1) контролы они рисуют сами
      2) не на всех процессорах это запускается

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.