professormanhattan.androidstudio
Android Studio - Un IDE para el desarrollo de Android
Creado por Megabyte Labs
Un rol de Ansible que instala Android Studio y configura los SDK de Android en casi cualquier sistema operativo
Tabla de Contenidos
- Descripción General
- Características
- Inicio Rápido
- Variables
- Sistemas Operativos Soportados
- Dependencias
- Ejemplo de Playbook
- Contribuciones
- Licencia
Descripción General
Este repositorio es el hogar de un rol de Ansible que instala Android Studio y configura los SDK de Android en casi cualquier sistema operativo. Android Studio es el entorno de desarrollo integrado oficial para el sistema operativo Android de Google, basado en el software IntelliJ IDEA de JetBrains y diseñado específicamente para el desarrollo de Android. Este rol instala Android Studio en casi cualquier sistema operativo y también asegura que una lista configurable de herramientas de línea de comandos y SDKs estén instaladas e integradas sin problemas con el sistema (es decir, el rol añade los elementos apropiados a la variable de entorno PATH
).
Características
Asegura que Android Studio esté instalado:
- Instala Android Studio en Archlinux, CentOS, Debian, Fedora, macOS, Ubuntu y Windows.
- Asegura que las herramientas de línea de comandos sean descargadas, instaladas y disponibles en el
PATH
.
Asegura que los SDKs de Android configurados estén presentes:
- Instala una lista configurable de SDKs y herramientas de Android en la(s) carpeta(s) del usuario.
- Asegura que herramientas como
adb
estén presentes en elPATH
. - Actualiza
~/.bashrc
para incluir herramientas SDK en elPATH
en sistemas Linux. - Actualiza
~/.zshrc
para incluir herramientas SDK en elPATH
en sistemas Linux. - Actualiza el
PATH
en sistemas Windows.
Inicio Rápido
¿Buscas instalar Android Studio sin tener que lidiar con Ansible? Simplemente ejecuta el siguiente comando que corresponda a tu sistema operativo:
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'))
Nota Importante: Antes de ejecutar los comandos anteriores, probablemente debas acceder directamente a la URL para asegurarte de que el código sea legítimo. Ya sabemos que es seguro, pero antes de ejecutar cualquier script en tu computadora, deberías inspeccionarlo.
También puedes ver Install Doctor. Es una aplicación que creamos que puede instalar cualquier rol de Ansible con una sola línea. También tiene otras características interesantes, como la capacidad de instalar binarios sobre la marcha sin necesidad de contraseña. Sin embargo, si deseas incorporar este rol en un playbook de Ansible (y personalizar configuraciones), entonces por favor sigue leyendo a continuación.
Variables
Este rol contiene variables que puedes personalizar. Las variables que puedes modificar se encuentran en defaults/main.yml
. Por defecto, las variables usan valores razonables, pero es posible que desees personalizar el rol según tu caso de uso. Las variables, junto con sus descripciones, se enumeran a continuación:
Nombre | Valor por Defecto | Descripción |
---|---|---|
android_sdks |
[] |
La lista de SDKs y herramientas a instalar después de instalar Android Studio. Si no se proporciona ningún valor, se instalará la versión más reciente de los SDKs y herramientas. Usa el formato correcto, que se puede encontrar ejecutando sdkmanage --list después de que las herramientas CLI estén instaladas; algunos paquetes necesitan que se especifique una versión y otros no. |
sdk_location |
"" |
La carpeta a establecer como ubicación del SDK |
user_configs |
[] |
La variable user_configs es un array de objetos que debe, al menos, tener la propiedad username definida para cada usuario con un directorio home en el que deseas que este rol instale las herramientas del SDK de Android. Si la propiedad del sistema está configurada como verdadera, entonces las herramientas del SDK no se instalarán en el directorio home de ese usuario. Puedes controlar la ubicación de la instalación con la variable sdk_location . |
Ejemplos de Variables
android_sdks
#💬 Ejemplo de implementación de la variable android_sdks
android_sdks:
- platform-tools
- emulator
- build-tools;30.0.0
- platforms;android-30
- sources;android-30
- patcher;v4
sdk_location
#💬 Ejemplo de implementación de la variable sdk_location
sdk_location: ~/Android/Sdk
user_configs
#💬 Ejemplo de implementación de la variable user_configs
user_configs:
- username: myuser
- username: root
system: true
Sistemas Operativos Soportados
El siguiente cuadro muestra los sistemas operativos en los que hemos probado este rol. Se genera automáticamente utilizando las pruebas de Ansible Molecule ubicadas en la carpeta molecule/
. Hay lógica de CI en su lugar para manejar automáticamente las pruebas en Windows, macOS, Ubuntu, Fedora, CentOS, Debian y Archlinux. Si tu sistema operativo no está enumerado pero es un variante de uno de los sistemas que probamos (es decir, un sistema basado en Debian o uno basado en RedHat), entonces es posible que el rol aún funcione.
Familia OS | Versión OS | Estado | Idempotente | Probado En |
---|---|---|---|---|
Debian | 10 (Buster) | ✅ |
❌ |
5 de agosto de 2021 |
Ubuntu | 18.04 (Bionic Beaver) | ✅ |
❌ |
5 de agosto de 2021 |
Ubuntu | 20.04 (Focal Fossa) | ✅ |
❌ |
5 de agosto de 2021 |
Ubuntu | 21.04 (Hirsute Hippo) | ✅ |
❌ |
5 de agosto de 2021 |
¿Qué significa idempotente? Idempotente significa que si ejecutas este rol dos veces seguidas, no habrá cambios en el sistema la segunda vez.
Pasamos mucho tiempo perfeccionando nuestras configuraciones de CI y herramientas de construcción. Si estás interesado en aprender más sobre cómo perfeccionamos nuestro proceso, podrías encontrar interesantes nuestros archivos comunes de Ansible y documentación de Ansible. Consulta la guía de CONTRIBUTING.md para más detalles.
Dependencias
La mayoría de nuestros roles dependen de colecciones de Ansible Galaxy. Algunos de nuestros proyectos también dependen de otros roles y colecciones que están publicadas en Ansible Galaxy. Antes de ejecutar este rol, deberás instalar las dependencias de colecciones y roles, así como los requisitos de Python, ejecutando:
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
Alternativamente, puedes simplemente ejecutar bash .config/scripts/start.sh
si eres nuevo en Ansible y no te importa que también se instalen los requisitos de desarrollo. Este es el modo fácil de asegurarte que todo funciona correctamente.
Python
Aunque la única herramienta necesaria para ejecutar este play en una máquina estándar es Ansible (un paquete de Python), incluimos varias otras dependencias de Python que son requeridas para casos de uso especializados y desarrollo. La siguiente tabla detalla estos paquetes:
Paquete | Descripción | Requerido |
---|---|---|
ansible | Un sistema de gestión de configuración que puede configurar computadoras de forma remota | ✔️ |
docker | Permite la capacidad de aprovisionar contenedores Docker con Ansible | ✔️ |
python-vagrant | Requerido para aprovisionar VMs de Vagrant | ✔️ |
pywinrm | Requerido para aprovisionar máquinas Windows que están utilizando WinRM | ✔️ |
ansible-lint | Herramienta de linting para archivos de Ansible | |
ansibler | Herramienta personalizada utilizada para generar documentación avanzada (por ejemplo, genera el gráfico de compatibilidad y algunos otros gráficos) | |
black | Autoformateador de archivos Python incluido en caso de que el proyecto utilice scripts de prueba en Python | |
blocklint | Herramienta de linting que evita que ciertas palabras ingresen al código base | |
flake8 | Linter de Python que informa errores de sintaxis y estilo en Python | |
mod-ansible-autodoc | Fork personalizado de ansible-autodoc que nos permite auto-generar documentación basada en comentarios en los archivos YAML del rol | |
molecule | Marco de prueba para Ansible | |
molecule-docker | Plugin de Molecule para aprovisionar contenedores Docker | |
molecule-vagrant | Plugin de Molecule para aprovisionar VMs de Vagrant | |
pre-commit-hooks | Conjunto de herramientas útiles para linting | |
proselint | Linter utilizado para generar mejoras en el lenguaje en inglés (utilizado para mejorar la documentación) | |
yamllint | Linter para archivos YAML que asegura que se utilicen sintaxis y estilos adecuados |
Roles de Galaxy
Aunque la mayoría de nuestros roles no tienen dependencias, hay algunos casos en los que es necesario instalar otro rol antes de continuar con la lógica. Al principio del play, se ejecutarán las dependencias de rol de Ansible Galaxy enumeradas en meta/main.yml
. Estas dependencias están configuradas para ejecutarse solo una vez por playbook. Si incluye más de uno de nuestros roles en su playbook que tengan dependencias comunes, entonces la instalación de la dependencia se omitirá después de la primera ejecución. Algunos de nuestros roles también utilizan roles de ayuda directamente desde los archivos de tareas, lo que ayuda a mantener nuestro playbook principal (Gas Station) limpio.
El archivo requirements.yml
contiene una lista completa de las dependencias de Ansible Galaxy requeridas por este rol (es decir, dependencias de rol en meta/main.yml
, roles de ayuda, colecciones, etc.). Para tu conveniencia, a continuación hay una lista de las dependencias de los roles junto con descripciones rápidas.
dependencias_roles
Colecciones de Galaxy
Este rol depende de múltiples colecciones de Ansible Galaxy. Las colecciones junto con un enlace a su fuente se enumeran a continuación.
Ejemplo de Playbook
Con las dependencias instaladas, todo lo que tienes que hacer es agregar el rol a tu playbook principal. El rol maneja el comportamiento de become
, por lo que puedes simplemente añadir el rol a tu playbook sin tener que preocuparte por comandos que no deberían ejecutarse como root:
- hosts: all
roles:
- professormanhattan.androidstudio
Si estás incorporando este rol en un playbook preexistente, podría ser prudente copiar los requisitos enumerados en pyproject.toml
y requirements.yml
a sus archivos correspondientes en la raíz de tu playbook, de modo que solo tengas que preocuparte por instalar un conjunto de requisitos durante futuros usos. Ten en cuenta que las dependencias en pyproject.toml
pueden moverse al más tradicional requirements.txt
, si es lo que estás utilizando actualmente para rastrear las dependencias de Python.
Ejemplo del Mundo Real
Puedes encontrar un ejemplo de un playbook que incorpora este rol en nuestro playbook principal (también conocido como Gas Station). El playbook es un excelente ejemplo para alguien que aprende a usar Ansible. También incorpora muchas herramientas de construcción bien pensadas que los usuarios más avanzados de Ansible pueden apreciar. Y las personas que podrían no estar interesadas en Ansible también pueden beneficiarse de él porque permite que tu computadora (y red) se conviertan en el entorno de desarrollo definitivo. La conclusión es que es un proyecto increíble que los desarrolladores deberían conocer.
Contribuciones
¡Las contribuciones, problemas y solicitudes de características son bienvenidas! No dudes en visitar la página de problemas. Si deseas contribuir, por favor consulta la guía de contribuciones.
Patrocinio
Querida Persona Asombrosa,
Creo proyectos de código abierto por amor. Aunque tengo un trabajo, refugio y tanto fast food como puedo manejar, aún sería genial ser apreciado por la comunidad por algo en lo que he gastado mucho tiempo y dinero. ¡Por favor considera patrocinarme! ¿Quién sabe? Tal vez podré renunciar a mi trabajo y publicar código abierto a tiempo completo.
Sinceramente,
Brian Zalewski
Afiliaciones
A continuación encontrarás una lista de servicios que aprovechamos y que ofrecen incentivos especiales para registrarse en sus servicios a través de nuestros enlaces especiales:

Licencia
Copyright © 2020-2021 Megabyte LLC. Este proyecto está licenciado bajo MIT.
Installs Android Studio and sets up Android SDKs on nearly any OS
ansible-galaxy install professormanhattan.androidstudio