- Сборка Android-проекта в Docker-контейнере
- Настройка пакета SDK для Android для Xamarin.Android
- Обзор
- Требования
- Диспетчер SDK
- Расположение пакета SDK для Android
- Вкладка «Сервис»
- Вкладка «Платформы»
- Выбор репозитория
- Требования
- Диспетчер SDK
- Вкладка «Расположения»
- Вкладка «Сервис»
- Вкладка «Платформы»
- Выбор репозитория
- Сводка
Сборка Android-проекта в Docker-контейнере
Разрабатывая проект под платформу Android, даже самый небольшой, рано или поздно приходится сталкиваться с окружением для разработки. Кроме Android SDK, необходимо чтобы была последняя версия Kotlin, Gradle, platform-tools, build-tools. И если на машине разработчика все эти зависимости решаются в большей мере с помощью Android Studio IDE, то на сервере CI/CD каждое обновление может превратиться в головную боль. И если в web-разработке, решением проблемы окружения стандартом стал Docker, то почему-бы не попробовать решить с помощью него аналогичную проблему и в Android-разработке…
Для тех, кто не знает что такое Docker — если совсем просто, то это инструмент создания т.н. «контейнеров» где содержится минимальное ядро ОС и необходимый набор ПО, которые мы можем разворачивать где захотим, сохраняя при этом окружение. Что именно будет в нашем контейнере определяется в Dockerfile, который потом собирается в образ запускаемый где угодно и обладающий свойства идемпотентности.
Процесс установки и основы Docker прекрасно описаны на его официальном сайте. Поэтому, забегая немного вперед, вот такой Dockerfile у нас получился
Сохраняем его в папку с нашим Android-проектом и запускаем сборку контейнера командой
Параметр -t задает tag или имя нашего контейнера, которое обычно состоит из его название и версии. В нашем случае мы назвали его android-build а в версии указали совокупность версий gradle, android-sdk и platform-tools. В дальнейшем нам проще будет искать нужный нам образ по имени используя такую «версию».
После того как сборка прошла мы можем использовать наш образ локально, можем загрузить его командой docker push в публичный или приватный репозиторий образов чтобы скачивать его на другие машины.
В качестве примера соберем локально проект. Для этого в папке с проектом выполним команду
Разберем что она означает:
docker run — сама команда запуска образа
-rm — означает что после остановки контейнера он удаляет за собой все что создавалось в процессе его жизни
-v «$PWD»:/home/gradle/ — монтирует текущую папку с нашим Android-проектом во внутреннюю папку контейнера /home/gradle/
-w /home/gradle — задает рабочую директорию контейнера
android-build:5.4.1-28-27 — имя нашего контейнера, который мы собрали
gradle assembleDebug — собственно команда сборки, которая собирает наш проект
Если все сложиться удачно, то через пару секунд/минут вы увидите у себя на экране что-то вроде BUILD SUCCESSFUL in 8m 3s! А в папке app/build/output/apk будет лежать собранное приложение.
Аналогичным образом можно выполнять другие задачи gradle — проверять проект, запускать тесты и т.д. Основное преимущество — при необходимости сборки проекта на любой другой машине, нам не нужно беспокоиться об установке всего окружения и достаточно будет скачать необходимый образ и запустить в нем сборку.
Контейнер не хранит никаких изменений, и каждая сборка запускается с нуля, что с одной стороны гарантирует идентичность сборки независимо от места ее запуска, с другой стороны каждый раз приходиться скачивать все зависимости и компилировать весь код заново, а это иногда может занимать существенное время. Поэтому кроме обычного «холодного» запуска у нас есть вариант запуска сборки с сохранением т.н. «кэша», где мы сохраняем папку
/.gradle просто копируя ее в рабочую папку проекта, а в начале следующей сборки возвращаем ее обратно. Все процедуры копирования мы вынесли в отдельные скрипты и сама команда запуска у нас стала выглядеть так
В итоге, среднее время сборки проекта у нас сократилось в несколько раз (в зависимости от числа зависимостей на проекте, но средний проект таким образом стал собираться за 1 минуту вместо 5 минут).
Все это само собой имеет смысл только если у вас есть собственный внутренний CI/CD сервер, поддержкой которого вы сами и занимаетесь. Но сейчас есть много облачных сервисов в которых все эти проблемы решены и вам не надо об этом переживать и нужные свойства сборки можно так же указать в настройках проекта.
Источник
Настройка пакета SDK для Android для Xamarin.Android
Visual Studio включает диспетчер пакетов SDK для Android, который позволяет скачивать инструменты, платформы и другие компоненты SDK, необходимые для разработки приложений Xamarin.Android.
Обзор
Это руководство описывает, как использовать диспетчер пакетов SDK для Android с Xamarin в Visual Studio и Visual Studio для Mac.
Это руководство распространяется только на Visual Studio 2019, Visual Studio 2017 и Visual Studio для Mac.
Диспетчер пакетов SDK для Android, предназначенный для Xamarin (устанавливается в составе рабочей нагрузки Разработка мобильных приложений на .NET), поможет вам скачать новейшие компоненты Android, необходимые для разработки приложения Xamarin.Android. Он заменяет автономный диспетчер пакетов SDK от Google, который был признан нерекомендуемым.
Требования
Чтобы использовать диспетчер пакетов SDK Xamarin Android, необходимо следующее:
Visual Studio 2019 (Community, Professional или Enterprise).
ИЛИ Visual Studio 2017 (выпуск Community, Professional или Enterprise). Требуется Visual Studio 2017 версии 15.7 или более поздней.
Инструменты Visual Studio для Xamarin версии 4.10.0 или более поздней версии (устанавливается как часть рабочей нагрузки Разработка мобильных приложений на .NET).
Диспетчеру пакетов SDK Xamarin Android также требуется Java Development Kit (которая устанавливается автоматически вместе с Xamarin.Android). Существует несколько альтернатив JDK:
По умолчанию Xamarin. Android использует JDK 8, что требуется при разработке для API уровня 24 или выше (JDK 8 также поддерживает уровни API, предшествующие 24).
При разработке специально для уровня API 23 или ниже можно продолжать использовать пакет JDK 7.
если вы используете Visual Studio 15,8 Preview 5 или более поздней версии, вы можете попробовать использовать дистрибутив OpenJDK майкрософт Mobile , а не JDK 8.
Xamarin.Android не поддерживает пакет JDK 9.
Диспетчер SDK
чтобы запустить диспетчер пакетов SDK в Visual Studio, щелкните инструменты Android > пакет SDK для Android Manager.
Диспетчер пакетов SDK для Android открывается на экране Пакеты SDK и инструменты для Android. На этом экране имеются две вкладки — платформы и инструменты:
Экран Пакеты SDK и инструменты для Android более подробно описан в следующих разделах.
Расположение пакета SDK для Android
Расположение пакета SDK для Android настраивается в верхней части экрана Пакеты SDK и инструменты для Android, как показано на предыдущем снимке экрана. Это расположение нужно настроить для правильной работы вкладок Платформы и Сервис. Задание расположения пакета SDK для Android может потребоваться по одной или нескольким из следующих причин:
Диспетчер пакетов SDK для Android не смог найти пакет SDK для Android.
Вы установили пакет SDK для Android в альтернативное расположение (отличное от используемого по умолчанию).
Чтобы задать расположение пакет SDK для Android, нажмите кнопку с многоточием (. ). справа от пакет SDK для Androidного расположения. При этом открывается диалоговое окно Обзор папок, в котором можно перейти к расположению пакета SDK для Android. На следующем снимке экрана выбирается пакет SDK для Android в разделе Program Files (x86) \андроид :
При нажатии кнопки ОК диспетчер пакетов SDK будет работать с пакетом SDK для Android, установленным в выбранном расположении.
Вкладка «Сервис»
Вкладка Сервис отображает список инструментов и дополнений. Эта вкладка используется для установки инструментов пакета SDK для Android, инструментов платформы и инструментов сборки. Кроме того, можно установить эмулятор Android, низкоуровневый отладчик (LLDB), NDK, ускорение HAXM и библиотеки Google Play.
Например, чтобы скачать пакет эмулятора Android от Google, установите флажок рядом с элементом Эмулятор Android и нажмите кнопку Применить изменения:
Может появиться диалоговое окно с сообщением Для установки следующего пакета требуется принять условия лицензии:
Щелкните Принять, чтобы принять условия лицензионного соглашения. В нижней части окна индикатор выполнения указывает ход скачивания и установки. После завершения установки вкладка Сервис указывает, что выбранные инструменты и дополнения установлены.
Вкладка «Платформы»
Вкладка Платформы содержит список версий пакетов SDK вместе с другими ресурсами (например, образами системы) для каждой платформы:
На этом экране указана версия Android (например, Android 8.0), кодовое название (Oreo), уровень API (например, 26) и размеры компонентов платформы (например, 1 ГБ). Вкладка Платформы позволяет вам устанавливать компоненты для целевого уровня API Android. Дополнительные сведения о версиях и уровнях API Android см. в разделе Основные сведения об уровнях API Android.
Если установлены все компоненты платформы, рядом с ее именем появляется флажок. Если установлены не все компоненты платформы, для нее заполняется поле. Вы можете развернуть платформу, чтобы просмотреть ее компоненты (в том числе и установленные), щелкнув поле + слева от нее. Щелкните — , чтобы свернуть список компонентов для платформы.
Чтобы добавить в пакет SDK другую платформу, щелкайте поле рядом с ней, пока в нем не появился флажок (обозначающий установку всех компонентов), а затем нажмите кнопку Применить изменения:
Чтобы установить только отдельные компоненты, щелкните один раз поле рядом с платформой. Затем можно выбрать любые отдельные компоненты, которые вам нужны:
Обратите внимание, что число устанавливаемых компонентов отображается рядом с кнопкой Применить изменения. После нажатия кнопки Применить изменения вы увидите экран Принятие условий лицензионного соглашения, показанный ранее. Щелкните Принять, чтобы принять условия лицензионного соглашения. Это диалоговое окно может появиться несколько раз, если устанавливается несколько компонентов. В нижней части окна индикатор выполнения указывает ход скачивания и установки. После завершения скачивания и установки (это может занять несколько минут в зависимости от числа скачиваемых компонентов) добавленные компоненты помечаются флажком и указываются в списке Установленные.
Выбор репозитория
По умолчанию диспетчер пакетов SDK для Android скачивает компоненты и инструменты платформы из репозитория, управляемого Майкрософт. Если вам нужен доступ к экспериментальным альфа- и бета-версиям платформ и инструментов, которые еще не доступны в репозитории Майкрософт, вы можете переключить диспетчер пакетов SDK на использование репозитория Google. Чтобы сделать этот параметр, щелкните значок шестеренки в правом нижнем углу и выберите репозиторий Google (не поддерживается):
Если выбран репозиторий Google, на вкладке Платформы могут отобразиться дополнительные пакеты, недоступные ранее. (На снимке экрана выше при переходе на репозиторий Google был добавлен пакет Android SDK Platform 28.) Обратите внимание, что репозиторий Google является неподдерживаемым, поэтому использовать его для повседневной разработки не рекомендуется.
Чтобы вернуться на поддерживаемый репозиторий платформ и инструментов, щелкните Майкрософт (рекомендуется). Это восстановит список пакетов и инструментов по умолчанию.
Требования
Чтобы использовать диспетчер пакетов SDK Xamarin Android, необходимо следующее:
- Visual Studio для Mac 7.5 или более поздней версии.
Диспетчеру пакетов SDK Xamarin Android также требуется Java Development Kit (которая устанавливается автоматически вместе с Xamarin.Android). Существует несколько альтернатив JDK:
По умолчанию Xamarin. Android использует JDK 8, что требуется при разработке для API уровня 24 или выше (JDK 8 также поддерживает уровни API, предшествующие 24).
При разработке специально для уровня API 23 или ниже можно продолжать использовать пакет JDK 7.
если вы используете Visual Studio для Mac 7,7 или более поздней версии, можно попробовать использовать дистрибутив OpenJDK майкрософт для мобильных устройств , а не JDK 8.
Xamarin.Android не поддерживает пакет JDK 9.
Диспетчер SDK
чтобы запустить диспетчер пакетов sdk в Visual Studio для Mac, щелкните инструменты диспетчер пакетов sdk:
Диспетчер пакетов SDK Android открывается в окне параметров, содержащем три вкладки — Платформы, Сервис и Расположения:
Вкладки диспетчера пакетов SDK для Android описаны в следующих разделах.
Вкладка «Расположения»
Вкладка Расположения содержит три параметра для настройки расположений пакета SDK для Android, пакета NDK для Android и пакет SDK для Java (JDK). Эти расположения нужно настроить для правильной работы вкладок Платформы и Сервис.
При запуске диспетчер пакетов SDK автоматически определяет путь для каждого установленного пакета и указывает, что он был обнаружен, размещая зеленую галочку рядом с путем:
Нажмите кнопку Сбросить к значениям по умолчанию, чтобы диспетчер пакетов SDK искал пакеты SDK, NDK и JDK в расположениях по умолчанию.
Как правило, вкладка Расположения используется, чтобы изменить расположение пакета SDK для Android и (или) пакета JDK для Java. Вам не нужно устанавливать NDK для разработки приложений Xamarin. Android — NDK используется только при необходимости разработки частей приложения с помощью языков машинного кода, таких как C и C++.
Вкладка «Сервис»
Вкладка Сервис отображает список инструментов и дополнений. Эта вкладка используется для установки инструментов пакета SDK для Android, инструментов платформы и инструментов сборки. Кроме того, можно установить эмулятор Android, низкоуровневый отладчик (LLDB), NDK, ускорение HAXM и библиотеки Google Play.
Например, чтобы скачать пакет эмулятора Android от Google, установите флажок рядом с элементом Эмулятор Android и нажмите кнопку Применить изменения:
Может появиться диалоговое окно с сообщением Для установки следующего пакета требуется принять условия лицензии:
Щелкните Принять, чтобы принять условия лицензионного соглашения. В нижней части окна индикатор выполнения указывает ход скачивания и установки. После завершения установки вкладка Сервис указывает, что выбранные инструменты и дополнения установлены.
Вкладка «Платформы»
Вкладка Платформы содержит список версий пакетов SDK вместе с другими ресурсами (например, образами системы) для каждой платформы:
На этом экране указана версия Android (например, Android 8.1), кодовое название (Oreo), уровень API (например, 27) и размеры компонентов платформы (например, 1 ГБ). Вкладка Платформы позволяет вам устанавливать компоненты для целевого уровня API Android. Дополнительные сведения о версиях и уровнях API Android см. в разделе Основные сведения об уровнях API Android.
Если установлены все компоненты платформы, рядом с ее именем появляется флажок. Если установлены не все компоненты платформы, для нее заполняется поле. Вы можете развернуть платформу, чтобы просмотреть ее компоненты (в том числе и установленные), щелкнув стрелку слева от нее. Щелкните стрелку вниз, чтобы свернуть список компонентов для платформы.
Чтобы добавить в пакет SDK другую платформу, щелкайте поле рядом с ней, пока в нем не появился флажок (обозначающий установку всех компонентов), а затем нажмите кнопку Применить изменения:
Чтобы установить только отдельные компоненты, щелкните один раз поле рядом с платформой. Затем можно выбрать любые отдельные компоненты, которые вам нужны:
Обратите внимание, что число устанавливаемых компонентов отображается рядом с кнопкой Применить изменения. После нажатия кнопки Применить изменения вы увидите экран Принятие условий лицензионного соглашения, показанный ранее. Щелкните Принять, чтобы принять условия лицензионного соглашения. Это диалоговое окно может появиться несколько раз, если устанавливается несколько компонентов. В нижней части окна индикатор выполнения указывает ход скачивания и установки. После завершения скачивания и установки (это может занять несколько минут в зависимости от числа скачиваемых компонентов) добавленные компоненты помечаются флажком и указываются в списке Установленные.
Выбор репозитория
По умолчанию диспетчер пакетов SDK для Android скачивает компоненты и инструменты платформы из репозитория, управляемого Майкрософт. Если вам нужен доступ к экспериментальным альфа- и бета-версиям платформ и инструментов, которые еще не доступны в репозитории Майкрософт, вы можете переключить диспетчер пакетов SDK на использование репозитория Google. Чтобы сделать этот параметр, щелкните значок шестеренки в правом нижнем углу и выберите репозиторий Google (не поддерживается):
Если выбран репозиторий Google, на вкладке Платформы могут отобразиться дополнительные пакеты, недоступные ранее. (На снимке экрана выше при переходе на репозиторий Google был добавлен пакет Android SDK Platform 28.) Обратите внимание, что репозиторий Google является неподдерживаемым, поэтому использовать его для повседневной разработки не рекомендуется.
Чтобы вернуться на поддерживаемый репозиторий платформ и инструментов, щелкните Майкрософт (рекомендуется). Это восстановит список пакетов и инструментов по умолчанию.
Сводка
В этом руководстве вы узнали, как устанавливать и использовать диспетчер пакетов SDK для Android с Xamarin в Visual Studio и Visual Studio для Mac.
Источник