Zusätzliches API-Level in Unity-Android-SDK installieren

Neuerdings kann über das Unity-Hub zusätzlich zum Editor auch gleich ein Android SDK installiert werden. Während diese Integration im Prinzip sehr angenehm ist, da sie einem das manuelle Herunterladen, Installieren und Konfigurieren des Android SDKs erspart, ist zunächst nicht klar, ob und wie sich diese minimierte SDK-Version konfigurieren lässt.

Anwendungsfall: Unterstützung älterer Android-Versionen

In meinem konkreten Fall hatte ich ein Projekt, das auch auf Handys mit etwas älteren Android-Versionen laufen soll. Neben der Umstellung der API-Level in den Projekt-Einstellungen muss die entsprechende Version auch vom Android-SDK unterstützt werden. In der neuen eingebetteten SDK-Version ist das nicht der Fall und eine manuelle Installation ist nötig.

Beispiel: Damit das Spiel auch auf älteren Handys läuft, kann es nötig sein, die API-Levels auf frühere Versionen einzustellen. Diese müssen dann aber auch im SDK installiert sein und fehlen in der Standard-SDK-Einbettung von Unity.

Hinzufügen von API-Leveln zum eingebauten Android-SDK in Unity

  • Finde zunächst den Installationspfad des eingebauten SDK, z.B. über die Einstellungen:
    • Menü Edit > Preferences > External Tools
    • Entferne den Haken bei Android SDK Tools installed with Unity
    • Klicke auf Browse… wodurch der SDK-Pfad im Texteingabefeld erscheint.
    • Kopiere diesen Pfad.
    • Setze wieder den Haken bei Android SDK Tools installed with Unity
Pfad über die Einstellungen finden (Unity 2019.1.2f1)
  • Öffne jetzt eine Konsole.
    Unter Windows 10:
    • Klicke auf Start/Windows-Symbol und tippe: cmd
    • Klicke mit der rechten Maustaste auf den Eintrag Eingabeaufforderung und wähle Als Administrator ausführen.
Eingabeaufforderung als Admin öffnen
  • Gib in die Eingabeaufforderung ein: chdir
    und dann den kopierten Pfad. Über Rechtsklick auf die Titelleiste kannst Du den Text aus der Zwischenablage einfügen.
  • Drücke dann Enter, um in den Pfad zu wechseln.
In den SDK-Installationsorder wechseln.
  • Wechsle in den Werkzeug-Unterordner durch Eingabe von cd tools\bin (Enter)
  • Um nun eine SDK-Version hinzuzufügen, führe einen Befehl wie diesen aus:
    sdkmanager "platforms;android-22"
    22 steht hier für das API-Level 22, wie in den Project Settings in Unity ablesbar (siehe erster Screenshot oben).
  • Typische Fehlermeldung:
    Warning: File C:\Users\username.android\repositories.cfg could not be loaded.
    Warning: Failed to read or create install properties file.

    Tritt auf, wenn die Kommandozeile nicht mit Administrator-Rechten gestartet wurde (siehe Anleitung oben).

Gegenprüfung

  • Öffne einen Explorer, z.B. durch Eingabe von
    explorer ..\..\platforms
    im Konsolenfenster.
  • In diesem Ordner müsste jetzt ein Unterordner mit den Versionsnamen existieren.
Prüfen, ob das neue SDK installiert wurde.

Auch bei Gradle-Fehlern nützlich

Mit dem oben beschriebenen Weg sind manchmal auch Gradle-Fehler zu beheben, die beim Erstellen der APK-Datei über File > Build auftauchen.

Failed to install the following Android SDK packages as some licences have not been accepted

Gradle-Fehler während Build-Vorgang wegen fehlender SDK-Version.

Bei diesem Fehler fehlt ein SDK und Gradle kann es nicht selbst installieren. In diesem Fall ablesen welche Version fehlt (hier 27) und wie oben beschrieben manuell installieren: sdkmanager "platforms;android-27"

Failed to install the following SDK components: build-tools, … SDK directory is not writeable

Gradle-Fehler während Build-Vorgang wegen fehlenden Tools.

Es kann auch passieren, dass Gradle Werkzeug-Komponenten vermisst und wegen fehlender Administrator-Rechte nicht selbst installieren kann. Auch dies lässt sich manuell korrigieren: sdkmanager "build-tools;28.0.2"

Das fehlende Fragment gibt Gradle in der Fehlermeldung direkt an (build-tools;28.0.2).

Zusammenfassung

Auch 2019 ist die Entwicklung von Mobil-Anwendungen noch immer voller technischer Hürden. Die Integration des Android-SDK in die Unity-Editor-Installation ist zwar gut gemeint, sorgt in der Praxis aber erstmal für zusätzliche Herausforderungen, sobald die Projektanforderung von der Voreinstellung abweicht.

Über eine Kommandozeile mit Admin-Berechtigung lassen sich SDK-Versionen und Werkzeuge manuell installieren, was sich bei einigen Gradle-Fehlern im Build-Vorgang als nützlich erweist.

Dr. René Bühling

Hi, mein Name ist René und ich möchte Dir dabei helfen, deinen Traum vom eigenen Computerspiel Wirklichkeit werden zu lassen. Mein erstes kommerziell veröffentlichtes Spiel habe ich Mitte der 1990er Jahre als Hobby-Projekt mit einem Basic-Dialekt unter Windows entwickelt. Seither verfolge ich das Thema Spieleentwicklung in Hobby, Studium und Beruf. Ich habe über 20 Jahre Erfahrung in allen Phasen des Entwicklungsprozesses, die ich gerne mit dir teilen möchte.