Должен ли я выбрать родной Xamarin или Xamarin.Forms для существующего приложения для Android?
У нас есть приложение для Android и мы хотим его воссоздать для кросс-платформы.
Каковы факты за или против родства и форм Хамарина?
Преимущество native будет, мы могли бы повторно использовать все xml-макеты, пока мы должны воссоздать iOS-представление в XAML или XIB?
Есть ли что-то, что действительно является блокировщиком?
Ответы
Ответ 1
Я буду комментировать на основе ответа Гиорги с некоторым фактическим пониманием и обратиться к скопированным пунктам:
Это резюме опыта, накопленного за последние 6 месяцев:
Xamarin.Forms лучше всего подходит для:
- Приложения, для которых требуется небольшая функциональность для платформы
- Неправильно. С помощью DI вы можете использовать любые функции устройства, которые вы, возможно, захотите. Посмотрите XLabs на GitHub, если вы сомневаетесь в этом.
- Приложения, в которых совместное использование кода важнее пользовательского интерфейса
- На самом деле это глупость. Вы можете создавать собственные средства визуализации для представления элементов управления каждой платформы так, как вы хотите. Я также написал более сложные средства визуализации для пользовательских элементов управления, таких как SideDrawer. В андроиде я было сделано через 2 дня, iOS около 2 недель (рендерер для Android был всего лишь оболочкой для собственного управления).
- Разработчики, удобные с XAML
- ну да и любой, кто пользуется удобным развитием пользовательского интерфейса. Имейте в виду, что есть кривая обучения с xaml (которую я уже знал в то время, когда я начал с разработки WPF). Но из того, что я видел, это не то, что отличается от андроида.
Xamarin.iOS и Xamarin.Android лучше всего подходят для:
- Приложения с взаимодействиями, требующими собственного поведения
- В то время как взламывание вашего решения происходит быстрее, вы скорее можете сделать это довольно быстро, если вы приобретете хорошие элементы управления/знаете правильную собственную реализацию и зеркалируете ее на С#, поскольку API в С# очень похож на собственный.
- Приложения, которые используют многие API-интерфейсы для платформы
- Не знаю, почему Xamarin делает антирекламу против форм. До сих пор у меня было мало проблем.
- Приложения, в которых пользовательский интерфейс более важен, чем
Совместное использование кода
- Возможно, это правда, но также сложнее поддерживать функциональность интерфейса пользователя, и вам понадобится больше рабочей силы.
Что нужно учитывать о формах:
-
Формы, кажется, стабилизируются на данный момент, и я уверен, что Microsoft сделает все возможное, чтобы превратить ее в надежный и надежный продукт (иногда проблемы с созданием были кошмаром, но это стало лучше времени)
-
XAML для Xamarin менее развит по сравнению с WPF XAML, хотя и очень похож. Однако последние обновления nuget обеспечивают зеркальную функциональность с впечатляющей скоростью. Подавляющее большинство функций, которые вы ожидаете и любите в XAML, присутствуют.
-
Показатель производительности плохой, если вы не проводите исследования (здесь). Производительность увеличила нагрузку в этой области.
-
Если бы мне пришлось снова сделать выбор, я бы все равно пошел на формы. Хотя иногда есть вещи, которые кажутся ошибочными/плохими, вы обычно можете найти какое-то чистое исправление, в то время как большую часть времени занимаетесь разработкой приложения. (иногда вы все равно найдете вещи, которые просто заставляют вас хмуриться, почему что-то не реализовано, например, свойство Margin реализуется только сразу после покупки Microsoft xamarin).
- Если у вас возникнет потребность в вложенных списках, убедитесь, что вы посмотрите на встроенные средства управления, чтобы достичь максимальной производительности - это было важно для продукта, над которым я работал. См. this
Ответ 2
Согласно главной странице Xamarin.Forms:
Xamarin.Forms лучше всего подходит для:
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
Ответ 3
Ответ Giorgis правильный, но поскольку вы добавили еще несколько ограничений, вот мои мысли.
Я бы проанализировал текущее приложение. Сколько кода является бизнес-логикой, которую можно использовать? Как настроен пользовательский интерфейс, должен ли он выглядеть более родным или более похожим и как он изменится в будущем? Если вы планируете многое изменить в пользовательском интерфейсе, и платформы должны выглядеть схожими, может быть проще переключиться на формы.
Также подумайте, планируете ли вы разрабатывать Windows Phone? Если да, вы можете сэкономить много времени только для этой третьей платформы.
В конце концов, есть одна вещь, которую я также буду иметь в виду. Разработка в Xamarin.Forms не означает, вы не можете развивать родной. Это всего лишь дополнительная структура. В худшем случае вы все равно можете сделать все изначально.
Ответ 4
Лично я использую Xamarin.iOS и Xamarin.Android с MvvmCross, таким образом я могу полностью контролировать собственный пользовательский интерфейс на каждом платформу при максимальном повторном использовании кода.
Ответ 5
С сайта Xamarin (кто знает лучше, чем они?):
Xamarin.Forms лучше всего подходит для:
Приложения ввода данных
Прототипы и доказательства концепции
Приложения, для которых требуется небольшая функциональность для платформы
Приложения, где совместное использование кода важнее пользовательского интерфейса
[https://developer.xamarin.com/guides/xamarin-forms/]
С Xamarin.Forms во время выполнения каждая страница и ее элементы управления сопоставляются с элементами пользовательского интерфейса, специфичными для платформы.
С приложениями Native Xamarin.Android и Xamarin.iOS можно использовать аппаратное ускорение для конкретной платформы и скомпилированы для собственной производительности. Этого нельзя достичь с помощью решений, которые интерпретируют код во время выполнения.
"Xamarin.iOS - лучший способ создания родных приложений для iOS".
- Отсортировать собственные пакеты приложений в App Store. Наш компилятор "Вперед" (AOT) компилирует приложения Xamarin.iOS непосредственно на встроенную сборку ARM кода, что означает, что ваше приложение является бинарной базой на родной платформе.
- Доступ к любому API iOS. Мы доставляем 100% Apples iOS SDK на С#, улучшая API Objective-C с более сильными типами и именованием .NET так что вы чувствуете себя как дома.
- Вызовите существующий код Objective-C с С#. Используйте существующий код Objective-C, фреймворки и настраиваемые элементы управления в вашем приложении Xamarin. используя наш автоматический генератор связывания.
- Создавайте приложения WatchKit. Используйте Xamarin Studio или Visual Studio для создания новых приложений Watch, редактирования пользовательских интерфейсов Watch в iOS Designer и debug Наблюдайте за приложениями в iOS Simulator.
- Будьте в курсе событий Apple. Мы выпустили поддержку в тот же день для iOS 5, iOS 6, iOS 7 и iOS 8, чтобы ваши приложения могли воспользоваться преимуществами новейшие функции iOS как можно скорее.
[https://www.xamarin.com/platform]
"Xamarin.Android - лучший способ создания собственных приложений для Android".
- Загрузите собственные пакеты Android. Xamarin.Android использует компиляцию "точно в срок" для сложной оптимизации ваших приложений производительность, то есть ваше приложение является родным Android APK.
- Доступ к любому API Android, включая новые форм-факторы. Мы привносим на С# 100% API-интерфейсов Google Googles, улучшая Java API с поддержкой async и соглашения об именах .NET, чтобы вы чувствовали себя как дома.
- Вызовите существующий код Java с С#. Используйте свой существующий Java-код, фреймворки и настраиваемые элементы управления в своем приложении Xamarin, используя наши генератор автоматической привязки.
- Создайте приложения Android Wear. Имея доступ к 100% поддержке API для Android Wear, создайте полнофункциональные приложения, способные работать Устройства Android Wear. Будьте в курсе событий с Android. Хамарин остается обновленный с самыми современными API-интерфейсами от Google, поэтому вы всегда можете используйте новейшие функции в своих приложениях.
[https://www.xamarin.com/platform]