Должен ли я выбрать Xamarin native или Xamarin.Формы для существующего приложения Android?

У нас есть приложение для android и мы хотим воссоздать его для кросс-платформы.

каковы факты за или против Xamarin native и forms?

преимущество native было бы, мы могли бы повторно использовать все xml-макеты, в то время как нам нужно воссоздать представление iOS в XAML или XIB?

есть ли что-нибудь, что действительно блокатор?

5 ответов


я прокомментирую на основе ответа Гиорги с некоторым фактическим пониманием и ссылаюсь на скопированные маркерные точки:

Это резюме опыта, который я собрал за последние 6 месяцев:

Xamarin.Формы лучше всего подходит для:

  • приложения, которые требуют меньших функциям платформы
    • неправильно. С DI вы можете использовать любую функциональность устройства, которую вы можете захотеть. Проверьте XLabs на GitHub, если вы сомневаетесь этот.
  • приложения, где совместное использование кода более важно, чем пользовательский интерфейс
    • вид ерунды на самом деле. Вы можете написать свои собственные визуализаторы для представления элементов управления каждой платформы так, как вы хотите. Я также написал более сложные визуализации для пользовательских элементов управления, таких как SideDrawer. В android я был сделан за 2 дня, iOS около 2 недель (Android renderer был просто оболочкой для собственного управления)
  • разработчики комфортно с код XAML
    • ну да и все, кто любит удобное развитие пользовательского интерфейса. Имейте в виду, что есть кривая обучения с xaml (которую я уже знал в то время, когда я начал с разработки WPF). Но из того, что я видел, это не так уж отличается от android.

Xamarin.iOS и Xamarin.Android лучше всего подходит для:

  • приложения с взаимодействиями, требующими собственного поведения
    • во время взлома вашего решения изначально конечно, быстрее вы можете сделать это довольно быстро, если купите хорошие элементы управления / знаете хорошую собственную реализацию и отразите ее в C#, так как API в C# очень похож на родной.
  • приложения, которые используют много специфичных для платформы API
    • Не уверен, почему Xamarin делает антирекламу против форм. До сих пор у меня не было проблем с этим
  • приложения, где пользовательский интерфейс более важен, чем код разделение
    • вероятно, это правда, но также сложнее поддерживать функциональность пользовательского интерфейса, и вам понадобится больше рабочей силы.

вещи, чтобы рассмотреть о формах:

  • формы, похоже, стабилизируются на данный момент, и я уверен, что Microsoft сделает все возможное, чтобы превратить его в твердый, надежный продукт (проблемы с сборкой были кошмаром в прошлом, но он стал лучше время)

  • XAML для Xamarin менее разработан по сравнению с WPF XAML, хотя и очень похож. Однако последние обновления nuget обеспечивают зеркальную функциональность с впечатляющей скоростью. Подавляющее большинство функций, которые вы ожидаете и любите о XAML присутствуют.

  • производительность списка плохая, если вы не проводите свои исследования (здесь). Производительность увеличила нагрузки в этой области.

  • Если бы мне пришлось сделать выбор опять же, я бы все равно пошел за формами. Хотя иногда есть вещи, которые кажутся дефектными / плохими, вы обычно можете каким-то образом выяснить чистое исправление, тратя большую часть своего времени на разработку приложения. (иногда вы все равно найдете вещи, которые просто заставляют вас хмуриться, почему что-то не реализовано, например, свойство Margin, реализуемое только после покупки Microsoft xamarin)

  • если у вас есть требование вложенных списков, обязательно посмотрите на embeded собственный контроль для достижения максимальной производительности-это было необходимо для продукта, над которым я работал. См.этой

по данным Xamarin.Главная страница форм:

Xamarin.Формы лучше всего подходит для:

Apps that require little platform-specific functionality
Apps where code sharing is more important than custom UI
Developers comfortable with XAML

Xamarin.iOS и Xamarin.Android лучшее для:

Apps with interactions that require native behavior
Apps that use many platform-specific APIs
Apps where custom UI is more important than code sharing

Giorgis ответ правильный, но так как вы добавили еще несколько ограничений, вот мои мысли.

Я бы проанализировал текущее приложение. Сколько кода является бизнес-логикой, которой можно поделиться? Как настроен пользовательский интерфейс, должен ли он выглядеть более родным или более одинаковым и как он изменится в будущем? Если вы планируете много изменить в UI, и платформы должны выглядеть похожими, может быть проще переключиться на формы.

также рассмотрите, планируете ли вы разрабатывать для Windows Phone? Если да, вы можете сэкономить много времени только для этой Третьей платформы.

В конце концов, есть одна вещь, которую я бы тоже имел в виду. Разработки в Xamarin.Формы не означают, что вы не можете развивать native. Это просто дополнительные рамки. В худшем случае вы все еще можете делать все изначально.


лично я использую Xamarin.iOS и Xamarin.Android с MvvmCross, таким образом, я могу сохранить полный контроль над собственным UI на каждой платформе, максимизируя повторное использование кода.


с веб-сайта Xamarin (кто знает лучше, чем они?):

Xamarin.Формы лучше для: Ввод данных приложений Прототипы и доказательства концепции Приложения, которые требуют небольшой функциональности платформы Приложения, где совместное использование кода более важно, чем пользовательский интерфейс

[https://developer.xamarin.com/guides/xamarin-forms/]

С Xamarin.Формы во время, каждая страница и ее элементы управления сопоставляются с конкретным пользователем платформы элемент интерфейса. С Родным Xamarin.Android и Xamarin.приложения iOS используют аппаратное ускорение платформы и компилируются для собственной производительности. Этого нельзя достичь с помощью решений, которые интерпретируют код во время выполнения.

"Xamarin.iOS-лучший способ создания собственных приложений для iOS."

  • отправить собственные пакеты приложений в App Store. Наш компилятор Ahead-of-Time (AOT) компилирует Xamarin.приложения iOS непосредственно в сборку ARM код, то есть ваше приложение является родным двоичным кодом платформы.
  • доступ к любому API iOS. Мы приносим 100% Apple iOS SDK на C#, улучшая API Objective-C с более сильными типами и .NET-именами так что вы чувствуете себя как дома.
  • вызов существующего кода Objective-C из C#. Используйте существующий код Objective-C, фреймворки и пользовательские элементы управления в приложении Xamarin используя наш автоматический генератор привязки.
  • создание приложений WatchKit. Использование Xamarin Studio или Visual Studio для создания новых приложений Watch, редактирования пользовательских интерфейсов Watch в конструкторе iOS и отладки приложения в симуляторе iOS.
  • будьте в курсе событий с Apple. Мы выпустили в тот же день для iOS 5, iOS 6, iOS 7 и iOS 8, чтобы ваши приложения могли воспользоваться новейшие функции iOS как можно скорее.

[https://www.xamarin.com/platform]

"Xamarin.Android-лучший способ для создания собственных приложений для Android."

  • корабль родной Android пакетами. В Xamarin.Android использует компиляцию just-in-time для сложной оптимизации времени выполнения вашего приложения производительность, то есть ваше приложение является родным Android APK.
  • доступ к любому API Android, включая новые форм-факторы. Мы приносим 100% Android-API Google на C#, улучшая Java-API с поддержкой async и .NET соглашения об именах, чтобы вы чувствовали себя как дома.
  • звоните существующий код Java из C#. Используйте существующий Java-код, фреймворки и пользовательские элементы управления в приложении Xamarin с помощью автоматический генератор вязки.
  • создание приложений для Android Wear. С доступом к 100% API поддержка Android Wear, создавать полнофункциональные приложения, способные работать на Устройства Android Wear. Остаться вверх-к-дата с Android. В Xamarin остается обновленные с самыми последними API от Google, так что вы всегда можете используйте последние возможности в вашей приложения.

[https://www.xamarin.com/platform]