App-Ressourcen hinzufügen

App-Ressourcen wie App-Symbole, lokalisierte Strings und Bitmaps sind in typspezifischen Verzeichnissen im res/-Verzeichnis jedes Moduls organisiert. Sie können auch alternative Versionen jeder Datei hinzufügen, die für verschiedene Gerätekonfigurationen optimiert sind, z. B. eine hochauflösende Version einer Bitmap für Bildschirme mit hoher Dichte.

In Android Studio können Sie auf verschiedene Arten neue Ressourcen und alternative Ressourcen hinzufügen, je nach Ressourcentyp. Auf dieser Seite wird beschrieben, wie Sie grundlegende Ressourcendateien hinzufügen, den Speicherort Ihrer Ressourcen ändern und wie die Zusammenführung von Ressourcen funktioniert.

In Jetpack Compose definieren Sie die UI in Kotlin anstelle von XML-Layouts. Sie verwenden jedoch weiterhin das Verzeichnis res/, um statische Assets auf App-Ebene wie Symbole, Schriftarten und Übersetzungen zu speichern. Informationen zum Zugriff auf diese Ressourcen in Ihren zusammensetzbaren Funktionen finden Sie unter Ressourcen in Compose.

Auf den folgenden Seiten finden Sie Details zum Erstellen bestimmter Ressourcentypen:

Informationen zum Verweisen auf die Ressourcen aus Ihrem App-Code finden Sie unter Übersicht über App-Ressourcen.

XML-Ressourcendatei hinzufügen

Obwohl die Links auf der vorherigen Seite Workflows beschreiben, die an jeden Ressourcentyp angepasst sind, können Sie jede XML-Ressourcendatei mit den folgenden Schritten hinzufügen:

  1. Klicken Sie im Fenster Project (Projekt) in der Ansicht Android oder Project (Projekt) auf das Ziel-App-Modul.
  2. Wählen Sie File > New > Android resource file (Datei > Neu > Android-Ressourcendatei) aus.

    Abbildung 1 : Dialogfeld New Resource File (Neue Ressourcendatei).

  3. Füllen Sie die Details im Dialogfeld aus:
    • Dateiname: Geben Sie den Namen für die XML-Datei ein (das Suffix .xml ist nicht erforderlich).
    • Resource type (Ressourcentyp): Wählen Sie den Ressourcentyp aus, den Sie erstellen möchten.
    • Root element (Stammelement): Wählen Sie gegebenenfalls das XML-Stammelement für die Datei aus. Einige Ressourcentypen unterstützen nur einen Typ von Stammelement. Je nach ausgewähltem Ressourcentyp ist dies möglicherweise nicht bearbeitbar.
    • Source-Set: Wählen Sie das Source-Set aus, in dem Sie die Datei speichern möchten.
    • Directory name (Verzeichnisname): Das Verzeichnis muss so benannt werden, dass es spezifisch für den Ressourcentyp und die Konfigurationsqualifizierer ist. Bearbeiten Sie dies nur, wenn Sie dem Verzeichnisnamen manuell Konfigurationsqualifizierer hinzufügen möchten (verwenden Sie stattdessen Available qualifiers (Verfügbare Qualifizierer)).
    • Available qualifiers (Verfügbare Qualifizierer): Anstatt Konfigurations qualifizierer manuell in den Verzeichnisnamen einzufügen, können Sie sie hinzufügen, indem Sie einen Qualifizierer aus der Liste auswählen und auf Add (Hinzufügen) klicken.
  4. Klicken Sie auf OK, nachdem Sie alle gewünschten Qualifizierer hinzugefügt haben.

Komplexe XML-Ressourcen inline einfügen

Für einige komplexe Ressourcen sind mehrere XML-Ressourcendateien erforderlich. Compose bietet zwar robuste Animations-APIs, aber möglicherweise müssen Sie eine animierte Vektorgrafik verwenden, die ein Vektorgrafikobjekt und ein Animationsobjekt enthält und mindestens drei XML-Dateien erfordert.

In diesem Beispiel können Sie die drei separaten XML-Dateien erstellen und behalten, wenn Sie eine oder mehrere davon wiederverwenden müssen. Wenn die XML-Dateien jedoch nur für diese animierte Vektorgrafik verwendet werden, können Sie stattdessen das Inline-Ressourcenformat verwenden, das im Android Asset Packaging Tool (AAPT) bereitgestellt wird. Mit AAPT können Sie alle drei Ressourcen in einer XML-Datei definieren. Weitere Informationen finden Sie unter Komplexe XML-Ressourcen inline einfügen.

Ressourcenverzeichnis hinzufügen

So fügen Sie ein neues Ressourcenverzeichnis hinzu:

  1. Klicken Sie im Fenster Project (Projekt) auf das Ziel-App-Modul.
  2. Wählen Sie File > New > Android resource directory (Datei > Neu > Android-Ressourcenverzeichnis) aus.

    Abbildung 2 : Dialogfeld New Resource Directory (Neues Ressourcenverzeichnis).

  3. Füllen Sie die Details im Dialogfeld aus:
    • Directory name (Verzeichnisname): Das Verzeichnis muss so benannt werden, dass es spezifisch für den Ressourcentyp und die Kombination von Konfigurationsqualifizierern ist. Bearbeiten Sie dies nur, wenn Sie dem Verzeichnisnamen manuell Konfigurationsqualifizierer hinzufügen möchten (verwenden Sie stattdessen Available qualifiers (Verfügbare Qualifizierer)).
    • Resource type (Ressourcentyp): Wählen Sie den Ressourcentyp aus, den das Verzeichnis enthalten soll.
    • Source set (Quellsatz): Wählen Sie den Quellsatz aus, in dem sich das Verzeichnis befinden soll.
    • Available qualifiers (Verfügbare Qualifizierer): Anstatt Konfigurationsqualifizierer manuell in den Verzeichnisnamen einzufügen, können Sie sie hinzufügen, indem Sie einen Qualifizierer aus der Liste auswählen und auf Add (Hinzufügen) klicken.
  4. Klicken Sie auf OK, nachdem Sie alle gewünschten Qualifizierer hinzugefügt haben.

Ressourcenverzeichnis ändern

Standardmäßig befinden sich Ihre Ressourcen unter module-name/src/source-set-name/res/. Ressourcen für den Haupt-Source-Set Ihres Moduls befinden sich beispielsweise unter src/main/res/ und Ressourcen für den Debug-Source-Set unter src/debug/res/.

Sie können diese Pfade jedoch mit der Eigenschaft res.srcDirs im Block sourceSets in einen beliebigen anderen Speicherort (relativ zur Datei build.gradle) ändern. Beispiel:

Groovy

android {
    sourceSets {
        main {
            res.srcDirs = ['resources/main']
        }
        debug {
            res.srcDirs = ['resources/debug']
        }
    }
}

Kotlin

android {
    sourceSets {
        getByName("main") {
            res.srcDirs("resources/main")
        }
        getByName("debug") {
            res.srcDirs("resources/debug")
        }
    }
}

Sie können auch mehrere Ressourcenverzeichnisse für einen Quellsatz angeben. Die Build-Tools führen sie dann zusammen. Beispiel:

Groovy

android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

Kotlin

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

Weitere Informationen finden Sie unter Quellsätze.

Zusammenführung von Ressourcen

Ressourcen in Ihrer endgültigen App-Datei können aus drei Quellen stammen:

Wenn alle Ressourcen aus jedem Quellsatz oder jeder Bibliothek eindeutig sind, werden sie alle in die endgültige App aufgenommen. Eine Ressource gilt als eindeutig, wenn ihr Dateiname sowohl im Verzeichnis des Ressourcentyps als auch im Ressourcenqualifizierer eindeutig ist (falls definiert).

Wenn zwei oder mehr übereinstimmende Versionen derselben Ressource vorhanden sind, wird nur eine Version in die endgültige App aufgenommen. Die Build-Tools wählen die zu behaltende Version anhand der folgenden Prioritätsreihenfolge aus (höchste Priorität links):

Build-Variante > Build-Typ > Produktvariante > Haupt-Source-Set > Bibliotheksabhängigkeiten

Beispiel: Wenn das Haupt-Source-Set Folgendes enthält:

  • res/values/strings.xml
  • res/values-es/strings.xml

Und der Debug-Build-Typ Folgendes enthält:

  • res/values/strings.xml

Dann enthält die endgültige App res/values/strings.xml aus dem Debug-Build-Typ und res/values-es/strings.xml aus dem Haupt-Source-Set.

Wenn in Ihrer Build-Konfiguration jedoch mehrere Ressourcenordner für einen bestimmten Source-Set angegeben sind und es Konflikte zwischen diesen Quellen gibt, tritt ein Fehler auf und die Zusammenführung schlägt fehl, da alle Verzeichnisse der Ressourcen dieselbe Priorität haben.