Riferimento per gli attributi degli strumenti

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.

Risorse aggiuntive

Visualizzare i contenuti