Справочник по атрибутам инструментов

Хотя Jetpack Compose напрямую управляет инструментами проектирования пользовательского интерфейса в Kotlin, пространство имен tools: по-прежнему имеет важное значение для конфигураций на уровне проекта. Стандартные XML-файлы Android, такие как AndroidManifest.xml и res/raw/keep.xml , используют атрибуты tools: для обработки предупреждений Lint и настройки механизма сжатия ресурсов.

При сборке приложения инструменты сборки удаляют эти атрибуты, чтобы они не влияли на размер APK-файла или поведение во время выполнения.

Чтобы использовать эти атрибуты, добавьте пространство имен tools к корневому элементу каждого XML-файла, где вы хотите их использовать, как показано здесь:

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

Атрибуты обработки ошибок

Следующие атрибуты помогают подавлять предупреждающие сообщения от линтера:

tools:ignore

Предназначено для: любого элемента

Используется: Lint

Этот атрибут принимает список идентификаторов проблем линтинга, разделенных запятыми, которые вы хотите, чтобы инструменты игнорировали для этого элемента или любого из его потомков.

Например, вы можете указать инструментам игнорировать ошибку MissingTranslation :

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

tools:targetApi

Предназначено для : любого элемента

Используется : Lint

Этот атрибут работает аналогично аннотации @TargetApi в Java-коде или аннотации @RequiresApi в Kotlin-коде. Он позволяет указать уровень API (в виде целого числа или кодового имени), поддерживающий этот элемент.

Это сообщает инструментам проверки кода, что вы считаете, что этот элемент и любые его дочерние элементы используются только на указанном уровне API или выше. Это предотвращает предупреждения со стороны инструмента проверки кода, если этот элемент или его атрибуты недоступны на уровне API, указанном вами в качестве minSdkVersion .

Например, вы можете использовать этот атрибут, потому что объявляете <service> в файле AndroidManifest.xml , который использует тип службы переднего плана, доступный только в API уровня 34 и выше, но minSdkVersion в вашем проекте ниже:

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

tools:locale

Предназначено для: <resources>

Используется: Lint, редактором Android Studio

Это указывает инструментам, какой язык или локаль по умолчанию используется для ресурсов в данном элементе <resources> , чтобы избежать предупреждений от проверки орфографии. В противном случае инструмент предполагает, что язык — английский.

Значение должно быть допустимым квалификатором локали .

Например, вы можете добавить это в файл default values/strings.xml чтобы указать, что для строк по умолчанию используется испанский, а не английский язык:

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

Характеристики сокращения ресурсов

Следующие атрибуты позволяют включить строгие проверки ссылок и указать, следует ли сохранять или удалять определенные ресурсы при использовании сжатия ресурсов .

Чтобы включить сжатие ресурсов, установите свойство shrinkResources в true в файле build.gradle , а также minifyEnabled для сжатия кода.

Например:

Классный

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

Котлин

android {
    ...
    buildTypes {
        getByName("release") {
            isShrinkResources = true
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

tools:shrinkMode

Предназначено для: <resources>

Используется для: создания инструментов с ограничением потребления ресурсов.

Этот атрибут позволяет указать, следует ли инструментам сборки использовать следующие параметры:

  • Безопасный режим: Сохраняйте все ресурсы, на которые явно ссылаются и которые могут динамически использоваться при вызове метода Resources.getIdentifier() .
  • Строгий режим: сохранять только те ресурсы, на которые явно ссылаются в коде или других источниках.

По умолчанию используется безопасный режим ( shrinkMode="safe" ). Чтобы использовать строгий режим, добавьте shrinkMode="strict" к тегу <resources> , как показано здесь:

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

При включении строгого режима может потребоваться использовать tools:keep для сохранения удаленных, но необходимых ресурсов, и tools:discard для явного удаления еще большего количества ресурсов.

Для получения более подробной информации см. раздел «Сокращение ресурсов» .

tools:keep

Предназначено для: <resources>

Используется для: создания инструментов с ограничением потребления ресурсов.

При использовании сжатия ресурсов для удаления неиспользуемых ресурсов этот атрибут позволяет указать ресурсы, которые следует сохранить, как правило, потому что на них косвенно ссылаются во время выполнения, например, путем передачи динамически сгенерированного имени ресурса в Resources.getIdentifier() .

Для использования создайте XML-файл в каталоге ресурсов (например, res/raw/keep.xml ) с тегом <resources> и укажите каждый ресурс, который нужно сохранить, в атрибуте tools:keep в виде списка, разделенного запятыми. В качестве подстановочного знака можно использовать звездочку.

Например:

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

Для получения более подробной информации см. раздел «Сокращение ресурсов» .

tools:discard

Предназначено для: <resources>

Используется для: создания инструментов с ограничением потребления ресурсов.

При использовании сжатия ресурсов для удаления неиспользуемых ресурсов этот атрибут позволяет указать ресурсы, которые вы хотите удалить вручную, как правило, потому что на ресурс есть ссылка, но она не влияет на ваше приложение, или потому что плагин Gradle неправильно определил, что на ресурс есть ссылка.

Для использования создайте XML-файл в каталоге ресурсов (например, res/raw/keep.xml ) с тегом <resources> и укажите каждый ресурс, который нужно удалить, в атрибуте tools:discard в виде списка, разделенного запятыми. В качестве подстановочного знака можно использовать звездочку.

Например:

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

Для получения более подробной информации см. раздел «Сокращение ресурсов» .

Дополнительные ресурсы

Просмотры контента