Представляем вам пятничную подборку полезных гайдов и шпаргалок от Джеймса Монтемагно для разработчиков разного уровня.
Далее повестовование будет вестись от имени автора.
Меня очень вдохновил недавний пост Скотта Хансельмана в его блоге о том, что разработчики .NET должны знать на начало 2017 года. И я решил пойти немного дальше этого и написать небольшой путеводитель для разработчиков Xamarin, создающих приложения iOS, Android и macOS в .NET. Так что я связался с Крисом Харди, и мы совместно подготовили обширный список понятий и полезных ресурсов, имеющих отношение к Xamarin. Прежде чем мы начнем, вам непременно стоит посетить замечательный блог Скотта, поскольку он просто переполнен отличной информацией. Кроме того, чтобы сделать этот пост максимально полезным, я разделил его на специальные секции: «необходимо знать», «следует знать» и «неплохо бы знать», к тому же я подготовил специальные разделы для iOS и Android.
Когда вы будете готовы приступить к работе с Xamarin, отправляйтесь на портал, который, безусловно, является идеальным местом для начинающих разработчиков. Именно там я начал работу в области мобильной разработки в далеком 2011 году. Итак, приступаем!
Тем, кто желает много читать, скачивать, изучать и смотреть по теме Xamarin, рекомендуем сразу взять на заметку следующие порталы:
Что такое Xamarin? Благодаря платформе Xamarin разработчики могут создавать полностью нативные приложения для iOS, Android и macOS, используя C#, F# или даже VB.NET. При этом в наличие 100% доступ к нативному API и возможность совместного использования логики с другими приложениями .NET.
У нас есть одна супер-оптимизированная среда выполнения .NET, которая доставляет .NET на iOS, Android, macOS, IoT, Linux, PS4, Xbox и т. д. Она реализует .NET API и приводит в действие .NET Standard, поэтому вам не придется беспокоиться о реализации «под капотом».
Традиционная Xamarin разработка известная также как нативная Xamarin разработка, она дает разработчикам возможность совместного использования бизнес-логики приложений и создания нативных пользовательских интерфейсов для каждой платформы со 100% доступа к каждому API.
Xamarin.Forms разработка предлагает разработчикам кросс-платформенный пользовательский интерфейс абстракции для iOS, Android и Windows. Пользовательские интерфейсы могут быть созданы в коде XAML или ином виде, и к тому же нативные элементы управления установлены в среде выполнения для каждой платформы. Кроме того, предлагаются такие функции MVVM (Model-View-ViewModel), как привязка данных и управление ими. Получить доступ к нативным API-интерфейсам можно через платформу проектов и сервисы зависимостей.
Существует несколько способов использования общего кода в разных приложениях:
Существует множество API, доступных в .NET и на каждой платформе, но иногда хочется больше! И здесь их можно получить:
Давайте познакомимся с некоторыми по-настоящему классными библиотеками, созданными или поддерживаемыми Xamarin:
Расширения — это виджеты, которые предоставляются iOS в стандартных обстоятельствах, как, например, в «Центре уведомлений», когда пользователь запрашивает клавиатуру или редактирует фотографии. Все расширения устанавливаются в сочетании с приложением Container и активируются с определенной «точки расширения» в приложении Host.
watchOS — это определенная версия iOS, которая предназначена для устройств Apple Watch.
tvOS — Apple выпустила 4-е поколение аппаратных средств Apple TV, отличающихся переработанным пультом с поддержкой сенсорного управления и новой операционной системой (основанной на iOS9).
Регистрационные профили — когда нужно установить приложение на устройство или выпустить его в App Store, требуется получить учетную запись разработчика и создать регистрационный профиль. Они должны связать вместе устройства, учетные записи и компьютеры разработчика.
Android Wear — это версия Android, которая предназначена для таких носимых устройств, как умные часы.
Keystore — используется для подписи приложений Android, с тем чтобы размещать их в соответствующих магазинах.
Разбор APIs & SDKs — компиляции, минимизация, планирование — всё, что является важным и заслуживает изучения. Ознакомьтесь с коротким видео по теме.
Linker используется для уменьшения размера приложений для iOS и Android, осуществляет статический анализ приложения, с тем чтобы определить, какие в нем используются узлы, типы и члены классов. Благодаря этому любая неиспользуемая вещь будет отброшена.
IL — некий промежуточный язык, который создается при компиляции. Как написал Скотт: C# — это яблоки, из которых IL делает яблочный соус, а JIT/АОТ и среда выполнения — яблочный сок.
AOT — расшифровывается как Ahead of Time Compilation («компиляция на опережение») и принимает IL и компилирует его в машинный код с целью выполнения полученного двоичного файла в нативном виде. Это то, что использует Xamarin.iOS.
JIT — Расшифровывается как Just in Time Compilation («мгновенная компиляция») и принимает IL и компилирует его, подготавливая для запуска в качестве машинного кода. Это то, что использует Xamarin.Android.
Storyboard позволяет разработчику определять оба контроллера предоставлений и перемещаться между ними на поверхности дизайна, а также предлагает WYSIWYG редактирование пользовательского интерфейса приложения.
XIB — шаблон iOS View XIB, в который можно добавлять автономный файл .xib, который может быть присоединен к определенному обратному классу.
Регистраторы — код, который выставляет управляемый код на Objective-C. Он достигает этого путем создания списка каждого управляемого класса, унаследованного от NSObject.
Dalvik & ART. ART — это среда выполнения Android, которая используется приложениями и некоторыми системными службами на Android. ART и ее предшественник Dalvik изначально были созданы специально для проекта Android.
Multi-Dex — приложение Android (APK) состоит из исполняемых байткодовых файлов в виде Dalvik Executable (DEX), и они содержат скомпилированный код, используемый для запуска приложения. В спецификациях DalvikExecutable ограничено общее количество методов, на которые можно ссылаться в одном файле DEX до 65,536. Multi-Dex создает несколько файлов DEX для APK, и, таким образом, ограничения можно обойти.
ABI (Application Binary Interface) — один APK может содержать машинный код для поддержки нескольких различных архитектур. Каждая коллекция архитектурно-зависимого кода связана с бинарным интерфейсом приложения (ABI).
Android и Managed Callable Wrappers — это то, что позволяет .NET общаться с Java и наоборот.
Android Virtual Devices — это эмуляторы Android, которые используются для отладки приложений.
HAXM (Hardware Accelerated Execution Manager) — программное обеспечение от Intel для Windows и macOS, предназначенное для виртуализации, благодаря которому Вы получаете потрясающие AVDs.
Xamarin.Forms Roadmap — замечательный стратегический план готовящихся функций и исправлений для Xamarin.Forms.
Профайлер Xamarin интегрируется с существующим инструментарием для сбора информации о приложениях Xamarin. Используйте его для поиска утечек памяти, устранения узких мест в производительности, а также для полировки приложения перед тем, как пускать их в свободное плавание.
Model-View-ViewModel (MVVM) — это архитектурный шаблон, который был изобретен с учетом XAML. Шаблон устанавливает разделение пользовательского интерфейса XAML (предоставления) и исходных данных (модели) через класс, который служит посредником между предоставлением и моделью (ViewModel). View и ViewModel часто соединяются через привязки данных, определенных в файле XAML. BindingContext для представления, как правило, является экземпляром ViewModel.
Пользовательский линкер — если набора опций, доступных по умолчанию, оказывается недостаточно, тогда можно управлять процессом связывания с помощью файла XML, в котором будет описываться то, что нужно от линкера.
Александр Алексеев — Xamarin-разработчик, фрилансер. Работает с .NET-платформой с 2012 года. Участвовал в разработке системы автоматизации закупок в компании Digamma. C 2015 года ушел во фриланс и перешел на мобильную разработку с использованием Xamarin. В текущее время работает в компании StecPoint над iOS приложением.
Ведет ресурс XamDev.ru и сообщества «Xamarin Developers» в социальных сетях: VK, Facebook, Telegram.
Далее повестовование будет вестись от имени автора.
Меня очень вдохновил недавний пост Скотта Хансельмана в его блоге о том, что разработчики .NET должны знать на начало 2017 года. И я решил пойти немного дальше этого и написать небольшой путеводитель для разработчиков Xamarin, создающих приложения iOS, Android и macOS в .NET. Так что я связался с Крисом Харди, и мы совместно подготовили обширный список понятий и полезных ресурсов, имеющих отношение к Xamarin. Прежде чем мы начнем, вам непременно стоит посетить замечательный блог Скотта, поскольку он просто переполнен отличной информацией. Кроме того, чтобы сделать этот пост максимально полезным, я разделил его на специальные секции: «необходимо знать», «следует знать» и «неплохо бы знать», к тому же я подготовил специальные разделы для iOS и Android.
Когда вы будете готовы приступить к работе с Xamarin, отправляйтесь на портал, который, безусловно, является идеальным местом для начинающих разработчиков. Именно там я начал работу в области мобильной разработки в далеком 2011 году. Итак, приступаем!
С чего начать?
Тем, кто желает много читать, скачивать, изучать и смотреть по теме Xamarin, рекомендуем сразу взять на заметку следующие порталы:
- Читайте и качайте материалы, связанные с Xamarin!
- Бесплатное самостоятельное обучение в университете Xamarin.
- Xamarin Workbooks позволяет разработчикам протестировать API-интерфейсы в интерактивном режиме.
- xamarinshow.com: Еженедельное шоу на CH9, посвященное разработке и организованное мною.
- Здесь представлены проекты Xamarin на основе открытого исходного кода.
Необходимо знать: Xamarin
Что такое Xamarin? Благодаря платформе Xamarin разработчики могут создавать полностью нативные приложения для iOS, Android и macOS, используя C#, F# или даже VB.NET. При этом в наличие 100% доступ к нативному API и возможность совместного использования логики с другими приложениями .NET.
У нас есть одна супер-оптимизированная среда выполнения .NET, которая доставляет .NET на iOS, Android, macOS, IoT, Linux, PS4, Xbox и т. д. Она реализует .NET API и приводит в действие .NET Standard, поэтому вам не придется беспокоиться о реализации «под капотом».
Традиционная Xamarin разработка известная также как нативная Xamarin разработка, она дает разработчикам возможность совместного использования бизнес-логики приложений и создания нативных пользовательских интерфейсов для каждой платформы со 100% доступа к каждому API.
Xamarin.Forms разработка предлагает разработчикам кросс-платформенный пользовательский интерфейс абстракции для iOS, Android и Windows. Пользовательские интерфейсы могут быть созданы в коде XAML или ином виде, и к тому же нативные элементы управления установлены в среде выполнения для каждой платформы. Кроме того, предлагаются такие функции MVVM (Model-View-ViewModel), как привязка данных и управление ими. Получить доступ к нативным API-интерфейсам можно через платформу проектов и сервисы зависимостей.
Кросс-платформенное совместное использование кода
Существует несколько способов использования общего кода в разных приложениях:
- PCL (Portable Class Library). Эта библиотека, также известная как Pickle, дает разработчикам возможность для создания «библиотеки классов», рассчитанной на несколько платформ. Эта библиотека фактически действует в качестве опорного узла, предоставляющего перекрестный API, который доступен на каждой платформе. Чем больше платформ вы выберите, тем меньшая плоскость API будет доступна.
- Общий проект. Самый простой способ совместного использования кода на разных платформах. Он функционирует как «связывающий файл», разделяя код с целевой платформой. Преимущества, состоят в том, что здесь доступны все целевые API-интерфейсы, так что вы можете производить условную компиляцию. Однако, такой подход может обернуться запутанным кодом, и, кроме того, в этом случае не создается сборка: файлы связываются между собой в проект платформы.
- .NETStandard или «netstandard». Библиотека netstandard — это следующий этап эволюции, и она вполне может прийти на смену PCL. Разработчики получают по-настоящему кросс-платформенную библиотеку, и она может быть запущена в любой среде выполнения, которая реализует такие API-интерфейсы, как Mono, .NET Framework и .NET Core.
Источники библиотек
Существует множество API, доступных в .NET и на каждой платформе, но иногда хочется больше! И здесь их можно получить:
- NuGet — это менеджер пакетов для платформы разработки Microsoft, включающей .NET. Клиентские инструменты NuGet обеспечивают возможность создания и использования пакетов. Галерея NuGet является центральным хранилищем пакетов, и используется всеми их авторами и пользователями.
- Component — «магазин компонентов» является специально подобранной галереей библиотек и менеджером платформ Xamarin. Он предлагает платные и бесплатные библиотеки, которые могут быть установлены непосредственно в приложения iOS и Android. Эти библиотеки создаются как разработчиками компонентов Xamarin, так и сторонними девелоперами.
- Plugin — по правде сказать, плагины для Xamarin и Windows просто превосходные. Они позволяют вам получать доступ к нативным функциям кросс-платформенного API прямо из общего кода! У них открытый исходный код, и здесь доступно немало классных вещей, в том числе для геолокации, возможности подключений и фотографий. Каждый плагин доступен по лицензии MIT и может быть установлен в любую библиотеку iOS, Android, Windows, PCL или .NETStandard Library через NuGet.
Библиотеки
Давайте познакомимся с некоторыми по-настоящему классными библиотеками, созданными или поддерживаемыми Xamarin:
- MonoGame является эффективным, гибким и кросс-платформенным API для разработки игр в 2D и 3D. Он обеспечивает основу для многих кросс-платформенных игровых движков. Однако, он может также использоваться и непосредственно в играх, не будучи обернутым в игровой движок.
- UrhoSharp является кросс-платформенным движком высокого уровня (3D и 2D), который может быть использован для создания анимированных 3D и 2D игр и сцен в приложениях, использующих геометрические формы, материалы, огни и камеры. UrhoSharp совместим с мобильными и десктопными приложениями, а также с HoloLens и VR.
- SkiaSharp предлагает богатый и мощный графический API, который можно использовать для визуализации в 2D буферах. Вы можете использовать их для реализации элементов пользовательского интерфейса и 2D-графики, которые могут быть включены в приложение. SkiaSharp является привязкой .NET с библиотекой Skia и наследует функции и силу этой библиотеки.
- CocosSharp является простой библиотекой для 2D-игр, использующей C# и F#. Это .NET порт популярного движка Cocos2D.
Необходимо знать: iOS
Расширения — это виджеты, которые предоставляются iOS в стандартных обстоятельствах, как, например, в «Центре уведомлений», когда пользователь запрашивает клавиатуру или редактирует фотографии. Все расширения устанавливаются в сочетании с приложением Container и активируются с определенной «точки расширения» в приложении Host.
watchOS — это определенная версия iOS, которая предназначена для устройств Apple Watch.
tvOS — Apple выпустила 4-е поколение аппаратных средств Apple TV, отличающихся переработанным пультом с поддержкой сенсорного управления и новой операционной системой (основанной на iOS9).
Регистрационные профили — когда нужно установить приложение на устройство или выпустить его в App Store, требуется получить учетную запись разработчика и создать регистрационный профиль. Они должны связать вместе устройства, учетные записи и компьютеры разработчика.
Необходимо знать: Android
Android Wear — это версия Android, которая предназначена для таких носимых устройств, как умные часы.
Keystore — используется для подписи приложений Android, с тем чтобы размещать их в соответствующих магазинах.
Разбор APIs & SDKs — компиляции, минимизация, планирование — всё, что является важным и заслуживает изучения. Ознакомьтесь с коротким видео по теме.
Необходимо знать: Xamarin
Linker используется для уменьшения размера приложений для iOS и Android, осуществляет статический анализ приложения, с тем чтобы определить, какие в нем используются узлы, типы и члены классов. Благодаря этому любая неиспользуемая вещь будет отброшена.
IL — некий промежуточный язык, который создается при компиляции. Как написал Скотт: C# — это яблоки, из которых IL делает яблочный соус, а JIT/АОТ и среда выполнения — яблочный сок.
AOT — расшифровывается как Ahead of Time Compilation («компиляция на опережение») и принимает IL и компилирует его в машинный код с целью выполнения полученного двоичного файла в нативном виде. Это то, что использует Xamarin.iOS.
JIT — Расшифровывается как Just in Time Compilation («мгновенная компиляция») и принимает IL и компилирует его, подготавливая для запуска в качестве машинного кода. Это то, что использует Xamarin.Android.
Следует знать: iOS
Storyboard позволяет разработчику определять оба контроллера предоставлений и перемещаться между ними на поверхности дизайна, а также предлагает WYSIWYG редактирование пользовательского интерфейса приложения.
XIB — шаблон iOS View XIB, в который можно добавлять автономный файл .xib, который может быть присоединен к определенному обратному классу.
Регистраторы — код, который выставляет управляемый код на Objective-C. Он достигает этого путем создания списка каждого управляемого класса, унаследованного от NSObject.
Следует знать: Android
Dalvik & ART. ART — это среда выполнения Android, которая используется приложениями и некоторыми системными службами на Android. ART и ее предшественник Dalvik изначально были созданы специально для проекта Android.
Multi-Dex — приложение Android (APK) состоит из исполняемых байткодовых файлов в виде Dalvik Executable (DEX), и они содержат скомпилированный код, используемый для запуска приложения. В спецификациях DalvikExecutable ограничено общее количество методов, на которые можно ссылаться в одном файле DEX до 65,536. Multi-Dex создает несколько файлов DEX для APK, и, таким образом, ограничения можно обойти.
ABI (Application Binary Interface) — один APK может содержать машинный код для поддержки нескольких различных архитектур. Каждая коллекция архитектурно-зависимого кода связана с бинарным интерфейсом приложения (ABI).
Android и Managed Callable Wrappers — это то, что позволяет .NET общаться с Java и наоборот.
Android Virtual Devices — это эмуляторы Android, которые используются для отладки приложений.
HAXM (Hardware Accelerated Execution Manager) — программное обеспечение от Intel для Windows и macOS, предназначенное для виртуализации, благодаря которому Вы получаете потрясающие AVDs.
Неплохо бы знать всем
Xamarin.Forms Roadmap — замечательный стратегический план готовящихся функций и исправлений для Xamarin.Forms.
Профайлер Xamarin интегрируется с существующим инструментарием для сбора информации о приложениях Xamarin. Используйте его для поиска утечек памяти, устранения узких мест в производительности, а также для полировки приложения перед тем, как пускать их в свободное плавание.
Model-View-ViewModel (MVVM) — это архитектурный шаблон, который был изобретен с учетом XAML. Шаблон устанавливает разделение пользовательского интерфейса XAML (предоставления) и исходных данных (модели) через класс, который служит посредником между предоставлением и моделью (ViewModel). View и ViewModel часто соединяются через привязки данных, определенных в файле XAML. BindingContext для представления, как правило, является экземпляром ViewModel.
Пользовательский линкер — если набора опций, доступных по умолчанию, оказывается недостаточно, тогда можно управлять процессом связывания с помощью файла XML, в котором будет описываться то, что нужно от линкера.
Порталы, которые стоит взять на заметку
- Releases Blog — будьте в курсе того, что происходит.
- Xamarin в Twitter — твит и еще раз твит!
- События Xamarin — все что происходит в мире Xamarin.
- Xamarin Podcast — в то время, когда вы не слушаете Merge Conflict, я настоятельно рекомендую слушать Xamarin Podcast.
- Weekly Xamarin — специально подобранные еженедельные материалы в рассылке «все о Xamarin»!
Благодарим за перевод
Александр Алексеев — Xamarin-разработчик, фрилансер. Работает с .NET-платформой с 2012 года. Участвовал в разработке системы автоматизации закупок в компании Digamma. C 2015 года ушел во фриланс и перешел на мобильную разработку с использованием Xamarin. В текущее время работает в компании StecPoint над iOS приложением.
Ведет ресурс XamDev.ru и сообщества «Xamarin Developers» в социальных сетях: VK, Facebook, Telegram.
Поделиться с друзьями
Комментарии (40)
kekekeks
03.02.2017 18:18У нас есть одна супер-оптимизированная среда выполнения .NET, которая доставляет .NET на iOS, Android, macOS, IoT, Linux, PS4, Xbox и т. д. Она реализует .NET API и приводит в действие .NET Standard, поэтому вам не придется беспокоиться о реализации «под капотом».
Mono
супер-оптимизированная
И это в блоге Microsoft. Дожили.
dmitry_dvm
05.02.2017 20:43А переведите кто-нибудь ту статью про дотнет, о которой автор упоминает в начале?
dimka11
05.02.2017 21:36Почему, для Android не используется AOT?
kekekeks
06.02.2017 14:13Потому что у вас галочка в настройках сборки проекта соответствующая не стоит.
medvedevia
06.02.2017 15:05речь про Xamarin? Подскажите где эта галочка?
kekekeks
06.02.2017 17:09medvedevia
06.02.2017 19:32Вот тут написано:
This option requires an Enterprise license and is only available when Use Fast Deployment is disabled.
А у меня Community. Ну да ладно, все равно пока использую для изучения и домашних поделок.
Jasper7
06.02.2017 15:19В версии Xamarin Android 5.1 добавлена поддержка AOT как экспериментальная, но судя по описанию к релизу Xamarin Android 6.1 функция отключена из-за проблем, обещают включить в будущих релизах. На данный момент опция AOT все еще отсутствует в Xamarin Studio. Остается ждать новых релизов)
maniacscientist
Запилите уже общий UI, не так уж сильно андроид от огрызка отличается.
habradante
Уже есть, Xamarin.Forms называется. Содержит то, что работает на всех платформах. Т.е. плюхи, которые реализованы под конкретную платформу и возможности — недоступны. Иными словами, хотите красивый интерфейс по гайдлайнам платформы — пилите под конкретную платформу.
А, ну да, самая «мякотка». Под Андроид и iOS доступна куча библиотек для работы с БД, интерфейсом и сетью. Всего этого Xamarin лишен. А подключение нативных библиотек достойно пера самого Маркиза Де Сада.
ad1Dima
Для БД есть SQLite и Realm, что ещё надо? С сетью .Net самостоятельно прекрасно справляется.
Подключение большинства UI библииотек не такое уж сложное: pod через консольную утилиту прогнал на iOS, на android там ещё проще.
habradante
Ну то есть рисовать заново то, что уже есть.
А 640Кб памяти хватит всем.
Вот только прослойки для подключения к REST сервисам приходится писать самостоятельно, вместо того чтобы взять готовую.
Это только в документации все просто. Реальность куда хуже, подключение кастомных бибилиотек для того же Андроида часто выливается в большую головную боль из-за того что неправильно понимаются дженерики и анонимные классы. И плюс ко всему все равно для разных платформ приходится подключать разные библиотеки, потому что для Xamarin ничего толкового не написали. Например, библиотеки для отрисовки графиков.
kekekeks
habradante
Возможностей и видов графиков недостаточно.
mike114
Я вот давно мучаюсь с байндингами для Zendesk SDKs. Точнее как, оно работает почти всегда, но иногда даже запустить приложение не удаётся, так как что-то не до конца работает, а их поддержка отказывается помогать, так как они не работают с Xamarin. Ну и сам процесс создания отличается сильно от справочной статьи в худшую сторону.
ad1Dima
Ну так-то с вопросами биндинга надо в саппорт Xamarin обрщаться. (ну или на их форум и SO).
habradante
Приходилось натыкаться на момент, когда отдельные компоненты тянули разные версии базовых библиотек и на этапе компиляции это не отлавливалось. Но валилось при первом же запуске и в логе эта несогласованность видна была отчетливо.
ad1Dima
А все .net-библиотеки куда-то резко пропали?
Не знаю, что там у вас с андроидом не получается, все что мы хотели сбиндить — сбиндилось. А графики — вообще фиговый пример, из не только под ксамарин нормальных нет. Их и так днем с огнем не сыщешь.
habradante
OrmLite, ActiveAndroid, SugarORM, GreenDAO, это только из тех что я вспомнил, что рассматривали.
Библиотеки не-PCL не работают под Xamarin.
Как раз с Андроидом все бы получилось, а вот разработка под Xamarin вышла сильно дороже.
ad1Dima
не PCL, не .Net Standart, не Xamarin и не OpenSource.
в краткосрочной перспективе она и дороже, как и практически любая кросс-платформенная разработка. Есть задачи для которых Xamarin вообще не подходит. что уж тут скажешь.
habradante
С ним нормально не работал апдейт базы. И в sqlite.net, на тот, момент, были проблемы с передачей параметров.
Xamarin был выбран как возможность упростить переиспользование кода между Android и iOS, а по факту, как раз написание этого немногочисленного «общего» кода заняло меньше всего времени. Больше всего ушло на подключение библиотек для отображения графиков и создание интерфейса по гайдлайнам.
Самое смешное, что одну из основных проблем при работе с интерфейсом, Xamarin, как раз, не решает — динамическая подгрузка разметки экранов. Была надежда что с доведением до ума Xamarin.Forms, это удастся, но нет.
ad1Dima
Спасибо вам, сейчас как раз готовлю презентацию по Xamarin. Обязательно приведу вас в пример.
habradante
Не читайте по диагонали. Как раз этих ошибок не было. Проект имеет общую логику работы с веб-сервисом и в нем не используются Xamarin.Forms, как раз по причине следования гайдлайнам.
ad1Dima
habradante
Эта часть важна, хоть и заняла меньше всего времени от общего количества часов, и не хотелось ее переписывать каждый раз при обновлении и вообще писать повторно.
ad1Dima
Это известная причина для того чтоб посмотреть в сторону кросс-платформы. Но в вашем случае, лучше, конечно, было смотреть в сторону c++/Qt.
ad1Dima
habradante
Ну так о том и речь, без натива никуда.
ad1Dima
Я так понимаю, вы просто не провели надлежащий анализ перед выбором инструмента и теперь страдаете.
habradante
Платформа сильно переоценена. И страдания начинаются от того, что в реальности сталкиваешься с кучей нюансов, которые в документации либо не описаны, либо просто и быстро не решаются.
И анализ как раз был проведен, но то как был продавлен Xamarin — отдельная история.
Nagg
А есть какие-то конкретные нюансы, которые не описаны?
gleb_kudr
Да все там норм уже давно, если не пытаться действительно делать платформонезависимый UI, оно под это не заточено. Два проекта с общей бэкендовой библиотекой, но своим UI — пашет только в путь.
kekekeks
Например. UI строится как в нормальных XAML-платформах (все контролы выражены через шаблоны). Рисуется через вышеупомянутую Skia.
На мобилках, правда, пока в зачаточном состоянии — не работают попапы (надеюсь починить к очередному выпуску), обработчик тач-событий изображает из себя мышь, ну и подтормаживает (сейчас в процессе инфраструктура рендеринга только-того-что-поменялось и в фоновом потоке).
denismaster
Вот и кроссплатформенный WPF подъехал. Потрясающе!)
gritsenko_biz
Это же то! о чем я всегда мечтал!!!
Давайте дружить :-)
С радостью бы портировал GUI нашего https://icons8.com/lunacy на net core
kekekeks
Давайте. Заходите в наш уютный чатик — https://gitter.im/AvaloniaUI/Avalonia
Инструкции и пример использования из .NET Core тут.
Всё это счастье пока доступно только из nightly-фида (прописан в NuGet.config) в примерах. То, что на nuget.org работает только на обычном дотнете и Mono. Как стабилизируется новый студийный тулинг для .NET Core, планируем выпустить очередную версию и уже нормально это дело анонсировать.
Сейчас уже портируют на .NET Core вот эту штуку. Ещё на авалонии умеет работать вот этот редактор диаграмм, который идейно ближе к вашему проекту.