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.