Ajouter des ressources d'application

Les ressources d'application telles que les bitmaps et les mises en page sont organisées par type dans des sous-répertoires spécifiques au sein du répertoire res/ de chaque module. Vous pouvez également ajouter des versions supplémentaires de chaque fichier, optimisées pour différentes configurations d'appareil, comme une version haute résolution d'un bitmap pour les écrans haute densité.

Android Studio vous permet d'ajouter des ressources de plusieurs manières en fonction de leur type. Cette page explique comment ajouter des fichiers de ressources de base, modifier l'emplacement de vos ressources et les fusionner.

Consultez les pages suivantes pour savoir comment créer des types de ressources spécifiques :

Pour savoir comment référencer les ressources dans le code de votre application, consultez Présentation des ressources d'application.

Ajouter un fichier de ressource XML

Bien que les pages ci-dessus décrivent des processus personnalisés pour chaque type de ressource, vous pouvez ajouter n'importe quel fichier de ressource XML en procédant comme suit :

  1. Cliquez sur le module d'application cible dans la fenêtre Project (Projet) de la vue Android ou Project (Projet).

  2. Sélectionnez File > New > Android resource file (Fichier > Nouveau > Fichier de ressource Android).

    Figure 1. Boîte de dialogue New Resource File (Nouveau fichier de ressource)

  3. Saisissez les informations requises dans la boîte de dialogue :
    • File name (Nom du fichier) : saisissez le nom du fichier XML (le suffixe .xml n'est pas nécessaire).
    • Resource type (Type de ressource) : sélectionnez le type de ressource que vous souhaitez créer.
    • Root element (Élément racine) : le cas échéant, sélectionnez l'élément XML racine du fichier. Certains types de ressources n'acceptent qu'un seul type d'élément racine. Selon le type de ressource sélectionné, il est possible que ce champ ne soit pas modifiable.
    • Source set (Ensemble de sources) : sélectionnez l'ensemble de sources dans lequel vous souhaitez enregistrer le fichier.
    • Directory name (Nom du répertoire) : le nom du répertoire doit être propre au type de ressource et aux qualificatifs de configuration. Ne modifiez ce champ que si vous souhaitez ajouter manuellement des qualificatifs de configuration au nom du répertoire (utilisez plutôt Available qualifiers [Qualificatifs disponibles]).
    • Available qualifiers (Qualificatifs disponibles) : au lieu d'ajouter manuellement des qualificatifs de configuration au nom du répertoire, vous pouvez les sélectionner dans la liste, puis cliquer sur Add (Ajouter) .
  4. Une fois que vous avez ajouté tous les qualificatifs souhaités, cliquez sur OK.

Astuce : Pour ouvrir une version simplifiée de la boîte de dialogue New Resource File (Nouveau fichier de ressource), propre au type de ressource que vous souhaitez ajouter, effectuez un clic droit sur un répertoire de ressources dans le dossier res, puis sélectionnez New > type-name resource file (Nouveau > Fichier de ressource type-name).

Ressources XML complexes intégrées

Certaines ressources complexes nécessitent plusieurs fichiers XML. Par exemple, un drawable vectoriel animé comporte un objet drawable vectoriel et un objet d'animation, ce qui nécessite au moins trois fichiers XML.

Dans cet exemple, vous pouvez créer et conserver les trois fichiers XML si vous devez en réutiliser un ou plusieurs. Toutefois, si ces fichiers XML ne servent que pour ce drawable vectoriel animé, vous pouvez utiliser le format de ressource intégrée fourni par l'outil Android Asset Packaging Tool (AAPT). AAPT vous permet de définir les trois ressources dans un même fichier XML. Pour en savoir plus, consultez Ressources XML complexes intégrées.

Ajouter un répertoire de ressources

Pour ajouter un répertoire de ressources, procédez comme suit :

  1. Cliquez sur le module d'application cible dans la fenêtre Project (Projet).

  2. Sélectionnez File > New > Android resource directory (Fichier > Nouveau > Répertoire de ressources Android).

    Figure 2. Boîte de dialogue New Resource Directory (Nouveau répertoire de ressources)

  3. Saisissez les informations requises dans la boîte de dialogue :
    • Directory name (Nom du répertoire) : le nom du répertoire doit être propre au type de ressource et aux qualificatifs de configuration. Ne modifiez ce champ que si vous souhaitez ajouter manuellement des qualificatifs de configuration au nom du répertoire (utilisez plutôt Available qualifiers [Qualificatifs disponibles]).
    • Resource type (Type de ressource) : sélectionnez le type de ressource que contiendra le répertoire.
    • Source set (Ensemble de sources) : sélectionnez l'ensemble de sources dans lequel vous souhaitez enregistrer le répertoire.
    • Available qualifiers (Qualificatifs disponibles) : au lieu d'ajouter manuellement des qualificatifs de configuration au nom du répertoire, vous pouvez les sélectionner dans la liste, puis cliquer sur Add (Ajouter) .
  4. Une fois que vous avez ajouté tous les qualificatifs souhaités, cliquez sur OK.

Modifier votre répertoire de ressources

Par défaut, vos ressources sont stockées dans module-name/src/source-set-name/res/. Par exemple, les ressources de l'ensemble de sources principal de votre module se trouvent dans src/main/res/, tandis que celles de l'ensemble de sources de débogage se trouvent dans src/debug/res/.

Cependant, vous pouvez remplacer ces chemins d'accès par n'importe quel autre emplacement (relatif au fichier build.gradle) avec la propriété res.srcDirs dans le bloc sourceSets. Exemple :

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")
        }
    }
}

Vous pouvez également spécifier plusieurs répertoires de ressources pour un ensemble de sources, qui seront ensuite fusionnés par les outils de compilation. Exemple :

Groovy

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

Kotlin

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

Pour en savoir plus, consultez la section portant sur les ensembles de sources.

Fusion de ressources

Les ressources incluses dans le fichier final de votre application peuvent provenir de trois sources :

  • L'ensemble de sources principal (généralement situé dans src/main/res/)
  • Les ensembles de sources de variantes de compilation
  • Les bibliothèques Android (AAR)

Lorsque toutes les ressources de chaque ensemble de sources ou bibliothèque sont uniques, elles sont ajoutées à l'application finale. Une ressource est considérée comme unique si son nom de fichier est propre à la fois à son type de ressource et au qualificatif de ressource (si défini).

S'il existe plusieurs versions correspondantes de la même ressource, une seule version est incluse dans l'application finale. Les outils de compilation sélectionnent la version à conserver selon l'ordre de priorité suivant (la priorité la plus élevée étant à gauche) :

variante de compilation > type de compilation > type de produit > ensemble de sources principal > dépendances de bibliothèque

Par exemple, si l'ensemble de sources principal contient :

  • res/layout/example.xml
  • res/layout-land/example.xml

Le type de compilation de débogage contient :

  • res/layout/example.xml

Ensuite, l'application finale inclut res/layout/example.xml (qui provient du type de compilation de débogage) et res/layout-land/example.xml (qui provient de l'ensemble de sources principal).

Toutefois, si votre configuration de compilation spécifie plusieurs dossiers de ressources pour un ensemble de sources donné et qu'il existe des conflits entre ces sources, une erreur se produit et la fusion échoue, car chaque répertoire de ressources a la même priorité.