Xamarin android create apk

Приступая к разработке для Android с помощью Xamarin. Android

это руководство поможет приступить к работе с Xamarin. Android на Windows, чтобы создать кросс-платформенное приложение, которое будет работать на устройствах Android.

в этой статье вы создадите простое приложение Android с помощью Xamarin. Android и Visual Studio 2019.

Требования

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

  • Windows 10
  • Visual Studio 2019: Community, Professional или Enterprise (см. примечание)
  • рабочая нагрузка «разработка мобильных приложений с помощью .net» для Visual Studio 2019

это руководством будет работать с Visual Studio 2017 или 2019. если вы используете Visual Studio 2017, некоторые инструкции могут быть неправильными из-за различий в пользовательском интерфейсе между двумя версиями Visual Studio.

Вам также потребуется телефон Android или настроенный эмулятор для запуска приложения. См. раздел Настройка эмулятора Android.

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

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

В диалоговом окне Новый проект выберите шаблон приложение Android (Xamarin) и нажмите кнопку Далее.

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

В диалоговом окне Создание кросс — платформенного приложения выберите пустое приложение. В минимальной версии Androidвыберите Android 5,0 (без описания операций). Нажмите кнопку ОК.

Xamarin создаст новое решение с одним проектом с именем тимечанжерандроид.

Создание пользовательского интерфейса с помощью XML-кода Android

В каталоге ресаурцес\лайаут проекта откройте activity_main.xml. XML-код в этом файле определяет первый экран, который пользователь увидит при открытии Тимечанжер.

Пользовательский интерфейс Тимечанжер прост. Он отображает текущее время и содержит кнопки для корректировки времени с шагом в один час. Он использует вертикальный LinearLayout для выравнивания времени над кнопками и горизонтально, LinearLayout чтобы расположить кнопки рядом друг с другом. Содержимое выравнивается по центру экрана путем задания для атрибута Android: тяжестицентрирования по вертикали .

Замените содержимое activity_main.xml следующим кодом.

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

Добавление кода логики с помощью C #

Откройте файл MainActivity.cs. Этот файл содержит логику кода программной части, которая будет добавлять функции в пользовательский интерфейс.

Установка текущего времени

Сначала получите ссылку на объект TextView , который будет отображать время. Используйте финдвиевбид для поиска всех элементов пользовательского интерфейса с правильным идентификатором Android: ID (который был задан в XML-коде из предыдущего шага). Это то TextView , что будет отображать текущее время.

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

Читайте также:  Когда будет андроид 12 для oneplus 7 pro

Обновлять текущее время каждую секунду

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

Добавить Хауроффсет

Кнопки вверх и вниз корректируют время с шагом в один час. Добавьте свойство хауроффсет для контроля текущей корректировки.

Теперь обновите метод Упдатетимелабел, чтобы он знал о свойстве Хауроффсет.

Создание обработчиков событий нажатия кнопки

Все кнопки вверх и вниз необходимо выполнить, увеличив или уменьшая свойство Хауроффсет и вызовите Упдатетимелабел.

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

Чтобы связать кнопки с соответствующими обработчиками событий, сначала используйте Финдвиевбид, чтобы найти кнопки по их идентификаторам. После получения ссылки на объект Button можно добавить обработчик событий к его Click событию.

Завершенный файл MainActivity. CS

По завершении MainActivity. cs должен выглядеть следующим образом:

Запустите приложение.

Чтобы запустить приложение, нажмите клавишу F5 или кнопку Отладка начать отладку. В зависимости от настройки отладчикаприложение запустится на устройстве или в эмуляторе.

Источник

Создание пакетов APK для конкретного ABI

В этом документе объясняется, как с помощью Xamarin.Android создать пакет APK, предназначенный для одного конкретного интерфейса ABI.

Обзор

В некоторых ситуациях для приложения удобно использовать несколько пакетов APK, которые имеют одинаковые имена и подписаны с применением одного хранилища ключей, но каждый из которых скомпилирован для конкретного устройства или конфигурации Android. Мы не рекомендуем применять такой подход, ведь намного проще использовать один APK, поддерживающий несколько устройств и конфигураций. Но иногда возникают ситуации, в которых полезно создать несколько APK, в частности:

Уменьшение размера APK. В Google Play для файлов APK действует ограничение в 100 МБ. Создавая отдельные APK для конкретных устройств, вы можете уменьшить размер APK, так как каждый из них будет содержать лишь ограниченный набор файлов и ресурсов.

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

Несколько пакетов APK усложняют процессы распространения, но эта проблема решена в Google Play. Google Play обеспечит доставку на устройство правильной версии APK, определяя ее по коду версии приложения и другим метаданным из файла AndroidManifest.XML. Подробный алгоритм и ограничения, применяемые Google Play для поддержки нескольких пакетов APK в приложении, можно узнать из документации Google о поддержке нескольких APK.

Это руководство описывает, как организовать для приложения Xamarin.Android сборку нескольких пакетов APK, каждый из которых предназначен для конкретной версии ABI. Здесь рассматриваются следующие темы.

  1. Создайте уникальный код версии для apk.
  2. Создайте временную версию AndroidManifest.XML , которая будет использоваться для этого apk.
  3. Создайте приложение, используя AndroidManifest.XML из предыдущего шага.
  4. Подготовка APK к выпуску, включая подписывание и оптимизацию для архива.
Читайте также:  Как сделать папку под андроид

В конце этой статьи представлено пошаговое руководство по выполнению всех этих шагов в сценарии Rake.

Создание кода версии для APK

Google рекомендует соблюдать определенные правила для кодов версий, составляя их из семи цифр (этот алгоритм описан в разделе, посвященном использованию схемы кода версии, документа о поддержке нескольких APK). Расширив эту схему до восьми цифр, вы сможете добавить в код версии сведения об ABI, что позволит Google Play распределять на устройства правильные пакеты APK. Следующий список содержит описание восьми цифр кода версии для этого формата (индексы в коде нумеруются слева направо).

Индекс 0 (красный на схеме ниже) — целое число для ABI:

Индекс 1-2 (оранжевый в схеме ниже) — минимальный уровень API, поддерживаемый приложением.

Индекс 3-4 (синий на схеме ниже) — Поддерживаемые размеры экрана:

  • 1 — Малый
  • 2 — обычная
  • 3 — крупный
  • 4 — ксларже

Индекс 5-7 (зеленый на рисунке ниже) — уникальный номер версии кода. Это значение определяется разработчиком. Оно должно увеличиваться для каждого следующего общедоступного выпуска приложения.

На следующей схеме показано положение каждого элемента кода из списка выше.

Google Play будет доставлять на устройства правильные пакеты APK, используя конфигурацию versionCode и APK. На устройство всегда доставляется APK с самым большим кодом версии. Для примера предположим, что у приложения есть три пакета APK с указанными здесь кодами версий.

  • 11413456- armeabi интерфейс ABI; нацеливание на уровень API 14; маленький на большой экран; с номером версии 456.
  • 21423456- armeabi-v7a интерфейс ABI; нацеливание на уровень API 14; нормальные & крупные экраны; с номером версии 456.
  • 61423456- x86 интерфейс ABI; нацеливание на уровень API 14; нормальные & крупные экраны; с номером версии 456.

Разработчик этого приложения обнаружил и исправил ошибку, которая проявлялась только в armeabi-v7a . Он увеличивает версию приложения до 457 и создает новый пакет APK, у которого android:versionCode имеет значение 21423457. Коды версий для версий armeabi и x86 остаются неизменными.

Теперь разработчик создает новые функции и (или) исправляет ошибки в версии для x86, переходя при этом на более новый API (API уровня 19), и назначает этой версии номер 500. Теперь versionCode будет иметь новое значение 61923500, а версии для armeabi и armeabi-v7a остаются без изменений. К этому моменту сформировались следующие коды версий.

  • 11413456- armeabi интерфейс ABI; нацеливание на уровень API 14; мелкий на большой экран; с именем версии 456.
  • 21423457- armeabi-v7a интерфейс ABI; нацеливание на уровень API 14; нормальные & крупные экраны; с именем версии 457.
  • 61923500- x86 интерфейс ABI; нацеливание на уровень API 19; обычные & крупные экраны; с именем версии 500.

Разработчику может потребоваться немало усилий, чтобы вручную отслеживать все эти версии. Процесс вычисления правильных значений android:versionCode и сборки APK следует автоматизировать. Пример такой автоматизации будет рассмотрен в пошаговом руководстве в конце этой статьи.

Создание временного файла AndroidManifest.XML

Этот шаг не является обязательным, но создание временных файлов AndroidManifest.XML для каждого интерфейса ABI позволит предотвратить ряд проблем, возникающих при утечке данных из одного пакета APK в другой. Например, очень важно сохранять уникальный атрибут android:versionCode для каждого APK.

Читайте также:  Как сделать прозрачный экран андроид

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

Компиляция пакета APK

Сборку APK для каждого ABI лучше всего выполнять с помощью xbuild или msbuild , как показано в следующем примере командной строки:

В следующем списке описывается каждый параметр командной строки:

/t:Package — Создает APK Android, подписанный с помощью хранилища ключей отладки.

/p:AndroidSupportedAbis= — Этот интерфейс ABI предназначен для целевого объекта. Допускаются значения armeabi , armeabi-v7a и x86 .

/p:IntermediateOutputPath=obj. / — Это каталог, в котором будут храниться промежуточные файлы, создаваемые в составе сборки. При необходимости Xamarin.Android создаст этот каталог с именем, совпадающим с именем интерфейса ABI, например obj.armeabi-v7a . Мы рекомендуем использовать отдельную папку для каждого интерфейса ABI, чтобы предотвратить проблемы, возникающие при «утечке» файлов из одной сборки в другую. Обратите внимание, что это значение должно завершаться разделителем каталогов (например, / для OS X).

/p:AndroidManifest — Это свойство указывает путь к файлу /p:AndroidManifest , который будет использоваться во время сборки.

/p:OutputPath=bin. — Это каталог, в котором будут размещены окончательные APK. Xamarin.Android создаст этот каталог с именем, совпадающим с именем интерфейса ABI, например bin.armeabi-v7a .

/p:Configuration=Release — Выполните сборку выпуска APK. Отладочные сборки не всегда загружаются в Google Play.

— Это путь к .csproj файлу для проекта Xamarin. Android.

Подписывание пакета APK и оптимизация для архива

Каждый пакет APK необходимо подписать, чтобы распространять его через Google Play. Для этого можно применить приложение jarsigner , которое входит в комплект средств для разработчиков Java. Пример запуска jarsigner из командной строки приведен ниже:

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

Автоматизация создания APK с помощью Rake

Пример OneABIPerAPK содержит простой проект Android, в котором демонстрируется вычисление номера версии ABI и сборка трех отдельных APK для каждого из следующих ABI:

Файл rakefile в этом примере выполняет все шаги, описанные в предыдущих разделах:

Сохранение android:versionCode в пользовательском файле AndroidManifest.XML для этого APK.

Компиляция сборки выпуска для проекта Xamarin.Android, предназначенной для конкретного ABI и использующей AndroidManifest.XML, созданный на предыдущем шаге.

Подписывание APK с помощью рабочего хранилища ключей.

Чтобы скомпилировать сразу все APK, входящие в приложения, запустите задачу Rake build из командной строки:

Когда выполнение задачи Rake завершится, у вас будет три папки bin с файлом xamarin.helloworld.apk . На следующем снимке экрана показаны все эти папки и их содержимое:

Процесс сборки, описанный в этом руководстве, можно реализовать во многих системах сборки. Хотя у нас нет предварительно написанного примера, его также можно использовать с psake или подложнымPowerShell.

Сводка

В этом руководстве представлены некоторые рекомендации о том, как создать Android APK для определенных интерфейсов ABI. Подробно обсуждается один из вариантов создания android:versionCodes для отслеживания архитектуры ЦП, для которой предназначен пакет APK. Также здесь предоставлено пошаговое руководство по сборке тестового проекта с помощью сценариев Rake.

Источник

Оцените статью