Referência de atributos de ferramentas

Embora o Jetpack Compose processe as ferramentas de design da interface diretamente no Kotlin, o namespace tools: ainda é essencial para configurações para envolvidos no projeto. Arquivos XML padrão do Android, como AndroidManifest.xml e res/raw/keep.xml, usam atributos tools: para gerenciar avisos do lint e configurar o redutor de recursos.

Quando você cria seu app, as ferramentas de build removem esses atributos para que não afetem o tamanho do APK ou o comportamento do ambiente de execução.

Para usar esses atributos, adicione o namespace tools ao elemento raiz de cada arquivo XML em que você quer usá-los, conforme mostrado a seguir:

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

Atributos de tratamento de erros

Os atributos a seguir ajudam a suprimir mensagens de aviso de lint:

tools:ignore

Destinado a: qualquer elemento

Usado por: lint

Esse atributo aceita uma lista separada por vírgulas dos IDs de problemas de lint que você quer que as ferramentas ignorem nesse elemento ou em qualquer um dos descendentes dele.

Por exemplo, você pode dizer às ferramentas para ignorar o erro MissingTranslation:

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

tools:targetApi

Destinado a: qualquer elemento

Usado por: lint

Esse atributo funciona da mesma forma que a @TargetApi anotação no código Java ou a @RequiresApi anotação no código Kotlin. Ele permite especificar o nível da API (como um número inteiro ou um codinome) que é compatível com esse elemento.

Isso informa às ferramentas de lint que você acredita que esse elemento, e qualquer filho, vai ser usado somente no nível da API especificado ou em níveis mais recentes. Isso impede que o lint avise se esse elemento ou os atributos dele não estão disponíveis no nível da API especificado como minSdkVersion.

Por exemplo, você pode usar esse atributo porque está declarando um <service> no AndroidManifest.xml que usa um tipo de serviço em primeiro plano disponível apenas no nível 34 da API e versões mais recentes, mas o minSdkVersion do projeto é mais baixo:

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

tools:locale

Destinado a <resources>

Usado por: lint, editor do Android Studio

Para evitar avisos da verificação ortográfica, esse atributo informa às ferramentas qual é o idioma ou a localidade padrão dos recursos no elemento <resources> específico. Sem esse atributo, a ferramenta presume que o idioma é o inglês.

O valor precisa ser um qualificador de localidade válido.

Por exemplo, ele pode ser adicionado ao arquivo values/strings.xml padrão para indicar que o idioma usado para as strings padrão é o espanhol em vez do inglês:

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

Atributos de redução de recursos

Os atributos a seguir permitem que você ative verificações de referência estritas e declare se quer manter ou descartar determinados recursos ao usar a redução.

Para ativar a redução de recursos, defina a propriedade shrinkResources como true no arquivo build.gradle, junto a minifyEnabled para a redução de código.

Exemplo:

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

Destinado a: <resources>

Usado por: ferramentas de build com redução de recursos

Esse atributo permite especificar se as ferramentas de build precisam usar o seguinte:

  • Modo de segurança: mantém todos os recursos que são explicitamente citados e podem ser referenciados dinamicamente com uma chamada para Resources.getIdentifier().
  • Modo estrito: mantém apenas os recursos citados explicitamente no código ou em outros recursos.

O modo de segurança (shrinkMode="safe") é usado por padrão. Para usar o modo restrito, adicione shrinkMode="strict" à tag <resources>, como mostrado a seguir:

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

Quando você ativa o modo restrito, pode ser necessário usar tools:keep para manter os recursos que foram removidos, mas que você quer, e usar tools:discard para remover ainda mais recursos de forma explícita.

Para mais informações, consulte Reduzir recursos.

tools:keep

Destinado a: <resources>

Usado por: ferramentas de build com redução de recursos

Ao usar a redução para remover recursos não utilizados, esse atributo permite que você especifique aqueles que gostaria de manter, geralmente porque eles são referenciados de forma indireta no momento da execução, por exemplo, transmitindo um nome de recurso gerado dinamicamente para Resources.getIdentifier().

Para usar a redução, crie um arquivo XML no diretório de recursos (por exemplo, res/raw/keep.xml) com uma <resources> tag e especifique cada recurso que precisa ser mantido no atributo tools:keep como uma lista separada por vírgulas. Você pode usar o asterisco como um caractere curinga.

Exemplo:

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

Para mais informações, consulte Reduzir recursos.

tools:discard

Destinado a <resources>

Usado por: ferramentas de build com redução de recursos

Ao usar a redução de recursos para remover os não utilizados, esse atributo permite que você especifique aqueles que quer descartar de forma manual. Geralmente isso acontece porque o recurso é referenciado, mas de uma maneira que não afeta seu app, ou porque o plug-in do Gradle deduziu incorretamente que o recurso é referenciado.

Para usar a redução, crie um arquivo XML no diretório de recursos (por exemplo, res/raw/keep.xml) com uma tag <resources>e especifique cada recurso que deve ser mantido no atributo tools:discard como uma lista separada por vírgulas. Você pode usar o asterisco como um caractere curinga.

Exemplo:

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

Para mais informações, consulte Reduzir recursos.

Outros recursos

Conteúdo de visualizações