Referenz zu tools-Attributen

Während Jetpack Compose die UI-Designzeit-Tools direkt in Kotlin verarbeitet, ist der tools:-Namespace für Konfigurationen auf Projektebene weiterhin unerlässlich. In Standard-Android-XML-Dateien wie AndroidManifest.xml und res/raw/keep.xml werden tools:-Attribute verwendet, um Lint-Warnungen zu verwalten und die Entfernung von Ressourcen zu konfigurieren.

Wenn Sie Ihre App erstellen, entfernen die Build-Tools diese Attribute, sodass sie sich nicht auf die APK-Größe oder das Laufzeitverhalten auswirken.

Um diese Attribute zu verwenden, fügen Sie den tools-Namespace dem Stammelement jeder XML-Datei hinzu, in der Sie sie verwenden möchten, wie hier gezeigt:

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

Attribute zur Fehlerbehandlung

Mit den folgenden Attributen können Sie Lint-Warnmeldungen unterdrücken:

tools:ignore

Vorgesehen für:jedes Element

Verwendet von: Lint

Dieses Attribut akzeptiert eine durch Kommas getrennte Liste von Lint-Problem-IDs, die die Tools für dieses Element oder seine Nachfolger ignorieren sollen.

Sie können die Tools beispielsweise anweisen, den Fehler MissingTranslation zu ignorieren:

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

tools:targetApi

Vorgesehen für: jedes Element

Verwendet von: Lint

Dieses Attribut funktioniert genauso wie die @TargetApi Annotation in Java-Code oder die @RequiresApi Annotation in Kotlin-Code. Damit können Sie die API-Ebene angeben, die dieses Element unterstützt (entweder als Ganzzahl oder als Codename).

Dadurch wird den Lint-Tools mitgeteilt, dass dieses Element und alle untergeordneten Elemente nur auf der angegebenen API-Ebene oder höher verwendet werden. Lint warnt Sie nicht, wenn dieses Element oder seine Attribute auf der API-Ebene, die Sie als minSdkVersion angeben, nicht verfügbar sind.

Sie können dieses Attribut beispielsweise verwenden, weil Sie in Ihrer AndroidManifest.xml einen <service> deklarieren, der einen Dienst im Vordergrund verwendet, der nur auf API-Ebene 34 und höher verfügbar ist, die minSdkVersion Ihres Projekts jedoch niedriger ist:

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

tools:locale

Vorgesehen für: <resources>

Verwendet von:Lint, Android Studio-Editor

Damit wird den Tools mitgeteilt, welche Standardsprache oder welches Standardgebietsschema für die Ressourcen in dem angegebenen <resources> Element verwendet werden soll, um Warnungen von der Rechtschreibprüfung zu vermeiden. Andernfalls geht das Tool davon aus, dass die Sprache Englisch ist.

Der Wert muss ein gültiger Gebietsschema Qualifikator sein.

Sie können dies beispielsweise Ihrer Standarddatei values/strings.xml hinzufügen, um anzugeben, dass die für die Standardstrings verwendete Sprache Spanisch und nicht Englisch ist:

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

Attribute zur Entfernung von Ressourcen

Mit den folgenden Attributen können Sie strenge Referenzprüfungen aktivieren und deklarieren, ob bestimmte Ressourcen bei der Verwendung von Entfernung von Ressourcenbeibehalten oder verworfen werden sollen.

Wenn Sie die Entfernung von Ressourcen aktivieren möchten, setzen Sie die Eigenschaft shrinkResources in Ihrer build.gradle-Datei auf true. Das gilt auch für minifyEnabled für die Codekomprimierung.

Beispiel:

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

Vorgesehen für: <resources>

Verwendet von:Build-Tools mit Entfernung von Ressourcen

Mit diesem Attribut können Sie angeben, ob die Build-Tools Folgendes verwenden sollen:

  • Abgesicherter Modus: Alle Ressourcen beibehalten, die explizit zitiert werden und auf die möglicherweise dynamisch mit einem Aufruf von Resources.getIdentifier() verwiesen wird.
  • Strenger Modus:Nur die Ressourcen beibehalten, die explizit im Code oder in anderen Ressourcen zitiert werden.

Standardmäßig wird der abgesicherte Modus verwendet (shrinkMode="safe"). Wenn Sie stattdessen den strikten Modus verwenden möchten, fügen Sie shrinkMode="strict" dem <resources> Tag hinzu, wie hier gezeigt:

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

Wenn Sie den strikten Modus aktivieren, müssen Sie möglicherweise tools:keep verwenden, um Ressourcen beizubehalten, die entfernt wurden, die Sie aber tatsächlich benötigen, und tools:discard verwenden, um noch mehr Ressourcen explizit zu entfernen.

Weitere Informationen finden Sie unter Ressourcen verkleinern.

tools:keep

Vorgesehen für: <resources>

Verwendet von:Build-Tools mit Entfernung von Ressourcen

Wenn Sie die Entfernung von Ressourcen verwenden, um nicht verwendete Ressourcen zu entfernen, können Sie mit diesem Attribut Ressourcen angeben, die beibehalten werden sollen. Das ist in der Regel der Fall, wenn während der Laufzeit indirekt auf sie verwiesen wird, z. B. durch Übergeben eines dynamisch generierten Ressourcennamens an Resources.getIdentifier().

Erstellen Sie dazu eine XML-Datei in Ihrem Ressourcenverzeichnis (z. B. res/raw/keep.xml) mit einem <resources> Tag und geben Sie jede beizubehaltende Ressource im Attribut tools:keep als durch Kommas getrennte Liste an. Sie können das Sternchen als Platzhalter verwenden.

Beispiel:

<?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" />

Weitere Informationen finden Sie unter Ressourcen verkleinern.

tools:discard

Vorgesehen für: <resources>

Verwendet von:Build-Tools mit Entfernung von Ressourcen

Wenn Sie die Entfernung von Ressourcen verwenden, um nicht verwendete Ressourcen zu entfernen, können Sie mit diesem Attribut Ressourcen angeben, die Sie manuell verwerfen möchten. Das ist in der Regel der Fall, weil auf die Ressource verwiesen wird, aber auf eine Weise, die sich nicht auf Ihre App auswirkt, oder weil das Gradle-Plug-in fälschlicherweise abgeleitet hat, dass auf die Ressource verwiesen wird.

Erstellen Sie dazu eine XML-Datei in Ihrem Ressourcenverzeichnis (z. B. res/raw/keep.xml) mit einem <resources> Tag und geben Sie jede zu verwerfende Ressource im Attribut tools:discard als durch Kommas getrennte Liste an. Sie können das Sternchen als Platzhalter verwenden.

Beispiel:

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

Weitere Informationen finden Sie unter Ressourcen verkleinern.

Zusätzliche Ressourcen

Inhalte ansehen