androidstudio
Android Studio - IDE для разработки Android
Создано Megabyte Labs
Роль Ansible, которая устанавливает Android Studio и настраивает Android SDK на почти любой ОС
Содержание
- Обзор
- Функции
- Быстрый старт
- Переменные
- Поддерживаемые операционные системы
- Зависимости
- Пример плейбука
- Вклад
- Лицензия
Обзор
Этот репозиторий является домом для роли Ansible, которая устанавливает Android Studio и настраивает Android SDK на почти любой ОС. Android Studio — это официальная интегрированная среда разработки для операционной системы Android от Google, созданная на основе программного обеспечения JetBrains IntelliJ IDEA и специально предназначенная для разработки на Android. Эта роль устанавливает Android Studio на почти любую операционную систему и также гарантирует, что список командных инструментов и SDK может быть настроен и встроен в систему (т.е. роль добавляет соответствующие элементы в переменную окружения PATH
).
Функции
Гарантирует установку Android Studio:
- Устанавливает Android Studio на Archlinux, CentOS, Debian, Fedora, macOS, Ubuntu и Windows
- Гарантирует, что командные инструменты загружены, установлены и доступны в
PATH
Гарантирует наличие настроенных Android SDK:
- Устанавливает настраиваемый список Android SDK и инструментов в домашнюю папку пользователя(ов)
- Гарантирует, что инструменты Android SDK, такие как
adb
, присутствуют в PATH - Обновляет
~/.bashrc
, чтобы включить инструменты SDK вPATH
на системах Linux - Обновляет
~/.zshrc
, чтобы включить инструменты SDK вPATH
на системах Linux - Обновляет
PATH
на системах Windows
Быстрый старт
Хотите установить Android Studio, не имея дело с Ansible? Просто выполните следующую команду, соответствующую вашей операционной системе:
Linux/macOS:
curl -sS https://install.doctor/androidstudio | bash
Windows:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://install.doctor/androidstudio?os=win'))
Важно: Перед выполнением вышеуказанных команд вам, возможно, стоит напрямую перейти по URL, чтобы убедиться, что код подлинный. Мы уже знаем, что это безопасно, но прежде чем запускать любой скрипт на вашем компьютере, вам следует его проверить.
Вы также можете ознакомиться с Install Doctor. Это приложение, которое мы создали, может установить любую роль Ansible одной строкой. У него есть и другие полезные функции, такие как возможность установки двоичных файлов на лету без необходимости ввода пароля. Однако, если вы хотите интегрировать эту роль в плейбук Ansible (и настроить параметры), то продолжайте читать ниже.
Переменные
Эта роль содержит переменные, которые вы можете настроить. Переменные, которые вы можете настроить, находятся в defaults/main.yml
. По умолчанию переменные имеют разумные значения, но вы можете захотеть настроить роль в зависимости от вашего случая использования. Переменные, вместе с описаниями, перечислены ниже:
Имя | Значение по умолчанию | Описание |
---|---|---|
android_sdks |
[] |
Список SDK и инструментов для установки после установки Android Studio. Если значение не указано, будет установлена последняя версия SDK и инструментов. Используйте правильный формат, который можно найти, выполнив sdkmanage --list после установки CLI инструментов; некоторые пакеты требуют указания версии, а некоторые нет. |
sdk_location |
"" |
Папка, которая будет использоваться в качестве расположения SDK |
user_configs |
[] |
Переменная user_configs - это массив объектов, которые должны, как минимум, иметь определенное свойство username для каждого пользователя с домашним каталогом, в который вы хотите установить инструменты Android SDK. Если свойство системы установлено в true, инструменты SDK не будут установлены в домашний каталог этого пользователя. Вы можете контролировать расположение установки с помощью переменной sdk_location . |
Примеры переменных
android_sdks
#💬 Пример реализации переменной android_sdks
android_sdks:
- platform-tools
- emulator
- build-tools;30.0.0
- platforms;android-30
- sources;android-30
- patcher;v4
sdk_location
#💬 Пример реализации переменной sdk_location
sdk_location: ~/Android/Sdk
user_configs
#💬 Пример реализации переменной user_configs
user_configs:
- username: myuser
- username: root
system: true
Поддерживаемые операционные системы
В таблице ниже показаны операционные системы, на которых мы тестировали эту роль. Она автоматически генерируется с использованием тестов Ansible Molecule, расположенных в папке molecule/
. Существует логика CI, которая автоматически обрабатывает тестирование Windows, macOS, Ubuntu, Fedora, CentOS, Debian и Archlinux. Если ваша операционная система не указана, но является производной от одной из систем, которые мы тестируем (например, система на базе Debian или система на базе RedHat), то вполне возможно, что роль все равно будет работать.
Семейство ОС | Версия ОС | Статус | Идемпотентность | Протестировано |
---|---|---|---|---|
Debian | 10 (Buster) | ✅ |
❌ |
5 августа 2021 года |
Ubuntu | 18.04 (Bionic Beaver) | ✅ |
❌ |
5 августа 2021 года |
Ubuntu | 20.04 (Focal Fossa) | ✅ |
❌ |
5 августа 2021 года |
Ubuntu | 21.04 (Hirsute Hippo) | ✅ |
❌ |
5 августа 2021 года |
Что означает идемпотентность? Идемпотентность означает, что если вы запустите эту роль дважды подряд, то никаких изменений в системе не произойдет во второй раз.
Мы потратили много времени на оптимизацию наших конфигураций CI и инструментов сборки. Если вам интересно узнать больше о том, как мы улучшили свой процесс, то вы можете найти наши общие файлы Ansible и документацию Ansible интересными. См. CONTRIBUTING.md для получения более подробной информации.
Зависимости
Большинство наших ролей зависимы от коллекций Ansible Galaxy. Некоторые из наших проектов также зависят от других ролей и коллекций, опубликованных в Ansible Galaxy. Перед запуском этой роли вам необходимо установить зависимости коллекции и ролей, а также требования Python, выполнив:
if type poetry &> /dev/null; then poetry install --no-root; else pip3 install -r .config/assets/requirements.txt; fi
ansible-galaxy install -r requirements.yml
В качестве альтернативы вы можете просто запустить bash .config/scripts/start.sh
, если вы новичок в Ansible и не против установки также требований для разработки. Это упрощает процесс гарантии, что всё работает правильно.
Python
Хотя единственным инструментом, необходимым для запуска этого плейбука на стандартном компьютере, является Ansible (пакет Python), мы включили несколько других зависимостей Python, которые требуются для специализированных случаев использования и разработки. Ниже представлена таблица с этими пакетами:
Пакет | Описание | Требуется |
---|---|---|
ansible | Система управления конфигурацией, которая может удалённо настраивать компьютеры | ✔️ |
docker | Позволяет настраивать Docker-контейнеры с помощью Ansible | ✔️ |
python-vagrant | Требуется для настройки Vagrant ВМ | ✔️ |
pywinrm | Требуется для настройки Windows-машин, использующих WinRM | ✔️ |
ansible-lint | Инструмент для линтинга файлов Ansible | |
ansibler | Пользовательский инструмент для генерации расширенной документации (например, генерируется таблица совместимости и некоторые другие таблицы) | |
black | Автоформатер файлов Python, включённый в случае, если проект использует тестовые скрипты на Python | |
blocklint | Инструмент линтинга, который предотвращает попадание определённых слов в кодовую базу | |
flake8 | Линтер Python, который сообщает о синтаксических и стилистических ошибках Python | |
mod-ansible-autodoc | Пользовательская версия ansible-autodoc, которая позволяет автоматически генерировать документацию на основе комментариев в YAML файлах роли | |
molecule | Фреймворк для тестирования Ansible | |
molecule-docker | Плагин Molecule для настройки Docker-контейнеров | |
molecule-vagrant | Плагин Molecule для настройки Vagrant ВМ | |
pre-commit-hooks | Набор инструментов, полезных для линтинга | |
proselint | Линтер, используемый для улучшения английского языка (используется для улучшения документации) | |
yamllint | Линтер для YAML файлов, который обеспечивает правильный синтаксис и стилизацию |
Роли Galaxy
Хотя большинство наших ролей не имеют зависимостей, есть случаи, когда перед продолжением логики должна быть установлена другая роль. В начале плейбука зависимости ролей Ansible Galaxy, указанные в meta/main.yml
, будут выполняться. Эти зависимости настроены так, чтобы выполняться только один раз за плейбук. Если вы включите более одной роли из нашего набора в свой плейбук с общими зависимостями, установка зависимости будет пропущена после первого исполнения. Некоторые из наших ролей также используют вспомогательные роли прямо из файлов задач, что помогает поддерживать шаблон главного плейбука (Gas Station) DRY.
Файл requirements.yml
содержит полный список зависимостей Ansible Galaxy, необходимых для этой роли (т.е. зависимости ролей из meta/main.yml
, вспомогательные роли, коллекции и т.д.). Для вашего удобства имеется список зависимостей ролей с краткими описаниями.
Коллекции Galaxy
Эта роль зависит от нескольких коллекций Ansible Galaxy. Коллекции и ссылки на их источники перечислены ниже.
Пример плейбука
Установив зависимости, вам просто нужно добавить роль в свой основной плейбук. Роль обрабатывает поведение become
, так что вы можете просто добавить роль в свой плейбук, не беспокоясь о командах, которые не должны выполняться от имени root:
- hosts: all
roles:
- professormanhattan.androidstudio
Если вы интегрируете эту роль в уже существующий плейбук, то может быть разумно скопировать требования, указанные в pyproject.toml
и requirements.yml
, в соответствующие файлы в корне вашего плейбука, чтобы вам не пришлось беспокоиться об установке одного набора требований при дальнейших использования. Обратите внимание, что зависимости в pyproject.toml
можно переместить в более традиционный requirements.txt
, если вы в настоящее время используете его для отслеживания зависимостей Python.
Пример из реальной жизни
Вы можете найти пример плейбука, который включает эту роль в нашем главном плейбуке (также известном как Gas Station). Плейбук является отличным примером для тех, кто учится использовать Ansible. Также он включает в себя много продуманных инструментов сборки, которые могут быть интересны более опытным пользователям Ansible. А люди, которым не важно Ansible, также могут получить от этого пользу, потому что это позволяет более или менее превратить ваш компьютер (и сеть) в идеальную среду разработки. Главное, что это отличный проект, о котором разработчики должны знать!
Вклад
Внесение вклада, обсуждение проблем и запросов функций приветствуется! Не стесняйтесь проверять страницу проблем. Если вы хотите внести свой вклад, пожалуйста, ознакомьтесь с руководством по внесению вклада.
Поддержка
Дорогой великолепный человек,
Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, крыша над головой и достаточно фастфуда, чтобы не волноваться, было бы здорово, если бы сообщество оценило то, чему я уделил много времени и денег. Пожалуйста, подумайте о том, чтобы поддержать меня! Кто знает? Возможно, я смогу уйти с работы и полностью заняться публикацией с открытым исходным кодом.
С уважением,
Брайан Залевски
Партнеры
Ниже вы найдете список услуг, которые мы используем, предлагая специальные преимущества за регистрацию их услуг через наши специальные ссылки:
Лицензия
Copyright © 2020-2021 Megabyte LLC. Этот проект имеет лицензию MIT.
Installs Android Studio and sets up Android SDKs on nearly any OS
ansible-galaxy install megabyte-labs/ansible-androidstudio