Sebbene Jetpack Compose gestisca gli strumenti di progettazione dell'UI direttamente in Kotlin, lo spazio dei nomi tools: è comunque essenziale per le configurazioni a livello di progetto. I file XML Android standard, come AndroidManifest.xml e res/raw/keep.xml, utilizzano gli attributi tools: per gestire gli avvisi di Lint e configurare la riduzione delle risorse.
Quando crei l'app, gli strumenti di compilazione rimuovono questi attributi in modo che non influiscano sulle dimensioni dell'APK o sul comportamento del runtime.
Per utilizzare questi attributi, aggiungi lo spazio dei nomi tools all'elemento principale di ogni file XML in cui vuoi utilizzarli, come mostrato di seguito:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
Attributi di gestione degli errori
I seguenti attributi consentono di sopprimere i messaggi di avviso di Lint:
tools:ignore
Destinato a:qualsiasi elemento
Utilizzato da: Lint
Questo attributo accetta un elenco separato da virgole di ID problema di Lint che vuoi che gli strumenti ignorino in questo elemento o in uno dei suoi discendenti.
Ad esempio, puoi indicare agli strumenti di ignorare l'errore MissingTranslation:
<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>
tools:targetApi
Destinato a: qualsiasi elemento
Utilizzato da: Lint
Questo attributo funziona come l'annotazione @TargetApi nel codice Java
o l'annotazione @RequiresApi nel codice Kotlin. Ti consente di specificare il livello API (come numero intero o come nome in codice) che supporta questo elemento.
In questo modo, indichi agli strumenti di Lint che ritieni che questo elemento e tutti i relativi elementi secondari vengano utilizzati solo sul livello API specificato o su un livello superiore. In questo modo, Lint non ti avvisa se l'elemento o i relativi attributi non sono disponibili sul livello API specificato come minSdkVersion.
Ad esempio, potresti utilizzare questo attributo perché stai dichiarando un
<service> in AndroidManifest.xml che utilizza un tipo di servizio in primo piano
disponibile solo sul livello API 34 e versioni successive, ma il minSdkVersion
del tuo progetto è inferiore:
<service
android:name=".playback.MediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="34" />
tools:locale
Destinato a <resources>
Utilizzato da:editor di Lint, Android Studio
In questo modo, indichi agli strumenti la lingua o le impostazioni internazionali predefinite per le risorse in
l'elemento <resources> specificato per evitare gli avvisi del correttore ortografico.
In caso contrario, lo strumento presuppone che la lingua sia l'inglese.
Il valore deve essere un qualificatore di impostazioni internazionali valido.
Ad esempio, puoi aggiungere questo attributo al file values/strings.xml predefinito per indicare che la lingua utilizzata per le stringhe predefinite è lo spagnolo anziché l'inglese:
<resources xmlns:tools="http://schemas.android.com/tools"
tools:locale="es">
Attributi di riduzione delle risorse
I seguenti attributi consentono di attivare i controlli di riferimento rigorosi e dichiarare se mantenere o eliminare determinate risorse quando si utilizza la riduzione delle risorse.
Per attivare la riduzione delle risorse, imposta la proprietà shrinkResources su true nel file build.gradle, insieme a minifyEnabled per la riduzione del codice.
Ad esempio:
Alla moda
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
Destinato a <resources>
Utilizzato da:strumenti di compilazione con riduzione delle risorse
Questo attributo consente di specificare se gli strumenti di compilazione devono utilizzare:
- Modalità provvisoria: mantieni tutte le risorse citate esplicitamente e
che potrebbero essere referenziate dinamicamente con una chiamata a
Resources.getIdentifier(). - Modalità StrictMode:mantieni solo le risorse citate esplicitamente nel codice o in altre risorse.
L'impostazione predefinita è la modalità provvisoria (shrinkMode="safe"). Per utilizzare invece la modalità StrictMode, aggiungi shrinkMode="strict" al tag <resources> come mostrato di seguito:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
Quando attivi la modalità StrictMode, potresti dover utilizzare tools:keep
per mantenere le risorse che sono state rimosse ma che ti interessano e utilizzare
tools:discard per rimuovere esplicitamente ancora più risorse.
Per saperne di più, consulta Ridurre le risorse.
tools:keep
Destinato a <resources>
Utilizzato da:strumenti di compilazione con riduzione delle risorse
Quando utilizzi la riduzione delle risorse per rimuovere le risorse inutilizzate, questo
attributo ti consente di specificare le risorse da mantenere, in genere perché vengono
referenziate in modo indiretto in fase di runtime, ad esempio passando un nome di risorsa generato dinamicamente a
Resources.getIdentifier().
Per utilizzarlo, crea un file XML nella directory delle risorse (ad esempio,
res/raw/keep.xml) con un tag <resources>e specifica ogni risorsa da mantenere nell'attributo tools:keep come un
elenco separato da virgole. Puoi utilizzare l'asterisco come carattere jolly.
Ad esempio:
<?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" />
Per saperne di più, consulta Ridurre le risorse.
tools:discard
Destinato a <resources>
Utilizzato da:strumenti di compilazione con riduzione delle risorse
Quando utilizzi la riduzione delle risorse per rimuovere le risorse inutilizzate, questo attributo ti consente di specificare le risorse che vuoi eliminare manualmente, in genere perché la risorsa viene referenziata ma in un modo che non influisce sull'app o perché il plug-in Gradle ha dedotto erroneamente che la risorsa viene referenziata.
Per utilizzarlo, crea un file XML nella directory delle risorse (ad esempio,
res/raw/keep.xml) con un tag <resources>e specifica ogni risorsa da eliminare nell'attributo tools:discard come un
elenco separato da virgole. Puoi utilizzare l'asterisco come carattere jolly.
Ad esempio:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@layout/unused_1" />
Per saperne di più, consulta Ridurre le risorse.