Referensi atribut alat

Meskipun Jetpack Compose menangani alat waktu desain UI langsung di Kotlin, namespace tools: tetap penting untuk konfigurasi tingkat project. File XML Android standar, seperti AndroidManifest.xml dan res/raw/keep.xml, menggunakan atribut tools: untuk mengelola peringatan Lint dan mengonfigurasi penyingkat resource.

Saat Anda membuat aplikasi, alat build menghapus atribut ini sehingga tidak berdampak pada ukuran APK atau perilaku runtime Anda.

Untuk menggunakan atribut ini, tambahkan namespace tools ke elemen root setiap file XML tempat Anda ingin menggunakannya, seperti ditunjukkan di sini:

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

Atribut penanganan error

Atribut berikut membantu menyembunyikan pesan peringatan lint:

tools:ignore

Ditujukan untuk: Semua elemen

Digunakan oleh: Lint

Atribut ini menerima daftar yang dipisahkan koma dari ID masalah lint yang Anda inginkan untuk diabaikan oleh alat pada elemen ini atau turunannya.

Misalnya, Anda dapat meminta alat agar mengabaikan error MissingTranslation:

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

tools:targetApi

Ditujukan untuk: Semua elemen

Digunakan oleh: Lint

Atribut ini memiliki fungsi yang sama dengan @TargetApi anotasi dalam kode Java atau @RequiresApi anotasi dalam kode Kotlin. Atribut ini memungkinkan Anda menentukan API level (sebagai integer atau nama kode) yang mendukung elemen ini.

Atribut ini memberi tahu alat lint bahwa Anda yakin elemen ini dan setiap turunannya hanya digunakan pada API level yang ditentukan atau yang lebih tinggi. Atribut ini mencegah lint mengirimkan peringatan kepada Anda jika elemen tersebut atau atributnya tidak tersedia pada API level yang Anda tentukan sebagai minSdkVersion Anda.

Misalnya, Anda dapat menggunakan atribut ini karena Anda mendeklarasikan a <service> di AndroidManifest.xml yang menggunakan jenis layanan latar depan yang hanya tersedia di API level 34 dan yang lebih tinggi, tetapi minSdkVersion project Anda lebih rendah:

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

tools:locale

Ditujukan untuk: <resources>

Digunakan oleh: Lint, editor Android Studio

Atribut ini memberi tahu alat tentang bahasa atau lokalitas default untuk resource dalam elemen <resources> tertentu guna menghindari peringatan dari pemeriksa ejaan. Alat tanpa atribut ini menganggap bahasa tersebut adalah bahasa Inggris.

Nilainya harus merupakan penentu lokalitas yang valid.

Misalnya, Anda dapat menambahkan atribut ini ke file values/strings.xml default guna menunjukkan bahwa bahasa yang digunakan untuk string default adalah bahasa Spanyol, bukan bahasa Inggris:

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

Atribut penyingkatan resource

Atribut berikut memungkinkan Anda mengaktifkan pemeriksaan referensi yang ketat dan mendeklarasikan apakah akan mempertahankan atau menghapus resource tertentu saat menggunakan penyingkatan resource.

Untuk mengaktifkan penyingkatan resource, tetapkan properti shrinkResources ke true dalam file build.gradle, beserta minifyEnabled untuk penyingkatan kode.

Contoh:

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

Ditujukan untuk: <resources>

Digunakan oleh: Alat build dengan penyingkatan resource

Atribut ini memungkinkan Anda menentukan apakah alat build harus menggunakan hal berikut:

  • Mode aman: Mempertahankan semua resource yang dikutip secara eksplisit dan yang mungkin direferensikan secara dinamis dengan panggilan ke Resources.getIdentifier().
  • Mode ketat: Hanya mempertahankan resource yang dikutip secara eksplisit dalam kode atau di resource lainnya.

Defaultnya adalah menggunakan mode aman (shrinkMode="safe"). Untuk menggunakan mode ketat, tambahkan shrinkMode="strict" ke tag <resources> seperti ditunjukkan di sini:

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

Jika mengaktifkan mode ketat, Anda mungkin perlu menggunakan tools:keep untuk mempertahankan resource yang telah dihapus, tetapi sebenarnya Anda inginkan, dan menggunakan tools:discard untuk menghapus lebih banyak lagi resource secara eksplisit.

Untuk informasi selengkapnya, lihat Menyingkat resource.

tools:keep

Ditujukan untuk: <resources>

Digunakan oleh: Alat build dengan penyingkatan resource

Saat menggunakan penyingkatan resource untuk menghapus resource yang tidak terpakai, atribut ini memungkinkan Anda menentukan resource yang perlu dipertahankan, biasanya karena resource tersebut direferensikan secara tidak langsung saat runtime, seperti dengan meneruskan nama resource yang dihasilkan secara dinamis ke Resources.getIdentifier().

Untuk menggunakan, buat file XML di direktori resource (misalnya, res/raw/keep.xml) dengan tag <resources> dan tentukan setiap resource yang perlu dipertahankan dalam atribut tools:keep sebagai daftar yang dipisahkan koma. Anda dapat menggunakan karakter tanda bintang sebagai karakter pengganti.

Contoh:

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

Untuk informasi selengkapnya, lihat Menyingkat resource.

tools:discard

Ditujukan untuk: <resources>

Digunakan oleh: Alat build dengan penyingkatan resource

Saat menggunakan penyingkatan resource untuk menghilangkan resource yang tidak terpakai, atribut ini memungkinkan Anda menentukan resource yang ingin dihapus secara manual, biasanya karena resource tersebut sebenarnya direferensikan, tetapi dengan cara yang tidak memengaruhi aplikasi Anda, atau karena plugin Gradle salah menyimpulkan bahwa resource tersebut direferensikan.

Untuk menggunakan, buat file XML di direktori resource (misalnya, res/raw/keep.xml) dengan tag <resources>dan tentukan setiap resource yang perlu dihapus dalam atribut tools:discard sebagai daftar yang dipisahkan koma. Anda dapat menggunakan karakter tanda bintang sebagai karakter pengganti.

Contoh:

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

Untuk informasi selengkapnya, lihat Menyingkat resource.

Referensi lainnya

Melihat konten