professormanhattan.androidstudio
Android Studio - Eine IDE für Android-Entwicklung
Gestaltet von Megabyte Labs
Eine Ansible-Rolle, die Android Studio installiert und Android SDKs auf fast jedem Betriebssystem einrichtet
Inhaltsverzeichnis
- Überblick
- Merkmale
- Schnellstart
- Variablen
- Unterstützte Betriebssysteme
- Abhängigkeiten
- Beispiel-Playbook
- Beitragen
- Lizenz
Überblick
Dieses Repository ist die Heimat einer Ansible Rolle, die Android Studio installiert und Android SDKs auf fast jedem Betriebssystem einrichtet. Android Studio ist die offizielle integrierte Entwicklungsumgebung für das Android-Betriebssystem von Google, basiert auf der Software IntelliJ IDEA von JetBrains und wurde speziell für die Android-Entwicklung konzipiert. Diese Rolle installiert Android Studio auf fast jedem Betriebssystem und sorgt dafür, dass eine konfigurierbare Liste von Befehlszeilenwerkzeugen und SDKs installiert und nahtlos ins System integriert wird (d. h. die Rolle fügt die entsprechenden Elemente zur PATH
Umgebungsvariable hinzu).
Merkmale
Stellt sicher, dass Android Studio installiert ist:
- Installiert Android Studio auf Archlinux, CentOS, Debian, Fedora, macOS, Ubuntu und Windows
- Stellt sicher, dass Befehlszeilenwerkzeuge heruntergeladen, installiert und im
PATH
verfügbar sind
Stellt sicher, dass konfigurierte Android SDKs vorhanden sind:
- Installiert eine konfigurierbare Liste von Android SDKs und Tools im Home-Verzeichnis der Benutzer
- Stellt sicher, dass Android SDK-Tools wie
adb
im PATH vorhanden sind - Aktualisiert
~/.bashrc
, um SDK-Tools in denPATH
auf Linux-Systemen einzufügen - Aktualisiert
~/.zshrc
, um SDK-Tools in denPATH
auf Linux-Systemen einzufügen - Aktualisiert den
PATH
auf Windows-Systemen
Schnellstart
Möchten Sie Android Studio installieren, ohne sich um Ansible kümmern zu müssen? Führen Sie einfach den folgenden Befehl aus, der Ihrem Betriebssystem entspricht:
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'))
Wichtiger Hinweis: Bevor Sie die obigen Befehle ausführen, sollten Sie wahrscheinlich direkt auf die URL zugreifen, um sicherzustellen, dass der Code legitim ist. Wir wissen bereits, dass er sicher ist, aber bevor Sie ein Skript auf Ihrem Computer ausführen, sollten Sie es überprüfen.
Sie können auch Install Doctor ausprobieren. Es ist eine von uns entwickelte App, die jede Ansible-Rolle mit einer einzigen Zeile installieren kann. Außerdem hat sie einige andere nützliche Funktionen, wie die Möglichkeit, Binärdateien direkt zu installieren, ohne ein Passwort zu benötigen. Wenn Sie jedoch diese Rolle in ein Ansible-Playbook einfügen möchten (und Einstellungen anpassen wollen), lesen Sie bitte weiter unten weiter.
Variablen
Diese Rolle enthält Variablen, die Sie anpassen können. Die anpassbaren Variablen befinden sich in defaults/main.yml
. Standardmäßig verwenden die Variablen sinnvolle Voreinstellungen, aber möglicherweise möchten Sie die Rolle je nach Anwendungsfall anpassen. Die Variablen mit Beschreibungen sind unten aufgeführt:
Name | Standardwert | Beschreibung |
---|---|---|
android_sdks |
[] |
Die Liste der SDKs und Tools, die nach der Installation von Android Studio installiert werden sollen. Wenn kein Wert angegeben ist, werden die neuesten Versionen der SDKs und Tools installiert. Verwenden Sie das richtige Format, das Sie finden, indem Sie sdkmanage --list ausführen, nachdem die CLI-Tools installiert sind; einige Pakete benötigen die Angabe einer Version, andere hingegen nicht. |
sdk_location |
"" |
Der Ordner, der als SDK-Standort festgelegt werden soll |
user_configs |
[] |
Die Variable user_configs ist ein Array von Objekten, das mindestens die Eigenschaft username für jeden Benutzer mit einem Home-Verzeichnis definiert haben sollte, in das Sie die Android SDK-Tools installieren möchten. Wenn die System-Eigenschaft auf true gesetzt ist, werden die SDK-Tools nicht im Home-Verzeichnis dieses Benutzers installiert. Sie können den Installationsort mit der Variable sdk_location steuern. |
Beispiele für Variablen
android_sdks
#💬 Beispielimplementierung der android_sdks-Variable
android_sdks:
- platform-tools
- emulator
- build-tools;30.0.0
- platforms;android-30
- sources;android-30
- patcher;v4
sdk_location
#💬 Beispielimplementierung der sdk_location-Variable
sdk_location: ~/Android/Sdk
user_configs
#💬 Beispielimplementierung der user_configs-Variable
user_configs:
- username: meinbenutzer
- username: root
system: true
Unterstützte Betriebssysteme
Die folgende Tabelle zeigt die Betriebssysteme, auf denen wir diese Rolle getestet haben. Sie wurde automatisch generiert unter Verwendung der Ansible Molecule-Tests im Ordner molecule/
. Es gibt eine CI-Logik, die das Testen von Windows, macOS, Ubuntu, Fedora, CentOS, Debian und Archlinux automatisch verwaltet. Wenn Ihr Betriebssystem nicht aufgeführt ist, es sich aber um eine Variante eines der getesteten Systeme handelt (d. h. ein Debian-basiertes oder ein RedHat-basiertes System), dann ist es möglich, dass die Rolle trotzdem funktioniert.
OS-Familie | OS-Version | Status | Idempotent | Getestet am |
---|---|---|---|---|
Debian | 10 (Buster) | ✅ |
❌ |
5. August 2021 |
Ubuntu | 18.04 (Bionic Beaver) | ✅ |
❌ |
5. August 2021 |
Ubuntu | 20.04 (Focal Fossa) | ✅ |
❌ |
5. August 2021 |
Ubuntu | 21.04 (Hirsute Hippo) | ✅ |
❌ |
5. August 2021 |
Was bedeutet idempotent? Idempotent bedeutet, dass wenn Sie diese Rolle zweimal hintereinander ausführen, es beim zweiten Mal keine Änderungen am System gibt.
Wir haben viel Zeit damit verbracht, unsere CI-Konfigurationen und Build-Tools zu perfektionieren. Wenn Sie daran interessiert sind, mehr über unsere Verfeinerungen zu erfahren, dann finden Sie möglicherweise unsere Allgemeinen Ansible Dateien und Ansible-Dokumentation Repositories interessant. Siehe den CONTRIBUTING.md Leitfaden für weitere Details.
Abhängigkeiten
Die meisten unserer Rollen hängen von Ansible Galaxy Sammlungen ab. Einige unserer Projekte sind auch von anderen Rollen und Sammlungen abhängig, die auf Ansible Galaxy veröffentlicht sind. Bevor Sie diese Rolle ausführen, müssen Sie die Sammlung und Rollendependencies sowie die Python-Anforderungen installieren, indem Sie Folgendes ausführen:
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
Alternativ können Sie einfach bash .config/scripts/start.sh
ausführen, wenn Sie neu bei Ansible sind und kein Problem damit haben, dass die Entwicklungsanforderungen ebenfalls installiert werden. Dies ist der einfache Weg, um sicherzustellen, dass alles ordnungsgemäß funktioniert.
Python
Obwohl das einzige notwendige Tool zur Ausführung dieses Plays auf einem Standardgerät Ansible (ein Python-Paket) ist, enthalten wir mehrere andere Python-Abhängigkeiten, die für spezielle Anwendungsfälle und Entwicklung erforderlich sind. Die folgende Tabelle zeigt diese Pakete:
Paket | Beschreibung | Erforderlich |
---|---|---|
ansible | Ein Konfigurationsmanagementsystem, das Computer remote konfigurieren kann | ✔️ |
docker | Ermöglicht die Bereitstellung von Docker-Containern mit Ansible | ✔️ |
python-vagrant | Erforderlich für die Bereitstellung von Vagrant-VMs | ✔️ |
pywinrm | Erforderlich für die Bereitstellung von Windows-Computern, die WinRM verwenden | ✔️ |
ansible-lint | Linting-Tool für Ansible-Dateien | |
ansibler | Benutzerdefiniertes Tool zur Generierung fortgeschrittener Dokumentation (z.B. erzeugt es die Kompatibilitätstabelle und einige andere Diagramme) | |
black | Automatischer Python-Dateiformatierer für den Fall, dass das Projekt Python-Testskripte nutzt | |
blocklint | Linting-Tool, das verhindert, dass bestimmte Wörter in den Code-Base gelangen | |
flake8 | Python-Linter, der Python-Syntax- und Stilfehler meldet | |
mod-ansible-autodoc | Benutzerdefinierte Abwandlung von ansible-autodoc, die es uns ermöglicht, Dokumentation basierend auf Kommentaren in den YAML-Dateien der Rolle automatisch zu generieren | |
molecule | Testframework für Ansible | |
molecule-docker | Molecule-Plugin für die Bereitstellung von Docker-Containern | |
molecule-vagrant | Molecule-Plugin für die Bereitstellung von Vagrant-VMs | |
pre-commit-hooks | Suite von Tools, die nützlich für Linting sind | |
proselint | Linter, das verwendet wird, um Verbesserungen in englischer Sprache zu generieren (wird verwendet, um Dokumentation zu verbessern) | |
yamllint | Linter für YAML-Dateien, der sicherstellt, dass die richtige Syntax und das richtige Styling verwendet wird |
Galaxy Rollen
Obwohl die meisten unserer Rollen keine Abhängigkeiten haben, gibt es einige Fälle, in denen eine andere Rolle installiert werden muss, bevor die Logik fortfahren kann. Zu Beginn des Plays werden die Ansible Galaxy rollenabhängigen Rollen, die in meta/main.yml
aufgeführt sind, ausgeführt. Diese Abhängigkeiten sind so konfiguriert, dass sie nur einmal pro Playbook ausgeführt werden. Wenn Sie mehr als eine unserer Rollen in Ihr Playbook einfügen, die gemeinsame Abhängigkeiten haben, wird die Abhängigkeitsinstallation nach dem ersten Ausführen übersprungen. Einige unserer Rollen nutzen auch Helper-Rollen direkt aus den Task-Dateien, was hilft, unser Hauptplaybook (Tankstelle) DRY zu halten.
Die Datei requirements.yml
enthält eine vollständige Liste der Ansible Galaxy-Abhängigkeiten, die für diese Rolle erforderlich sind (d.h. die meta/main.yml
Rollenabhängigkeiten, Helper-Rollen, Sammlungen usw.). Für Ihre Bequemlichkeit finden Sie eine Liste der Rollenabhängigkeiten mit kurzen Beschreibungen unten:
rollendependencies
Galaxy Sammlungen
Diese Rolle ist von mehreren Ansible Galaxy Sammlungen abhängig. Die Sammlungen sowie Links zu ihren Quellen sind unten aufgeführt.
Beispiel-Playbook
Mit den installierten Abhängigkeiten müssen Sie nur noch die Rolle zu Ihrem Hauptplaybook hinzufügen. Die Rolle verwaltet das become
-Verhalten, sodass Sie die Rolle einfach zu Ihrem Playbook hinzufügen können, ohne sich um Befehle kümmern zu müssen, die nicht als Root ausgeführt werden sollten:
- hosts: alle
roles:
- professormanhattan.androidstudio
Wenn Sie diese Rolle in ein bereits vorhandenes Playbook integrieren, könnte es klug sein, die in pyproject.toml
und requirements.yml
enthaltenen Anforderungen in die entsprechenden Dateien im Hauptverzeichnis Ihres Playbooks zu kopieren, sodass Sie sich bei weiteren Einsätzen nur um eine Menge Anforderungen kümmern müssen. Beachten Sie, dass die Abhängigkeiten in pyproject.toml
in die traditionellere requirements.txt
verschoben werden können, wenn Sie diese derzeit verwenden, um Python-Abhängigkeiten zu verfolgen.
Echtes Beispiel
Ein Beispiel für ein Playbook, das diese Rolle integriert, finden Sie in unserem Hauptplaybook (auch bekannt als Tankstelle). Das Playbook ist ein hervorragendes Beispiel für jemanden, der lernt, wie man Ansible verwendet. Es enthält auch viele gut durchdachte Build-Tools, die fortgeschrittene Ansible-Benutzer zu schätzen wissen. Und Personen, die sich weniger um Ansible kümmern, können ebenfalls davon profitieren, da es, mehr oder weniger, Ihr Computer (und Netzwerk) in die ultimative Entwicklungsumgebung verwandelt. Zusammengefasst ist es ein großartiges Projekt, das Entwickler kennen sollten!
Beitragen
Beiträge, Probleme und Funktionsanfragen sind willkommen! Zögern Sie nicht, die Issues-Seite zu überprüfen. Wenn Sie einen Beitrag leisten möchten, schauen Sie sich bitte den Beitragsleitfaden an.
Sponsoring
Liebe großartige Person,
Ich erstelle Open-Source-Projekte aus Liebe. Obwohl ich einen Job, ein Dach über dem Kopf und so viel Fast Food, wie ich damit zurechtkomme, habe, wäre es trotzdem ziemlich cool, von der Community für etwas geschätzt zu werden, an dem ich viel Zeit und Geld investiert habe. Bitte ziehen Sie in Betracht, mich zu unterstützen! Wer weiß? Vielleicht kann ich meinen Job kündigen und Vollzeit Open-Source-Projekte veröffentlichen.
Mit freundlichen Grüßen,
Brian Zalewski
Partner
Nachfolgend finden Sie eine Liste von Dienstleistungen, die wir nutzen und die spezielle Anreize bieten, wenn Sie sich über unsere speziellen Links anmelden:

Lizenz
Copyright © 2020-2021 Megabyte LLC. Dieses Projekt ist MIT lizenziert.
Installs Android Studio and sets up Android SDKs on nearly any OS
ansible-galaxy install professormanhattan.androidstudio