В помощь мобильному разработчику
xamarin 2017

Что разработчики Xamarin должны знать на начало 2017 года

Александр Алексеев

Меня очень вдохновил недавний пост Скотта Хансельмана в его блоге о том, что разработчики .NET должны знать на начало 2017 года. И я решил пойти немного дальше этого и написать небольшой путеводитель для разработчиков Xamarin, создающих приложения iOS, Android и macOS в .NET. Так что я связался с Крисом Харди, и мы совместно подготовили обширный список понятий и полезных ресурсов, имеющих отношение к Xamarin.

Прежде чем мы начнем, Вам непременно стоит посетить замечательный блог Скотта, поскольку он просто переполнен отличной информацией. Кроме того, чтобы сделать этот пост максимально полезным, я разделил его на специальные секции: «непременно нужно знать», «следует знать» и «неплохо бы знать», к тому же я подготовил специальные разделы для iOS и Android.

Когда вы будете готовы приступить к работе с Xamarin, отправляйтесь на портал developer.xamarin.com, который, безусловно, является идеальным местом для начинающих разработчиков. Именно там я начал работу в области мобильной разработки в далеком 2011 году. Итак, приступаем!

 

С чего начать?

Тем, кто желает много читать, скачивать, изучать и смотреть по теме Xamarin, рекомендуем сразу взять на заметку следующие порталы:

  • xamarin.com и xamarin.com/download: Читайте и качайте материалы, связанные с Xamarin!
  • university.xamarin.com/self-guided: Бесплатное самостоятельное обучение в университете Xamarin.
  • Xamarin Workbooks: Позволяет разработчикам протестировать API-интерфейсы в интерактивном режиме.
  • xamarinshow.com: Еженедельное шоу на CH9, посвященное разработке и организованное мною.
  • open.xamarin.com: Здесь представлены проекты Xamarin на основе открытого исходного кода.

Что непременно нужно знать о 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-интерфейсам можно через платформу проектов и сервисы зависимостей.

 

Кросс-платформенное совместное использование кода

Xamarin Код

Существует несколько способов использования общего кода в разных приложениях

  • PCL (Portable Class Library): Эта библиотека, также известная как Pickle, дает разработчикам возможность для создания «библиотеки классов», рассчитанной на несколько платформ. Эта библиотека фактически действует в качестве опорного узла, предоставляющего перекрестный API, который доступен на каждой платформе. Чем больше платформ Вы выберите, тем меньшая плоскость API будет доступна.
  • Общий проект: Самый простой способ совместного использования кода на разных платформах. Он функционирует как «связывающий файл», разделяя код с целевой платформой. Преимущества, состоят в том, что здесь доступны все целевые API-интерфейсы, так что Вы можете производить условную компиляцию. Однако, такой подход может обернуться запутанным кодом, и, кроме того, в этом случае не создается сборка: файлы связываются между собой в проект платформы.
  • .NETStandard или “netstandard”: Библиотека netstandard — это следующий этап эволюции, и она вполне может прийти на смену PCL. Разработчики получают по-настоящему кросс-платформенную библиотеку, и она может быть запущена в любой среде выполнения, которая реализует такие API-интерфейсы, как Mono, .NET Framework и .NET Core.

 

Источники библиотек

NuGet лого
Существует множество API, доступных в .NET и на каждой платформе, но иногда хочется больше! И здесь их можно получить.

  • NuGet: NuGet — это менеджер пакетов для платформы разработки Microsoft, включающей .NET. Клиентские инструменты NuGet обеспечивают возможность создания и использования пакетов. Галерея NuGet является центральным хранилищем пакетов, и используется всеми их авторами и пользователями.
  • Component: «Магазин компонентов» является специально подобранной галереей библиотек и менеджером платформ Xamarin. Он предлагает платные и бесплатные библиотеки, которые могут быть установлены непосредственно в приложения iOS и Android. Эти библиотеки создаются как разработчиками компонентов Xamarin, так и сторонними девелоперами.
  • Plugin: По правде сказать, плагины для Xamarin и Windows просто превосходные. Они позволяют Вам получать доступ к нативным функциям кросс-платформенного API прямо из общего кода! У них открытый исходный код, и здесь доступно немало классных вещей, в том числе для геолокации, возможности подключений и фотографий. Каждый плагин доступен по лицензии MIT и может быть установлен в любую библиотеку iOS, Android, Windows, PCL или .NETStandard Library через NuGet.

 

Библиотеки

Давайте познакомимся с некоторыми по-настоящему классными библиотеками, созданными или поддерживаемыми Xamarin:

  • MonoGame: MonoGame является эффективным, гибким и кросс-платформенным API для разработки игр в 2D и 3D. Он обеспечивает основу для многих кросс-платформенных игровых движков. Однако, он может также использоваться и непосредственно в играх, не будучи обернутым в игровой движок.
  • UrhoSharp: UrhoSharp является кросс-платформенным движком высокого уровня (3D и 2D), который может быть использован для создания анимированных 3D и 2D игр и сцен в приложениях, использующих геометрические формы, материалы, огни и камеры. UrhoSharp совместим с мобильными и десктопными приложениями, а также с HoloLens и VR.
  • SkiaSharp: SkiaSharp предлагает богатый и мощный графический API, который можно использовать для визуализации в 2D буферах. Вы можете использовать их для реализации элементов пользовательского интерфейса и 2D-графики, которые могут быть включены в приложение. SkiaSharp является привязкой .NET с библиотекой Skia и наследует функции и силу этой библиотеки.
  • CocosSharp: CocosSharp является простой библиотекой для 2D-игр, использующей C# и F#. Это .NET порт популярного движка Cocos2D.

 

Обязательно нужно знать: iOS

  • Расширения: Расширения — это виджеты, которые предоставляются iOS в стандартных обстоятельствах, как, например, в «Центре уведомлений», когда пользователь запрашивает клавиатуру или редактирует фотографии. Все расширения устанавливаются в сочетании с приложением Container и активируются с определенной «точки расширения» в приложении Host.
  • watchOS: watchOS — это определенная версия iOS, которая предназначена для устройств Apple Watch.
  • tvOS: Apple выпустила 4-е поколение аппаратных средств Apple TV, отличающихся переработанным пультом с поддержкой сенсорного управления и новой операционной системой (основанной на iOS9).
  • Регистрационные профили: Когда нужно установить приложение на устройство или выпустить его в App Store, требуется получить учетную запись разработчика и создать регистрационный профиль. Они должны связать вместе устройства, учетные записи и компьютеры разработчика.

 

Непременно нужно знать: Android

  • Android WearAndroid логотип: Android Wear — это версия Android, которая предназначена для таких носимых устройств, как умные часы.
  • Keystore: Используется для подписи приложений Android, с тем чтобы размещать их в соответствующих магазинах.
  • Разбор APIs & SDKs: Компиляции, минимизация, планирование — всё, что является важным и заслуживает изучения. Ознакомьтесь с коротким видео по теме.

 

Следует знать: Xamarin

  • Linker: xamagonИспользуется для уменьшения размера приложений для iOS и Android, осуществляет статический анализ приложения, с тем чтобы определить, какие в нем используются узлы, типы и члены классов. Благодаря этому любая неиспользуемая вещь будет отброшена.
  • IL – некий промежуточный язык, который создается при компиляции. Как написал Скотт: C# — это яблоки, из которых IL делает яблочный соус, а JIT/АОТ и среда выполнения — яблочный сок.
  • AOT– Расшифровывается как Ahead of Time Compilation («компиляция на опережение»): Принимает IL и компилирует его в машинный код с целью выполнения полученного двоичного файла в нативном виде. Это то, что использует Xamarin.iOS.
  • JIT – Расшифровывается как Just in Time Compilation («мгновенная компиляция»): Принимает IL и компилирует его, подготавливая для запуска в качестве машинного кода. Это то, что использует Xamarin.Android.

 

Следует знать: iOS

  • Storyboard: 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).
  • ACW & MCW: Android и Managed Callable Wrappers — это то, что позволяет .NET общаться с Java и наоборот.
  • AVD: Android Virtual Devices — это эмуляторы Android, которые используются для отладки приложений.
  • HAXM (Hardware Accelerated Execution Manager): Программное обеспечение от Intel для Windows и macOS, предназначенное для виртуализации, благодаря которому Вы получаете потрясающие AVDs.

 

Неплохо бы знать

  • Xamarin.Forms Roadmap: Замечательный стратегический план готовящихся функций и исправлений для Xamarin.Forms.
  • Профайлер: Профайлер Xamarin интегрируется с существующим инструментарием для сбора информации о приложениях Xamarin. Используйте его для поиска утечек памяти, устранения узких мест в производительности, а также для полировки приложения перед тем, как пускать их в свободное плавание.
  • MVVM (Model-View-ViewModel): 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»!

Автор: James Montemagno
ИсточникСтатья в блоге автора

Александр Алексеев
Александр Алексеев

Xamarin – разработчик. Работаю с .NET платформой с 2012 года, программирую в основном с использованием C#.
За это время успел поработать с ASP.NET, Entity Framework, MSSQL, Git

Sing In With Google
Внутри игровые покупки

3 комментария

  1. Аноним Reply to Anonymous

    Большинство ссылок не работает(
    {“error”:”Redirect failed”}

Написать ответ