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. Коллекции и ссылки на их источники перечислены ниже.

  • бадж chocolatey.chocolatey Ansible Galaxy
  • бадж community.general Ansible Galaxy
  • бадж google.cloud Ansible Galaxy

Пример плейбука

Установив зависимости, вам просто нужно добавить роль в свой основной плейбук. Роль обрабатывает поведение become, так что вы можете просто добавить роль в свой плейбук, не беспокоясь о командах, которые не должны выполняться от имени root:

- hosts: all
  roles:
    - professormanhattan.androidstudio

Если вы интегрируете эту роль в уже существующий плейбук, то может быть разумно скопировать требования, указанные в pyproject.toml и requirements.yml, в соответствующие файлы в корне вашего плейбука, чтобы вам не пришлось беспокоиться об установке одного набора требований при дальнейших использования. Обратите внимание, что зависимости в pyproject.toml можно переместить в более традиционный requirements.txt, если вы в настоящее время используете его для отслеживания зависимостей Python.

Пример из реальной жизни

Вы можете найти пример плейбука, который включает эту роль в нашем главном плейбуке (также известном как Gas Station). Плейбук является отличным примером для тех, кто учится использовать Ansible. Также он включает в себя много продуманных инструментов сборки, которые могут быть интересны более опытным пользователям Ansible. А люди, которым не важно Ansible, также могут получить от этого пользу, потому что это позволяет более или менее превратить ваш компьютер (и сеть) в идеальную среду разработки. Главное, что это отличный проект, о котором разработчики должны знать!

Вклад

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

Поддержка

Дорогой великолепный человек,

Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, крыша над головой и достаточно фастфуда, чтобы не волноваться, было бы здорово, если бы сообщество оценило то, чему я уделил много времени и денег. Пожалуйста, подумайте о том, чтобы поддержать меня! Кто знает? Возможно, я смогу уйти с работы и полностью заняться публикацией с открытым исходным кодом.

С уважением,

Брайан Залевски

Спонсоры Open Collective Спонсоры GitHub Patreon

Партнеры

Ниже вы найдете список услуг, которые мы используем, предлагая специальные преимущества за регистрацию их услуг через наши специальные ссылки:

MailChimp Badge реферала DigitalOcean

Лицензия

Copyright © 2020-2021 Megabyte LLC. Этот проект имеет лицензию MIT.

Установить
ansible-galaxy install megabyte-labs/ansible-androidstudio
Лицензия
other
Загрузки
204
Владелец
Free open-source developer tools for managing massive amounts of code