Как создать приложение на андроид в visual studio
Перейти к содержимому

Как создать приложение на андроид в visual studio

  • автор:

Создание приложений Java для Android

Чтобы создать первое приложение Android, выполните следующие действия.

  1. Подключитесь к учетной записи службы репозитория (GitHub, Bitbucket, VSTS, Azure DevOps).
  2. Выберите репозиторий и ветвь, в которой находится ваше приложение.
  3. Выберите проект Android, который вы хотите создать.
  4. Настройте первую сборку.

Чтобы приложение выполнялось на реальном устройстве, сборка должна быть подписана кодом с помощью допустимого сертификата.

Центр приложений отслеживает проект, выполнив поиск в файлах каталога gradle (и gradlew) проекта Android. Не включайте эти файлы в проект .gitignore, так как сборка Центра приложений не сможет их найти.

Из-за недавнего завершения работы JCenter некоторые приложения могут столкнуться с ошибками задачи Gradle при сборке с помощью Центра приложений. Ознакомьтесь с руководством по миграции, предоставленным Gradle. В качестве обходного решения все экземпляры jcenter() можно удалить из build.gradle файла и заменить на jcenter < url "http://jcenter.bintray.com/">. Дополнительные сведения о завершении работы JCenter см. здесь.

1. Связывание репозитория

Если это еще не сделано, необходимо подключиться к учетной записи службы репозитория. После подключения учетной записи выберите репозиторий, в котором находится проект Android. Чтобы настроить сборку для репозитория, вам потребуется разрешение администратора и разрешение на извлечение для нее.

2. Выбор ветви

Выбрав репозиторий, выберите ветвь, которую вы хотите создать. По умолчанию будут перечислены все активные ветви.

3. Настройка первой сборки

Перед первой сборкой необходимо настроить проект Android.

3.1. Триггеры сборки

По умолчанию новая сборка активируется при каждой отправке разработчиком в настроенную ветвь. Это называется непрерывной интеграцией. Если вы предпочитаете активировать новую сборку вручную, этот параметр можно изменить на панели конфигурации.

3.2. Вариант сборки

Доступные варианты сборки будут заполнены из типов сборки и вариантов продуктов, указанных в файле build.gradle (уровень приложения). Выберите вариант сборки, который следует выполнить.

Сборка в центре приложений поддерживает поиск вариантов сборки в виде сочетания типа сборки (отладка, выпуск или настраиваемый определенный) и одного из объявленных вариантов продукта. Обнаружение измерений вкуса (комбинаций нескольких вкусов продукта) в настоящее время не поддерживается.

3.3. Сборка пакета приложений Android (.aab)

Пакет приложений Android — это формат распространения, который отправляется в Магазин Play и используется для создания оптимизированных пакетов APK для определенных устройств. Дополнительные сведения о пакете приложений Android см. в официальной документации по Android.

Переключите параметр для пакета приложений .aab Android, чтобы создать в дополнение к .apk . build.gradle Если файл (уровня приложения) содержит android.bundle блок , этот параметр уже включен.

3.4. Приращение номера версии

Если этот параметр включен, код версии в AndroidManifest.xml приложения автоматически увеличивается для каждой сборки. Изменение происходит во время фактической сборки и не будет зафиксировано в репозитории.

3.5. подписывание кода;

При успешной сборке .apk будет создан файл и дополнительный .aab файл, если он включен. Чтобы выпустить сборку в Магазин Play, она должна быть подписана действительным сертификатом, хранящимся в хранилище ключей. Чтобы подписать сборки, созданные из ветви, включите подписывание кода в области конфигурации, отправьте хранилище ключей в репозиторий и укажите соответствующие учетные данные в области конфигурации. Дополнительные сведения о входе кода см. в документации по подписи кода Android в Центре приложений. Будет .aab подписан с использованием того же удостоверения, что и .apk .

3.6. Запуск успешной сборки на реальном устройстве

Используйте созданный APK-файл, чтобы проверить, запускается ли приложение на реальном устройстве. Это добавит еще примерно 10 минут к общему времени сборки. Узнайте больше о настройке тестов запуска.

3.7. Настройка из файла build.gradle (уровень приложения)

Из файла Gradle будут собираться конкретные сведения о сборке, включая зависимости, версию средств сборки, типы сборки и варианты продуктов.

3.8. Распространение сборки

Каждую успешную сборку из ветви можно настроить для распространения в ранее созданную группу рассылки или место назначения хранилища. Вы можете добавить новую группу рассылки или настроить подключение к хранилищу из службы распространения. Всегда существует группа рассылки по умолчанию с именем «Участники совместной работы», в которую входят все пользователи, имеющие доступ к приложению.

При распространении в Google Play Store предпочтительнее использовать пакет приложений Android ( .aab ), который будет распространяться, если он включен. Для групп рассылки Центра приложений и Intune назначений магазинов будет использоваться обычный .apk .aab , даже если также создается .

4. Результаты сборки

После активации сборки она может находиться в следующих состояниях:

  • queued — сборка находится в очереди, ожидающей освобождения ресурсов.
  • building — приложение создает и выполняет связанные задачи.
  • succeeded — сборка успешно завершена.
  • failed — сборка завершена, но завершилась сбоем. Вы можете скачать и проверить журнал сборки для устранения неполадок.
  • canceled — сборка была отменена действием пользователя или истекло время ожидания.

4.1. Журналы сборки

Для завершенной сборки (успешной или неудачной) скачайте журналы, чтобы понять, как она прошла. Центр приложений предоставляет архив со следующими файлами:

|-- 1_build.txt (this is the general build log) |-- build (this folder contains a separate log file for each build step) |-- |-- |-- |-- (e.g. n_Post Job Cleanup.txt) 

Журналы для конкретных этапов сборки (расположенные в каталоге сборки или архива) полезны для устранения неполадок и понимания того, на каком этапе и почему сборка завершилась сбоем.

4.2. Пакет приложения (APK)

ПАКЕТ APK — это пакет, содержащий приложение и ресурсы Android. Если сборка подписана правильно, пакет APK можно установить на реальном устройстве и развернуть в Магазине Play. Если сборка не подписана, пакет APK можно запустить в эмуляторе или использовать для других целей.

4.3. Создание нескольких apk

Если конфигурация приложения создает несколько apk, необходимо также создать универсальный пакет APK. Наша система сборки работает с одним основным APK-файлом и игнорирует все пакеты AP, относящиеся к определенной производительности ЦП или плотности экрана. Дополнительные сведения о разбиениях APK и создании универсального пакета APK см. в руководстве по разделу ABI.

4.4. Файл сопоставления деобфускации (mapping.txt)

Файл mapping.txt содержит сведения о том, как сопоставить скрытые трассировки стека для приложения с именами исходных классов и методов.

  • Если вы ранее интегрировали пакет SDK центра приложений в свое приложение с включенным модулем отчетов о сбоях и использовали Proguard или R8 для минификации и маскировки двоичного файла приложения, служба отчетов о сбоях требует, чтобы этот mapping.txt файл для сборки отображал отчеты о сбоях, читаемые человеком (обезобученные).
  • Если вы ранее интегрировали в приложение другой пакет SDK для создания отчетов о сбоях (например, пакет SDK HockeyApp), для соответствующей службы требуется mapping.txt , чтобы файл отображал читаемые отчеты о сбоях.

5. Поддерживаемые версии и требования

Минимальная версия, поддерживаемая для создания приложений Android, — 7.0 (УРОВЕНЬ API 24). Приложения Android могут иметь более низкий минимальный уровень API, необходимый для запуска, но должны быть ориентированы на API по крайней мере уровня 24.

Для правильной настройки приложений необходимо выполнять сборку с помощью Gradle и подключаемого модуля Android Gradle. Репозиторий должен содержать оболочку Gradle.

Создаем приложение для ANDROID быстро и просто

Сегодня я хотел бы поделиться с Вами, как быстро и просто можно создать приложение для Android с базовыми знаниями HTML CSS и JS. По данному примеру код на Java для Android будет минимальным. Благодаря платформе XAMARIN приложения для мобильных телефонов можно делать в Visual Studio.

▍Шаг 1 — Переходим на сайт и Скачиваем бесплатную версию Community.

▍Шаг 2 — Запускаем установку и выбираем параметры. Нас интересует XAMARIN. Но Вы также можете выбрать другие параметры.

После успешной установки мы можем создать свой первый проект.

▍Шаг 3 — Запускаем Visual Studio. Создать проект. В фильтре пишем xamarin, платформа Android, язык c# (Если желаете другой язык можете его выбрать)

▍Шаг 4 — Далее. Указываете имя для своего приложения, выбираете каталог где его сохранить. Создать.

▍Шаг 5 — Указываем пустое приложение и выбираем минимальную версию андроида для запуска этого приложения.

▍Шаг 6 — Жмем ок. Visual Studio автоматически создает код для приложения

Мы можем его запустить в эмуляторе, который идет комплекте с Visual Studio нажав клавишу F5.

▍Шаг 7 — Теперь немного модифицируем код. В данном случае мы вообще не будем использовать Java. Так как мы будем кодить на C#.

Приводим код к такому виду. Здесь мы создаем WebView контейнер который будет грузить локальный HTML файл, который находится в проекте в папке Assets.

public class MainActivity : AppCompatActivity < WebView mWebview; //это контейнер для просмотра HTML protected override void OnCreate(Bundle savedInstanceState) < base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); mWebview = new WebView(this); mWebview.Settings.JavaScriptEnabled = true; //это разрешение работа JS скриптов mWebview.Settings.DomStorageEnabled = true; //это разрешение на запись в память браузера mWebview.Settings.BuiltInZoomControls = true; //это разрешение на масштабирование пальцами щипком mWebview.Settings.DisplayZoomControls = false; //это запрет вывода кнопок масштаба mWebview.Settings.CacheMode = CacheModes.NoCache; //это отключает либо включает кэширование данных mWebview.LoadUrl($"file:///android_asset/Content/login.html"); //это загрузка локального файла из папки Asset/Content SetContentView(mWebview); >public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) < Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); >>

▍Шаг 8 — Создадим там папку Content.

▍Шаг 9 — Добавим в папку Content файл login.html

▍Шаг 10 — Далее уже пишем на привычном нам HTML CSS JS. Можем нажать на F5 и увидеть результат нашей работы.

По такому принципу можно создать приложение быстро и просто. Файлы html будут выглядеть одинаково на всех устройствах. То есть, Вы можете сделать приложения для Android и iOS с одинаковым интерфейсом. Не надо изучать сложные языки разметки, не надо изучать сложные макеты (сториборды) на iOS. Все можно сделать на HTML.

В идеале, вместо локальных файлов можно сделать загрузку со стороннего сайта. В этом случае Вы можете менять контент приложения без его обновления в AppStore и Google Play.

Q: Но как быть с функциями самой платформы? Пуш сообщения? Как взаимодействовать с самой платформой?

Все очень просто! JavaScript можно использовать для вызова функций Android:

▍Шаг 1 — Немного модифицируем наш файл MainActivity

//добавляем интерфейс для javascript mWebview.AddJavascriptInterface(new JavaScriptInterface(), "interface"); //

▍Шаг 2 — Далее создаем класс JavaScriptInterface на который будет ругаться Visual Studio

 public class JavaScriptInterface : Java.Lang.Object < [JavascriptInterface] [Export("alert")] //здесь мы указываем название функции вызываемой из html файла interface.alert('сообщение пользователю'); public void alert(string data) < Toast.MakeText(Application.Context, data, ToastLength.Short).Show();//здесь Андроид выведет сообщение посредством Toast >>

Мы видим, что теперь программа ругается на Export так как не знает что это такое.

▍Шаг 3 — Добавим нужную библиотеку

▍Шаг 4 — В фильтре напишем mono

▍Шаг 5 — Найдем Export и поставим галочку

▍Шаг 6 — Жмем ок и видим что ошибка пропала.

Так вы можете подключать библиотеки если вдруг Visual Studio ругается на что то.

Toast.MakeText(Application.Context, data, ToastLength.Short).Show();

Данная функция это показ всплывающей информации на экране. Она выполняется именно на платформе Андроида. То есть мы можем написать в HTML файле вызов функции Андроида. Получается полное дружелюбие двух платформ по JavaScript интерфейсу. Данные можно передавать туда сюда. Вызывать переход от одной активити в другую. Все через HTML + JavaScript.

Немного модифицируем файл login.htm:

   h1 

Привет мир

Теперь при нажатии на кнопку HTML вызывается функция Toast андроида и выводиться сообщение пользователю.

Спасибо за внимание.

P.s. Полный листинг MainActivity

using Android.App; using Android.OS; using Android.Runtime; using Android.Webkit; using Android.Widget; using AndroidX.AppCompat.App; using Java.Interop; namespace MyFirstApp < [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)] public class MainActivity : AppCompatActivity < WebView mWebview; //это контейнер для просмотра HTML protected override void OnCreate(Bundle savedInstanceState) < base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); mWebview = new WebView(this); mWebview.Settings.JavaScriptEnabled = true; //это разрешение работа JS скриптов mWebview.Settings.DomStorageEnabled = true; //это разрешение на запись в память браузера mWebview.Settings.BuiltInZoomControls = true; //это разрешение на масштабирование пальцами щипком mWebview.Settings.DisplayZoomControls = false; //это запрет вывода кнопок масштаба mWebview.Settings.CacheMode = CacheModes.NoCache; //это отключает либо включает кэширование данных //добавляем интерфейс для javascript mWebview.AddJavascriptInterface(new JavaScriptInterface(), "interface"); // mWebview.LoadUrl($"file:///android_asset/Content/login.html"); //это загрузка локального файла из папки Asset/Content SetContentView(mWebview); >public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) < Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); >> public class JavaScriptInterface : Java.Lang.Object < [JavascriptInterface] [Export("alert")] public void alert(string data) < Toast.MakeText(Application.Context, data, ToastLength.Short).Show(); >> >


  • Блог компании RUVDS.com
  • Разработка под Android

Знакомство с Android. Краткое руководство

В этом состоящем из двух частей руководстве вы узнаете, как создать первое приложение Xamarin.Android в Visual Studio. Вы также получите представление об основах разработки приложений Android с помощью Xamarin.

Вы создадите приложение, которое преобразовывает введенный пользователем буквенно-цифровой телефонный номер в числовой телефонный номер и отображает результат пользователю. Окончательный вариант приложения выглядит примерно так:

Снимок экрана окончательного варианта приложения, преобразующего телефонный номер.

Требования к Windows

Для выполнения данного пошагового руководства необходимо следующее:

  • Windows 10.
  • Visual Studio 2019 или Visual Studio 2017 версии 15.8 или более поздней: Community, Professional или Enterprise.

Требования к macOS

Для выполнения данного пошагового руководства необходимо следующее:

  • Последняя версия Visual Studio для Mac.
  • Компьютер Mac под управлением macOS HIgh Sierra 10.13 или более поздней версии.

В этом пошаговом руководстве предполагается, что на вашей платформе установлена и запущена последняя версия Xamarin.Android. Инструкции по установке Xamarin.Android см. в разделе Установка Xamarin.Android.

Настройка эмуляторов

Если вы используете эмулятор Android, рекомендуем настроить в нем использование аппаратного ускорения. Инструкции по настройке аппаратного ускорения см. в разделе Аппаратное ускорение для производительной работы эмулятора.

Создание проекта

Запустите Visual Studio. Щелкните Файл > Новый > проект , чтобы создать новый проект.

В диалоговом окне Новый проект выберите шаблон Приложение Android. Задайте для нового проекта имя Phoneword и нажмите кнопку ОК:

Новый проект — Phoneword

В диалоговом окне Новое приложение Android щелкните Пустое приложение и нажмите кнопку ОК, чтобы создать новый проект.

Выбор шаблона

Создание макета

Новые выпуски Visual Studio поддерживают открытие XML-файлов в Android Designer.

Android Designer поддерживает как файлы AXML, так и XML.

После создания проекта разверните папку Ресурсы и затем папку макета в обозревателе решений. Дважды щелкните файл activity_main.axml, чтобы открыть его в Android Designer. Это файл макета для экрана приложения:

Открытие axml-файла действия

Более новые выпуски Visual Studio содержат немного другой шаблон приложений.

  1. Макет находится в content_main.axml, а не в activity_main.axml.
  2. Макет по умолчанию — RelativeLayout . Чтобы выполнить остальные шаги на этой странице, нужно изменить тег на и добавить другой атрибут android:orientation=»vertical» в открывающий тег LinearLayout .

На панели элементов (область слева) введите text в поле поиска и перетащите мини-приложение Text (Large) (Крупный текст) в область конструктора (в центре):

Добавление мини-приложения с большим текстом

Выбрав элемент управления Крупный текст в области конструктора, используйте область Свойства, чтобы изменить свойство Text мини-приложения Крупный текст на Enter a Phoneword: :

Задание свойств большого текста

Перетащите мини-приложение Обычный текст из панели элементов в область конструктора и поместите его под мини-приложением Крупный текст. Размещение мини-приложения не будет выполняться, пока вы не переместите указатель мыши на место в макете, которое может принять мини-приложение. На снимках экрана ниже мини-приложение нельзя разместить (как показано в левой части), пока указатель мыши не переместится под предыдущий TextView (как показано в правой части):

Мышь указывает, где можно разместить мини-приложение

Когда Обычный текст (мини-приложение EditText ) будет помещен правильно, он будет отображаться, как показано на следующем снимке экрана:

Добавление мини-приложения в виде обычного текста

Выбрав мини-приложение Обычный текст в области конструктора, используйте область Свойства, чтобы изменить свойство Id мини-приложения Обычный текст на @+id/PhoneNumberText , а свойство Text на 1-855-XAMARIN :

Задание свойств обычного текста

Перетащите элемент Кнопка из панели элементов в область конструктора и поместите его под мини-приложением Обычный текст:

Перетащите кнопку перевода в макет

Выбрав элемент Кнопка в области конструктора, используйте область Свойства, чтобы изменить свойство Text на Translate , а свойство Id — на @+id/TranslateButton :

Задание свойств кнопки перевода

Перетащите элемент TextView из панели элементов в область конструктора и поместите его под мини-приложением Кнопка. Задайте для свойства Text элемента TextView пустую строку, а для свойства Id — значение @+id/TranslatedPhoneword :

Задание свойств для текстового представления.

Сохраните изменения, нажав клавиши CTRL+S.

Написание кода

Следующим шагом является добавление кода для преобразования телефонных номеров из буквенно-цифровых в цифровые. Добавьте новый файл в проект, щелкнув правой кнопкой мыши проект Phoneword в области Обозреватель решений и выбрав команду Добавить > новый элемент. как показано ниже.

Добавление нового элемента

В диалоговом окне Добавление нового элемента выберите Visual C# Code Code File (Файл кода Visual > C#>) и присвойте новому файлу кода имя PhoneTranslator.cs:

Добавление PhoneTranslator.cs

Создается пустой класс C#. Вставьте в этот файл следующий код:

using System.Text; using System; namespace Core < public static class PhonewordTranslator < public static string ToNumber(string raw) < if (string.IsNullOrWhiteSpace(raw)) return ""; else raw = raw.ToUpperInvariant(); var newNumber = new StringBuilder(); foreach (var c in raw) < if (" -0123456789".Contains(c)) < newNumber.Append(c); >else < var result = TranslateToNumber(c); if (result != null) newNumber.Append(result); >// otherwise we've skipped a non-numeric char > return newNumber.ToString(); > static bool Contains (this string keyString, char c) < return keyString.IndexOf(c) >= 0; > static int? TranslateToNumber(char c) < if ("ABC".Contains(c)) return 2; else if ("DEF".Contains(c)) return 3; else if ("GHI".Contains(c)) return 4; else if ("JKL".Contains(c)) return 5; else if ("MNO".Contains(c)) return 6; else if ("PQRS".Contains(c)) return 7; else if ("TUV".Contains(c)) return 8; else if ("WXYZ".Contains(c)) return 9; return null; >> > 

Сохраните изменения в файле PhoneTranslator.cs, нажав кнопку Сохранить файл > (или нажав клавиши CTRL+S), а затем закройте файл.

Подключение пользовательского интерфейса

Следующим шагом является добавление кода для подключения пользовательского интерфейса путем вставки вспомогательного кода в класс MainActivity . Начните с подключения кнопки Translate (Преобразование). В классе MainActivity найдите метод OnCreate . Следующим шагом является добавление кода кнопки в OnCreate , под вызовами base.OnCreate(savedInstanceState) и SetContentView(Resource.Layout.activity_main) . Сначала измените код шаблона, чтобы метод OnCreate принял следующий вид:

using Android.App; using Android.OS; using Android.Support.V7.App; using Android.Runtime; using Android.Widget; namespace Phoneword < [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)] public class MainActivity : AppCompatActivity < protected override void OnCreate(Bundle savedInstanceState) < base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.activity_main); // New code will go here >> > 

Получите ссылку на элементы управления, созданные в файле макета с помощью Android Designer. Добавьте следующий код внутрь метода OnCreate после вызова SetContentView :

// Get our UI controls from the loaded layout EditText phoneNumberText = FindViewById(Resource.Id.PhoneNumberText); TextView translatedPhoneWord = FindViewById(Resource.Id.TranslatedPhoneword); Button translateButton = FindViewById(Resource.Id.TranslateButton); 

Добавьте код, который реагирует на нажатие пользователем кнопки Translate (Преобразовать). Добавьте следующий код в метод OnCreate (после строк, добавленных на предыдущем шаге):

// Add code to translate number translateButton.Click += (sender, e) => < // Translate user's alphanumeric phone number to numeric string translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text); if (string.IsNullOrWhiteSpace(translatedNumber)) < translatedPhoneWord.Text = string.Empty; >else < translatedPhoneWord.Text = translatedNumber; >>; 

Сохраните работу, выбрав Файл > Сохранить все (или нажав клавиши CTRL+SHIFT+S) и создайте приложение, выбрав Сборка > перестроить решение (или нажав клавиши CTRL+SHIFT+B).

При наличии ошибок просмотрите предыдущие шаги и исправьте все ошибки, пока сборка приложения не будет проходить успешно. Если возникает ошибка сборки, например Resource does not exist in the current context (Ресурс не существует в текущем контексте), убедитесь, что имя пространства имен в MainActivity.cs совпадает с именем проекта ( Phoneword ), после чего полностью перестройте решение. Если по-прежнему возникают ошибки сборки, убедитесь, что установлены последние обновления Visual Studio.

Задайте имя приложения

Теперь у вас должно быть рабочее приложение— пришло время задать имя приложения. Разверните папку values (в папке Resources) и откройте файл strings.xml. Измените строку имени приложения на Phone Word , как показано здесь:

 Phone Word Settings  

Запуск приложения

Протестируйте приложение, запустив его на устройстве или эмуляторе Android. Коснитесь кнопки TRANSLATE, чтобы преобразовать 1-855-XAMARIN в телефонный номер:

Снимок экрана с запущенным приложением

Чтобы запустить приложение на устройстве Android, см., как настроить устройство для разработки.

Запустите Visual Studio для Mac из папки Applications (Приложения) или из Spotlight.

Щелкните Создать проект. , чтобы создать проект.

В диалоговом окне Выбор шаблона для нового проекта щелкните Приложение Android > и выберите шаблон Приложение Android. Щелкните Далее.

Выбор шаблона приложения Android

В диалоговом окне Настройте приложение Android назовите новое приложение Phoneword и нажмите кнопку Далее.

Настройка приложения Android

В диалоговом окне Настройте приложение Android оставьте имена проекта и решения в виде Phoneword и нажмите кнопку Создать для создания проекта.

Создание макета

Новые выпуски Visual Studio поддерживают открытие XML-файлов в Android Designer.

Android Designer поддерживает как файлы AXML, так и XML.

После создания проекта разверните папку Ресурсы и затем папку макета на Панели решения. Дважды щелкните Main.axml, чтобы открыть его в Android Designer. Это файл макета для экрана при просмотре в Android Designer:

Откройте Файл Main.axml.

Выберите Hello World нажмите кнопку Я!Нажмите кнопку в области конструктора и нажмите клавишу DELETE, чтобы удалить ее.

На панели элементов (область справа) введите text в поле поиска и перетащите мини-приложение Text (Large) (Крупный текст) в область конструктора (в центре):

Добавление мини-приложения с большим текстом

Выбрав мини-приложение Text (Large) (Крупный текст) в области конструктора, используйте область Свойства, чтобы изменить свойство Text мини-приложения Text (Large) (Крупный текст) на Enter a Phoneword: , как показано ниже:

Задание свойств мини-приложения с большим текстом

После этого перетащите мини-приложение Обычный текст из панели элементов в область конструктора и поместите его под мини-приложением Text (Large) (Крупный текст). Обратите внимание, что можно использовать поле поиска для поиска мини-приложений по имени:

Добавление мини-приложения в виде обычного текста

Выбрав мини-приложение Обычный текст в области конструктора, используйте область Свойства, чтобы изменить свойство Id мини-приложения Обычный текст на @+id/PhoneNumberText , а свойство Text на 1-855-XAMARIN :

Задание свойств мини-приложения в виде обычного текста

Перетащите элемент Кнопка из панели элементов в область конструктора и поместите его под мини-приложением Обычный текст:

Добавить кнопку

Выбрав элемент Кнопка в области конструктора, используйте область Свойства, чтобы изменить свойство Id элемента Кнопка на @+id/TranslateButton , а свойство Text на Translate :

Настройка в качестве кнопки перевода

Перетащите элемент TextView из панели элементов в область конструктора и поместите его под мини-приложением Кнопка. Выбрав TextView, задайте для свойства id элемента TextView значение @+id/TranslatedPhoneWord и измените text на пустую строку:

Задание свойств для текстового представления.

Сохраните работу, нажав клавиши ⌘+S.

Написание кода

Теперь добавьте код для преобразования телефонных номеров из буквенно-цифровых в цифровые. Добавьте новый файл в проект, щелкнув значок шестеренки рядом с проектом Phoneword на панели решения и выбрав Добавить > новый файл. :

Добавление нового файла в проект

В диалоговом окне Новый файл выберите Общие > Пустой класс, назовите новый файл PhoneTranslator и нажмите кнопку Создать. Создается пустой класс C#.

Удалите весь код шаблона в новом классе и замените его следующим:

using System.Text; using System; namespace Core < public static class PhonewordTranslator < public static string ToNumber(string raw) < if (string.IsNullOrWhiteSpace(raw)) return ""; else raw = raw.ToUpperInvariant(); var newNumber = new StringBuilder(); foreach (var c in raw) < if (" -0123456789".Contains(c)) < newNumber.Append(c); >else < var result = TranslateToNumber(c); if (result != null) newNumber.Append(result); >// otherwise we've skipped a non-numeric char > return newNumber.ToString(); > static bool Contains (this string keyString, char c) < return keyString.IndexOf(c) >= 0; > static int? TranslateToNumber(char c) < if ("ABC".Contains(c)) return 2; else if ("DEF".Contains(c)) return 3; else if ("GHI".Contains(c)) return 4; else if ("JKL".Contains(c)) return 5; else if ("MNO".Contains(c)) return 6; else if ("PQRS".Contains(c)) return 7; else if ("TUV".Contains(c)) return 8; else if ("WXYZ".Contains(c)) return 9; return null; >> > 

Сохраните изменения в файле PhoneTranslator.cs, выбрав Сохранить файл > (или нажав клавиши ⌘+S), а затем закройте файл. Убедитесь, что ошибки времени компиляции отсутствуют, перестроив решение.

Подключение пользовательского интерфейса

Следующим шагом является добавление кода для подключения пользовательского интерфейса путем добавления вспомогательного кода в класс MainActivity . Дважды щелкните MainActivity.cs на Панели решения, чтобы открыть его.

Сначала добавьте обработчик событий для кнопки Translate (Преобразование). В классе MainActivity найдите метод OnCreate . Добавьте код кнопки в OnCreate , под вызовами base.OnCreate(bundle) и SetContentView (Resource.Layout.Main) . Удалите любой имеющийся код для обработки кнопок (т. е. код, который ссылается на Resource.Id.myButton и создает соответствующий обработчик щелчка), чтобы метод OnCreate принял следующий вид:

using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; namespace Phoneword < [Activity (Label = "Phone Word", MainLauncher = true)] public class MainActivity : Activity < protected override void OnCreate (Bundle bundle) < base.OnCreate (bundle); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); // Our code will go here >> > 

После этого нужно получить ссылку на элементы управления, созданные в файле макета с помощью Android Designer. Добавьте следующий код внутрь метода OnCreate после вызова SetContentView :

// Get our UI controls from the loaded layout EditText phoneNumberText = FindViewById(Resource.Id.PhoneNumberText); TextView translatedPhoneWord = FindViewById(Resource.Id.TranslatedPhoneWord); Button translateButton = FindViewById(Resource.Id.TranslateButton); 

Добавьте код, который реагирует на нажатие пользователем кнопки Translate (Преобразовать), добавив следующий код в метод OnCreate (после строк, добавленных на предыдущем шаге):

// Add code to translate number string translatedNumber = string.Empty; translateButton.Click += (sender, e) => < // Translate user's alphanumeric phone number to numeric translatedNumber = PhonewordTranslator.ToNumber(phoneNumberText.Text); if (string.IsNullOrWhiteSpace(translatedNumber)) < translatedPhoneWord.Text = string.Empty; >else < translatedPhoneWord.Text = translatedNumber; >>; 

Сохраните свою работу и выполните сборку приложения, выбрав Собрать > все (или нажав клавиши ⌘+B). Если приложение компилируется, в верхней части Visual Studio для Mac отображается сообщение об успешном выполнении:

При наличии ошибок просмотрите предыдущие шаги и исправьте все ошибки, пока сборка приложения не будет проходить успешно. Если возникает ошибка сборки, например Resource does not exist in the current context (Ресурс не существует в текущем контексте), убедитесь, что имя пространства имен в MainActivity.cs совпадает с именем проекта ( Phoneword ), после чего полностью перестройте решение. Если по-прежнему возникают ошибки сборки, убедитесь, что установлены последние обновления Xamarin.Android и Visual Studio для Mac.

Настройка метки и значка приложения

Теперь, когда вы получили работающее приложение, пора внести последние штрихи. Сначала измените Label для MainActivity . Label — это то, что Android отображает в верхней части экрана, чтобы пользователи знали, что они находятся в приложении. В начале класса MainActivity измените Label на Phone Word , как показано ниже:

namespace Phoneword < [Activity (Label = "Phone Word", MainLauncher = true)] public class MainActivity : Activity < . >> 

Пришло время задать значок приложения. По умолчанию Visual Studio для Mac предоставляет для проекта значок по умолчанию. Удалите эти файлы из решения и замените их другим значком. Разверните папку Ресурсы на Панели решения. Обратите внимание, что имеется 5 папок, которые начинаются с префикса mipmap- , и каждая из них содержит один файл Icon.png:

папки mipmap и файлы Icon.png

Нужно удалить каждый из этих файлов значков из проекта. Щелкните правой кнопкой мыши каждый из файлов Icon.png и выберите пункт Удалить в контекстном меню:

Удаление Icon.pngпо умолчанию

Нажмите кнопку Удалить в диалоговом окне.

Затем скачайте и распакуйте набор значков приложения Xamarin. Этот ZIP-файл содержит значки для приложения. Все значки выглядят одинаково, но имеют разное разрешение и правильно отображаются на разных устройствах с различной плотностью экрана. Этот набор файлов нужно скопировать в проект Xamarin.Android. В Visual Studio для Mac на панели решения щелкните правой кнопкой мыши папку mipmap-hdpi и выберите Добавить > добавить файлы:

Добавление файлов

Из диалогового окна выбора перейдите в каталог с распакованными значками Xamarin AdApp и откройте папку mipmap-hdpi. Выберите Icon.png и нажмите кнопку Открыть.

В диалоговом окне Добавить файл в папку выберите Copy the file into the directory (Копировать файл в каталог) и нажмите кнопку ОК:

Копирование файла в диалоговое окно каталога

Повторите эти шаги для каждой папки mipmap- , пока не скопируете содержимое папок mipmap- со значками приложения Xamarin в аналогичные папки mipmap- в проекте Phoneword.

Скопировав все значки в проект Xamarin.Android, откройте диалоговое окно Параметры проекта, щелкнув правой кнопкой мыши проект на Панели решения. Выберите Build Android Application (Сборка > приложения Android) и выберите @mipmap/icon в поле со списком Значок приложения :

Настройка значка проекта

Запуск приложения

Наконец, протестируйте приложение, запустив его на устройстве или эмуляторе Android и преобразовав слово-номер:

Снимок экрана: приложение после его завершения

Чтобы запустить приложение на устройстве Android, см., как настроить устройство для разработки.

Поздравляем! Вы создали свое первое приложение Xamarin.Android! Пришло время закрепить и углубить приобретенные знания и навыки. Следующий раздел Привет, Android: теперь подробнее.

Связанные ссылки

  • Значки приложения Xamarin Android (ZIP)
  • Phoneword (пример)

Создание приложений Xamarin для Android

Чтобы приступить к созданию первого приложения Xamarin Android, необходимо:

  1. Подключитесь к учетной записи службы репозитория (GitHub, Bitbucket, VSTS, Azure DevOps).
  2. Выберите репозиторий и ветвь, в которой находится ваше приложение.
  3. Выберите проект Android, который вы хотите создать.
  4. Настройте первую сборку.

Чтобы приложение выполнялось на реальном устройстве, необходимо подписать сборку с помощью допустимого KeyStore.

1. Связывание репозитория

Если вы ранее не подключались к учетной записи службы репозитория, сначала это необходимо сделать. После подключения учетной записи выберите репозиторий, в котором находится проект Xamarin. Для настройки сборки для репозитория необходимо иметь разрешения администратора и на вытягивание.

2. Выбор ветви

Выбрав репозиторий, выберите ветвь, которую вы хотите создать. По умолчанию в Центре приложений перечислены все активные ветви.

3. Настройка сборки

Проект Xamarin необходимо настроить перед первой сборкой.

3.1. Триггеры сборки

По умолчанию служба сборки использует непрерывную интеграцию, поэтому новая сборка активируется при каждой отправке разработчиком в настроенную ветвь. Если вы предпочитаете запускать новые сборки вручную, этот параметр можно изменить в области конфигурации.

3.2. Проект и конфигурация

Доступные проекты в репозитории будут заполнены, если они находятся в диапазоне анализа. Выберите правильный проект для сборки Android и выберите соответствующую конфигурацию.

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

3.3. Версия Mono

Центр приложений позволяет использовать различные среды Mono, в комплекте с соответствующим пакетом SDK для Xamarin.Android для сборок. Таким образом, мы сохраняем обратную совместимость, а также поддерживаем новейшие функции. По умолчанию для конфигурации новой ветви используется последняя стабильная версия Mono. Вы можете использовать одну из предыдущих сред Mono для создания старых версий платформ или библиотек.

При выборе версии Mono в конфигурации сборки пакет sdk для Xamarin.Android отображается рядом с ней. Дополнительные сведения об обновлениях версии пакета SDK для Xamarin см. в блоге о выпуске Xamarin.

3.3.1. Версия .NET Core

Правильная версия .NET Core будет выбрана автоматически на основе версии Mono, используемой для сборки, и ее нельзя будет перезаписать. Сопоставление Mono с .NET Core, используемой нашими службами, можно просмотреть в следующей таблице:

Mono .NET Core
2.2.105
6,0 2.2.300
6.4 3.0.100
6.6 3.1.100
6,8 3.1.200
6.10 3.1.300
6,12 3.1.401

3.4. Сборка пакета приложений Android (.aab)

Пакет приложений Android — это формат распространения, который используется для создания оптимизированных пакетов APK для определенных устройств. Его можно загрузить в Магазин Play. Дополнительные сведения о пакете приложений Android см. в официальной документации по Android, а также в заметках о выпуске Xamarin.Android 9.4, которые также помогут вам решить, нужно ли создавать пакет вместе с обычными .apk.

Переключите параметр пакета приложений .aab Android, чтобы создать и .apk . .csproj Если файл содержится aab в свойстве AndroidPackageFormat , этот параметр автоматически включается. Сборка .aab поддерживается для Xamarin.Android 9.4 и более поздних версий.

3.5. Приращение номера версии

Если этот параметр включен, код версии в AndroidManifest.xml приложения автоматически увеличивается для каждой сборки. Изменение происходит до сборки и не будет зафиксировано в репозитории.

3.6. подписывание кода;

При успешной сборке .apk будет создан файл и дополнительный .aab файл, если он включен. Чтобы выпустить сборку в Play Store, она должна быть подписана с помощью допустимого хранилища ключей и псевдонима. Чтобы подписать сборки, созданные из ветви, включите подписывание кода в области конфигурации, отправьте хранилище ключей и укажите необходимые значения в области конфигурации. Вы можете ознакомиться с более подробными инструкциями по подписи кода. Будет .aab подписан с использованием того же удостоверения, что и .apk .

3.7. Запуск успешной сборки на реальном устройстве

Используйте созданный .apk файл, чтобы проверить, запускается ли приложение на реальном устройстве. Это добавит еще примерно 10 минут к общему времени сборки. Дополнительные сведения см. в руководстве по интеграции тестов.

3.8. Восстановление NuGet

NuGet.config Если файл возвращен в репозиторий и находится рядом с .sln файлом или на корневом уровне репозитория, Центр приложений восстанавливает частные веб-каналы NuGet при их добавлении, как показано в примере ниже. Учетные данные можно безопасно добавлять с помощью переменных среды:

Если у вас есть сложные конфигурации и вам нужны дополнительные сведения, см . статью Настройка поведения NuGet.

3.9. Распространение сборки

Каждую успешную сборку из ветви можно настроить для распространения в ранее созданную группу рассылки или место назначения хранилища. Вы можете добавить новую группу рассылки или настроить подключение к хранилищу из службы распространения. Всегда существует группа рассылки по умолчанию с именем «Участники совместной работы», в которую входят все пользователи, имеющие доступ к приложению.

При распространении в Google Play Store предпочтительнее использовать пакет приложений Android ( .aab ), который будет распространяться, если он включен. Для групп рассылки Центра приложений и Intune назначений магазинов будет использоваться обычный .apk .aab , даже если также создается .

4. Результаты сборки

После активации сборки сборка будет находиться в одном из следующих состояний:

  • queued — сборка находится в очереди, ожидающей освобождения ресурсов.
  • building — сборка выполняется.
  • succeeded — сборка успешно завершена.
  • failed — сборка остановлена со сбоями. Вы можете устранить неполадки, скачав и проверив журнал сборки.
  • canceled — сборка была отменена действием пользователя или истекло время ожидания.

4.1. Журналы сборки

Для завершенной сборки (успешной или неудачной) скачайте журналы, чтобы понять, как она прошла. Центр приложений предоставляет архив со следующими файлами:

|-- 1_build.txt (this is the general build log) |-- build (this folder contains a separate log file for each build step) |-- |-- |-- |-- (e.g. n_Post Job Cleanup.txt) 

Журналы шагов сборки (расположенные build/ в каталоге архива) помогают понять, на каком этапе и почему сборка завершилась сбоем.

4.2. Приложение (.apk)

Файл .apk представляет собой упакованный файл приложения Android, в котором хранится приложение Android. Если сборка была правильно подписана .apk , файл можно установить на реальном устройстве и развернуть в Магазине Play. Если сборка не подписана, приложение можно запустить в эмуляторе или использовать для других целей.

Поддерживаемые версии и требования

Центр приложений поддерживает проекты переносимой библиотеки классов (PCL) и .NET Standard . Сведения о версиях .NET Standard см. в статье Облачные компьютеры сборки.

Центр приложений не поддерживает компоненты из хранилища компонентов Xamarin, и мы рекомендуем использовать пакеты NuGet, когда они доступны. Если вы используете компонент, который невозможно заменить, свяжитесь с нами. См . справку и отзывы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *