Référence des attributs de l'espace de noms tools

Bien que Jetpack Compose gère les outils de conception d'interface utilisateur directement dans Kotlin, l'espace de noms tools: reste essentiel pour les configurations au niveau du projet. Les fichiers XML Android standards, tels que AndroidManifest.xml et res/raw/keep.xml, utilisent des attributs tools: pour gérer les avertissements Lint et configurer le réducteur de ressources.

Lorsque vous compilez votre application, les outils de compilation suppriment ces attributs de sorte que cela n'ait pas d'incidence sur la taille de votre APK ni sur le comportement lors de l'exécution.

Pour utiliser ces attributs, ajoutez l'espace de noms tools à l'élément racine de chaque fichier XML dans lequel vous souhaitez les utiliser, comme indiqué ci-dessous :

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

Attributs de gestion des exceptions

Les attributs suivants permettent de supprimer les messages d'avertissement lint :

tools:ignore

Destiné à : tous les éléments

Utilisé par : lint

Cet attribut accepte une liste d'ID de problèmes lint séparés par une virgule que les outils doivent ignorer sur cet élément ou sur l'un de ses descendants.

Vous pouvez par exemple indiquer aux outils d'ignorer l'erreur MissingTranslation :

<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>

tools:targetApi

Destiné à : tous les éléments

Utilisé par : lint

Cet attribut fonctionne de la même manière que l'annotation @TargetApi dans le code Java ou l'annotation @RequiresApi dans le code Kotlin. Il vous permet de spécifier le niveau d'API (sous forme d'entier ou de nom de code) prenant en charge cet élément.

Cette action indique aux outils lint que vous pensez que cet élément (et tous ses enfants) ne sera utilisé qu'au niveau d'API spécifié ou à un niveau supérieur. Ainsi, lint ne vous avertit pas si cet élément ou ses attributs ne sont pas disponibles au niveau de l'API que vous spécifiez en tant que votre minSdkVersion.

Vous pouvez par exemple vous servir de cet attribut, car vous déclarez un <service> dans votre AndroidManifest.xml qui utilise un type de service de premier plan disponible uniquement à partir du niveau d'API 34, mais le minSdkVersion de votre projet est inférieur :

<service
    android:name=".playback.MediaPlaybackService"
    android:foregroundServiceType="mediaPlayback"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="34" />

tools:locale

Destiné à <resources>

Utilisé par : lint, éditeur Android Studio

Cet attribut indique aux outils la langue/les paramètres régionaux par défaut des ressources dans l'élément <resources> donné, pour éviter les avertissements du correcteur orthographique. Sinon, l'outil suppose que la langue est l'anglais.

La valeur doit correspondre à un qualificatif de paramètres régionaux valide.

Vous pouvez par exemple ajouter cet attribut à votre fichier values/strings.xml par défaut pour indiquer que la langue utilisée pour les chaînes par défaut est l'espagnol plutôt que l'anglais :

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="es">

Attributs de réduction des ressources

Les attributs suivants vous permettent d'activer des vérifications de référence strictes et de spécifier si vous souhaitez conserver ou supprimer certaines ressources lorsque vous utilisez la réduction des ressources.

Pour activer la réduction des ressources, définissez la propriété shrinkResources sur true dans votre fichier build.gradle (avec minifyEnabled pour la minification du code).

Exemple :

Groovy

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

Kotlin

android {
    ...
    buildTypes {
        getByName("release") {
            isShrinkResources = true
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

tools:shrinkMode

Destiné à : <resources>

Utilisé par : outils de compilation avec réduction des ressources

Cet attribut vous permet de spécifier si les outils de compilation doivent utiliser les éléments suivants :

  • Mode sans échec : conservez toutes les ressources explicitement mentionnées et qui peuvent être référencées de manière dynamique en appelant Resources.getIdentifier().
  • Mode strict : ne conservez que les ressources explicitement citées dans le code ou dans d'autres ressources.

Le mode sans échec (shrinkMode="safe") est utilisé par défaut. Pour utiliser le mode strict à la place, ajoutez shrinkMode="strict" à la balise <resources>, comme ci-dessous :

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" />

Lorsque vous activez le mode strict, vous devrez peut-être utiliser tools:keep pour conserver les ressources qui ont été supprimées, mais que vous souhaitez utiliser, et utiliser tools:discard pour supprimer explicitement d'autres ressources supplémentaires.

Pour en savoir plus, consultez la section Réduire vos ressources.

tools:keep

Destiné à : <resources>

Utilisé par : outils de compilation avec réduction des ressources

Lorsque vous utilisez la réduction des ressources pour supprimer des ressources inutilisées, cet attribut vous permet de spécifier les ressources à conserver (en général parce qu'elles sont référencées de manière indirecte lors de l'exécution, par exemple en transmettant un nom de ressource généré dynamiquement à Resources.getIdentifier()).

Pour cela, créez un fichier XML dans votre répertoire de ressources (par exemple, res/raw/keep.xml) avec une balise <resources> et spécifiez chaque ressource à conserver dans l'attribut tools:keep sous forme de liste d'éléments séparés par une virgule. Vous pouvez utiliser un astérisque comme caractère générique.

Exemple :

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />

Pour en savoir plus, consultez la section Réduire vos ressources.

tools:discard

Destiné à <resources>

Utilisé par : outils de compilation avec réduction des ressources

Lorsque vous utilisez la réduction des ressources pour enlever les ressources inutilisées, cet attribut vous permet de spécifier les ressources à supprimer manuellement (en général parce que la ressource est référencée, mais d'une manière qui n'affecte pas votre application, ou parce que le plug-in Gradle a déduit de façon erronée que la ressource est référencée).

Pour cela, créez un fichier XML dans votre répertoire de ressources (par exemple, res/raw/keep.xml) avec une balise <resources> et spécifiez chaque ressource à supprimer dans l'attribut tools:discard sous forme de liste d'éléments séparés par une virgule. Vous pouvez utiliser un astérisque comme caractère générique.

Exemple :

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:discard="@layout/unused_1" />

Pour en savoir plus, consultez la section Réduire vos ressources.

Ressources supplémentaires

Afficher le contenu