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.