0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#Руководства</a></p>
1
<p><a>#Руководства</a></p>
2
<ul><li>8 июн 2022</li>
2
<ul><li>8 июн 2022</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Пилить кросс-платформенные апки можно не только на Java, но и на .NET. Знакомимся с Xamarin.Forms.</p>
4
</ul><p>Пилить кросс-платформенные апки можно не только на Java, но и на .NET. Знакомимся с Xamarin.Forms.</p>
5
<p>Иллюстрация: .NET / Xamarin / Colowgee для Skillbox Media</p>
5
<p>Иллюстрация: .NET / Xamarin / Colowgee для Skillbox Media</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
7
<p>Xamarin - это фреймворк для разработки приложений на языках семейства<a>.NET</a>(<a>C#</a>, F#, Visual Basic). Он позволяет написать единый код, который будет работать на Android, iOS и UWP, или нативные программы для этих платформ.</p>
7
<p>Xamarin - это фреймворк для разработки приложений на языках семейства<a>.NET</a>(<a>C#</a>, F#, Visual Basic). Он позволяет написать единый код, который будет работать на Android, iOS и UWP, или нативные программы для этих платформ.</p>
8
<p>Разберёмся, как создавать приложения на Xamarin.Forms на примере калькулятора для мобильных устройств.</p>
8
<p>Разберёмся, как создавать приложения на Xamarin.Forms на примере калькулятора для мобильных устройств.</p>
9
<p>Сначала скачаем и установим модуль Mobile Development with .NET. Для этого запустите Visual Studio Installer (скачать его можно на <a>официальном сайте</a>), выберите подходящую версию IDE и укажите компонент Mobile Development with .NET.</p>
9
<p>Сначала скачаем и установим модуль Mobile Development with .NET. Для этого запустите Visual Studio Installer (скачать его можно на <a>официальном сайте</a>), выберите подходящую версию IDE и укажите компонент Mobile Development with .NET.</p>
10
<em>Скриншот: Skillbox Media</em><p>Когда Visual Studio установится, нужно создать Xamarin-проект.</p>
10
<em>Скриншот: Skillbox Media</em><p>Когда Visual Studio установится, нужно создать Xamarin-проект.</p>
11
<em>Скриншот: Skillbox Media</em><p>Для этого можно выбрать проект Mobile App (Xamarin.Forms), работающий на всех платформах, либо отдельно Android App или iOS App.</p>
11
<em>Скриншот: Skillbox Media</em><p>Для этого можно выбрать проект Mobile App (Xamarin.Forms), работающий на всех платформах, либо отдельно Android App или iOS App.</p>
12
<p><strong>Важно!</strong></p>
12
<p><strong>Важно!</strong></p>
13
<p>Разработка на Xamarin.Forms и Xamarin различается. В Xamarin.Forms интерфейс создаётся с помощью XAML, а в Xamarin - с помощью нативных средств выбранной платформы.</p>
13
<p>Разработка на Xamarin.Forms и Xamarin различается. В Xamarin.Forms интерфейс создаётся с помощью XAML, а в Xamarin - с помощью нативных средств выбранной платформы.</p>
14
<p>Теперь укажите название и путь, а потом нажмите Create:</p>
14
<p>Теперь укажите название и путь, а потом нажмите Create:</p>
15
<em>Скриншот: Skillbox Media</em><p>Затем нужно выбрать шаблон. В этой статье рассматривается создание мобильного приложения на примере пустого (Blank) проекта. Обратите внимание, что можно выбрать платформы Android, iOS и UWP. Для последнего нужно скачать дополнительный компонент в Visual Studio Installer - Universal Windows Platform development.</p>
15
<em>Скриншот: Skillbox Media</em><p>Затем нужно выбрать шаблон. В этой статье рассматривается создание мобильного приложения на примере пустого (Blank) проекта. Обратите внимание, что можно выбрать платформы Android, iOS и UWP. Для последнего нужно скачать дополнительный компонент в Visual Studio Installer - Universal Windows Platform development.</p>
16
<em>Скриншот: Skillbox Media</em><p>Visual Studio понадобится какое-то время, чтобы подготовить все файлы проекта, а потом стоит сразу установить средства для отладки приложений. Для этого понадобится либо устройство на iOS или Android, либо эмулятор.</p>
16
<em>Скриншот: Skillbox Media</em><p>Visual Studio понадобится какое-то время, чтобы подготовить все файлы проекта, а потом стоит сразу установить средства для отладки приложений. Для этого понадобится либо устройство на iOS или Android, либо эмулятор.</p>
17
<p>Чтобы создать эмулятор Android, выберите пункт Create Android Emulator…, как показано на скриншоте:</p>
17
<p>Чтобы создать эмулятор Android, выберите пункт Create Android Emulator…, как показано на скриншоте:</p>
18
<em>Скриншот: Skillbox Media</em><p>Откроется меню добавления устройства. Можно выбрать готовый шаблон из списка, разрядность, версию ОС и многие другие параметры. Не указывайте высокие характеристики, если используется слабый компьютер.</p>
18
<em>Скриншот: Skillbox Media</em><p>Откроется меню добавления устройства. Можно выбрать готовый шаблон из списка, разрядность, версию ОС и многие другие параметры. Не указывайте высокие характеристики, если используется слабый компьютер.</p>
19
<em>Скриншот: Skillbox Media</em><p>После создания устройства выберите его в списке и нажмите Start:</p>
19
<em>Скриншот: Skillbox Media</em><p>После создания устройства выберите его в списке и нажмите Start:</p>
20
<em>Скриншот: Skillbox Media</em><p>Эмулятор начнёт скачиваться. После установки его можно будет запустить, чтобы отлаживать приложения.</p>
20
<em>Скриншот: Skillbox Media</em><p>Эмулятор начнёт скачиваться. После установки его можно будет запустить, чтобы отлаживать приложения.</p>
21
<p>Другой способ - использовать физическое устройство. Для этого закройте Visual Studio и возьмите смартфон. В настройках найдите Build Version (название и расположение зависит от производителя) и нажмите на него семь раз подряд (это не шутка :)). После этого станут доступными настройки для разработчиков. В них нужно включить USB Debug и подключить устройство к компьютеру.</p>
21
<p>Другой способ - использовать физическое устройство. Для этого закройте Visual Studio и возьмите смартфон. В настройках найдите Build Version (название и расположение зависит от производителя) и нажмите на него семь раз подряд (это не шутка :)). После этого станут доступными настройки для разработчиков. В них нужно включить USB Debug и подключить устройство к компьютеру.</p>
22
<p>Откройте Visual Studio и запустите проект, выбрав подключённое устройство:</p>
22
<p>Откройте Visual Studio и запустите проект, выбрав подключённое устройство:</p>
23
<em>Скриншот: Skillbox Media</em><p>На устройстве откроется приложение, которое было создано по шаблону:</p>
23
<em>Скриншот: Skillbox Media</em><p>На устройстве откроется приложение, которое было создано по шаблону:</p>
24
<em>Скриншот: Skillbox Media</em><p>Поздравляю, первое приложение готово! Закройте его, чтобы вернуться к редактированию кода.</p>
24
<em>Скриншот: Skillbox Media</em><p>Поздравляю, первое приложение готово! Закройте его, чтобы вернуться к редактированию кода.</p>
25
<p>Приложение разделено на несколько подпроектов. В основном проекте находятся все файлы, с которыми предстоит работать. А в XamarinApp1.Android и XamarinApp1.iOS находится код для этих операционных систем.</p>
25
<p>Приложение разделено на несколько подпроектов. В основном проекте находятся все файлы, с которыми предстоит работать. А в XamarinApp1.Android и XamarinApp1.iOS находится код для этих операционных систем.</p>
26
<p>Основной проект компилируется в DLL-библиотеки и подключается к подпроектам. Это позволяет писать код один раз и запускать его везде - .NET Framework сам всё скомпилирует, чтобы запустить на разных ОС.</p>
26
<p>Основной проект компилируется в DLL-библиотеки и подключается к подпроектам. Это позволяет писать код один раз и запускать его везде - .NET Framework сам всё скомпилирует, чтобы запустить на разных ОС.</p>
27
<p>Мобильные приложения на Xamarin создаются с помощью страниц (экранов). По умолчанию основная страница - MainPage. Она состоит из двух файлов:</p>
27
<p>Мобильные приложения на Xamarin создаются с помощью страниц (экранов). По умолчанию основная страница - MainPage. Она состоит из двух файлов:</p>
28
<ul><li><strong>MainPage.xaml</strong>(язык XAML). Пользовательский интерфейс.</li>
28
<ul><li><strong>MainPage.xaml</strong>(язык XAML). Пользовательский интерфейс.</li>
29
<li><strong>MainPage.xaml.cs</strong>(язык C#). Основная логика приложения, обработка событий.</li>
29
<li><strong>MainPage.xaml.cs</strong>(язык C#). Основная логика приложения, обработка событий.</li>
30
</ul><p>Начать можно с файла разметки интерфейса. Напишем простой калькулятор:</p>
30
</ul><p>Начать можно с файла разметки интерфейса. Напишем простой калькулятор:</p>
31
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="XamarinApp1.MainPage"> <StackLayout > <Label Text="Calc" Margin="5" FontSize="Large" FontAttributes="Bold"/> <StackLayout Orientation="Horizontal" Spacing="50" HorizontalOptions="CenterAndExpand"> <Entry x:Name="num1" WidthRequest="100" Keyboard="Numeric"/> <Label Text="+"/> <Entry x:Name="num2" WidthRequest="100" Keyboard="Numeric"/> </StackLayout> <Label Text="=" Margin="5" HorizontalTextAlignment="Center"/> <Label x:Name="result" Margin="5" HorizontalTextAlignment="Center"/> <Button Text="Calculate" Clicked="Button_Clicked"/> </StackLayout> </ContentPage><p>Здесь всё находится внутри элемента <ContentPage>, который является аналогом <Window> из <a>WPF</a>. Внутри него содержится <StackLayout>, который позволяет разместить элементы последовательно. С помощью атрибута Orientation указывается направление элементов - вертикальное (по умолчанию) или горизонтальное.</p>
31
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="XamarinApp1.MainPage"> <StackLayout > <Label Text="Calc" Margin="5" FontSize="Large" FontAttributes="Bold"/> <StackLayout Orientation="Horizontal" Spacing="50" HorizontalOptions="CenterAndExpand"> <Entry x:Name="num1" WidthRequest="100" Keyboard="Numeric"/> <Label Text="+"/> <Entry x:Name="num2" WidthRequest="100" Keyboard="Numeric"/> </StackLayout> <Label Text="=" Margin="5" HorizontalTextAlignment="Center"/> <Label x:Name="result" Margin="5" HorizontalTextAlignment="Center"/> <Button Text="Calculate" Clicked="Button_Clicked"/> </StackLayout> </ContentPage><p>Здесь всё находится внутри элемента <ContentPage>, который является аналогом <Window> из <a>WPF</a>. Внутри него содержится <StackLayout>, который позволяет разместить элементы последовательно. С помощью атрибута Orientation указывается направление элементов - вертикальное (по умолчанию) или горизонтальное.</p>
32
<em>Скриншот: Skillbox Media</em><p>Посмотреть вид приложения можно с помощью инструмента Designer</p>
32
<em>Скриншот: Skillbox Media</em><p>Посмотреть вид приложения можно с помощью инструмента Designer</p>
33
<p>Текстовые блоки создаются с помощью элемента<em><Label></em>, а поля ввода - с помощью<em><Entry></em>. Кнопка - с помощью элемента<em><Button></em>. Полям ввода указывается атрибут<em>x: Name</em>, чтобы к ним можно было обратиться в коде C#. А для кнопки указывается обработчик события<em>Clicked</em>.</p>
33
<p>Текстовые блоки создаются с помощью элемента<em><Label></em>, а поля ввода - с помощью<em><Entry></em>. Кнопка - с помощью элемента<em><Button></em>. Полям ввода указывается атрибут<em>x: Name</em>, чтобы к ним можно было обратиться в коде C#. А для кнопки указывается обработчик события<em>Clicked</em>.</p>
34
<p>Теперь посмотрим, что происходит в коде MainPage.xaml.cs:</p>
34
<p>Теперь посмотрим, что происходит в коде MainPage.xaml.cs:</p>
35
using System; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace XamarinApp1 { [DesignTimeVisible(false)] public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private void Button_Clicked(object sender, EventArgs e) //Обработчик нажатия на кнопку { try { int n1 = Convert.ToInt32(num1.Text); //Конвертация значений из текстовых полей в числа int n2 = Convert.ToInt32(num2.Text); result.Text = (n1 + n2).ToString(); //Сложение полученных чисел, преобразование их обратно в строку и вывод в один из элементов <Label> } catch (Exception exc) { } } } }<p>Получился вот такой калькулятор:</p>
35
using System; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace XamarinApp1 { [DesignTimeVisible(false)] public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private void Button_Clicked(object sender, EventArgs e) //Обработчик нажатия на кнопку { try { int n1 = Convert.ToInt32(num1.Text); //Конвертация значений из текстовых полей в числа int n2 = Convert.ToInt32(num2.Text); result.Text = (n1 + n2).ToString(); //Сложение полученных чисел, преобразование их обратно в строку и вывод в один из элементов <Label> } catch (Exception exc) { } } } }<p>Получился вот такой калькулятор:</p>
36
<p>В принципе, Xamarin очень похож на WPF, поэтому разработчики приложений для Windows смогут быстро в него вникнуть - нужно только выучить новые названия элементов и понять различия в реализации привязки данных.</p>
36
<p>В принципе, Xamarin очень похож на WPF, поэтому разработчики приложений для Windows смогут быстро в него вникнуть - нужно только выучить новые названия элементов и понять различия в реализации привязки данных.</p>
37
<p>Теперь настроим приложение. Для этого зайдите в <em>Project → AppName Properties…:</em></p>
37
<p>Теперь настроим приложение. Для этого зайдите в <em>Project → AppName Properties…:</em></p>
38
<em>Скриншот: Skillbox Media</em><p>Откроется меню настроек:</p>
38
<em>Скриншот: Skillbox Media</em><p>Откроется меню настроек:</p>
39
<em>Скриншот: Skillbox Media</em><p>Там можно указать иконку, название, версию, описание и многое другое. Это нужно сделать, чтобы пользователи видели корректную информацию о приложении.</p>
39
<em>Скриншот: Skillbox Media</em><p>Там можно указать иконку, название, версию, описание и многое другое. Это нужно сделать, чтобы пользователи видели корректную информацию о приложении.</p>
40
<p>После того как приложение будет готово, его можно скомпилировать, чтобы потом передать на мобильное устройство для установки. Установочные пакеты надо искать в папках<em>Bin → Debug</em>необходимой платформы.</p>
40
<p>После того как приложение будет готово, его можно скомпилировать, чтобы потом передать на мобильное устройство для установки. Установочные пакеты надо искать в папках<em>Bin → Debug</em>необходимой платформы.</p>
41
<p>Однако, чтобы люди смогли им пользоваться, нужно загрузить его в Google Play и App Store. Впрочем, это уже совсем другая история :)</p>
41
<p>Однако, чтобы люди смогли им пользоваться, нужно загрузить его в Google Play и App Store. Впрочем, это уже совсем другая история :)</p>
42
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
42
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>