Введение в разработку мобильных приложенийIntroduction to mobile development

Создание мобильных приложений может быть очень простым процессом: вы открываете интегрированную среду разработки, пишете код, тестируете приложение и отправляете его в Магазин приложений. Все это занимает полдня.Building mobile apps can be as easy as opening up the IDE, writing and testing an app, and submitting to an App Store – all done in an afternoon. Или наоборот, вы реализуете чрезвычайно сложную задачу с тщательным предварительным проектированием, тестированием на удобство использования, проверкой качества на множестве устройств и обслуживанием полного жизненного цикла бета-версии с последующим развертыванием различными способами.Or it can be an extremely involved process that involves rigorous up-front design, usability testing, QA testing on thousands of devices, a full beta lifecycle, and then deployment a number of different ways.

В этом документе описана платформа Xamarin.This document introduces the Xamarin platform. Дополнительные сведения о процессе создания мобильных приложений, начиная с этапа проектирования и до тестирования, см. в документе Введение в жизненный цикл разработки мобильного программного обеспечения.To learn more about the process of building mobile applications from design through to testing, see Introduction to the Mobile Software Development Lifecycle.

См. требования к системе, чтобы убедиться в ее соответствии.See system requirements to confirm your system.

Введение в XamarinIntroduction to Xamarin

Рассматривая способы создания приложений для iOS и Android, многие считают, что единственным вариантом являются машинные языки Objective-C, Swift и Java.When considering how to build iOS and Android applications, many people think that the native languages, Objective-C, Swift, and Java, are the only choice. Однако в течение нескольких последних лет появилась совершенно новая экосистема платформ для разработки мобильных приложений.However, over the past few years, an entire new ecosystem of platforms for building mobile applications has emerged.

Xamarin является уникальным в этом пространстве, так как предлагает один язык C#, библиотеку классов и среду выполнения, которая работает на всех трех платформах для мобильных устройств — iOS, Android и Windows Phone (C# уже является собственным языком Windows Phone), и по-прежнему поддерживает компиляцию собственных (без интерпретации) приложений, достаточно быстродействующих даже для ресурсоемких игр.Xamarin is unique in this space by offering a single language – C#, class library, and runtime that works across all three mobile platforms of iOS, Android, and Windows Phone (Windows Phone’s native language is already C#), while still compiling native (non-interpreted) applications that are performant enough even for demanding games.

Каждая из этих платформ располагает отдельным набором функций и предлагает разные возможности создания собственных приложений, которые компилируются в машинный код и согласованно взаимодействуют с базовой подсистемой Java.Each of these platforms has a different feature set and each varies in its ability to write native applications – that is, applications that compile down to native code and that interop fluently with the underlying Java subsystem. Например, некоторые платформы допускают разработку приложений только на HTML и JavaScript, тогда как другие работают на низком уровне, поддерживают только код C или C++.For example, some platforms only allow apps to be built in HTML and JavaScript, whereas some are low-level and only allow C/C++ code. Некоторые платформы вообще не используют собственный набор средств управления.Some platforms don’t even utilize the native control toolkit.

Уникальность Xamarin заключается в сочетании потенциала существующих платформ и нескольких мощных собственных возможностей, включая приведенные далее:Xamarin is unique in that it combines all of the power of the native platforms and adds a number of powerful features of its own, including:

  1. Полная привязка для базовых пакетов SDK. Xamarin содержит привязки практически для всех базовых пакетов SDK в iOS и Android.Complete Binding for the underlying SDKs – Xamarin contains bindings for nearly the entire underlying platform SDKs in both iOS and Android. Кроме того, эти привязки являются строго типизированными, что означает, что они удобны в навигации и использовании, а также позволяют осуществлять качественную проверку типов во время компиляции и разработки.Additionally, these bindings are strongly-typed, which means that they’re easy to navigate and use, and provide robust compile-time type checking and during development. При этом сокращается количество ошибок времени выполнения и повышается качество приложений.This leads to fewer runtime errors and higher-quality apps.
  2. Взаимодействие Objective-C, Java, C и C++. Xamarin позволяет напрямую вызывать библиотеки Objective-C, Java, C и C++ для более эффективного использования разнообразного и уже созданного стороннего кода.Objective-C, Java, C, and C++ Interop – Xamarin provides facilities for directly invoking Objective-C, Java, C, and C++ libraries, giving you the power to use a wide array of 3rd party code that has already been created. Вы можете использовать преимущества существующих библиотек iOS и Android, написанных на Objective-C, Java или C/C++.This lets you take advantage of existing iOS and Android libraries written in Objective-C, Java, or C/C++. Кроме того, Xamarin предлагает проекты привязки для удобной привязки собственных библиотек Objective-C и Java с помощью декларативного синтаксиса.Additionally, Xamarin offers binding projects that allow you to easily bind native Objective-C and Java libraries using a declarative syntax.
  3. Современные конструкции языка. Приложения Xamarin написаны на современном языке C#, который характеризуется значительными улучшениями по сравнению с Objective-C и Java. Сюда входят *динамические функции языка, функциональные конструкции, например *лямбда-выражения, *LINQ, функции параллельного программирования, сложные *универсальные шаблоны и т. д.Modern Language Constructs – Xamarin applications are written in C#, a modern language that includes significant improvements over Objective-C and Java such as *Dynamic Language Features, Functional Constructs such as *Lambdas, *LINQ, Parallel Programming features, sophisticated *Generics, and more.
  4. Впечатляющая библиотека базовых классов (BCL). Приложения Xamarin используют библиотеку BCL .NET, большую коллекцию классов со всеобъемлющими и упрощенными возможностями, включая поддержку XML, баз данных, сериализации, операций ввода-вывода, строк, сетевых функций и т. д.Amazing Base Class Library (BCL) – Xamarin applications use the .NET BCL, a large collection of classes that have comprehensive and streamlined features such as powerful XML, Database, Serialization, IO, String, and Networking support, and more. Существующий код C# можно скомпилировать для использования в приложениях, обеспечивая доступ к тысячам библиотек, которые помогут выполнять задачи, выходящие за рамки BCL.Existing C# code can be compiled for use in an app, which provides access to thousands of libraries that allow you do things that aren’t covered in the BCL.
  5. Современная интегрированная среда разработки (IDE). Xamarin использует Visual Studio для Mac в Mac OS X и Visual Studio в Windows.Modern Integrated Development Environment (IDE) – Xamarin uses Visual Studio for Mac on macOS and Visual Studio on Windows. В этих современных интегрированных средах разработки реализованы такие возможности, как автозавершение кода, более совершенная система управления проектами и решениями, исчерпывающая библиотека шаблонов проектов, интегрированная система управления версиями и многое другое.These are both modern IDEs that include features such as code auto completion, a sophisticated Project and Solution management system, a comprehensive project template library, integrated source control, and many others.
  6. Поддержка кроссплатформенных мобильных приложений. Xamarin предлагает усовершенствованную кроссплатформенную поддержку для трех основных мобильных платформ — iOS, Android и Windows Phone.Mobile Cross Platform Support – Xamarin offers sophisticated cross-platform support for the three major mobile platforms of iOS, Android, and Windows Phone. Объем общего кода в созданных приложениях может достигать 90 %, а библиотека Xamarin.Mobile предлагает универсальный API-интерфейс для доступа к общим ресурсам на всех трех платформах.Applications can be written to share up to 90% of their code, and our Xamarin.Mobile library offers a unified API to access common resources across all three platforms. Это может значительно сократить затраты на разработку и время выпуска продуктов на рынок для разработчиков, создающих мобильные приложения для трех самых популярных мобильных платформ.This can significantly reduce both development costs and time to market for mobile developers that target the three most popular mobile platforms.

Благодаря мощному и комплексному набору функций и компонентов Xamarin разработчики приложений получают недостающие им возможности и начинают использовать современный язык и платформу для разработки кроссплатформенных мобильных приложений.Because of Xamarin’s powerful and comprehensive feature set, it fills a void for application developers that want to use a modern language and platform to develop cross-platform mobile applications.

Примечание

В этой серии руководств по началу работы основное внимание уделяется вопросам создания приложений iOS и Android.This Get Started series focuses on getting started building iOS and Android applications. Корпорация Майкрософт предлагает сведения о разработке приложений универсальной платформы Windows (UWP) для планшетных и настольных ПК.Microsoft offers information about Universal Windows Platform (UWP) development for tablets and desktops. Дополнительные сведения о кроссплатформенной разработке с помощью Xamarin (включая приложения UWP для Windows) см. в руководстве по созданию кроссплатформенных приложений.To learn more about cross-platform development with Xamarin (including UWP apps for Windows), read the Building Cross-Platform Applications guide.

Принципы работы XamarinHow does Xamarin work?

Xamarin предоставляет два коммерческих продукта: Xamarin.iOS и Xamarin.Android.Xamarin offers two commercial products: Xamarin.iOS and Xamarin.Android. Оба они созданы на базе Mono, версии .NET Framework с открытым исходным кодом, основанной на опубликованных стандартах .NET ECMA.They’re both built on top of Mono, an open-source version of the .NET Framework based on the published .NET ECMA standards. Mono существует почти так же долго, как и .NET Framework, и работает практически на всех платформах, включая Linux, Unix, FreeBSD и Mac OS X.Mono has been around almost as long as the .NET framework itself, and runs on nearly every imaginable platform including Linux, Unix, FreeBSD, and macOS.

На платформе iOS компилятор Xamarin Ahead-of-Time (AOT) компилирует приложения Xamarin.iOS непосредственно в машинный код сборки ARM.On iOS, Xamarin’s Ahead-of-Time ( AOT) Compiler compiles Xamarin.iOS applications directly to native ARM assembly code. На платформе Android компилятор Xamarin компилирует в промежуточный язык (IL), который при запуске приложения претерпевает Just-in-Time-компиляцию (JIT) в машинную сборку.On Android, Xamarin’s compiler compiles down to Intermediate Language ( IL), which is then Just-in-Time ( JIT) compiled to native assembly when the application launches.

В обоих случаях приложения Xamarin используют среду выполнения, которая автоматически обрабатывает такие процессы, как выделение памяти, сборка мусора, взаимодействие с базовой платформой и т. д.In both cases, Xamarin applications utilize a runtime that automatically handles things such as memory allocation, garbage collection, underlying platform interop, etc.

Xamarin.iOS.dll и Mono.Android.dllXamarin.iOS.dll and Mono.Android.dll

Приложения Xamarin создаются на основе подмножества BCL .NET, известного как профиль для Xamarin Mobile.Xamarin applications are built against a subset of the .NET BCL known as the Xamarin Mobile Profile. Этот профиль был разработан специально для мобильных приложений и упакован в MonoTouch.dll и Mono.Android.dll (для iOS и Android, соответственно).This profile has been created specifically for mobile applications and packaged in the MonoTouch.dll and Mono.Android.dll (for iOS and Android respectively). Почти так же создаются приложения Silverlight (и Moonlight) на основе профиля Silverlight/Moonlight .NET.This is much like the way Silverlight (and Moonlight) applications are built against the Silverlight/Moonlight .NET Profile. По сути, профиль Xamarin Mobile соответствует профилю Silverlight 4.0 с множеством вновь добавленных классов BCL.In fact, the Xamarin Mobile profile is equivalent to the Silverlight 4.0 profile with a bunch of BCL classes added back in.

Полный список доступных сборок и классов см. в статье со списком сборок Xamarin.iOS и списком сборок Xamarin.Android.For a full list of available assemblies and classes, see the Xamarin.iOS Assembly List and the Xamarin.Android Assembly List

Кроме BCL, эти библиотеки DLL содержат программы-оболочки практически для всех пакетов SDK для iOS и пакетов SDK для Android, что позволяет вызывать API-интерфейсы базовых пакетов SDK непосредственно из C#.In addition to the BCL, these .dlls include wrappers for nearly the entire iOS SDK and Android SDK that allows the underlying SDK APIs to be invoked directly from C#.

Выходные данные приложенияApplication output

Результатом компиляции приложений Xamarin является пакет приложения — APP-файл в iOS или APK-файл в Android.When Xamarin applications are compiled, the result is an Application Package, either an .app file in iOS, or .apk file in Android. Эти файлы неотличимы от пакетов приложений, созданных с помощью интегрированных сред разработки по умолчанию, и развертываются совершенно одинаково.These files are indistinguishable from application packages built with the platform's default IDEs and are deployable in the exact same way.

Следующие шагиNext steps

Теперь, когда вы узнали немного о работе Xamarin, следующим шагом является создание приложения с помощью одного из указанных руководств.Now you've learned a little about how Xamarin works, the next step is to start building an app using one of these guides: