Android Studio

Aus Avensio Wissenssammlung
Zur Navigation springen Zur Suche springen

Android Studio ist eine Entwicklungsumgebung für Android Anwendungen und basiert auf der IntelliJ Platform.

Die IDE enthält zusätzlich zu der Funkionalität, welche von der Platform bereit gestellt wird, einen Emulator für Android Geräte (Android Virtual Device: AVD). Für den Emulator kann eine Komponente zur Hardwarebeschleunigung über Virtualisierung installiert werden. Dies ist auch zu empfehlen. Auf Rechnern mit Intel CPU kann Intel HAXM verwendet werden. Unter Linux kann KVM verwendet werden.

Android Anwendungen werden hauptsächlich in Java und Kotlin geschrieben und verwenden Gradle als Bauwerkzeug. Die Verzeichnisstruktur von Gradle wird hier beschrieben.

Dies ist eine Anleitung für eine Mehrbenutzerinstallation unter Windows. Dabei wird das öffentliche Verzeichnis eines Rechners (C:\Users\Public\) genutzt, um einen zentralen Ordner zu haben für die Installation des SDK, sowie der Emulator-Images (system-images) und Emulator-Konfigurationen (AVD's). Andernfalls würde dies je Nutzer installiert werden, was einen immensen Teil der Platte belegen würde. Zusätzlich wird auch das Gradle Home Verzeichnis innerhalb des öffentlichen Ordners abgelegt, um auch den Zwischenspeicher für Abhängigkeiten gemeinsam (pro Rechner) zu nutzen. Das spart schon mal einiges an Plattenplatz. Es könnte auch noch ein weiterer Schritt gegangen werden und ein Netzlaufwerk für erstellt werden. Alle Verzeichnisse im öffentlichen Ordner, welche die Installation betreffen, könnten dann als Netzlaufwerk eingehängt werden. Falls das aus Sicht der Leistung passen würde - wenn mehrere Nutzer gleichzeitig vom Netzlaufwerk lesen - wäre das durchaus eine Option noch mehr Plattenplatz einzusparen.

Windows Installation

Für die Installation unter Windows wird die Installationsdatei heruntergeladen und mit .\android-studio-2021.1.1.22-windows.exe /S kann die Datei im Hintergrund installiert werden, da der Installer ein NSIS Installer ist (siehe hier 3.2.1 für häufig verwendete Optionen). Für Bilder des Einrichtungsassistenten von Android Studio siehe diesen Beitrag. Alle Schritte des Assistenten sind abgebildet.

Schritte der Installation

  1. Virtualisierungsunterstützung mit Skript 1 ermitteln
    1. (Intel CPU's) Ist VM-X deaktiviert, im BIOS/UEFI aktivieren
    2. (Intel CPU's) Ist Hyper-V aktiviert, kann dies über bcdedit.exe /set hypervisorlaunchtype off deaktiviert werden oder über die Ausführung von Skript 2
  2. (Intel CPU's) HAXM Installer herunterladen, in Skript 2 eintragen und installieren/akualisieren mit Skript 2
  3. Android Studio installieren mit Skript 3
  4. Eine Aufgabe erstellen, welche immer wenn sich ein Nutzer anmeldet Skript 5 ausführt

Umgebungsvariablen

Setzbare Umgebungsvariablen sind hier zu finden. Davon besonders interessant für die Installation auf Poolrechnern sind folgende:

  • ANDROID_SDK_ROOT =C:\Users\Public\Android\Sdk
  • ANDROID_PREFS_ROOT =C:\Users\Public\Android\emulator
  • ANDROID_AVD_HOME =C:\Users\Public\Android\emulator\.android\avd
  • GRADLE_USER_HOME =C:\Users\Public\Android\.gradleDiese können auf den Rechnern als Systemumgebungsvariablen gesetzt werden, sodass diese für alle Benutzer ermittelbar sind.

Mit der Variable ANDROID_SDK_ROOT wird das Wurzelverzeichnis des SDK's gesetzt. Dieses Verzeichnis muss existieren, wenn auch leer. Sonst wird die Systemvariable nicht genutzt und alles rund ums SDK in ein nutzerspezifisches Verzeichnis geschrieben (was die Platte voll müllt). Über ANDROID_PREFS_ROOT kann der Basispfad für alles rund um den Emulator gesetzt werden. Dort liegen die System-Images fürs Erstellen von Emulatoren und die AVD's (sozusagen die Emulatorkonfigurationen) selbst auch.

Ist bereits ein JDK installiert, müsste die Variable JAVA_HOME bereits vorhanden sein. U.a. darüber bezieht Android Studio die zu nutzende Java-Version. Es kann auch explizit für Android Studio (STUDIO_JDK) und auch Gradle (STUDIO_GRADLE_JDK) ein anderes JDK angegeben werden. ANDROID_AVD_HOME muss explizit gesetzt werden, sonst kann das periodische Aufräumskript (Skript 5) die AVD's nicht finden.

SDK Zusammenstellen

Das SDK welches von den Installationen genutzt werden soll muss einmal zusammengebaut werden und auf den Rechnern in dem entsprechenden Verzeichnis entpackt werden.

Entweder es wird im Android Studio Installationsskript der SDK Pfad abgeändert, oder das Archiv wird ins Standardverzeichnis entpackt (C:\Users\Public\Android\Sdk).

SDK Tools
  1. Android SDK Build-Tools (benötigt)
  2. NDK (falls C++ Erweiterungen verwendet werden sollen)
  3. Android SDK Command-line Tools (optional)
  4. CMake (wird NDK installiert, sollte auch CMake installiert werden)
  5. Android Auto API Simulators (optional)
  6. Android Auto Desktop Head Unit Emulator (optional)
  7. Android Emulator (benötigt)
  8. Android Emulator Hypervisor Driver für AMD Prozessoren (sollte auf AMD CPU's installiert werden)
  9. Android SDK Platform-Tools (benötigt)
  10. Google Play APK Expansion Library (optional)
  11. Google Play Instant Development SDK (optional)
  12. Google Play Licensing Library (optional)
  13. Google Play Services (optional)
  14. Google USB Driver (optional, sollte aber installiert werden wenn Google Geräte zum debuggen verbunden werden sollen)
  15. Google Web Driver (optional)
  16. Intel x86 Emulator Accelerator (HAXM Installer) (optional, sollte aber installiert werden)
  17. Layout Inspector image server for API 29-30 (optional, sollte aber installiert werden)
  18. Layout Inspector image server for API S (optional, sollte aber installiert werden)

Android Auto API Simulators und Android Auto Desktop Head Unit Emulator müssten vermutlich zusammen installiert werden. Müsste bei Bedarf ausprobiert werden. Genauso müssen vermutlich auch das NDK und CMake zusammen installiert werden um die Erweiterungen auch kompilieren zu können.

SDK Platforms

Als SDK Plattformen könnten alle API-Level von 24-30 (bzw. bis zur aktuell neusten Version, für die ein x86 Image verfügbar ist) abgedeckt werden. Es könnten auch nur die neusten 4-6 Versionen oder weniger abgedeckt werden. Ist eine Anforderung gegeben, wird natürlich diese verwendet.

Es ist wichtig zu beachten, dass mit HAXM nur x86 Images ausgeführt werden können! Bei anderen Bibliotheken - z.B. für AMD Prozessoren - müsste in Erfahrung gebracht werden, welche Images funktionieren.

Einrichtungsassistenten deaktivieren

Nach der Installation kann in die Datei C:\Program Files\Android\Android Studio\bin\idea.properties folgende Zeile ans Ende eingetragen werden: disable.android.first.run=true Android Studio wird ja für alle Benutzer des Rechners installiert. Wenn ein Benutzer Android Studio zum ersten mal startet, wird damit der Einrichtungsassisten am Anfang deaktiviert. In der Datei idea.properties können auch noch weitere Einträge gemacht werden. Damit können Konfigurationen, Zwischenspeicher, Erweiterungen und Protokollpfade selbst angegeben werden. Siehe dazu Standardpfade Ändern. Ein Pfad zur idea.properties Datei kann auch als Umgebungsvariable angegeben werden: STUDIO_PROPERTIES

Emulator

Wurde ein AVD bereits in Android Studio angelegt, kann diese auch über die Befehlszeile gestartet werden:

C:\Users\Public\Android\Sdk\tools\emulator.exe -avd Pixel_5_API_28_2 -verbose -show-kernel

Hardwarebeschleunigung

Die Emulation rein auf der CPU ist relativ langsam, daher sollte eine Hardwarevirtualisierung verwendet werden. Was für welchen CPU Typ unter Windows verwendet werden sollte, kann der Dokumenation entnommen werden. Dort sind auch Abschnitte zur Installation unter Mac und Linux.

Intel HAXM

Um HAXM auf einem Rechner erfolgreich zu installieren, müssen 2 Bedingungen zutreffen:

  • Hyper-V deaktivieren
  • VT-X aktivieren

Hyper-V kann mit dem Befehl bcdedit.exe /set hypervisorlaunchtype off deaktiviert werden (siehe Tipps und Tricks). Wenn Hyper-V deaktiviert ist, muss noch geprüft werden, ob VT-X verfügbar bzw. aktiviert ist und gegebenenfalls aktiviert werden.

Für die Prüfung ob Hyper-V deaktiviert und VT-X aktiviert ist, kann das Checktool von Intel verwendet werden. Im Android SDK Tools Verzeichnis (ANDROID_SDK_ROOT\tools) ist nicht nur die Binärdatei des Emulators, sondern auch weitere Werkzeuge. Darunter ist auch emulator-check.exe.

Mit diesem Werkzeug kann ebenfalls ermittelt werden ob HAXM installiert und nutzbar ist (.\emulator-check.exe accel) und ob Hyper-V installiert ist (.\emulator-check.exe hyper-v). Für weitere Möglichkeiten einfach das Programm ohne jegliche Parameter aufrufen. HAXM kann im Hintergrund über einen Installer installiert werden. Dieser produziert eine Protokolldatei, welcher zur Fehlerbehandlung gelesen werden kann. Der Installer kann von hier heruntergeladen werden. Der Installer kann NICHT mit Leerzeichen in Pfaden umgeben! Heißt C:\Users\Vorname Nachname\Downloads\... ist kein gültiger Pfad für das Arbeitsverzeichnis des Skriptes, C:\Users\Public\Android\ schon, da keine Leerzeichen.

Aktualisierungen

Intel HAXM

Um HAXM zu aktualisieren, wird der neuste Installer von Github heruntergeladen und auf die Rechner in das HAXM_INSTALLER_DIR Verzeichnis hochgeladen und entpackt. Anschließend kann HAXM über das Ausführung von Skript 2 aktualisiert werden. Ist es aus irgendeinem Grund nötigt eine ältere HAXM Version zu installieren, muss die aktuelle Version zuerst deinstalliert werden (%HAXM_INSTALLER_DIR%\silent_install.bat *-u*). Anschließend kann ein älterer Installer ausgeführt werden.

Android SDK

Mit Skript 4 aus dem Anhang können alle SDK Komponenten aktualisiert werden. Dazu wird eine Internetverbindung benötigt. Im Skript muss, falls es ein Proxynetz ist, der Proxyserver angegeben werden. Falls nicht, werden einfach die 3 Parameter --proxy_host, --proxy_port, --proxy entfernt.

Wurde das SDK auf einem Arbeitsrechner zusammengestellt ist es empfehlenswert, dieses Verzeichnis für die Aktualisierung zu behalten und wenn eine Aktualisierung durchgeführt werden soll, dass SDK in diesem Verzeichnis zu aktualisieren. Über diesen Weg muss allerdings das SDK wieder auf alle Rechner geladen und an der richtigen Stelle entpackt werden, außer es wird ein Netzlaufwerk verwendet. Das SDK könnte dann einfach auf dem Netzlaufwerk aktualisiert werden und alle Rechner, welche das Netzlaufwerk nutzen, würden dadurch die neusten Versionen nutzen.

Android Studio

Um Android Studio selbst zu aktualisieren reicht es aus, den neusten Installer herunterzuladen und Skript 3 erneut auf den Rechnern auszuführen. Ein Downgrade auf eine ältere Version ist ebenfalls möglich; einfach den richtigen Installer herunterladen und im Skript angeben.

Fehlerbehandlung

Problem 1: Gradle Arbeitsverzeichnis kann bei Ausführung nicht gesetzt werden.

Lösung: Es sollte ausreichen in solchen Fällen das Gradle Verzeichnis zu synchronisieren. Besteht das Problem weiter, könnte ein Neustart helfen, da ein Nutzer noch angemeldet sein könnte und Android Studio offen hat.

Problem 2: Beim Installieren des SDK (Ein leerer SDK Pfad wurde angegeben) erscheint die Meldung "Your Android SDK is missing, out of date or corrupted"

Lösung: Android SDK Manager öffnen und die blaue "edit" Schaltfläche klicken

Problem 3: Emulator startet zwar und auch die App baut normal, wird aber nicht installiert (nicht autorisiert)

Lösung: Ausführung von Skript 5 löscht die Schlüsselpaare und alle Dateien aller Emulatoren. Wird danach der Emulator gestartet, wird ein neues Schlüsselpaar generiert und dieses für den Zugriff auf das emulierte Gerät automatisch autorisiert. Geschieht das nicht automatisch, müsste auf dem emulierten Gerät eine Autorisierungsanfrage erscheinen, welche für die Autorisierung akzeptiert werden muss.

Skripte

1-Virtualisierungsunterstützung-ermitteln.bat

@ECHO OFF
REM -- UTF-8 Ausgaben für dieses Skript verwenden
chcp 65001 > NUL

REM Umgebungsvariablen setzen
REM Prüfwerkzeug beinhaltendes Verzeichnis
setlocal
set CHECKTOOL_DIR="%USERPROFILE%\Downloads\"

if not exist %CHECKTOOL_DIR%\checktool.exe (
  echo Checktool fehlt! Lade dieses von https://github.com/intel/haxm/releases herunter.
  PAUSE
  EXIT /B 0
)

"%USERPROFILE%\Downloads\checktool.exe" -v | findstr /c:"VMX supported" > "%TMP%\vmx.txt"
for /f "tokens=4" %%i in ('type "%TMP%\vmx.txt"') do @(if /i "Yes" NEQ "%%i" (echo VMX wird nicht unterstützt! Hardwarevirtualisierung mit Intel HAXM ist nicht möglich))
type "%TMP%\vmx.txt"

"%USERPROFILE%\Downloads\checktool.exe" -v | findstr /c:"VMX enabled" > "%TMP%\vmx.txt"
for /f "tokens=4" %%i in ('type "%TMP%\vmx.txt"') do @(if /i "Yes" NEQ "%%i" (echo VMX ist deaktiviert. Hardwarevirtualisierung muss im BIOS/UEFI aktiviert werden))
type "%TMP%\vmx.txt"
del "%TMP%\vmx.txt"

"%USERPROFILE%\Downloads\checktool.exe" -v | findstr /c:"Hyper-V disabled" > "%TMP%\hyper-v.txt"
for /f "tokens=4" %%i in ('type "%TMP%\hyper-v.txt"') do @(if /i "Yes" NEQ "%%i" (echo Hyper-V ist aktiviert. Es wird empfohlen Hyper-V für die Hardwarebeschleunigung zu deaktivieren, da sonst Probleme auftreten können))
type "%TMP%\hyper-v.txt"
del "%TMP%\hyper-v.txt"

endlocal

PAUSE
EXIT /B 0

2-HAXM-installieren.bat

@ECHO OFF
REM -- UTF-8 Ausgaben für dieses Skript verwenden
chcp 65001 > NUL

REM Umgebungsvariablen setzen
setlocal
set HAXM_INSTALLER_DIR=C:\Users\Public\HAXM

REM Hyper-V deaktivieren
echo Hyper-V deaktivieren
bcdedit.exe /set hypervisorlaunchtype off
echo ----

call %HAXM_INSTALLER_DIR%\silent_install.bat
endlocal

PAUSE
EXIT /B 0

3-Android-Studio-installieren.bat

@ECHO OFF
REM -- UTF-8 Ausgaben für dieses Skript verwenden
chcp 65001 > NUL

REM -- Benötigte Systemvariablen setzen
setx ANDROID_SDK_ROOT C:\Users\Public\Android\Sdk /m
setx ANDROID_PREFS_ROOT C:\Users\Public\Android\emulator /m
setx ANDROID_AVD_HOME C:\Users\Public\Android\emulator\.android\avd /m
setx GRADLE_USER_HOME C:\Users\Public\Android\.gradle /m

setlocal
REM -- Benötigte Umgebungsvariablen setzen
set INSTALLER="%USERPROFILE%\Downloads\android-studio-2021.1.1.22-windows.exe"

REM -- SDK Verzeichnis MUSS bereits erstellt sein, sonst wird die Variable nicht verwendet!
if not exist %ANDROID_SDK_ROOT% mkdir %ANDROID_SDK_ROOT%

REM -- Eigentliche Installation
%INSTALLER% /S
endlocal

REM -- Einrichtungsassistenten deaktivieren
findstr /c:disable.android.first.run=true "C:\Program Files\Android\Android Studio\bin\idea.properties" || (
  echo "disable.android.first.run=true" >> "C:\Program Files\Android\Android Studio\bin\idea.properties"
)

PAUSE

EXIT /B 0

4-SDK-Manager-Aktualisieren.bat

@ECHO OFF

echo SDK Manager Version
setlocal
set SDK_MANAGER_BAT=C:\Users\Public\Android\Sdk\tools\bin\sdkmanager.bat
call %SDK_MANAGER_BAT% --version
call %SDK_MANAGER_BAT% --list
call %SDK_MANAGER_BAT% --update
endlocal

PAUSE
EXIT /B 0

5-Aufräumen.bat

@ECHO OFF
REM -- UTF-8 Ausgaben für dieses Skript verwenden
chcp 65001 > NUL

REM -- Schlüsselpaar im Nutzerverzeichnis löschen
del "%USERPROFILE%\.android\adbkey"
del "%USERPROFILE%\.android\adbkey.pub"

REM -- Schlüsselpaar im öffentlichen Verzeichnis löschen
del "%ANDROID_PREFS_ROOT%\.android\adbkey"
del "%ANDROID_PREFS_ROOT%\.android\adbkey.pub"

REM -- Alle Daten aller AVD's löschen
"%ANDROID_SDK_ROOT%\tools\emulator.exe" -list-avds > "%TMP%\avds.txt"
set /a count=0
setlocal enabledelayedexpansion
for /F "tokens=* delims=" %%a in ('type "%TMP%\avds.txt"') do (
	set /a count+=1
	set "PathFile[!count!]=%%~a"
)

del "%TMP%\avds.txt"

for /L %%i in (1,1,%Count%) do (
	call :WipeData "!PathFile[%%i]!"
)
PAUSE
EXIT /B 0

::-----------------------------------
:WipeData
	if "%~1" == "" EXIT /B
	echo Daten des Gerätes %~1 werden gelöscht
	"%ANDROID_SDK_ROOT%\tools\emulator.exe" -avd %~1 -wipe-data
	EXIT /B
	
::-----------------------------------

REM PAUSE
REM EXIT /B 0